当前位置: 代码迷 >> 驱动开发 >> bootloader中的堆栈地址设计根据
  详细解决方案

bootloader中的堆栈地址设计根据

热度:99   发布时间:2016-04-28 10:50:37.0
bootloader中的堆栈地址设计依据?
请问bootloader中的堆栈地址设计依据?为什么要设置设置?谢谢。
UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~
SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;0x33ff5800 ~
UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;0x33ff5c00 ~
AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;0x33ff6000 ~
IRQStack EQU (_STACK_BASEADDRESS-0x1000) ;0x33ff7000 ~
FIQStack EQU (_STACK_BASEADDRESS-0x0) ;0x33ff8000 ~


------解决方案--------------------
从这个地址来看,你的RAM大小是64M的!堆栈的设置方式一般都是放在RAM的最后的!Dispaly的framebuffer一般也是放在后面的,当然如果你能保证它们的地址不被其他程序影响到,你也可以放在其他的地方!

你上面列举了那么多,其实用到的是很少的。bootloader中一般只会用到SVC Stack IRQ和FIQ Stack(这个也基本本不用)!

程序函数的运行必不可少的需要用到堆栈的,你看linux下的lds文件的时候,你会发现里面有设置stack的起始地址和末地址的!