標(biāo)題: 又一次Hardfault [打印本頁]

作者: xuwei    時間: 2015-6-13 00:34
標(biāo)題: 又一次Hardfault
多少年沒出現(xiàn)過hardfault 了。終于又讓我碰上了。
最近在調(diào)試的時候需要一個外部中斷,于是乎添加之,本想到?jīng)]啥事的。結(jié)果直接Hardfault
心說來就來吧,反正又不是第一次,開始定位PC指針打開一看是ETX線程的MEMcpy出錯。


找吧

坑爹的找了一晚上沒找到,這是標(biāo)準(zhǔn)庫啊,怎么會有問題、
之后就是各種的加保護,各種保護。

鎖內(nèi)核,關(guān)中斷。

最后還是依舊如此


過去看了變量
發(fā)現(xiàn)有個dst 指針為0x00000000;而他應(yīng)該是DMA的RAM地址
這不是非法修改么?我操。

找啊找找啊找
沒找到
后來把M3的內(nèi)核參考翻出來了,看寄存器,反而更糊涂了

實在沒招了......

開始排除法
反復(fù)測試發(fā)現(xiàn)中斷發(fā)送郵箱后就死。
打開線程入口

開始逐步的排除全刪了一點點加,終于在

找到問題。
這是個信號,沒什么奇怪的,但是

此信號為全局變量,這樣我在引用的時候需要用extern 聲明
結(jié)果

變成了這樣



這是什么鳥貨?
嘖嘖少了一個char /////

加上編譯,運行OK

實際上這個內(nèi)存越界、野指針、除零一樣,是非法操作,會導(dǎo)致Hardfault的。因為不再是一個變量。所以然。

2晚上終于讓我找到根了!馬丹的哥從來不熬夜。為此耗費兩個晚上,今天還他媽的想了一天。

搞定了也值得!

2015 05 25
比特老王








作者: admin    時間: 2015-9-13 20:36
謝謝 hardfault這個問題我也遇到過.回顧一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1