版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、s3c2440中斷體系結(jié)構(gòu):如何用中斷?1中斷發(fā)生:保存別人的狀態(tài)如何中斷可以事先設(shè)置,對(duì)程序初始化,使能中斷。中斷發(fā)生后,進(jìn)入中斷模式2中斷處理分辨中斷源進(jìn)行不同的處理清理工作3恢復(fù)別人的狀態(tài)過(guò)程:外界信號(hào)上升沿、下降沿,高電平、低電平都可以設(shè)置成信號(hào)引腳設(shè)置,再進(jìn)入狀態(tài)寄存器。狀態(tài)寄存器連接屏蔽寄存器進(jìn)入第二個(gè)狀態(tài)寄存器,儲(chǔ)存各種中斷,可以?xún)?chǔ)存多個(gè)中斷進(jìn)入優(yōu)先級(jí)寄存器,判斷中斷運(yùn)行順序 再進(jìn)入屏蔽使能寄存器和模式寄存器進(jìn)入優(yōu)先級(jí)寄存器進(jìn)入cpu處理cpu的處理:進(jìn)入入口地址b handlelRQ計(jì)算返回地址,被中斷處地址 保存現(xiàn)場(chǎng),即各寄存器狀態(tài) 調(diào)用處理函數(shù)函數(shù)運(yùn)行完后恢復(fù)現(xiàn)場(chǎng)函數(shù)的處理
2、:分辨終端處理中斷清除數(shù)據(jù),即清除中斷1. 中斷寄存器arm的七種模式l.usr用戶模式r0-r152.fiq快中斷模式r0-r7專(zhuān)用寄存器r8-r15,3.svc管理模式專(zhuān)用寄存器r13-r144.abt數(shù)據(jù)訪問(wèn)終止模式5.sys系統(tǒng)模式6.u nd未定義指令終止模式7.irq中斷模式幾種模式的區(qū)別:嵌入式的中斷:a. 不同的寄存器b. 不同的權(quán)限c. 觸發(fā)條件不一樣何時(shí)使用幾種模式:usr用戶模式:arm處理器正常的程序執(zhí)行狀態(tài)fiq快中斷模式:高速數(shù)據(jù)傳輸和通道處理svc管理模式:操作系統(tǒng)使用的保護(hù)模式abt數(shù)據(jù)訪問(wèn)終止模式:數(shù)據(jù)或者指令終止時(shí)進(jìn)入,用于虛擬存儲(chǔ)或者存儲(chǔ)保護(hù)sys系統(tǒng)模式
3、:運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)und未定義指令終止模式:未定義的指令執(zhí)行時(shí)進(jìn)入該模式,用于支持硬件處理器的軟件仿真.irq中斷模式:用于通用的中斷處理后六種是特權(quán)模式,用于處理中斷、異常和特殊權(quán)限處理用戶模式是最常見(jiàn)的模式2. 中斷中的異常中斷是一種異常。當(dāng)發(fā)生中斷時(shí),cpu進(jìn)入中斷模式 cpu進(jìn)入異常入口,異常入口是硬件規(guī)定的一個(gè)地址運(yùn)行模式ARM920T支持7種運(yùn)行模式:用戶(usr):正常ARM程序執(zhí)行狀態(tài)快中斷(fiq)):為支持?jǐn)?shù)據(jù)傳輸或通道處理設(shè)計(jì)中斷(irq):用于一般用途的中斷處理管理(svc):操作系統(tǒng)保護(hù)模式中止(abt ):數(shù)據(jù)或指令預(yù)取中止后進(jìn)入系統(tǒng)(sys):操作系統(tǒng)的
4、特權(quán)用戶模式未定義(und)):執(zhí)行了一個(gè)未定義指令時(shí)進(jìn)入模式的改變可由軟件控制,或者由外部中斷或進(jìn)入異常引起。大部分應(yīng)用程序都將在用戶模式執(zhí)行。被稱(chēng)為特權(quán)模式的非用戶模式,都將進(jìn)入到中斷服務(wù)或異常中去,或者訪問(wèn)受保護(hù)的資源。內(nèi)部寄存器ARM920T總共有37個(gè)寄存器,其中 31通用32位寄存器和 6個(gè)狀態(tài)寄存器,但 不能在同一時(shí)刻對(duì)所有的寄存器可見(jiàn)。處理器狀態(tài)和運(yùn)行模式?jīng)Q定了哪些寄存器對(duì)程序員可見(jiàn)。ARM狀態(tài)時(shí)內(nèi)部寄存器集在 ARM狀態(tài),16個(gè)通用寄存器和一個(gè)狀態(tài)寄存器在任意時(shí) 刻都可見(jiàn)。在特權(quán)(非用戶)模式下,將切換到指定模式的分組(banked )寄存器。圖2-3顯示了哪些寄存器在各模式
5、下是可見(jiàn)的:分組寄存器被標(biāo)記了陰影三角形。ARM狀態(tài)時(shí)寄存器被設(shè)為包含16個(gè)直接可以訪問(wèn)的寄存器:R0到R15。除了 R15,其他全部寄存器都為通用寄存器,如可能用于保存數(shù)據(jù)或地址值。除此之外,還有第17個(gè)寄存器用于存儲(chǔ)狀態(tài)信息。FIQ模式包含7個(gè)分組寄存器,分別映射到R8-14( R8_fiq-R14_fiq )。在ARM狀態(tài),有很多不需要保存寄存器的FIQ處理程序。用戶,IRQ,管理中止和未定義模式都包含兩個(gè)分組寄存器映射到R13和R14,允許這些模式都都包含私有堆棧指針和鏈接寄存器。Thumb 狀態(tài)時(shí)內(nèi)部寄存器集Thumb狀態(tài)時(shí)的寄存器集為ARM狀態(tài)時(shí)的寄存器的分配的一個(gè)子集。程序員能夠
6、直接訪問(wèn)8個(gè)通用寄存器 R0至R7,還有程序計(jì)數(shù)器(PC), 個(gè)堆棧指針寄存器(SP),一個(gè)鏈接寄存器(LR)和CPSR。各自特權(quán)模式還分別有分組堆棧指針,鏈接寄存器和進(jìn)程保存狀態(tài)寄存器(SPSR。如圖2-4所示。Thumb 狀態(tài)訪問(wèn)高寄存器(Hi-Registers )在Thumb狀態(tài),寄存器 R8-R15 ( Hi registers ”)不是標(biāo)準(zhǔn)的寄存器集的一部分。然 而,匯編語(yǔ)言程序員可以受限的對(duì)它們的進(jìn)行訪問(wèn),可以將它們用于快速暫存。使用MOV指令的特殊變量可以將一個(gè)值從R0-R7( Lo register ”)范圍內(nèi)的寄存器傳送到高寄存器或從高寄存器到第低寄存器。使用CMP和ADD
7、指令也可以對(duì)高寄存器的值與寄存器的值進(jìn)行比較以或相加。更多內(nèi)容請(qǐng)參考表 3-34。程序狀態(tài)寄存器ARM920T 包含了一個(gè) 當(dāng)前程序狀態(tài)寄存器 (Current Program Status Register-CPSR ), 還有5個(gè)用于異常程序處理的程序狀態(tài)保存寄存器(Saved Program Status Registers-SPSR)。這些寄存器的功能為: 保存最近已處理的ALU操作的信息 控制中斷的使能與禁止 設(shè)置處理器的運(yùn)行模式圖2-6顯示了各位的編排狀態(tài)代碼標(biāo)志位N,Z,C和V位為狀態(tài)代碼標(biāo)志位。算術(shù)或邏輯操作結(jié)果可能會(huì)改變這些位,并檢驗(yàn)以決定是否應(yīng)該執(zhí)行某條指令。在ARM狀態(tài),
8、所有指令都可能為條件執(zhí)行:詳情見(jiàn)表3-2。在Thumb狀態(tài),只有分支指令才能條件執(zhí)行:詳情見(jiàn)表3-46??刂莆籔SR包含I,F(xiàn), T和M4:0)的末端8位,統(tǒng)稱(chēng)為控制位。當(dāng)發(fā)生異常時(shí)將會(huì)改變這 些位。如果處理器運(yùn)行在特權(quán)模式,它們也可由軟件控制。異常:程序暫時(shí)停止當(dāng)正常程序流程被暫時(shí)停止發(fā)生異常,例如響應(yīng)一個(gè)來(lái)自外設(shè)的中斷。在處理異常前, 必須保護(hù)當(dāng)前的處理器狀態(tài),以便在完成處理程序后能恢復(fù)到原來(lái)的程序。如果同時(shí)發(fā)生好幾個(gè)異常,將會(huì)按照固定的順序來(lái)分配,見(jiàn)P2-13的異常優(yōu)先級(jí)。進(jìn)入異常行為當(dāng)處理一個(gè)異常時(shí),ARM920T將會(huì)進(jìn)行以下活動(dòng):1. 相應(yīng)鏈接寄存器保存下條指令的地址。如果在 ARM
9、狀態(tài)進(jìn)入異常,下條指令的地址將會(huì)復(fù)制到鏈接寄存器 (當(dāng)前PC+4或PC+8,由異常決定。詳情見(jiàn)表2-2 )中。如果在Thumb狀態(tài)進(jìn)入異常,寫(xiě)入鏈接寄存器的值則為當(dāng)前PC偏移一個(gè)值,這樣異常返回后程序能從正確的位置恢復(fù)。這意味著異常處理不需要確定異常是從什么狀態(tài)進(jìn)入的。例如,在SWI的情況,無(wú)論是在ARM狀態(tài)還是 Thumb狀態(tài)執(zhí)行 SWI,MOVS PC,R14_svc語(yǔ)句都將返回到下一條指 令。2. 復(fù)制 CPSR的內(nèi)容到相應(yīng) SPSR中。3. 根據(jù)異常類(lèi)型強(qiáng)制將 CPSR模式位設(shè)為某一個(gè)值。4. 強(qiáng)制PC從相關(guān)異常向量處取下條指令。通常也會(huì)置位中斷禁止標(biāo)志位,以防止不同的難處理的異常嵌套
10、。如果一個(gè)異常發(fā)生時(shí)處理器處于Thumb狀態(tài),當(dāng)裝載異常向量地址到PC時(shí)會(huì)自動(dòng)切換到ARM狀態(tài)。離開(kāi)異常行為:當(dāng)異常結(jié)束,異常處理程序?qū)?huì):1. 將鏈接寄存器適當(dāng)減去一個(gè)偏移量并放入到PC中。(偏移量由異常類(lèi)型決定)2. 復(fù)制SPSR的內(nèi)容返回給 CPSR中。3. 如果在異常進(jìn)入時(shí)置位了中斷禁止標(biāo)志位異常,清除中斷禁止標(biāo)志位。注意:不需要在異常結(jié)束時(shí)切換回Thumb狀態(tài),因?yàn)樵诋惓G皶?huì)立刻保存CPSR中T位的值到 SPSR中,并在退出異常時(shí)從SPSR恢復(fù)到CPSR中。異常進(jìn)入/退出總結(jié)表2-2總結(jié)了進(jìn)入異常時(shí)保存在相關(guān)R14中的PC值和被推薦的退出異常的指令。注釋?zhuān)?此處PC為含預(yù)取中止的 B
11、L/SWI/未定義指令取指令的地址。2此處PC為由于FIQ或IRQ搶先而未執(zhí)行的指令地址。3. 此處PC為發(fā)生了數(shù)據(jù)中止的Load或Store指令的地址。4. 當(dāng)復(fù)位時(shí)保存在 R14_svc的值將是不可預(yù)測(cè)的??熘袛郌IQFIQ (快中斷請(qǐng)求)異常是為支持?jǐn)?shù)據(jù)傳輸或通道處理而設(shè)計(jì)的,在ARM狀態(tài)擁有足夠的私有寄存器來(lái)消除對(duì)寄存器保存的需求(這樣最小化了對(duì)上下文的切換的開(kāi)銷(xiāo))。將nFIQ輸入端拉低可以實(shí)現(xiàn)外部產(chǎn)生FIQ。由ISYNC輸入信號(hào)端的狀態(tài)決定是同步還是異步傳輸。當(dāng)ISYNC為低電平,認(rèn)為nFIQ和nIRQ為異步,中斷前會(huì)引起同步周期延遲并影響 處理器流程。無(wú)論是從 ARM還是Thumb
12、狀態(tài)進(jìn)入的異常,F(xiàn)IQ處理時(shí)執(zhí)行SUBS PC,R14_fiq,#4 時(shí),都應(yīng)該避免中斷。如果設(shè)置 CPSR的F標(biāo)志位,F(xiàn)IQ將會(huì)被禁止(但主義這不可能在用戶模式中發(fā)生)。如果F標(biāo)志位為零,ARM920T將在每條指令末檢測(cè)FIQ同步發(fā)生器的輸出是否為低電平。中斷IRQIRQ (中斷請(qǐng)求)異常是一個(gè)由 nIRQ輸入端的低電平產(chǎn)生的一個(gè)普通中斷。IRQ的優(yōu)先級(jí)低于FIQ,當(dāng)進(jìn)入了相關(guān)的 FIQ,會(huì)屏蔽IRQ。除非是在特權(quán)(非用戶)模式,其他任何 時(shí)刻都禁止設(shè)置 CPSR內(nèi)的I位。無(wú)論是從 ARM還是Thumb狀態(tài)進(jìn)入的異常,IRQ處理時(shí)執(zhí)行SUBS PC,R14_fiq,#4 時(shí),都應(yīng)該避免中斷。
13、中止中止表示不能完成當(dāng)前對(duì)存儲(chǔ)器的訪問(wèn)。通過(guò)外部 ABORT輸入端指示的。ARM920T在存儲(chǔ)器訪問(wèn)周期期間檢測(cè)中止異常。有兩種類(lèi)型的中止: 預(yù)取中止(Prefetch Abort ):發(fā)生在指令預(yù)取期間 數(shù)據(jù)中止(Date Abort):發(fā)生在數(shù)據(jù)訪問(wèn)期間如果發(fā)生預(yù)取中止, 將屏蔽預(yù)取指并為無(wú)效,但并不會(huì)立刻帶來(lái)異常,直到指令到達(dá)流水線的執(zhí)行階段才發(fā)生。若未執(zhí)行該指令,將不會(huì)發(fā)生中止,因?yàn)榱魉€發(fā)生了分支。如果發(fā)生數(shù)據(jù)中止,由指令類(lèi)型決定其行為: 單一的數(shù)據(jù)轉(zhuǎn)移指令(LDR,STR)回寫(xiě)到被修改的基址寄存器:中止處理程序必 須意識(shí)到這點(diǎn)。 交換指令(SWP)執(zhí)行失敗,就如同沒(méi)有被執(zhí)行。 塊數(shù)
14、據(jù)轉(zhuǎn)移指令(LDM,STM)完成。如果設(shè)置了回寫(xiě),基址寄存器將被更新。如果指令會(huì)覆蓋基址寄存器數(shù)據(jù)(轉(zhuǎn)移列表中包含基址),覆蓋將會(huì)被阻止。表明了中止后所有寄存器的覆蓋都會(huì)被阻止,特別是R15(通常是最后轉(zhuǎn)移的寄存器)在一個(gè)被中止的 LDM 指令會(huì)被阻止覆蓋。中止機(jī)制使得分頁(yè)虛擬存儲(chǔ)器系統(tǒng)可以被實(shí)現(xiàn)。在這樣一個(gè)系統(tǒng)中允許處理器產(chǎn)生任意地址。當(dāng)無(wú)法獲取某一地址上的數(shù)據(jù)時(shí),內(nèi)存管理單元 (Memory Management Unit-MMU)將表明產(chǎn)生一個(gè)中止。中止處理程序必須緊接著找出中止原因,使得被請(qǐng)求的數(shù)據(jù)可用并重試被中止的指令。 應(yīng)用程序并不需要了解可以使用的內(nèi)存總量,也不需要關(guān)心中止對(duì)其狀
15、態(tài)以任何方式被影 響。當(dāng)確定中止原因后,處理程序應(yīng)該不顧狀態(tài)(ARM或Thumb )執(zhí)行下列語(yǔ)句:SUBS PC,R14_abt,#4 ;預(yù)取中止SUBS PC,R14_abt,#8 ;數(shù)據(jù)中止這將恢復(fù)PC和CPSR,并重試被中止的指令。軟件中斷SWI軟件中斷指令 (Software Interrupt Instruction-SWI) 用于進(jìn)入管理模式, 通常請(qǐng)求一個(gè)特 定的管理功能。SWI處理程序應(yīng)當(dāng)在狀態(tài)(ARM或Thumb )中通過(guò)執(zhí)行下列指令返回:MOV PC,R14_svc這將恢復(fù) PC和CPSR,并返回到 SWI之后的指令。注意:nFIQ, nIRQ, ISYNC, LOCK,B
16、IGEND 和 ABORT 引腳只存在于 ARM920T CPU 內(nèi)核之中。未定義指令當(dāng)ARM920T遇到不能處理的指令時(shí),將產(chǎn)生未定義指令陷阱。這個(gè)機(jī)制可以用于軟 件仿真擴(kuò)展Thhumb指令集或ARM指令集。仿真了失敗指令后,陷阱處理程序應(yīng)該執(zhí)行在狀態(tài)(ARM或Thumb )中執(zhí)行下列指令:MOVS PC,R14_u nd這將恢復(fù)CPSR,并返回到未定義指令之后的指令。異常向量下表顯示了異常向量地址異常優(yōu)先級(jí)當(dāng)同時(shí)出現(xiàn)多個(gè)異常時(shí),一個(gè)固定的優(yōu)先級(jí)系統(tǒng)將確定它們的處理順序: 高優(yōu)先級(jí):1. 復(fù)位2. 數(shù)據(jù)中止3快中斷FIQ4. 中斷IRQ5. 預(yù)取中止低優(yōu)先級(jí):6. 未定義指令,軟件中斷并不是
17、所有的異常都可以在同一時(shí)刻發(fā)生!未定義指令和軟件中斷異?;コ?,因?yàn)樗鼈兎謩e對(duì)應(yīng)于當(dāng)前指令的的特定(非重疊)譯碼。如果發(fā)生數(shù)據(jù)中止的同時(shí)發(fā)生 FIQ并且又使能了 FIQ (CPSR的F標(biāo)志位被清零), ARM920T將先進(jìn)入數(shù)據(jù)中止處理程序,然后立即轉(zhuǎn)向FIQ向量。當(dāng)從 FIQ正常返回將會(huì)引起數(shù)據(jù)中止處理程序恢復(fù)執(zhí)行。為了確保傳輸錯(cuò)誤不會(huì)在檢測(cè)中被遺漏,必須將數(shù)據(jù)中止置為比FIQ更高的優(yōu)先級(jí)。進(jìn)入此異常的時(shí)間需要按加上最壞情況下FIQ的時(shí)間延遲來(lái)算。中斷延遲當(dāng)使能了 FIQ,其最壞情況的延遲包括:請(qǐng)求通過(guò)同步器的最長(zhǎng)時(shí)間 (Tsyncmax,如果為異步),加上完成最長(zhǎng)指令的時(shí)間(Tldm, 最長(zhǎng)指令是裝載包括 PC在內(nèi)所有的寄存器的 LDM指令),加上數(shù)據(jù)中止進(jìn)入的時(shí)(Texc), 再加上FIQ進(jìn)入的時(shí)間(Tfiq )。在該時(shí)間末 ARM920T將會(huì)執(zhí)行位于 Ox1C處的指令。Tsyncmax為3個(gè)才處理器周期,Tldm為20個(gè)周期,Texc為3個(gè)周期,Tfiq為2 個(gè)周期。因此總時(shí)間為28個(gè)處理器周期。在一個(gè)使用連續(xù)20MHz處理器時(shí)鐘的系統(tǒng)中,其只過(guò)了 1.4毫秒。最大IRQ延遲的計(jì)算與此類(lèi)同,但還必須實(shí)際考慮, FIQ具 有更高的優(yōu)先級(jí)并且能推遲任意長(zhǎng)度的時(shí)間進(jìn)入到IRQ處理程序。FIQ或IRQ最小延遲包括請(qǐng)求通
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人非物質(zhì)文化遺產(chǎn)抵押貸款合同范本
- 二零二五年金融數(shù)據(jù)分析不可撤銷(xiāo)居間合同3篇
- 個(gè)人租車(chē)自駕合同模板
- 2025年度綠色建筑節(jié)能改造個(gè)人施工合同4篇
- 2024年度青海省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師模擬考核試卷含答案
- 2024年度黑龍江省公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師提升訓(xùn)練試卷A卷附答案
- 2025年度農(nóng)業(yè)生態(tài)補(bǔ)償與保護(hù)項(xiàng)目合同4篇
- 英語(yǔ)詞匯量突破小學(xué)階段的學(xué)習(xí)策略
- 教育中的公益力量與德育工作創(chuàng)新研究
- 二零二五年度充電樁充電樁充電樁充電服務(wù)費(fèi)結(jié)算標(biāo)準(zhǔn)合同4篇
- 吉林省吉林市普通中學(xué)2024-2025學(xué)年高三上學(xué)期二模試題 生物 含答案
- 《電影之創(chuàng)戰(zhàn)紀(jì)》課件
- 社區(qū)醫(yī)療抗菌藥物分級(jí)管理方案
- 開(kāi)題報(bào)告-鑄牢中華民族共同體意識(shí)的學(xué)校教育研究
- 《醫(yī)院標(biāo)識(shí)牌規(guī)劃設(shè)計(jì)方案》
- 公司2025年會(huì)暨員工團(tuán)隊(duì)頒獎(jiǎng)盛典攜手同行共創(chuàng)未來(lái)模板
- 新滬科版八年級(jí)物理第三章光的世界各個(gè)章節(jié)測(cè)試試題(含答案)
- 夜市運(yùn)營(yíng)投標(biāo)方案(技術(shù)方案)
- 電接點(diǎn) 水位計(jì)工作原理及故障處理
- 國(guó)家職業(yè)大典
- 2024版房產(chǎn)代持協(xié)議書(shū)樣本
評(píng)論
0/150
提交評(píng)論