適用情境
在除錯模式下發(fā)現(xiàn)微控制器進入Hard Fault,或是在運作時發(fā)現(xiàn)微控制器的UART輸出Hard Fault信息。
除錯技巧
在除錯模式下找到進入Hard Fault前運行的最后一個指令。
取得 SP (Stack Pointer) 值。
使用SP 在Memory窗口中找到Stack。
Stack的第七個值就是最后一筆運行的指令的地址。
在Disassembly 窗口查詢該地址對應(yīng)的指令。

解說
當(dāng)Cortex-M核要執(zhí)行一個無效的指令,例如讀取一個不存在的內(nèi)存位置,核心會進入hard fault來保護自己。硬件先將一些CPU寄存器放到Stack中在進入Hard Fault handler。使用者可透過Stack Pointer找到存放最后一筆被執(zhí)行的指令的內(nèi)存地址,進而找到觸發(fā)Hard Fault的程序流程。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
微控制器
+關(guān)注
關(guān)注
48文章
8375瀏覽量
164543 -
uart
+關(guān)注
關(guān)注
22文章
1314瀏覽量
106634 -
Cortex-M
+關(guān)注
關(guān)注
2文章
234瀏覽量
31091
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
如何分析Hard Fault錯誤的原因?
可能很多工程師在使用Cortex-M處理器做開發(fā)的時候最怕遇到的一類錯誤就是調(diào)試時遇到Hard Fault。引發(fā)Fault異常的情況有很多,除了程序本身的因素以為,設(shè)備外部環(huán)境的
發(fā)表于 10-25 14:40
Hard fault產(chǎn)生原因硬件方面常見原因
一、 Hard fault 產(chǎn)生原因硬件方面常見原因:1. 電源設(shè)計有錯誤,造成器件供電不穩(wěn);2. 電源質(zhì)量不好,文波,噪聲過大;3. 器件
發(fā)表于 02-14 07:40
程序進入硬件錯誤中斷hard_fault如何尋找原因?
程序運行后,會卡死,進入硬件錯誤中斷,但我不知道問題出在哪?該如何解決?在MDK環(huán)境下,進入調(diào)試模式,運行后進入rt_hw_hard_fault
發(fā)表于 02-13 13:45
程序在運行一段時間后報In Hard Fault Handler錯誤的原因?怎么解決?
= 0x8
r12 = 0x3
lr= 0xbcf
pc= 0x168c
psr = 0x21000000
想根諸位請教,進入In Hard Fault Handler的原因有哪些?
發(fā)表于 06-28 06:02
程序在運行一段時間后報In Hard Fault Handler錯誤的原因?
= 0x8
r12 = 0x3
lr= 0xbcf
pc= 0x168c
psr = 0x21000000
想根諸位請教,進入In Hard Fault Handler的原因有哪些?
發(fā)表于 08-28 07:45
使用指針調(diào)用函數(shù)產(chǎn)生 Hard Fault
使用指針調(diào)用函數(shù)產(chǎn)生 Hard Fault
發(fā)表于 12-07 17:52
?0次下載
如何排查程序的Hard fault錯誤
Hard fault產(chǎn)生原因,硬件方面常見原因: 1. 電源設(shè)計有錯誤,造成器件供電不穩(wěn); 2. 電源質(zhì)量不好,文波,噪聲過大; 3.器件接
發(fā)表于 11-22 14:13
?7次下載
新唐開發(fā)平臺:進階使用者的七大訣竅(2)進入除錯模式找出Hard Fault原因
評論