麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

hardfault排故記錄01

2019-11-10 19:52:44
字體:
來源:轉載
供稿:網友

平臺:

CPU :STM32f103rct6 編譯器 :MDK5.20; 調試工具:ULINK2

現象:

主板上電后鏈接ULINK,SW接口可以鏈接、可以下載程序,偶爾出現cannot access target shutting down debug session錯誤提示。 程序運行后,進入hardfault錯誤處理函數。

分析

尋找產生fault原因

1 Cortex-M3/4的Fault簡介 Cortex-M3/4的Fault異常是由于非法的存儲器訪問(比如訪問0地址、寫只讀存儲位置等)和非法的程序行為(比如除以0等)等造成的。常見的4種異常及產生異常的情況如下: Bus Fault:在fetch指令、數據讀寫、fetch中斷向量或中斷時存儲恢復寄存器棧情況下,檢測到內存訪問錯誤則產生Bus Fault。 Memory Management Fault:訪問了內存管理單元(MPU)定義的不合法的內存區域,比如向只讀區域寫入數據。 Usage Fault:檢測到未定義指令或在存取內存時有未對齊。還可以通過軟件配置是否檢測到除0和其它未對齊內存訪問也產生該異常,默認關閉,需要在工程初始化時配置: Hard Fault:在調試程序過程中,這種異常最常見。上面三種異常發生任何一種異常都會引起Hard Fault,在上面的三種異常未使能的情況下,默認發生異常時進入Hard Fault中斷服務程序。使能前三種異常也要在初始化時配置:

cortex-m3內核出現HardFault_Handler故障的原因主要有兩個方面: 1、內存溢出或者訪問越界。這個需要自己寫程序的時候規范代碼,遇到了需要慢慢排查。 2、堆棧溢出。增加堆棧的大小。

調試

1, 查看產生hardfault原因

1)在stm32f10x_it.c中的hardfault處理函數中設置斷點,當發生hardfault時進入斷點。

void HardFault_Handler(void){ /* Go to infinite loop when Hard Fault exception occurs */ while (1) { }}

2)當進入Hard Fault斷點后,菜單欄Peripherals >Core Peripherals >Fault Reports打開異常發生的報告,查看發生異常的原因: 工具欄

錯誤報告欄 3)查看發生錯誤代碼地址: Cortex‐M3 在進入異常服務例程時,自動壓棧了 R0‐R3, R12, LR, PSR 和 PC,并且在返回時自 動彈出它們,通過讀取 PSP 的值, OS 就能夠獲取用戶應用程序使用的堆棧,進一步地就知道了在發 生異常時,被壓入寄存器的內容。

通過左側寄存器的值可以查找SP值,可得SP的地址為0x2000AF0,再在memory框中輸入SP的地址,查看堆棧里面的值依次為R0~R3、R12、LR、PC、XPRS,顯然堆棧后第21個字節到24字節即為LR,該地址0x0800186B即為異常前PC將要執行的下一條指令地址。再通過memory查找這個地址所對應的代碼即可查找到響應錯誤語句。

DEBUG調試


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 综合在线视频 | 免费观看黄色一级视频 | av免费不卡国产观看 | 国产黄色录像片 | 久久99国产综合精品 | 成人在线观看免费视频 | 极品美女一级毛片 | 伊人午夜视频 | 国产精品久久久久无码av | 九九视频在线观看黄 | 色域tv| 久久草在线视频国产 | 特级a欧美做爰片毛片 | 91精品国产福利尤物免费 | av观看国产 | 日韩视频一区二区在线观看 | 免费黄网站在线播放 | 久久人人做 | 噜噜噜影院 | 亚洲自拍第二页 | 国产羞羞视频在线观看免费应用 | 亚洲成人在线免费 | 粉嫩粉嫩一区二区三区在线播放 | 亚洲第一精品在线 | 久久久午夜电影 | 国产一区视频免费观看 | 欧美精品一区自拍a毛片在线视频 | 久久看免费视频 | 羞羞视频免费网站含羞草 | 中国成人在线视频 | 日本成人在线免费 | 欧洲精品久久 | 日本中文不卡视频 | 男女一边摸一边做羞羞视频免费 | 49vv看片免费 | 国产精品一区二区x88av | 黄色特级片黄色特级片 | 午夜视频在线观 | 国产乱乱视频 | 亚洲精品有限 | 久久精品视频1 |