資源描述:
《arm中異常中斷處理概述》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、異常中斷處理概述1.ARM中異常中斷處理概述1)在正常程序執(zhí)行過(guò)程中,每執(zhí)行一條ARM指令,程序計(jì)數(shù)器寄存器PC的值加4個(gè)字節(jié);每執(zhí)行一條Thumb指令,程序計(jì)數(shù)器寄存器PC的值加兩個(gè)字節(jié).整個(gè)過(guò)程是順序執(zhí)行.2)通過(guò)跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址標(biāo)號(hào)處執(zhí)行,或者跳轉(zhuǎn)到特定的子程序處執(zhí)行;B指令用于執(zhí)行跳轉(zhuǎn)操作;BL指令在執(zhí)行跳轉(zhuǎn)操作的同時(shí),保存子程序的返回地址;BX指令在執(zhí)行跳轉(zhuǎn)操作的同時(shí),根據(jù)目標(biāo)地址的最低位可以將程序狀態(tài)切換到Thumb狀態(tài);BLX指令執(zhí)行3個(gè)操作:跳轉(zhuǎn)到目標(biāo)地址處執(zhí)行,保存子程序的返回地址(R15保存在R1
2、4中),根據(jù)目標(biāo)地址的最低位可以將程序狀態(tài)切換到Thumb狀態(tài).3)當(dāng)異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行.在當(dāng)異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行.4)在進(jìn)入異常中斷處理程序時(shí),要保存被中斷的程序的執(zhí)行現(xiàn)場(chǎng),在從異常中斷處理程序退出時(shí),要恢復(fù)被中斷的程序的執(zhí)行現(xiàn)場(chǎng).本章討論ARM體系中的異常中斷機(jī)制.2.ARM體系中異常中斷種類.ARM體系中的異常中斷如下表所示:ARM體系中的異常中斷異常中斷名稱含義復(fù)位(RESET)當(dāng)處理器的復(fù)位引腳有效時(shí),系統(tǒng)產(chǎn)生復(fù)位異常中
3、斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程序處執(zhí)行.復(fù)位異常中斷通常用在下面兩種情況:系統(tǒng)加電時(shí)系統(tǒng)復(fù)位時(shí)跳轉(zhuǎn)到復(fù)位中斷向量處執(zhí)行,稱為軟復(fù)位數(shù)據(jù)訪問(wèn)中止(DataAbort)如果數(shù)據(jù)訪問(wèn)指令的目標(biāo)地址不存在,或者該地址不允許當(dāng)前指令訪問(wèn),處理器產(chǎn)生數(shù)據(jù)訪問(wèn)中止異常中斷快速中斷請(qǐng)求(FIQ)當(dāng)處理器的外部快速中斷請(qǐng)求引腳有效,而且CPSR寄存器的F控制位被清除時(shí),處理器產(chǎn)生外部中斷請(qǐng)求(FIQ)異常中斷外部中斷請(qǐng)求(IRQ)當(dāng)處理器的外部中斷請(qǐng)求引腳有效,而且CPSR寄存器的I控制位被清除時(shí),處理器產(chǎn)生外部中斷請(qǐng)求(IRQ)異常中斷.系統(tǒng)中各外
4、設(shè)通常通過(guò)該異常中斷請(qǐng)求處理器服務(wù)預(yù)取指令中止(PrefechAbort)如果處理器預(yù)取的指令的地址不存在,或者該地址不允許當(dāng)前指令訪問(wèn),當(dāng)該被預(yù)取的指令執(zhí)行時(shí),處理器產(chǎn)生指令預(yù)取中止異常中斷軟件中斷(softwareinterruptSWI)這是一個(gè)有用化定義的中斷指令.可用于用戶模式下的程序調(diào)用特權(quán)操作指令.在實(shí)時(shí)了操作系統(tǒng)(RTOS)中可以通過(guò)該機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用未定義的指令(undefinedinstruction)當(dāng)ARM處理器或者是系統(tǒng)中的協(xié)處理器認(rèn)為當(dāng)前指令未定義時(shí),產(chǎn)生未定義的指令異常中斷.可以通過(guò)該異常中斷機(jī)制仿真
5、浮點(diǎn)向量運(yùn)算1.異常中斷向量表及異常中斷優(yōu)先級(jí)中斷向量表中指定了各異常中斷及其處理程序的對(duì)應(yīng)關(guān)系.它通常存放在存儲(chǔ)地址的低端.在ARM體系中,異常中斷向量表的大小為32字節(jié).其中,每個(gè)異常中斷占據(jù)4個(gè)字節(jié)大小,保留了4個(gè)字節(jié)空間.每個(gè)異常中斷對(duì)應(yīng)的中斷向量表的4個(gè)字節(jié)的空間中存放了一個(gè)跳轉(zhuǎn)指令或者一個(gè)向PC寄存器中賦值的數(shù)據(jù)訪問(wèn)指令.通過(guò)這兩種指令,程序?qū)⑻D(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行.當(dāng)幾個(gè)異常中斷同時(shí)發(fā)生時(shí),就必須按照一定的次序來(lái)處理這些異常中斷.在ARM中通過(guò)給各異常中斷富裕一定的優(yōu)先級(jí)來(lái)實(shí)現(xiàn)這種處理次序.當(dāng)然有些異常中斷是
6、不坑能同時(shí)發(fā)生的,如指令預(yù)取中止異常中斷和軟件中斷(SWI)異常中斷是有同一條指令的執(zhí)行觸發(fā)的,他們是不可能同時(shí)發(fā)生的.處理器執(zhí)行某個(gè)特定的異常中斷的過(guò)程中,稱為處理器處于特定的中斷模式.各異常中斷的中斷向量地址以及中斷的處理優(yōu)先級(jí)如表2所示.各異常中斷的中短向量地址以及中斷的處理優(yōu)先級(jí)中斷向量地址異常中斷類型異常中斷模式優(yōu)先級(jí)(6最低)0x0復(fù)位特權(quán)模式(SVC)10x4未定義的指令未定義指令中止模式(Undef)60x8軟件中斷(SWI)特權(quán)模式(SVC)60x0c指令預(yù)取中止中止模式50x10數(shù)據(jù)訪問(wèn)中止中止模式20x14保留未
7、使用未使用0x18外部中斷請(qǐng)求(IRQ)外部中斷(IRQ)模式40x1c快速中斷請(qǐng)求(FIQ)快速中斷(FIQ)模式32.異常中斷使用的寄存器各異常中斷對(duì)應(yīng)著一定的處理器模式.應(yīng)用程序通常運(yùn)行在用戶模式下.ARM中的處理器模式如表3所示.ARM中的處理器模式處理器模式描述用戶模式正常程序執(zhí)行的模式快速中斷模式用于高速數(shù)據(jù)傳輸和通道處理外部中斷模式用于通常的中斷處理特權(quán)模式供操作系統(tǒng)使用的一種保護(hù)模式中止模式用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)未定義指令模式用于支持通過(guò)軟件仿真硬件的協(xié)處理器系統(tǒng)模式用于運(yùn)行特權(quán)級(jí)的操作系統(tǒng)任務(wù)各種不同的處理器模式可能
8、有對(duì)應(yīng)于該處理器模式的物理寄存器組,如表4所示,其中,R13_svc表示特權(quán)模式下的R13寄存器,R13_abt表示中止模式下的R13寄存器,其余的各寄存器名稱含義類推.表4各處理器模式的物理寄存器組用戶模式系統(tǒng)模式特權(quán)