五月色综合_娇妻卧室含辱迎接领导h_美女ppp_亚洲欧美aaa_天天在线综合_91午夜激情_裸体裸乳免费看_国产精品无码99re_日韩午夜视频在线观看_色爽 av_欧美大奶子视频_美女被爆操_国内久久_日本免费福利视频_苏语棠在线电视剧在线高清在线观看

【Arm】Keil MDK出現HardFault_Handler硬件中斷的排查方法

1、 文檔目標

用于排查使用MDK進入開發過程中,是否是因為堆棧溢出導致出現HardFault_Handler硬件中斷。


2、 問題場景

HardFault_Handler硬件中斷是在對ARM芯片進行開發過程中遇到的最難處理的中斷信號(圖2-1)。硬件中斷出現基本上是由內存溢出、訪問越界和堆棧溢出。對于內存溢出、訪問越界這兩個原因需要自行根據代碼的情況去排查。堆棧溢出情況可以通過下面的方法去確認堆棧溢出的大概位置,便于縮小范圍,盡快排查問題出現的位置。


圖2-1


3、軟硬件環境

1)、軟件版本:Keil MDK 5.38a

2)、電腦環境:Windows 11

3)、外設硬件:無


4、解決方法

1)、當發現出現硬件中斷后,需要在HardFault_Handler函數中設置斷點。

2)、當程序停止到斷點處后,通過Register窗口中Internal的Stack確認堆棧指針類型是什么?圖4-2顯示的就是MSP。


圖4-2

3)、然后,確認Banked中MSP指針的值。(如圖4-3)


圖4-3


4)、然后,通過圖示的位置打開Memory 1窗口。在Memory 1窗口中的Address中輸入MSP的值(如圖4-4)。在輸出結果中找到以“08”開頭的地址信息。這個就是具體代碼的位置。


圖4-4


5)、然后,在Disassembly窗口中,右鍵打開菜單找到Show Disassembly at Address(如圖4-5-1),在打開的Show code at Address窗口中以0x為開頭的方式輸入在Memory1中確認的地址信息(如圖4-5-2),然后,就可以跳轉到對應的代碼位置。然后,根據跳轉的代碼位置去確認堆棧溢出的位置即可。


圖4-5-1


圖4-5-2

主站蜘蛛池模板: 合川市| 万载县| 定兴县| 马关县| 宝山区| 祥云县| 金坛市| 梁河县| 肃宁县| 泰和县| 镇巴县| 抚远县| 江门市| 秦安县| 滁州市| 沐川县| 石泉县| 寻甸| 溧水县| 慈利县| 湄潭县| 额敏县| 宣化县| 锡林郭勒盟| 瑞丽市| 新和县| 乌恰县| 新源县| 合水县| 朝阳区| 南开区| 页游| 松桃| 连山| 精河县| 伊宁市| 洱源县| 兴义市| 洪江市| 星子县| 金坛市|