版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
互動(dòng)教學(xué)
——ARM內(nèi)核的異常處理1.ARM內(nèi)核中異常的含義是什么?異常是指程序執(zhí)行過(guò)程中出現(xiàn)的意外事件2.ARM內(nèi)核有幾種異常,分別是什么,它們?cè)谑裁礂l件下發(fā)生?
異常類(lèi)型向量地址優(yōu)先級(jí)異常中斷含義復(fù)位(Reset)0x000000001當(dāng)處理器的復(fù)位引腳有效時(shí),系統(tǒng)產(chǎn)生復(fù)位異常中斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程序處執(zhí)行。復(fù)位異常中斷通常用在下面幾種情況下:系統(tǒng)加電時(shí)系統(tǒng)復(fù)位時(shí)跳轉(zhuǎn)到復(fù)位中斷向量處執(zhí)行,稱(chēng)為軟復(fù)位未定義的指令undefinedinstruction0x000000046當(dāng)ARM處理器或者是系統(tǒng)中的協(xié)處理器認(rèn)為當(dāng)前指令未定義時(shí),產(chǎn)生未定義的指令(undefinedinstruction)異常中斷。可以通過(guò)該異常中斷機(jī)制仿真浮點(diǎn)向量運(yùn)算軟件中斷(SWI)0x000000086這是一個(gè)由用戶(hù)定義的中斷指令。可用于用戶(hù)模式下的程序調(diào)用特權(quán)操作異常類(lèi)型向量地址優(yōu)先級(jí)異常中斷含義指令預(yù)取中止PrefechAbort0x0000000C5如果處理器預(yù)取的指令的地址不存在,或者該地址不允許當(dāng)前指令訪問(wèn),當(dāng)該被預(yù)取的指令執(zhí)行時(shí),處理器產(chǎn)生指令預(yù)取中止(PrefechAbort)異常中斷數(shù)據(jù)訪問(wèn)中止DataAbort0x000000102如果數(shù)據(jù)訪問(wèn)指令的目標(biāo)地址不存在,或者該地址不允許當(dāng)前指令訪問(wèn),處理器產(chǎn)生數(shù)據(jù)訪問(wèn)中止異常中斷外部中斷請(qǐng)求(IRQ)0x000000184當(dāng)處理器的外部中斷請(qǐng)求引腳有效,而且CPSR寄存器的I控制位被清除時(shí),處理器產(chǎn)生外部中斷請(qǐng)求(IRQ)異常中斷。系統(tǒng)中各外設(shè)通常通過(guò)該異常中斷請(qǐng)求處理器服務(wù)快速中斷請(qǐng)求(FIQ)0x0000001C3當(dāng)處理器的外部快速中斷請(qǐng)求引腳有效,而且CPSR寄存器的F控制位被清除時(shí),處理器產(chǎn)生外部中斷請(qǐng)求(FIQ)3.異常處理的一般流程包含哪些主要步驟?異常產(chǎn)生異常向量表異常處理程序(ARM)〔可選〕異常處理程序(Thumb)異常響應(yīng)異常返回異常響應(yīng)的過(guò)程〔復(fù)位異常除外〕出現(xiàn)xxx異常時(shí),ARM內(nèi)核盡可能執(zhí)行完當(dāng)前正在執(zhí)行的指令,然后依次自動(dòng)實(shí)現(xiàn)以下響應(yīng)過(guò)程將當(dāng)前CPSR的內(nèi)容拷貝到SPSR_xxx將響應(yīng)異常時(shí)的PC-4保存到LR_xxx,假設(shè)出現(xiàn)異常時(shí)處理器為T(mén)humb狀態(tài),那么將對(duì)LR_xxx進(jìn)行修正〔見(jiàn)后〕設(shè)置CPSR中的相應(yīng)位強(qiáng)制處理器進(jìn)入ARM工作狀態(tài)設(shè)置CPSR的M[4:0],使處理器進(jìn)入相應(yīng)的工作模式設(shè)置中斷禁止位I=1,禁止IRQ中斷假設(shè)是復(fù)位或FIQ異常,還將設(shè)置中斷禁止位F=1,禁止FIQ中斷將異常向量地址強(qiáng)制賦給PC,跳轉(zhuǎn)執(zhí)行異常處理程序4.不同類(lèi)型異常發(fā)生時(shí),內(nèi)核如何響應(yīng),分別跳轉(zhuǎn)到什么地址執(zhí)行程序?
內(nèi)核響應(yīng)過(guò)程:當(dāng)異常發(fā)生時(shí),處理器會(huì)把PC設(shè)置為一個(gè)特定的存儲(chǔ)器地址,這一地址放在被稱(chēng)為向量表的特定地址范圍內(nèi)。向量表的入口是一些跳轉(zhuǎn)指令,跳轉(zhuǎn)到專(zhuān)門(mén)處理某個(gè)異常或中斷的子程序。異常地址用途復(fù)位-復(fù)位沒(méi)有定義LR數(shù)據(jù)中止LR-8指向?qū)е聰?shù)據(jù)中止異常的指令FIQLR-4指向發(fā)生異常時(shí)正在執(zhí)行的指令I(lǐng)RQLR-4指向發(fā)生異常時(shí)正在執(zhí)行的指令預(yù)取指令中止LR-4指向?qū)е骂A(yù)取指令異常的那條指令SWILR執(zhí)行SWI指令的下一條指令未定義指令LR指向未定義指令的下一條指令異常和返回地址5.什么是異常向量表,表中一般存放何種指令?為什么?為什么把FIQ中斷異常入口地址放在異常向量表的頂端?異常向量表一般從0地址開(kāi)始某些內(nèi)核〔如ARM9/10,ARM720T〕異常向量表可以設(shè)置為從其它非0地址〔如0xFFFF0000〕開(kāi)始每個(gè)異常向量占4個(gè)字節(jié),通常用于存放轉(zhuǎn)移指令,以實(shí)現(xiàn)從異常向量地址到異常處理程序地址的跳轉(zhuǎn)FIQ中斷向量被安排在向量表的頂端,便于對(duì)FIQ中斷的快速響應(yīng)〔不需跳轉(zhuǎn)〕異常向量表FIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x006.在Thumb工作狀態(tài)下響應(yīng)異常,系統(tǒng)將進(jìn)入何種工作狀態(tài)?異常處理過(guò)程中能否進(jìn)入Thumb狀態(tài)?
處理器響應(yīng)異常時(shí)自動(dòng)進(jìn)入ARM狀態(tài),且必須用一條ARM指令來(lái)實(shí)現(xiàn)從異常的返回,但在異常處理過(guò)程中可以切換到Thumb狀態(tài)7.異常處理為什么要保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)?保護(hù)現(xiàn)場(chǎng)主要保護(hù)哪些內(nèi)容?保護(hù)現(xiàn)場(chǎng)一般采用什么方法?
為了在異常處理完畢能恢復(fù)原來(lái)的程序執(zhí)行狀態(tài),響應(yīng)異常時(shí)需保護(hù)被中斷程序的的執(zhí)行現(xiàn)場(chǎng),異常處理完畢應(yīng)該恢復(fù)被中斷程序的執(zhí)行現(xiàn)場(chǎng)內(nèi)容:將當(dāng)前CPSR的內(nèi)容拷貝到SPSR_xxx將響應(yīng)異常時(shí)的PC-4保存到LR_xxx,假設(shè)出現(xiàn)異常時(shí)處理器為T(mén)humb狀態(tài),那么將對(duì)LR_xxx進(jìn)行修正方法:將需要保護(hù)的通用存放器內(nèi)容壓入堆棧有時(shí)還須將某些影子存放器的內(nèi)容入棧〔如中斷嵌套〕8.不同類(lèi)型異常的返回地址為什么不同,分別如何確定?為什么原工作狀態(tài)〔ARM或Thumb〕不同,需要采用不同的返回地址?異常返回地址確實(shí)定復(fù)位異常處理程序不需要返回除復(fù)位外的其它異常的實(shí)際返回地址與異常的類(lèi)型有關(guān)SWI和未定義指令異常指令執(zhí)行導(dǎo)致異常返回地址=LR〔SWI或未定義指令的下一條指令〕FIQ、IRQ和預(yù)取指令中止異常返回地址=LR-4數(shù)據(jù)中止異常正在執(zhí)行的指令無(wú)法執(zhí)行完成返回地址=LR-8〔重新執(zhí)行未能執(zhí)行完的指令〕假設(shè)響應(yīng)異常時(shí)為T(mén)humb狀態(tài),內(nèi)核將自動(dòng)修正LR,返回地址仍按上述方法計(jì)算9.從異常返回需要執(zhí)行哪兩個(gè)根本操作?為什么這兩個(gè)操作不能用兩條指令來(lái)分別實(shí)現(xiàn)?ARM采用何種機(jī)制來(lái)實(shí)現(xiàn)用一條指令同時(shí)完成這兩個(gè)操作?根本操作:1.將當(dāng)前SPSR_xxx的內(nèi)容拷貝到CPSR2.根據(jù)異常類(lèi)型和LR_xxx的返回地址恢復(fù)PC原因:假設(shè)先恢復(fù)CPSR,那么系統(tǒng)工作模式恢復(fù)為進(jìn)入異常前的模式,LR_xxx將無(wú)法再訪問(wèn)假設(shè)先恢復(fù)PC,那么在此之后的恢復(fù)CPSR的指令將不會(huì)被執(zhí)行ARM提供了2種特殊機(jī)制來(lái)用一條指令實(shí)現(xiàn)兩個(gè)操作〔同時(shí)恢復(fù)CPSR和PC〕當(dāng)返回地址保存在LR_xxx時(shí),采用數(shù)據(jù)處理指令返回機(jī)制從SWI和未定義異常返回MOVSPC,LR從FIQ、IRQ和預(yù)取指異常(PrefechAbort)返回SUBSPC,LR,#4 從數(shù)據(jù)中止異常(DataAbort)返回SUBSPC,LR,#8 當(dāng)SPSR和返回地址保存在堆棧時(shí),采用堆棧返回機(jī)制〔常用于IRQ中斷嵌套〕入棧前應(yīng)根據(jù)異常類(lèi)型對(duì)返回地址進(jìn)行調(diào)整使用帶“^”的出棧指令LDM,例如 LDMFDSP!,{PC}^可以與恢復(fù)現(xiàn)場(chǎng)的出棧操作合并,例如LDMFDSP!,{R0-R12,PC}^10.各種異常的優(yōu)先級(jí)如何排序?是否允許異常的嵌套?異常的優(yōu)先級(jí)各異常的優(yōu)先級(jí)順序復(fù)位RESET〔1,最高優(yōu)先級(jí)〕數(shù)據(jù)中止異常〔2〕快速中斷請(qǐng)求FIQ〔3〕外部中斷請(qǐng)求IRQ〔4〕預(yù)取指中止異?!?〕軟中斷SWI〔6〕未定義指令〔7,最低優(yōu)先級(jí)〕各異常同時(shí)發(fā)生時(shí),將優(yōu)先處理優(yōu)先級(jí)較高的異常SWI和未定義指令異常不可能同時(shí)發(fā)生1.進(jìn)入某種異常模式后,出現(xiàn)未屏蔽的異常仍然將按其優(yōu)先級(jí)順序進(jìn)行響應(yīng),即異常嵌套2.一般應(yīng)防止出現(xiàn)異常嵌套情況,假設(shè)無(wú)特殊處理,同類(lèi)型異常的自嵌套或幾個(gè)異常的循環(huán)嵌套會(huì)導(dǎo)致程序死鎖一些特殊的嵌套例子:如果數(shù)據(jù)中止異常和FIQ同時(shí)發(fā)生,將先響應(yīng)前者,但由于響應(yīng)數(shù)據(jù)中止異常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石船經(jīng)濟(jì)課程設(shè)計(jì)
- 藥品生產(chǎn)大學(xué)課程設(shè)計(jì)
- 幼兒手勢(shì)舞教學(xué)課程設(shè)計(jì)
- 電子鐘表課程設(shè)計(jì)
- 新冉的課程設(shè)計(jì)
- 穿鞋帶的課程設(shè)計(jì)
- 資產(chǎn)負(fù)債表優(yōu)化策略計(jì)劃
- 酒店餐飲行業(yè)安全生產(chǎn)工作總結(jié)
- 青少年培訓(xùn)機(jī)構(gòu)前臺(tái)接待總結(jié)
- 家具制造工藝改良
- 2023年鞍山市海城市教育局畢業(yè)生招聘筆試真題
- 北京2025年首都醫(yī)科大學(xué)附屬北京友誼醫(yī)院招聘140人歷年參考題庫(kù)(頻考版)含答案解析
- 遼寧省撫順縣2024-2025學(xué)年九年級(jí)上學(xué)期期末物理試卷(含答案)
- 2024-2025學(xué)年安徽省合肥市巢湖市三年級(jí)數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
- 浙江省寧波市九校2023-2024學(xué)年高一上期末聯(lián)考生物試題
- 《工商管理專(zhuān)業(yè)畢業(yè)實(shí)習(xí)》課程教學(xué)大綱
- 乳腺中心建設(shè)方案
- 國(guó)開(kāi)電大本科《西方經(jīng)濟(jì)學(xué)(本)》網(wǎng)上形考(作業(yè)一至六)試題及答案
- 提高有風(fēng)險(xiǎn)患者預(yù)防跌倒墜床護(hù)理措施落實(shí)率品管圈PDCA案例匯報(bào)
- 安環(huán)部2025年度工作計(jì)劃
- 2023-2024人教版上學(xué)期小學(xué)英語(yǔ)三年級(jí)上冊(cè)期末試卷
評(píng)論
0/150
提交評(píng)論