資料介紹
作者:dogsun88
一、進入異常之前處理器可能的狀態有:
1、 handler
2、 線程,MSP
3、 線程,PSP
二、產生異常時:
1、 有一個壓棧的過程,產生異常時使用PSP,就壓入到PSP中,產生異常時使用MSP,就壓入到MSP中
2、 會根據處理器的模式和使用的堆棧,設置LR的值(當然設置完的LR的值再壓棧)
三、異常返回時:
根據LR的值,判讀使用那個堆棧,然后再從相應的堆棧中POP數據到寄存器。
舉例說明:
在利用OSStartHighRdy->OSPendSV->OSPendSV_nosave啟動第一個線程時,在異常進入的時候,壓棧到MSP(不會影響PSP的內容),在通過BX LR指令從異常返回之前,有一句ORR LR, LR, #0x04來設置LR的值,保證我們從異常返回時是從PSP中POP數據到寄存器里,而此時PSP的值是OSTCBHighRdy->OSTCBStkPtr,即任務創建時定義的堆棧數組,同時在OSTaskStkInit函數中對該任務數組初始化時,要保證其組織結構和異常產生時處理器自動壓棧產生的棧的結構相同。
四、棧中的內容分析:
1、 變量
2、 調用函數時,如果子函數比較復雜,會由編譯器自動的壓入r4-r11, lr(壓入多少寄存器,由子函數的復雜程度決定的)
3、 異常保存,壓入棧的是r0-r3,r12,LR,PC,xSPR(硬件直接完成的)
4、 進程切換,所有寄存器全部壓棧
由于異常死機了之后的具體操作:
產生異常時,兩個值我們需要,一個是pc,一個是LR,通過LR找到棧, 再通過棧找到pc
1、 如果LR=0xFFFFFFF9說明產生異常的時候使用的是MSP,我們只需要讀出當前sp的值,
sp += 0x1c;讀出的內容就是產生異常時壓入棧的PC的值,這個值跟反匯編代碼對比,就能得到具體哪句話產生的異常。
2、 如果LR=0xFFFFFFFD明產生異常的時候使用的是PSP,我們需要讀出PSP的值,不要直接來讀sp的值,在keil集成開發環境中,調試時寄存器窗口有個Banked選項,會給出當前PSP的值,當然也可以在異常處理中加入兩句話:
MRS R0,PSP
PUSH {R0}
我們就能在當前MSP中得到,我們PSP的值了,之后操作和上面一樣,psp+=0x1c;讀出的內容就是產生異常時壓入棧的PC的值,這個值跟反匯編代碼對比,就能得到具體哪句話產生的異常。
文章來源:(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- Cortex-M3處理器內核與基于Cortex-M3的MCU關系
- Cortex-M3工作模式、異常與中斷介紹資料下載
- ARM Cortex-M3 MCU 的 I2C DMA操作和中斷資料下載
- Cortex-M3與Cortex-M4對比資料下載
- Cortex-M3和Cortex-M4 Fault異常應用之基礎知識資料下載
- Cortex-M3的異常和中斷資料下載
- 《ARM Cortex-M3權威指南》筆記資料下載
- ARM Cortex-M3/M4微控制器最大效率設計三秘訣資料下載
- ARM Cortex-M3系列GPIO口介紹資料下載
- ARM Cortex-M3內核微控制器與ARM7的區別資料下載
- Cortex-M3(M0)匯編-啟動代碼分析資料下載
- Cortex-M3 NVIC與中斷控制資料下載
- Cortex-M3內核的ARM處理器的應用資料說明 4次下載
- Cortex-M3的入門學習資料說明
- ARM Cortex-M3權威指南 47次下載
- 強大的Arm? Cortex?-M3內核(下) 670次閱讀
- Arm Cortex-M52的主要特性和規格 1081次閱讀
- Cortex-M3中斷優先級的相關知識 2233次閱讀
- 分析ARM Cortex-M內核復位啟動過程 2047次閱讀
- 美信cortex-m3內核芯片的啟動過程及連接文件介紹 1319次閱讀
- 基于FPGA搭建ARM Cortex-M3 SoC軟核 2335次閱讀
- 如何定制一顆ARM Cortex-M3 SoC軟核 1975次閱讀
- 米爾科技ARM Cortex-M3教程指南 2628次閱讀
- 米爾科技NXP LPC1857 LPC1850 Cortex-M3開發板概述 4170次閱讀
- Cortex-M3處理器中斷和FreeRTOS中斷優先級配置 6920次閱讀
- STM32的Cortex-M3中斷異常處理 7958次閱讀
- 基于ARM處理器的高效異常處理解決方案 1286次閱讀
- DesignStart Cortex-M3軟件開發網上課程 5729次閱讀
- ARM Cortex M3/M4微控制器最大效率設計三秘訣 3515次閱讀
- 采用ARM Cortex-M3的USB熱電偶溫度測量系統電路圖 3807次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多