|  | 
 
| 操作系统移植之前,bootloader的移植或编写是不可逾越的一步。但是我查阅了不少的资料,包括我阅读源码(本人是个初学者)。我发现: 1、TQ2440给test2440试验中的启动代码对栈的初始化,其完成了对6中处理器工作模式下的栈区的初始化,代码如下:
 ;function initializing stacks
 InitStacks
 ;Do not use DRAM,such as stmfd,ldmfd......
 ;SVCstack is initialized before
 ;Under toolkit ver 2.5, 'msr cpsr,r1' can be used instead of 'msr cpsr_cxsf,r1'
 mrs r0,cpsr
 bic r0,r0,#MODEMASK
 orr r1,r0,#UNDEFMODE|NOINT
 msr cpsr_cxsf,r1  ;UndefMode
 ldr sp,=UndefStack  ; UndefStack=0x33FF_5C00
 orr r1,r0,#ABORTMODE|NOINT
 msr cpsr_cxsf,r1  ;AbortMode
 ldr sp,=AbortStack  ; AbortStack=0x33FF_6000
 orr r1,r0,#IRQMODE|NOINT
 msr cpsr_cxsf,r1  ;IRQMode
 ldr sp,=IRQStack  ; IRQStack=0x33FF_7000
 orr r1,r0,#FIQMODE|NOINT
 msr cpsr_cxsf,r1  ;FIQMode
 ldr sp,=FIQStack  ; FIQStack=0x33FF_8000
 bic r0,r0,#MODEMASK|NOINT
 orr r1,r0,#SVCMODE
 msr cpsr_cxsf,r1  ;SVCMode
 ldr sp,=SVCStack  ; SVCStack=0x33FF_5800
 ;USER mode has not be initialized.
 mov pc,lr
 ;The LR register will not be valid if the current mode is not SVC mode.
 LTORG
 
 注释说 “ SVCstack is initialized before ” 可是我好想没有看到。
 
 问题2:在u-boot中,源码和资料好想都显示,在u-boot中没有对每一种工作模式下的栈区和堆栈指针进行初始化,好想是只对IRQ和FRQ下的SP进行了初始化,都不知道到底是怎么回事儿了?
 
 大侠们,初学者,说错话了或问题,原谅了,万谢!!!!!!!
 
 | 
 |