uboot-step 10 C语言环境初始化

uboot-step 10 C语言环境初始化

主要有两个工作需要完成:

  • 1.设置堆栈
  • 2.清BSS段
  • 3.跳转到C函数入口处执行
1.设置堆栈

ARM处理器中有一个寄存器叫SP寄存器,它存放了堆栈指针的地址,我们只需要将我们所设定的地址赋值给它就行

2.清BSS段

BSS段是程序代码中所定义的为初始化的全局数据所在的段,为了保证我们在C程序中所引用的全局变量都有一个合法值,这里我们将其全部清0

3.跳转到C入口执行
ldr  pc,=main 
代码实现
init_stack:
ldr sp, =0x54000000
mov pc ,lr

clean_bss:
ldr r0, =bss_start
ldr r1, =bss_end
cmp r0, r1
moveq pc, lr

clean_loop:
mov r2, #0
str r2, [r0], #4
cmp r0, r1
bne clean_loop
mov pc, lr

你可能感兴趣的:(uboot-step 10 C语言环境初始化)