发新帖我要提问
12
返回列表
打印

程序进入FaultISR最新调试记录,请大家指点

[复制链接]
楼主: zxb1717
手机看帖
扫描二维码
随时随地手机跟帖
21
zxb1717|  楼主 | 2012-2-19 18:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
20# 李富贵
李大侠真是热心人啊,我在线管论坛上搜索到“GCC和IAR分配堆栈的方式不同,IAR先分配堆栈空间,相当于定义一个全局数组为堆栈空间,堆栈初始为堆栈空间最高地址;GCC不用先分配堆栈,自动把RAM剩余空间作为堆栈空间,堆栈初始为RAM最高地址。”,也就是说IAR不会自动分配RAM,设定多少算多少吧??

使用特权

评论回复
22
zxb1717|  楼主 | 2012-2-19 18:56 | 只看该作者
我在icf文件里全是看到了
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__   = 0x400;
define symbol __ICFEDIT_size_heap__     = 0x800;
/**** End of ICF editor section. ###ICF###*/
不知道这些设置根据是什么,我又怎么才能知道自己的程序用到多少stack,这样才对比有没有溢出,请大家继续指教,谢谢啦

使用特权

评论回复
23
李富贵| | 2012-2-19 23:02 | 只看该作者
20# 李富贵  
李大侠真是热心人啊,我在线管论坛上搜索到“GCC和IAR分配堆栈的方式不同,IAR先分配堆栈空间,相当于定义一个全局数组为堆栈空间,堆栈初始为堆栈空间最高地址;GCC不用先分配堆栈,自动把RAM剩余空 ...
zxb1717 发表于 2012-2-19 18:45


要么是胡说八道,要么就是你弄错了,可能是AVR单片机的GCC和IAR。
ARM单片机的GCC和IAR处理方式是一样的,剩余空间均为stack。

使用特权

评论回复
24
zxb1717|  楼主 | 2012-2-20 08:27 | 只看该作者
23# 李富贵
李大侠真是热心啊,这么晚了还回复我的帖子,如果ARM会自动分配堆栈,那我用的LM3s2965剩余的RAM有50多K,按道理说足够堆栈用了,这么理解岂不是很少会有堆栈溢出的事了吗,那请问李大侠在18楼“根据你的现象应该是内存访问越界堆栈溢出一类的毛病。”这又何解呢??谢谢啦

使用特权

评论回复
25
zxb1717|  楼主 | 2012-2-20 09:40 | 只看该作者
顶一下

使用特权

评论回复
26
zxb1717|  楼主 | 2012-2-21 14:39 | 只看该作者
上传最新的调试图片,图片是关于fault状态寄存器的值的,请大家看看,给点建议。

使用特权

评论回复
27
zxb1717|  楼主 | 2012-2-21 14:45 | 只看该作者
从图片中可以看出BFSR=0x82,我的程序发生了“精确的数据访问违例”,应该怎么进一步追查呢,请高手再指点一下,谢谢啦!

使用特权

评论回复
28
zxb1717|  楼主 | 2012-2-21 16:17 | 只看该作者
终于追查到函数了,上传图片, 不知道大家能否帮忙看看有什么问题,我看不出代码有啥问题啊

使用特权

评论回复
29
zxb1717|  楼主 | 2012-2-21 16:22 | 只看该作者
程序跳转到faultISR之前最后执行一句语句地址是0x6bad

使用特权

评论回复
30
zxb1717|  楼主 | 2012-2-21 19:40 | 只看该作者
15# 李富贵
李大侠,这个不添加代码,直接在memory窗口输入地址是不是也能观察fault状态寄存器的值啊??

使用特权

评论回复
31
jhzh951753| | 2015-1-28 15:52 | 只看该作者
不知道您在线么?现在我也遇到这个问题了。不知道怎么解决。能不能知道下呢?

使用特权

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

本版积分规则