我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 618|回复: 0

Hard Fault

[复制链接]

该用户从未签到

60

主题

91

回帖

0

积分

二级逆天

积分
0

终身成就奖

QQ
发表于 2017-12-30 13:53:48 | 显示全部楼层 |阅读模式
问题:
该问题由某客户提出,发生在 STM32F101C8T6 器件上。据其工程师讲述:其某型号产品的设计中用到了 STM32F101C8T6 器件。在软件调试过程中,遇到了一个棘手的问题:程序会莫名其妙的跳到 Hard Fault 中断。在程序中,产生该中断的位置不固定,忽而在这里,忽而在那里。发生的时间不确定,有时候程序运了很长时间才遇到,有时候开始运行后没一会就发生了。产生该问题的原因不明,不知如何进行排查。
调研:
观察其工程师现场演示,证实确有其所述现象存在。
检查硬件设计:
1. 每一路 VDD,匀为 3.3V 供电且同源,并有 0.1uF 的退耦电容。
2. VDDA 为 3.3V 供电,与 VDD 同源,且有 0.1uF 的退耦电容。
3. VBAT 为 3.3V 供电,与 VDD 同源,且有 0.1uF 的退耦电容。
4. 设有芯片整体退耦电容,容值为 10uF。
5. 每一路 VSS 匀与电源地连接。
6. VSSA 与电源地连接。
7. 实测硬件电路,证实与原理图一致。退耦电容临近管脚摆放,地平面较为完整。
8. 用示波器实测电源纹波,小于 50mV。
检查软件设计:
1. 通过打印跟踪程序中每个指针变量,发现有指针对存贮器范围之外的地址进行访问。核查相关代码,该指针的数值来自 I2C 接收的数据。
2. 通过打印跟踪对I2C 数据缓冲区的访问,发现有缓冲区溢出现象发生。
3. 修改代码,将缓冲区加大,重新测试,未发生 Hard Fault 中断现象。
结论:
基本可以认为是缓冲区溢出,而造成某些指针取值错误,从而对非法地址进行了访问,进而引发出错保护中断发生。但对于此类问题,仍需进行长时间测试,才能有最终结论。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表