发新帖我要提问
12
返回列表
打印
[ZLG-MCU]

请教zlg,我也出现了程序进入FaultISR的情况

[复制链接]
楼主: zxb1717
手机看帖
扫描二维码
随时随地手机跟帖
21
zxb1717|  楼主 | 2012-2-19 11:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
看了大家的帖子,我也初步怀疑是堆栈出了问题,我看别人发的帖子说程序生成的map会有以下信息,主要是有关于CSTACK的数据,我用的是IAR6.1版本的,生成的MAP没有以下信息,那我该怎么找出以下相关信息呢,请IAR熟手指点一下,谢谢啦。
SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
INTVEC               CODE          00000000 - 00000027          28   com    1
?FILL1               CODE          00000028 - 00000053          2C   rel    0
DIFUNCT              CODE          00000054 - 00000055           2   rel    0
CODE                 CODE          00000056 - 00000715         6C0   rel    1
INITTAB              CODE          00000716 - 00000721           C   rel    0
NEAR_ID              CODE          00000722 - 0000072D           C   rel    0
ABSOLUTE             DATA          0000003A - 0000003B           2   rel    0
                     DATA          00000052 - 00000053           2  
                     DATA          00000059 - 00000059           1  
                     DATA          0000005F - 0000005F           1  
CSTACK               DATA          00000060 - 000000C3          64   dse    0
NEAR_HEAP            DATA          000000C4 - 000000F5          32   dse    0
RSTACK               DATA          000000F6 - 00000159          64   dse    0
NEAR_I               DATA          0000015A - 00000165           C   rel    0
NEAR_Z               DATA          00000166 - 00000195          30   rel    0
EEPROM_I             XDATA         00000000 - 00000000           1   rel    0

使用特权

评论回复
22
and| | 2012-2-19 13:32 | 只看该作者
在FaultISR的代码上设置断点,断点到达后,打开寄存器窗口,以及内存查看窗口,根据寄存器的SP指针,观察相应位置的内存数据情况,CORTEX-M3的中断压栈有文档可以参考,慢慢看。
只能说这么多了,我也是自己慢慢摸索的。

使用特权

评论回复
23
zxb1717|  楼主 | 2012-2-19 14:12 | 只看该作者
谢谢and兄的慷慨奉献,我也是在FaultISR的代码上设置断点,然后观察内存窗口,然后找到了可以函数定时器1中断服务函数,但是单从代码上看没有发现问题,所以我才怀疑是不是程序运行到某个一段时间后堆栈溢出了,不知道能否传一份CORTEX-M3的中断压栈的相关资料,或者指明一下名字,我自己去下,谢谢啦!

使用特权

评论回复
24
zxb1717|  楼主 | 2012-2-19 14:15 | 只看该作者
and兄, 是这幅图吗,这个我也看过了,就是对lr所保存的地址定位,找到相关函数,对吗?

使用特权

评论回复
25
zxb1717|  楼主 | 2012-2-19 14:25 | 只看该作者
还是继续请教,我用的是IAR6.1版本的,生成的MAP没有以下信息 ,那我该怎么找出以下相关信息呢,请IAR熟手指点一下,谢谢啦。

使用特权

评论回复
26
zxb1717|  楼主 | 2012-2-19 17:12 | 只看该作者
如果是访问了没有使能的外设的话应该程序已开始运行就会进入faultISR(),所以我现在很怀疑是我的程序运行一段时间后造成堆栈溢出了,所以我现在的问题是:第一,我怎么看到我的程序有关STACK的信息,我之前说过我的程序生成后的MAP没有相关STACK的信息;第二,如果我的程序堆栈溢出,那怎么修改IAR的stack设置。我的IAR是6.1版本,第一次用这编译器,不熟啊,网上的IAR使用指南是简要版本的,只有25页,没看到这方面的介绍,希望大家给点针对性的意见,我在此谢谢大家了!

使用特权

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

fault状态寄存器值1.jpg (18.6 KB )

fault状态寄存器值1.jpg

使用特权

评论回复
28
bairan168| | 2012-2-23 10:13 | 只看该作者
高手都不在这儿了。 15# zxb1717

使用特权

评论回复
29
zxb1717|  楼主 | 2012-2-23 10:14 | 只看该作者
那高手在哪 啊?

使用特权

评论回复
30
xinjie1023| | 2012-3-14 22:57 | 只看该作者
关注解决方法

使用特权

评论回复
31
bnyuli| | 2012-3-30 15:37 | 只看该作者
过来看一下

使用特权

评论回复
32
bnyuli| | 2012-4-3 11:48 | 只看该作者
进来学习一下

使用特权

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

本版积分规则