发新帖我要提问
123
返回列表

请教一个奇怪的问题 硬件HardFault_Handler中断

[复制链接]
楼主: 量子纠缠
手机看帖
扫描二维码
随时随地手机跟帖
量子纠缠|  楼主 | 2018-8-15 17:54 | 显示全部楼层
yangxf1217 发表于 2018-8-15 13:45
https://bbs.21ic.com/icview-160999-1-1.html

谢谢指教,链接我仔细看过了。下面是我的仿真 0cdedc604c69ee2ebbca06d46a7f82c.png da4801aee93aa07dae126b3c8d8c4bf.png


如图所示  修改代码  问题依旧   

我发现虽然会发生ORE中断  但是中断函数中打断点并不会先触发清除中断标志,而是会先触发 HardFault_Handler




使用特权

评论回复
zhaoyu2005| | 2018-8-17 09:07 | 显示全部楼层
这个位需要每次进入中断都判断,如果置位然后清除。我之前也遇到死机情况,最后发现是该位引起一直进中断造成的,加上判断并清除就好了。从你的描述里边,基本可以定位是通信造成的,只能是非法访问或者一直中断造成的。这个是标志位是接收溢出时产生,也就是前一个数据没读取,新接收到一个数据,就会产生置位,但是这个中断是随接收非空中断开启的,你先将这个处理加上看看

使用特权

评论回复
muxb| | 2018-8-17 09:33 | 显示全部楼层
你的接收buffer一直再收,没有判是否已到边界,目测可能是buffer溢出导致的hardfault!

使用特权

评论回复
量子纠缠|  楼主 | 2018-8-17 15:53 | 显示全部楼层
zhaoyu2005 发表于 2018-8-17 09:07
这个位需要每次进入中断都判断,如果置位然后清除。我之前也遇到死机情况,最后发现是该位引起一直进中断造 ...

图中已经加上了 不会触发清除ORE

使用特权

评论回复
量子纠缠|  楼主 | 2018-8-17 15:53 | 显示全部楼层
muxb 发表于 2018-8-17 09:33
你的接收buffer一直再收,没有判是否已到边界,目测可能是buffer溢出导致的hardfault!
...

数组越界我已经排除了。

使用特权

评论回复
量子纠缠|  楼主 | 2018-8-17 15:56 | 显示全部楼层
这个问题我现在有100%的把握就是硬件的问题。


硬件导致的在调试时出现的hardfault !!!

我准备重新设计一版硬件。

使用特权

评论回复
量子纠缠|  楼主 | 2018-8-22 19:35 | 显示全部楼层
项目已经截止了,目前只能改用其他方案了。             但是这个问题我还是会抽时间去研究。如果哪天解决了,我会把结果发上来。

使用特权

评论回复
yonghuixi| | 2018-8-23 12:26 | 显示全部楼层
本帖最后由 yonghuixi 于 2018-8-23 12:29 编辑

硬件的问题,可以示波器去抓抓晶振的波形,电源,复位信号,总线相关的总线信号,跟规格书做下对比,问题没找到,还用的话,可能还有问题

使用特权

评论回复
泰山特曲123| | 2018-8-23 12:47 | 显示全部楼层
量子纠缠 发表于 2018-8-17 15:56
这个问题我现在有100%的把握就是硬件的问题。



既然怀疑硬件问题,那就测试他的电气特性和波形,用数据说话。另外你写个简单的程序,把硬件的功能都验证一遍。从现象上看,还是觉得软件的问题可能性较大,像出现概率这么高的问题,你只需要一段段代码屏蔽,逐步排除问题。初步怀疑是,内存溢出,指针越界,没有对齐访问,外设时钟没有启动,就访问外设,串口接收的溢出中断一直有效,导致一直在接收中断。

使用特权

评论回复
量子纠缠|  楼主 | 2018-11-18 11:51 | 显示全部楼层
确实是硬件问题  具体原因并未找到  重新布板问题解决

使用特权

评论回复
eagleeagle2| | 2018-11-19 08:50 | 显示全部楼层
好的,坏的板子cpu芯片有没互换试下那,或者换个批次的芯片。遇到一次芯片LDO电压偏低的,也是死机。

使用特权

评论回复
kingkits| | 2018-11-19 16:44 | 显示全部楼层
应该和硬件有一定关系,但软件容错率不够,一般出现这个中断,现场都会被保护的,你看看堆栈里的程序指针,或者把这个中断改为返回(加断点),看看到底是程序的那个操作造成的,最有可能是指针飞了,读取了一个不存在的地址

使用特权

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

本版积分规则