打印
[ZLG-ARM]

没人肯帮忙?

[复制链接]
1198|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhulijun1|  楼主 | 2007-10-10 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AC, ST, Stack, ck, ce



为什么这样程序能运行(lpc2292):

;/* 分配堆栈空间 */
        AREA    MyStacks, DATA, NOINIT, ALIGN=2
        
SpaceForWriteflash  SPACE    0x400
SpaceForStackUsr    SPACE    USR_STACK_LEGTH * 4   
StackUsr            SPACE    USR_STACK_LEGTH * 4  ;UsrStackSpace StackUsr//0x100
StackUnd            SPACE    UND_STACK_LEGTH * 4 
StackAbt            SPACE    ABT_STACK_LEGTH * 4  ;Stack spaces for Suspend Mode 中止义模式堆栈空间
StackFiq            SPACE    FIQ_STACK_LEGTH * 4  ;Stack spaces for Fast Interrupt reQuest Mode 快速中断模式堆栈空间
StackIrq            SPACE    IRQ_STACK_LEGTH * 4  ;Stack spaces for Interrupt ReQuest Mode 中断模式堆栈空间
StackSvc            SPACE    SVC_STACK_LEGTH * 4    



但如下却不正常:

StackUsr            DCD      UsrStackSpace 
StackUnd            DCD      UndtStackSpace
StackAbt            DCD      AbtStackSpace
StackFiq            DCD      FiqStackSpace
StackIrq            DCD      IrqStackSpace
StackSvc            DCD      SvcStackSpace
;/* 分配堆栈空间 */
        AREA    MyStacks, DATA, NOINIT, ALIGN=2
SpaceForWriteflash  SPACE    0x400
SpaceForStackUsr    SPACE    USR_STACK_LEGTH * 4
UsrStackSpace       SPACE    USR_STACK_LEGTH * 4  ;UsrStackSpace StackUsr//0x100
UndtStackSpace      SPACE    UND_STACK_LEGTH * 4 
AbtStackSpace       SPACE    ABT_STACK_LEGTH * 4  ;Stack spaces for Suspend Mode 中止义模式堆栈空间
FiqStackSpace       SPACE    FIQ_STACK_LEGTH * 4  ;Stack spaces for Fast Interrupt reQuest Mode 快速中断模式堆栈空间
IrqStackSpace       SPACE    IRQ_STACK_LEGTH * 4  ;Stack spaces for Interrupt ReQuest Mode 中断模式堆栈空间
SvcStackSpace       SPACE    SVC_STACK_LEGTH * 4

调试一直在如下转圈:
_zero_loop    [0xe2555004]   subs     r5,r5,#4
000001c0    [0x24847004]   strcs    r7,[r4],#4
000001c4    [0x8afffffc]   bhi      _zero_loop


相关帖子

沙发
computer00| | 2007-10-10 10:49 | 只看该作者

没看出什么区别....

使用特权

评论回复
板凳
zhulijun1|  楼主 | 2007-10-10 13:08 | 只看该作者

谢谢

首先感谢computer00的关注,
是看不出什么区别
但就是行不通,我头都想破了

使用特权

评论回复
地板
computer00| | 2007-10-10 13:10 | 只看该作者

看看生成的汇编是咋样的

使用特权

评论回复
5
computer00| | 2007-10-10 22:54 | 只看该作者

应该是这里的问题吧:

UsrStackSpace是一个标号,它里面的内容是UsrStack的地址(这个地址在RAM中).

而StackUsr DCD UsrStackSpace,则是将UsrStackSpace这个标号的地址(这个地址在ROM中)放在了StackUsr里面,所以两者不一样了。

通过StackUsr里面的值,可以找到UsrStackSpace的地址,这个地址里面的内容才是堆栈.

而你前面正确的,StackUsr里面的值就是堆栈.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

20

帖子

0

粉丝