




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
ARM的異常處理學(xué)習(xí)筆記轉(zhuǎn)貼ARM的異常處理這部分比較不好理解。當(dāng)異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。當(dāng)異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷指令的下條指令處執(zhí)行。在進入異常中斷處理程序時,要保存被中斷程序的執(zhí)行現(xiàn)場,從異常中斷處理程序退出時,要恢復(fù)被中斷程序的執(zhí)行現(xiàn)場。1、引起異常的原因(1)、指令執(zhí)行引起的異常軟件中斷、未定義指令(包括所要求的協(xié)處理器不存在是的協(xié)處理器指令)、預(yù)取址中止(存儲器故障)、數(shù)據(jù)中止。(2)、外部產(chǎn)生的中斷復(fù)位、FIQ、IRQ。2、ARM中異常中斷的種類(1)、復(fù)位(RESET)a、當(dāng)處理器復(fù)位引腳有效時,系統(tǒng)產(chǎn)生復(fù)位異常中斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程序處執(zhí)行,包括系統(tǒng)加電和系統(tǒng)復(fù)位。b、通過設(shè)置PC跳轉(zhuǎn)到復(fù)位中斷向量處執(zhí)行稱為軟復(fù)位。(2)、未定義的指令當(dāng)ARM處理器或者是系統(tǒng)中的協(xié)處理器認(rèn)為當(dāng)前指令未定義時,產(chǎn)生未定義的指令異常中斷,可以通過改異常中斷機制仿真浮點向量運算。(3)、軟件中斷這是一個由用戶定義的中斷指令(SWD??捎糜谟脩裟J较碌某绦蛘{(diào)用特權(quán)操作指令。在實時操作系統(tǒng)中可以通過該機制實現(xiàn)系統(tǒng)功能調(diào)用。(4)、指令與取終止(PrefechAbort)如果處理器預(yù)取的指令的地址不存在,或者該地址不允許當(dāng)前指令訪問,當(dāng)被預(yù)取的指令執(zhí)行時,處理器產(chǎn)生指令預(yù)取終止異常中斷。(5)、數(shù)據(jù)訪問終止(DATAABORT)如果數(shù)據(jù)訪問指令的目標(biāo)地址不存在,或者該地址不允許當(dāng)前指令訪問,處理器產(chǎn)生數(shù)據(jù)訪問終止異常中斷。(6)、外部中斷請求(IRQ)當(dāng)處理器的外部中斷請求引腳有效,而且CPSR的寄存器的I控制位被清除時,處理器產(chǎn)生外部中斷請求異常中斷。系統(tǒng)中個外設(shè)通過該異常中斷請求處7)、快速中斷請求(FIQ)理服務(wù)。(當(dāng)處理器的外部快速中斷請求引腳有效,而且CPSR的F控制位被清除時,處理器產(chǎn)生外部中斷請求異常中斷。3、異常的響應(yīng)過程除了復(fù)位異常外,當(dāng)異常發(fā)生時,ARM處理器盡可能完成當(dāng)前指令(除了復(fù)位異常)后,再去處理異常。并執(zhí)行如下動作:(1)、將引起異常指令的下一條指令的地址保存到新模式的R14中,若異常是從ARM狀態(tài)進入,LR寄存器中保存的是下一條指令的地址(當(dāng)前PC+4或PC+8,與異常的類型有關(guān));若異常是從Thumb狀態(tài)進入,則在LR寄存器中保存當(dāng)前PC的偏移量,這樣,異常處理程序就不需要確定異常是從何種狀態(tài)進入的。例如:在軟件中斷異常SWI,指令MOVPC,R14_svc總是返回到下一條指令,不管SWI是在ARM狀態(tài)執(zhí)行,還是在Thumb狀態(tài)執(zhí)行。(2)、將CPSR的內(nèi)容保存到要執(zhí)行異常中斷模式的SPSR中。(注意:如果通過程序修改CPSR進入異常模式,硬件將不會將CPSR保存到SPSR中)(3)、設(shè)置CPSR相應(yīng)的位進入相應(yīng)的中斷模式。(4)、通過設(shè)置CPSR的第7位來禁止IRQ。如果異常為快速中斷和復(fù)位。則還要設(shè)置CPSR的第6位來禁止快速中斷。(5)、給PC強制賦向量地址值。ARM處理器內(nèi)核會自動執(zhí)行以上幾步,程序計數(shù)器PC總是跳轉(zhuǎn)到相應(yīng)的固定地址。如果異常發(fā)生時,處理器處于ThUmb狀態(tài),則當(dāng)異常向量地址加載入PC時,處理器自動切換到ARM狀態(tài),則異常處理返回時,自動切換到ThUmb狀態(tài),即中斷處理只在ARM狀態(tài)下處理。4、異常中斷處理返回/*下面引用了中的內(nèi)容*/異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回:(1)、將所有修改過的用戶寄存器從處理程序的保護棧中恢復(fù)。(2)、將SPSR復(fù)制回CPSR中,將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。(3)、若在進入異常處理時設(shè)置了中斷禁止位,要在此清除。復(fù)位異常處理程序不需要返回。5、程序示例分析下面結(jié)合Samsung公司基于ARM7TDMI內(nèi)核的S3C44B0微控制器的啟動代碼詳細(xì)說明關(guān)于異常處理中的Reset、IRQ和FIQ處理過程及實現(xiàn)方法,以下代碼均在EmbestIDE集成開發(fā)環(huán)境下能夠編譯運行并經(jīng)過實際驗證。.text#EmbestIDE集成開發(fā)環(huán)境可以通過鏈接腳本文件將下面的語句定位在零起始地址,系統(tǒng)上#加電后CPU從此處開始執(zhí)行。ENTRY:bResetHandler/*0x00000000;fordebUg*/bHandlerUndef/*0x00000004;handlerUndef*/bHandlerSWI/*0x00000008;SWIinterrUpthandler*/bHandlerPabort/*0x0000000C;handlerPAbort*/bHandlerDabort/*0x00000010;handlerDAbort*/b./*handlerReserved*/bHandlerIRQ/*0x00000018*/bHandlerFIQ/*0x0000001C*/上面的代碼用于在出現(xiàn)異常時,CPU根據(jù)不同情況利用標(biāo)號自動跳轉(zhuǎn)到對應(yīng)的異常處理程序處,分別對應(yīng)于處理器的7種不同工作模式。當(dāng)復(fù)位后,由零地址的跳轉(zhuǎn)指令使CPU轉(zhuǎn)去執(zhí)行啟動代碼,它是用于初始化CPU內(nèi)部特殊功能寄存器和外圍電路以及用來為高級語言寫的軟件做好運行前準(zhǔn)備的一小段匯編語言,這部分匯編代碼也可以被成為嵌入式系統(tǒng)的Bootloader。運行完bootloader代碼后,會自動跳轉(zhuǎn)至利用高級語言編寫的系統(tǒng)應(yīng)用程序或是開始運行操作系統(tǒng)內(nèi)核。而對于中斷的處理在系統(tǒng)啟動代碼中對于初學(xué)者是較難理解的。當(dāng)CPU接收到中斷請求信號之后且允許CPU響應(yīng)中斷請求,則對于FIQ和非矢量IRQ中斷CPU會根據(jù)中斷控制器設(shè)定的工作模式去自動執(zhí)行0x0000001C或0x00000018處的跳轉(zhuǎn)指令。執(zhí)行bHandlerIRQ#跳轉(zhuǎn)到HandlerIRQHANDLERHandleIRQ#這個宏定義的動作是要跳轉(zhuǎn)到HandleIRQ中存放的地址去運行。#然后在復(fù)位初始化代碼(ResetHandler)中會看到有:/*SetupIRQhandler*/ldrr0,=HandleIRQldrr1,=IsrIRQstrr1,[r0]這里是把IsrIRQ的地址放到了HandleIRQ中。因此程序會跳轉(zhuǎn)到IsrIRQ去執(zhí)行。#ARM7TDMI內(nèi)核只支持FIQ和IRQ兩個中斷請求,當(dāng)有多個中斷請求信號同時有效的時#候,是利用軟件的方式來完成優(yōu)先級判定,然后再跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序。在IsrIRQ中,CPU會讀取中斷掛起寄存器的數(shù)值來判定中斷來源和優(yōu)先級。而S3C44B0中集成的中斷控制器提供了一種更為快速有效的中斷響應(yīng)方式:矢量中斷利用中斷控制器的硬件方式直接提供對中斷服務(wù)的快速響應(yīng):當(dāng)多重中斷請求信號發(fā)生時,由硬件優(yōu)先級判定邏輯確定哪個中斷請求將被響應(yīng),同時硬件邏輯還利用向量表中的跳轉(zhuǎn)指令使CPU直接跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序入口出。這樣在很大程度上減小了中斷響應(yīng)的延遲。那么在程序設(shè)計上,就需要我們在矢量中斷表中對應(yīng)的地址上放置各個中斷請求對應(yīng)的服務(wù)程序入口地址,如:VECTOR_BRANCH:ldrpc,=HandlerEINT0/*0x00000020*/ldrpc,=HandlerEINT1/*0x00000024*/ldrpc,=HandlerEINT2/*0x00000028*/ldrpc,=HandlerEINT3/*0x0000002C*/ldrpc,=HandlerEINT4567/*0x00000030*/ldrpc,=HandlerTICK/*0x00000034*/b.b.ldrpc,=HandlerZDMA0/*0x00000040*/ldrpc,=HandlerZDMA1/*0x00000044*/…6、中斷向量表a、中斷向量表指定了個異常中斷及其處理程序的對應(yīng)關(guān)系。他通常存放在存儲地址的低端。在ARM體系中,異常中斷向量表的大小為32字節(jié),其中每個異常中斷占據(jù)4個字節(jié)大小,保留了4個字節(jié)空間。b、每個異常中斷對應(yīng)的中斷向量表中的4個字節(jié)的空間中存放了一個跳轉(zhuǎn)指令或者一個向PC寄存器中賦值的數(shù)據(jù)訪問指令。通過這兩種指令,程序?qū)⑻D(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。c、當(dāng)幾個異常中斷同時發(fā)生時,系統(tǒng)并不能按照一定的次序來處理這些異常中斷,例如:當(dāng)FIQ、IRQ和第三個其他中斷同時發(fā)生,F(xiàn)IQ比IRQ優(yōu)先級高,IRQ會忽略,直到FIQ返回到用戶代碼為止。各個異常中斷的中斷向量地址以及中斷的處理優(yōu)先級中斷向量地址|異常中斷類型|異常中斷模式|優(yōu)先級(6最低)|---| |---| |0x00|復(fù)位|特權(quán)模式|1|0x04|未定義的指令I(lǐng)und終止模式|6|0X08|軟件中斷|特權(quán)模式|6|0x0C∣指令預(yù)取終止|終止模式|5|0x101數(shù)據(jù)訪問終止|終止模式|2|0x14∣保留|未使用|未使用|0x18∣外部中斷請求Iirq模式|4|0x1C∣快速中斷請求Ifiq模式|3|7、總結(jié)S3C44B0利
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教師教育培訓(xùn)機構(gòu)戰(zhàn)略合作合同
- 2025福建省安全員《C證》考試題庫
- 2025年度企業(yè)產(chǎn)品質(zhì)量認(rèn)證服務(wù)合同范本
- 2025年度歷史輔導(dǎo)班協(xié)議書退費及人文知識拓展合同
- 2025年度教育機構(gòu)員工入職教學(xué)與培訓(xùn)合同
- 2025年度勞動解除協(xié)議書:物流行業(yè)員工退工補償與就業(yè)安置合同
- 智能家居融資居間合同范例
- 2025年度養(yǎng)豬業(yè)品牌營銷推廣合作協(xié)議
- 2025年度體育賽事賽事獎勵及獎金分配轉(zhuǎn)委托合同
- 2025年度5G通信技術(shù)合作介紹費合同
- 化工原理傳質(zhì)導(dǎo)論
- 環(huán)境與可持續(xù)發(fā)展ppt課件(完整版)
- Linux操作系統(tǒng)課件(完整版)
- 跨境電商亞馬遜運營實務(wù)完整版ppt課件-整套課件-最全教學(xué)教程
- 浙美版小學(xué)六年級美術(shù)下冊全冊精品必備教學(xué)課件
- DB32∕T 4245-2022 城鎮(zhèn)供水廠生物活性炭失效判別和更換標(biāo)準(zhǔn)
- 建設(shè)工程圍擋標(biāo)準(zhǔn)化管理圖集(2022年版)
- 人教版七年級上冊歷史課程綱要
- 濕法冶金簡介
- 2022新教科版六年級科學(xué)下冊全一冊全部教案(共28節(jié))
- 機器視覺論文英文
評論
0/150
提交評論