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

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

hardfault排故記錄01

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

平臺:

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調試


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美亚洲国产一区二区三区 | 欧美黄色一级带 | 久久国产精品久久久久久久久久 | 成人免费福利网站 | 羞羞视频一区 | 免费一级欧美大片视频 | 日本s级毛片免费观看 | 欧美另类视频在线 | 欧美伦理一区二区 | 色婷婷tv| 爱操在线 | 欧美a在线观看 | 国产亚洲精品久久久久婷婷瑜伽 | 国产精品1区 | 蜜桃av网 | 91九色网址| 精品国产一区二区三区四区在线 | 欧美日韩亚洲精品一区二区三区 | 午夜视频福利 | 亚洲情视频 | 成人片免费视频 | 国产亚洲精品综合一区91555 | 久久亚洲精品国产一区 | 久久综合艹 | 91成人免费看 | 欧美一区二区片 | 亚洲精久久 | 激情视频免费看 | 国产毛片在线看 | av成人在线免费观看 | 一区二区精品在线 | 久久精品国产99久久6动漫亮点 | 久久久中精品2020中文 | 成人一级视频在线观看 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 国产福利视频 | 黄视频免费在线观看 | 欧美成人激情 | 欧美wwwwww | 狠狠干五月天 | 手机在线看片国产 |