打印

ARM9初始化代码之后转main()函数第一条指令引发DataAbort

[复制链接]
1129|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fengzhongsanfa|  楼主 | 2014-4-11 18:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,调试ARM926EJ_S内核芯片时出现一个问题,初始化之后进入main()函数
ADS在main代码前增加的* stmfd    r13!,{r4-r11,r14}语句引发了DataAbort异常,问题是之前程序没问题,后来增加了些其它代码,程序变大了一百多k,svc堆栈指针在最上面,如何该句代码引发数据中止异常,只能是r13即堆栈指针不能或不正确访问吧,关键是我的代码虽然增加了但是,留给svc模式堆栈空间还有足够空间啊,总RAM512k,原来代码284k,现在代码360k,留给堆栈空间还是足够大啊,咋会出现DataAbort异常呢???
那位高手能帮忙分析下,如何查找原因呢???

相关帖子

沙发
aozima| | 2014-4-11 20:07 | 只看该作者
查看此时R13的值。

使用特权

评论回复
板凳
fengzhongsanfa|  楼主 | 2014-4-26 21:35 | 只看该作者
原因找到了,程序使用了MMU和cache功能,新程序的数据段覆盖了存放页表的地址空间,所以访问堆栈空间时产生数据访问终止错误

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝