国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

hardfault排故記錄01

2019-11-10 19:52:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

平臺(tái):

CPU :STM32f103rct6 編譯器 :MDK5.20; 調(diào)試工具:ULINK2

現(xiàn)象:

主板上電后鏈接ULINK,SW接口可以鏈接、可以下載程序,偶爾出現(xiàn)cannot access target shutting down debug session錯(cuò)誤提示。 程序運(yùn)行后,進(jìn)入hardfault錯(cuò)誤處理函數(shù)。

分析

尋找產(chǎn)生fault原因

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

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

調(diào)試

1, 查看產(chǎn)生hardfault原因

1)在stm32f10x_it.c中的hardfault處理函數(shù)中設(shè)置斷點(diǎn),當(dāng)發(fā)生hardfault時(shí)進(jìn)入斷點(diǎn)。

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

2)當(dāng)進(jìn)入Hard Fault斷點(diǎn)后,菜單欄Peripherals >Core Peripherals >Fault Reports打開(kāi)異常發(fā)生的報(bào)告,查看發(fā)生異常的原因: 工具欄

錯(cuò)誤報(bào)告欄 3)查看發(fā)生錯(cuò)誤代碼地址: Cortex‐M3 在進(jìn)入異常服務(wù)例程時(shí),自動(dòng)壓棧了 R0‐R3, R12, LR, PSR 和 PC,并且在返回時(shí)自 動(dòng)彈出它們,通過(guò)讀取 PSP 的值, OS 就能夠獲取用戶應(yīng)用程序使用的堆棧,進(jìn)一步地就知道了在發(fā) 生異常時(shí),被壓入寄存器的內(nèi)容。

通過(guò)左側(cè)寄存器的值可以查找SP值,可得SP的地址為0x2000AF0,再在memory框中輸入SP的地址,查看堆棧里面的值依次為R0~R3、R12、LR、PC、XPRS,顯然堆棧后第21個(gè)字節(jié)到24字節(jié)即為L(zhǎng)R,該地址0x0800186B即為異常前PC將要執(zhí)行的下一條指令地址。再通過(guò)memory查找這個(gè)地址所對(duì)應(yīng)的代碼即可查找到響應(yīng)錯(cuò)誤語(yǔ)句。

DEBUG調(diào)試


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 定南县| 荥经县| 扬中市| 三门县| 广西| 大理市| 喀喇沁旗| 门源| 黄山市| 康平县| 温泉县| 常德市| 浙江省| 塔河县| 航空| 湖北省| 鄯善县| 临海市| 忻州市| 兴业县| 宜良县| 禄丰县| 兴山县| 遂溪县| 瑞昌市| 青阳县| 和政县| 射洪县| 正阳县| 阿图什市| 武冈市| 新巴尔虎右旗| 浪卡子县| 梁平县| 临西县| 吉林市| 冷水江市| 营山县| 青岛市| 涿鹿县| 大名县|