打印

STM32 HardFault和ROM起始地址设置的问题

[复制链接]
1784|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liyang121316|  楼主 | 2013-10-18 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我遇到的问题挺怪异的,我用的编译器是IAR的,芯片是STM32F107VCT6,当我设置.icf文件的时候不同的设置出现了不同的结果。
1:如果我设置ROM的起始地址为0x00000000(以ROM为256K来确定结束地址),则程序运行OK,怎么测都没问题。
2:如果我把ROM起始地址设置成0x08000000,那么运行的时候我用上位机和这个下位机一交互就产生了硬错误。我看了一下寄存器的值DACCVIOL位被置一,是数据访问违例。
   
我的问题是:这可能是一个什么样的错误,对于M3来说ROM设置成这两个地址的话意义应该是一样的吧?

另外补充:我用了一个别的程序和这个的程序功能很相似,ROM起始地址设置成0x08000000也不会出现这种错误。
沙发
airwill| | 2013-10-18 15:37 | 只看该作者
从 FAULT 处, 查下堆栈, 看看是什么地方什么指令引起的错误.

使用特权

评论回复
板凳
liyang121316|  楼主 | 2013-10-21 09:26 | 只看该作者
我查过了,堆栈没有溢出,通过C语言看不出有什么问题,通过反汇编窗口发现在函数嵌套的时候(进出栈这里没有对应的C语言代码对吧)出现了R2寄存器存储了一个超出RAM的地址。也就只能追到这不知道接下来怎么办了。

使用特权

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

本版积分规则

10

主题

39

帖子

2

粉丝