bootloader中的堆栈地址设计依据?
请问bootloader中的堆栈地址设计依据?为什么要设置设置?谢谢。
UserStackEQU(_STACK_BASEADDRESS-0x3800);0x33ff4800 ~
SVCStackEQU(_STACK_BASEADDRESS-0x2800);0x33ff5800 ~
UndefStackEQU(_STACK_BASEADDRESS-0x2400);0x33ff5c00 ~
AbortStackEQU(_STACK_BASEADDRESS-0x2000);0x33ff6000 ~
IRQStackEQU(_STACK_BASEADDRESS-0x1000);0x33ff7000 ~
FIQStackEQU(_STACK_BASEADDRESS-0x0);0x33ff8000 ~
[解决办法]
从这个地址来看,你的RAM大小是64M的!堆栈的设置方式一般都是放在RAM的最后的!Dispaly的framebuffer一般也是放在后面的,当然如果你能保证它们的地址不被其他程序影响到,你也可以放在其他的地方!
你上面列举了那么多,其实用到的是很少的。bootloader中一般只会用到SVC Stack IRQ和FIQ Stack(这个也基本本不用)!
程序函数的运行必不可少的需要用到堆栈的,你看linux下的lds文件的时候,你会发现里面有设置stack的起始地址和末地址的!