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