找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2721|回复: 1
收起左侧

又一次Hardfault

[复制链接]
ID:82781 发表于 2015-6-13 00:34 | 显示全部楼层 |阅读模式
多少年没出现过hardfault 了。终于又让我碰上了。
最近在调试的时候需要一个外部中断,于是乎添加之,本想到没啥事的。结果直接Hardfault
心说来就来吧,反正又不是第一次,开始定位PC指针打开一看是ETX线程的MEMcpy出错。


找吧

坑爹的找了一晚上没找到,这是标准库啊,怎么会有问题、
之后就是各种的加保护,各种保护。

锁内核,关中断。

最后还是依旧如此


过去看了变量
发现有个dst 指针为0x00000000;而他应该是DMA的RAM地址
这不是非法修改么?我操。

找啊找找啊找
没找到
后来把M3的内核参考翻出来了,看寄存器,反而更糊涂了

实在没招了......

开始排除法
反复测试发现中断发送邮箱后就死。
打开线程入口

开始逐步的排除全删了一点点加,终于在

找到问题。
这是个信号,没什么奇怪的,但是

此信号为全局变量,这样我在引用的时候需要用extern 声明
结果

变成了这样



这是什么鸟货?
啧啧少了一个char /////

加上编译,运行OK

实际上这个内存越界、野指针、除零一样,是非法操作,会导致Hardfault的。因为不再是一个变量。所以然。

2晚上终于让我找到根了!马丹的哥从来不熬夜。为此耗费两个晚上,今天还他妈的想了一天。

搞定了也值得!!

2015 05 25
比特老王







回复

使用道具 举报

ID:1 发表于 2015-9-13 20:36 | 显示全部楼层
谢谢 hardfault这个问题我也遇到过.回顾一下
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表