|
各位大虾,小弟这几天正在研读“源码开放的嵌入式系统软件分析与实践”
看到关于bootloader处有几个问题想请教一下,望不吝赐教。
bootloader分为两大部分:stage1和stage2。书中在对于stage1和stage2的详细分析中有以下说法:
stage1:
在stage1的第四步设置堆栈时设为stage2_end-4,我是这样理解的不知对不对:给stage2分配1m的ram时,有可能stage2不能完全用完,同时由于stag2要用到堆栈还预留有堆栈区.分配的stage2的ram是从stage2_start---stage2_end的顺序,堆栈则是从stage2_end-4-----stage2_start的顺序.但要是这样的话,要是堆栈区压栈次数过多时岂不是要把stage2的程序刷掉?
还有,定义堆栈sp时为什么不是stage2_end,而是stage2_end-4呢?那四个单元释放什么用的?
问题二:
有关stage2
stage2的c程序为什么不能使用glibc库中的任何支持函数?请详述!
关于main函数的入口有事怎么回事呢?请详述!
在有后面的trampoline的程序能否注释一下~
程序如下:
.text
.globl_trampoline
_trampoline
bl main
b_trampoline
本人入门还烦请各位大虾指点! |
|