[ZLG-MCU] 请教zlg,我也出现了程序进入FaultISR的情况

[复制链接]
 楼主| 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
and 发表于 2012-2-19 13:32 | 显示全部楼层
在FaultISR的代码上设置断点,断点到达后,打开寄存器窗口,以及内存查看窗口,根据寄存器的SP指针,观察相应位置的内存数据情况,CORTEX-M3的中断压栈有文档可以参考,慢慢看。
只能说这么多了,我也是自己慢慢摸索的。
 楼主| zxb1717 发表于 2012-2-19 14:12 | 显示全部楼层
谢谢and兄的慷慨奉献,我也是在FaultISR的代码上设置断点,然后观察内存窗口,然后找到了可以函数定时器1中断服务函数,但是单从代码上看没有发现问题,所以我才怀疑是不是程序运行到某个一段时间后堆栈溢出了,不知道能否传一份CORTEX-M3的中断压栈的相关资料,或者指明一下名字,我自己去下,谢谢啦!
 楼主| zxb1717 发表于 2012-2-19 14:15 | 显示全部楼层
and兄,是这幅图吗,这个我也看过了,就是对lr所保存的地址定位,找到相关函数,对吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| zxb1717 发表于 2012-2-19 14:25 | 显示全部楼层
还是继续请教,我用的是IAR6.1版本的,生成的MAP没有以下信息,那我该怎么找出以下相关信息呢,请IAR熟手指点一下,谢谢啦。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| zxb1717 发表于 2012-2-19 17:12 | 显示全部楼层
如果是访问了没有使能的外设的话应该程序已开始运行就会进入faultISR(),所以我现在很怀疑是我的程序运行一段时间后造成堆栈溢出了,所以我现在的问题是:第一,我怎么看到我的程序有关STACK的信息,我之前说过我的程序生成后的MAP没有相关STACK的信息;第二,如果我的程序堆栈溢出,那怎么修改IAR的stack设置。我的IAR是6.1版本,第一次用这编译器,不熟啊,网上的IAR使用指南是简要版本的,只有25页,没看到这方面的介绍,希望大家给点针对性的意见,我在此谢谢大家了!
 楼主| zxb1717 发表于 2012-2-21 14:49 | 显示全部楼层
从图片中可以看出BFSR=0x82,我的程序发生了“精确的数据访问违例”,应该怎么进一步追查呢,请高手再指点一下,谢谢啦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
bairan168 发表于 2012-2-23 10:13 | 显示全部楼层
高手都不在这儿了。 15# zxb1717
 楼主| zxb1717 发表于 2012-2-23 10:14 | 显示全部楼层
那高手在哪 啊?
xinjie1023 发表于 2012-3-14 22:57 | 显示全部楼层
关注解决方法
bnyuli 发表于 2012-3-30 15:37 | 显示全部楼层
过来看一下
bnyuli 发表于 2012-4-3 11:48 | 显示全部楼层
进来学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部