找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2801|回復(fù): 1
收起左側(cè)

又一次Hardfault

[復(fù)制鏈接]
ID:82781 發(fā)表于 2015-6-13 00:34 | 顯示全部樓層 |閱讀模式
多少年沒出現(xiàn)過hardfault 了。終于又讓我碰上了。
最近在調(diào)試的時(shí)候需要一個(gè)外部中斷,于是乎添加之,本想到?jīng)]啥事的。結(jié)果直接Hardfault
心說來就來吧,反正又不是第一次,開始定位PC指針打開一看是ETX線程的MEMcpy出錯(cuò)。


找吧

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

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

最后還是依舊如此


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

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

實(shí)在沒招了......

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

開始逐步的排除全刪了一點(diǎn)點(diǎn)加,終于在

找到問題。
這是個(gè)信號(hào),沒什么奇怪的,但是

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

變成了這樣



這是什么鳥貨?
嘖嘖少了一個(gè)char /////

加上編譯,運(yùn)行OK

實(shí)際上這個(gè)內(nèi)存越界、野指針、除零一樣,是非法操作,會(huì)導(dǎo)致Hardfault的。因?yàn)椴辉偈且粋(gè)變量。所以然。

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

搞定了也值得!

2015 05 25
比特老王







回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2015-9-13 20:36 | 顯示全部樓層
謝謝 hardfault這個(gè)問題我也遇到過.回顧一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表