在arm启动代码中

在arm启动代码中有初始化堆栈,按照从程序入口点进入后,感觉执行不到初始化堆栈语句,请问是怎样进行初始化堆栈的。... 在arm启动代码中 有初始化堆栈,按照从程序入口点进入后,感觉执行不到初始化堆栈语句,请问是怎样进行初始化堆栈的。 展开
 我来答
xuxin_813
2011-07-29 · TA获得超过142个赞
知道答主
回答量:51
采纳率:0%
帮助的人:36.2万
展开全部
arm有好几种工作模式,每种工作模式都有自己的堆栈指针(SP)。对于堆栈初始化一般是初始化每个工作模式的SP指针,初始化一般在startup.S文件中,arm在上电复位后先执行startup.S才进入到main主函数中,所以在程序入口点进入不会再初始化堆栈,除非你在程序中有对堆栈的特殊要求。
追问
在startup.s中,当上电复位时,由ENTRY进入,接着LDR     PC, ResetAddr 。。ResetAddr           DCD     ResetInit
。。。
ResetInit
;Initial the extenal bus controller
;初始化外部总线控制器,根据目标板决定配置

LDR R0, =PINSEL2
IF :DEF: EN_CRP
LDR R1, =0x0f814910
ELSE
。。。。。
BL InitStack
是不是这样进入初始化每个工作模式的SP指针??
追答
从你这来看,应该是在InitStack函数中初始化,
MSR CPSR 。。。。
LDR SP,.....
进行修改。
ch314156
2011-07-29 · TA获得超过4378个赞
知道小有建树答主
回答量:2036
采纳率:100%
帮助的人:1072万
展开全部
执行不到初始化堆栈语句?堆栈不是用来执行的,是用来保存数据的,你用C的调用和返回的指令就已经使用堆栈了
追问
我指的是初始化每个工作模式的SP指针,在系统硬件初始化时,分配中断向量表,初始化存储器系统,初始化各工作模式下的堆栈。。。。。。。。
追答
系统上电后   是先运行启动代码   在跳到主函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TIPfei
2011-07-29 · TA获得超过209个赞
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:98.4万
展开全部
你说的:
。。。。。
BL InitStack
是不是这样进入初始化每个工作模式的SP指针??

这个InitStack这个地方才是初始堆栈的吧。应该有类似语句:
@设置管理模式堆栈
MSR CPSR_c, #0xd3
LDR SP, =StackSvc
@设置中断模式堆栈
MSR CPSR_c, #0xd2
LDR SP, =StackIrq
@设置快速中断模式堆栈
MSR CPSR_c, #0xd1
LDR SP, =StackFiq

。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式