bootloader中的堆栈地址设计依据?

clleady 2011-03-02 01:22:52
请问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 ~
...全文
140 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjinquan29 2012-07-16
  • 打赏
  • 举报
回复
在程序运行过程中,可能会发生中断等其他情况,需要用堆栈来保存
子愚 2011-03-02
  • 打赏
  • 举报
回复
从这个地址来看,你的RAM大小是64M的!堆栈的设置方式一般都是放在RAM的最后的!Dispaly的framebuffer一般也是放在后面的,当然如果你能保证它们的地址不被其他程序影响到,你也可以放在其他的地方!

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

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

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧