标题:
又一次Hardfault
[打印本页]
作者:
xuwei
时间:
2015-6-13 00:34
标题:
又一次Hardfault
多少年没出现过hardfault 了。终于又让我碰上了。
最近在调试的时候需要一个外部中断,于是乎添加之,本想到没啥事的。结果直接Hardfault
心说来就来吧,反正又不是第一次,开始定位PC指针打开一看是ETX线程的MEMcpy出错。
找吧
坑爹的找了一晚上没找到,这是标准库啊,怎么会有问题、
之后就是各种的加保护,各种保护。
锁内核,关中断。
最后还是依旧如此
过去看了变量
发现有个dst 指针为0x00000000;而他应该是DMA的RAM地址
这不是非法修改么?我操。
找啊找找啊找
没找到
后来把M3的内核参考翻出来了,看寄存器,反而更糊涂了
实在没招了......
开始排除法
反复测试发现中断发送邮箱后就死。
打开线程入口
开始逐步的排除全删了一点点加,终于在
找到问题。
这是个信号,没什么奇怪的,但是
此信号为全局变量,这样我在引用的时候需要用extern 声明
结果
变成了这样
这是什么鸟货?
啧啧少了一个char /////
加上编译,运行OK
实际上这个内存越界、野指针、除零一样,是非法操作,会导致Hardfault的。因为不再是一个变量。所以然。
2晚上终于让我找到根了!马丹的哥从来不熬夜。为此耗费两个晚上,今天还他妈的想了一天。
搞定了也值得!!
2015 05 25
比特老王
作者:
admin
时间:
2015-9-13 20:36
谢谢 hardfault这个问题我也遇到过.回顾一下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1