找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2729|回復: 1
打印 上一主題 下一主題
收起左側

又一次Hardfault

[復制鏈接]
跳轉到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-13 00:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
多少年沒出現(xiàn)過hardfault 了。終于又讓我碰上了。
最近在調試的時候需要一個外部中斷,于是乎添加之,本想到?jīng)]啥事的。結果直接Hardfault
心說來就來吧,反正又不是第一次,開始定位PC指針打開一看是ETX線程的MEMcpy出錯。


找吧

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

鎖內核,關中斷。

最后還是依舊如此


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

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

實在沒招了......

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

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

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

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

變成了這樣



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

加上編譯,運行OK

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

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

搞定了也值得。

2015 05 25
比特老王







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2015-9-13 20:36 | 只看該作者
謝謝 hardfault這個問題我也遇到過.回顧一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表