嵌入式系統(tǒng)基礎(chǔ)第7章中斷和異常_第1頁(yè)
嵌入式系統(tǒng)基礎(chǔ)第7章中斷和異常_第2頁(yè)
嵌入式系統(tǒng)基礎(chǔ)第7章中斷和異常_第3頁(yè)
嵌入式系統(tǒng)基礎(chǔ)第7章中斷和異常_第4頁(yè)
嵌入式系統(tǒng)基礎(chǔ)第7章中斷和異常_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第7 7章章 中斷和異常中斷和異常本章重要內(nèi)容本章重要內(nèi)容1 1、中斷和異常的基本概念、中斷和異常的基本概念2 2、中斷(異常)服務(wù)程序的年結(jié)構(gòu)、中斷(異常)服務(wù)程序的年結(jié)構(gòu)3 3、處理器響應(yīng)與處理中斷(異常)的過(guò)、處理器響應(yīng)與處理中斷(異常)的過(guò)程程4 4、ARMARM的中斷系統(tǒng)的中斷系統(tǒng)7.1 7.1 中斷和異常的基本概念中斷和異常的基本概念 中斷是主機(jī)與外設(shè)進(jìn)行數(shù)據(jù)通信的重中斷是主機(jī)與外設(shè)進(jìn)行數(shù)據(jù)通信的重要機(jī)制,它負(fù)責(zé)處理處理器外部的異常事要機(jī)制,它負(fù)責(zé)處理處理器外部的異常事件;異常實(shí)質(zhì)上也是一種中斷,只不過(guò)它件;異常實(shí)質(zhì)上也是一種中斷,只不過(guò)它主要負(fù)責(zé)處理處理器內(nèi)部事件。主要負(fù)責(zé)處理

2、處理器內(nèi)部事件。7.1.1 7.1.1 中斷和異常中斷和異常1 1、什么叫中斷、什么叫中斷 當(dāng)處理器遇有外部設(shè)備發(fā)生當(dāng)處理器遇有外部設(shè)備發(fā)生“緊急事緊急事件件”需要它來(lái)處理時(shí),它就必須停下需要它來(lái)處理時(shí),它就必須停下“手手頭上的工作頭上的工作”先去處理這個(gè)先去處理這個(gè)“緊急事件緊急事件”。處理器的這種工作過(guò)程,或者這種工作狀處理器的這種工作過(guò)程,或者這種工作狀態(tài)就叫做中斷。態(tài)就叫做中斷。2 2、什么叫中斷請(qǐng)求、什么叫中斷請(qǐng)求 當(dāng)外部設(shè)備有緊急事件需要處理器進(jìn)當(dāng)外部設(shè)備有緊急事件需要處理器進(jìn)行處理時(shí),外部設(shè)備必須向處理器發(fā)送一行處理時(shí),外部設(shè)備必須向處理器發(fā)送一個(gè)電信號(hào)(脈沖或電平)來(lái)表示有事件

3、需個(gè)電信號(hào)(脈沖或電平)來(lái)表示有事件需要處理器來(lái)處理。這個(gè)信號(hào)叫做中斷請(qǐng)求要處理器來(lái)處理。這個(gè)信號(hào)叫做中斷請(qǐng)求信號(hào),或稱中斷請(qǐng)求。信號(hào),或稱中斷請(qǐng)求。3 3、什么叫中斷源、什么叫中斷源 發(fā)出中斷請(qǐng)求信號(hào)的外部設(shè)備或事件發(fā)出中斷請(qǐng)求信號(hào)的外部設(shè)備或事件就叫做中斷源。就叫做中斷源。4 4、什么叫異常、什么叫異常 除了外部設(shè)備可以發(fā)出可以發(fā)出中斷除了外部設(shè)備可以發(fā)出可以發(fā)出中斷請(qǐng)求之后,處理器內(nèi)部也會(huì)有一些事件可請(qǐng)求之后,處理器內(nèi)部也會(huì)有一些事件可以發(fā)出中斷請(qǐng)求,例如讀取指令出錯(cuò)或在以發(fā)出中斷請(qǐng)求,例如讀取指令出錯(cuò)或在進(jìn)行除法運(yùn)算時(shí)除數(shù)為零等。為了與外部進(jìn)行除法運(yùn)算時(shí)除數(shù)為零等。為了與外部事件引起的

4、中斷相區(qū)別,人們把這種由內(nèi)事件引起的中斷相區(qū)別,人們把這種由內(nèi)部事件引起的中斷叫做異常。部事件引起的中斷叫做異常。7.1.2 7.1.2 中斷請(qǐng)求信號(hào)的屏蔽中斷請(qǐng)求信號(hào)的屏蔽 處理器中用來(lái)屏蔽中斷的積存器和開(kāi)處理器中用來(lái)屏蔽中斷的積存器和開(kāi)關(guān)如下:關(guān)如下:1 1、可屏蔽中斷、可屏蔽中斷 人們把帶有開(kāi)關(guān),能阻止中斷請(qǐng)求的人們把帶有開(kāi)關(guān),能阻止中斷請(qǐng)求的中斷輸入端叫做可屏蔽中斷信號(hào)輸入端。中斷輸入端叫做可屏蔽中斷信號(hào)輸入端。這類中斷叫可屏蔽中斷。這類中斷叫可屏蔽中斷。2 2、非屏蔽中斷、非屏蔽中斷 人們把不帶開(kāi)關(guān),不能阻止中斷請(qǐng)求人們把不帶開(kāi)關(guān),不能阻止中斷請(qǐng)求的中斷輸入端叫做非屏蔽中斷信號(hào)輸入端

5、。的中斷輸入端叫做非屏蔽中斷信號(hào)輸入端。這類中斷叫屏蔽中斷。這類中斷叫屏蔽中斷。 為了對(duì)處理器可以接收中斷源的數(shù)目為了對(duì)處理器可以接收中斷源的數(shù)目進(jìn)行擴(kuò)充及對(duì)中斷進(jìn)行必要的管理,在中進(jìn)行擴(kuò)充及對(duì)中斷進(jìn)行必要的管理,在中斷源和處理器之間還配有如下圖所示的中斷源和處理器之間還配有如下圖所示的中斷控制器。斷控制器。7.1.3 7.1.3 中斷優(yōu)先級(jí)及中斷嵌套中斷優(yōu)先級(jí)及中斷嵌套1 1、中斷優(yōu)先級(jí)、中斷優(yōu)先級(jí) 處理器通常只有一個(gè)可屏蔽中斷請(qǐng)求處理器通常只有一個(gè)可屏蔽中斷請(qǐng)求輸入端。對(duì)于具有多個(gè)中斷源的系統(tǒng)來(lái)說(shuō),輸入端。對(duì)于具有多個(gè)中斷源的系統(tǒng)來(lái)說(shuō),當(dāng)有兩個(gè)或兩個(gè)以上中斷源同時(shí)發(fā)生中斷當(dāng)有兩個(gè)或兩個(gè)以上

6、中斷源同時(shí)發(fā)生中斷請(qǐng)求時(shí)就會(huì)出現(xiàn)所謂的競(jìng)爭(zhēng)。請(qǐng)求時(shí)就會(huì)出現(xiàn)所謂的競(jìng)爭(zhēng)。 具體實(shí)現(xiàn)方法有兩種:硬件實(shí)現(xiàn)方法具體實(shí)現(xiàn)方法有兩種:硬件實(shí)現(xiàn)方法和軟件實(shí)現(xiàn)方法。和軟件實(shí)現(xiàn)方法。(1 1)硬件實(shí)現(xiàn)方法)硬件實(shí)現(xiàn)方法 就是為計(jì)算機(jī)系統(tǒng)配備一套能按優(yōu)先就是為計(jì)算機(jī)系統(tǒng)配備一套能按優(yōu)先等級(jí)對(duì)中斷源進(jìn)行排隊(duì)的硬件電路,以保等級(jí)對(duì)中斷源進(jìn)行排隊(duì)的硬件電路,以保證級(jí)別高的中斷能先于級(jí)別低的中斷被處證級(jí)別高的中斷能先于級(jí)別低的中斷被處理器響應(yīng)。理器響應(yīng)。 一般情況下,這個(gè)優(yōu)先排隊(duì)機(jī)構(gòu)可能一般情況下,這個(gè)優(yōu)先排隊(duì)機(jī)構(gòu)可能在處理器中有一套,在中斷控制器中也有在處理器中有一套,在中斷控制器中也有一套,甚至在借口電路中也會(huì)有

7、一套。一套,甚至在借口電路中也會(huì)有一套。(2 2)軟件實(shí)現(xiàn)方法)軟件實(shí)現(xiàn)方法 就是把所有中斷源的中斷請(qǐng)求信號(hào)分就是把所有中斷源的中斷請(qǐng)求信號(hào)分成兩路,其中一路經(jīng)成兩路,其中一路經(jīng)“或或”邏輯送到處理邏輯送到處理器的中斷請(qǐng)求輸入端,而另一路則送入中器的中斷請(qǐng)求輸入端,而另一路則送入中斷接口電路經(jīng)數(shù)據(jù)總線送入處理器。斷接口電路經(jīng)數(shù)據(jù)總線送入處理器。 中斷源的軟件查詢法電路的接線如下中斷源的軟件查詢法電路的接線如下圖所示:圖所示:軟件查詢法的中斷服務(wù)程序的流程如下:軟件查詢法的中斷服務(wù)程序的流程如下:2 2、中斷嵌套、中斷嵌套7.1.4 7.1.4 中斷服務(wù)程序中斷服務(wù)程序 用來(lái)處理中斷事件的程序叫

8、做中斷服用來(lái)處理中斷事件的程序叫做中斷服務(wù)程序。務(wù)程序。 中斷服務(wù)程序的一般結(jié)構(gòu)如下所示:中斷服務(wù)程序的一般結(jié)構(gòu)如下所示: 中斷服務(wù)程序與普通子程序的重要差中斷服務(wù)程序與普通子程序的重要差別在于:別在于: 中斷服務(wù)程序要對(duì)中斷嵌套進(jìn)行必要中斷服務(wù)程序要對(duì)中斷嵌套進(jìn)行必要的管理。既中斷服務(wù)程序要根據(jù)需要,對(duì)的管理。既中斷服務(wù)程序要根據(jù)需要,對(duì)程序狀態(tài)寄存器中的中斷允許標(biāo)志進(jìn)行相程序狀態(tài)寄存器中的中斷允許標(biāo)志進(jìn)行相應(yīng)的設(shè)置。應(yīng)的設(shè)置。7.1.5 7.1.5 中斷向量和中斷向量表中斷向量和中斷向量表 為了與普通子程序的首地址進(jìn)行區(qū)分,為了與普通子程序的首地址進(jìn)行區(qū)分,中斷服務(wù)程序的首地址中斷服務(wù)程序

9、的首地址 通常被叫做中斷向通常被叫做中斷向量,或中斷矢量。量,或中斷矢量。 以后還會(huì)看到,凡是能直接或間接指以后還會(huì)看到,凡是能直接或間接指向中斷服務(wù)程序的都叫中斷向量。向中斷服務(wù)程序的都叫中斷向量。 各種處理器如何來(lái)調(diào)用中斷服務(wù)子程各種處理器如何來(lái)調(diào)用中斷服務(wù)子程序的方法不盡相同,通常有兩種方法。序的方法不盡相同,通常有兩種方法。 調(diào)用方法和轉(zhuǎn)移方法。調(diào)用方法和轉(zhuǎn)移方法。1 1、調(diào)用方法、調(diào)用方法 是在處理器收到中斷中斷請(qǐng)求之后,是在處理器收到中斷中斷請(qǐng)求之后,由中斷系統(tǒng)硬件執(zhí)行一條子程序調(diào)用指令由中斷系統(tǒng)硬件執(zhí)行一條子程序調(diào)用指令來(lái)調(diào)用中斷服務(wù)程序。來(lái)調(diào)用中斷服務(wù)程序。2 2、轉(zhuǎn)移方法、轉(zhuǎn)

10、移方法 是由中斷系統(tǒng)硬件執(zhí)行一條轉(zhuǎn)移指令是由中斷系統(tǒng)硬件執(zhí)行一條轉(zhuǎn)移指令來(lái)轉(zhuǎn)向中斷服務(wù)程序。來(lái)轉(zhuǎn)向中斷服務(wù)程序。 但是,不管哪種方法,有一點(diǎn)是共同但是,不管哪種方法,有一點(diǎn)是共同的,即它們最終都需要獲得中斷服務(wù)程序的,即它們最終都需要獲得中斷服務(wù)程序首地址首地址中斷向量。中斷向量。 所有的中斷向量都必須存放在一個(gè)固所有的中斷向量都必須存放在一個(gè)固定的存儲(chǔ)區(qū)域,這個(gè)集中存放了中斷向量定的存儲(chǔ)區(qū)域,這個(gè)集中存放了中斷向量或與中斷向量相關(guān)信息的存儲(chǔ)區(qū)域就叫做或與中斷向量相關(guān)信息的存儲(chǔ)區(qū)域就叫做中斷向量表。中斷向量表。 一種中斷處理硬件系統(tǒng)示意圖如下:一種中斷處理硬件系統(tǒng)示意圖如下: 處理器在響應(yīng)中斷

11、源處理器在響應(yīng)中斷源2 2的中斷時(shí),其程的中斷時(shí),其程序流程如下:序流程如下:7.1.6 7.1.6 中斷的處理過(guò)程中斷的處理過(guò)程1 1、處理器響應(yīng)中斷的條件、處理器響應(yīng)中斷的條件 處理器響應(yīng)中斷的條件主要有以下幾處理器響應(yīng)中斷的條件主要有以下幾個(gè):個(gè):(1 1)處理器程序狀態(tài)寄存器的中斷屏蔽)處理器程序狀態(tài)寄存器的中斷屏蔽標(biāo)志處于非屏蔽狀態(tài)。標(biāo)志處于非屏蔽狀態(tài)。(2 2)沒(méi)有更高級(jí)的中斷中斷請(qǐng)求正在響)沒(méi)有更高級(jí)的中斷中斷請(qǐng)求正在響應(yīng)或正在發(fā)出、掛起。應(yīng)或正在發(fā)出、掛起。(3 3)處理器在現(xiàn)行指令執(zhí)行結(jié)束后。)處理器在現(xiàn)行指令執(zhí)行結(jié)束后。2 2、中斷的處理器過(guò)程、中斷的處理器過(guò)程 當(dāng)有中斷請(qǐng)

12、求發(fā)生且滿足上述條件時(shí),當(dāng)有中斷請(qǐng)求發(fā)生且滿足上述條件時(shí),計(jì)算機(jī)系統(tǒng)就會(huì)響應(yīng)中斷請(qǐng)求,并自動(dòng)將計(jì)算機(jī)系統(tǒng)就會(huì)響應(yīng)中斷請(qǐng)求,并自動(dòng)將被中斷程序的下一條指令地址(斷點(diǎn)地址)被中斷程序的下一條指令地址(斷點(diǎn)地址)保存到堆棧和關(guān)閉中斷;接下來(lái)便將自中保存到堆棧和關(guān)閉中斷;接下來(lái)便將自中斷向量表查詢得的與該中斷源對(duì)應(yīng)的中斷斷向量表查詢得的與該中斷源對(duì)應(yīng)的中斷向量送入向量送入PCPC,并轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。,并轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。 當(dāng)執(zhí)行到中斷服務(wù)程序末尾時(shí),執(zhí)行當(dāng)執(zhí)行到中斷服務(wù)程序末尾時(shí),執(zhí)行中斷返回指令或跳轉(zhuǎn)指令,把保存的斷點(diǎn)中斷返回指令或跳轉(zhuǎn)指令,把保存的斷點(diǎn)地址送回地址送回PCPC,以在斷點(diǎn)處

13、接續(xù)執(zhí)行被中斷,以在斷點(diǎn)處接續(xù)執(zhí)行被中斷的程序。的程序。7.2 ARM7.2 ARM的中斷(異常)的中斷(異常) ARM ARM處理器可以響應(yīng)的中斷(異常)處理器可以響應(yīng)的中斷(異常)有:中斷、快中斷、復(fù)位中斷、軟中斷異有:中斷、快中斷、復(fù)位中斷、軟中斷異常、預(yù)取指令中止異常、數(shù)據(jù)中止異常和常、預(yù)取指令中止異常、數(shù)據(jù)中止異常和未定義指令異常未定義指令異常7 7種。種。7.2.1 ARM7.2.1 ARM的中斷(異常)向量表的中斷(異常)向量表1 1、低端和高端向量表、低端和高端向量表 ARM ARM有低端和高端兩種向量表,用戶可有低端和高端兩種向量表,用戶可以根據(jù)需要選用其中一種,如下所示:以

14、根據(jù)需要選用其中一種,如下所示: ARM ARM中斷(異常)的各個(gè)向量在向量表中斷(異常)的各個(gè)向量在向量表中的分配如下:中的分配如下:中斷(異常)中斷(異常)向量在低端向量表的地址向量在低端向量表的地址向量在高端向量表的地址向量在高端向量表的地址復(fù)位(復(fù)位(RESETRESET)0 x000000000 x000000000 xFFFF00000 xFFFF0000未定義指令(未定義指令(UNDEFUNDEF)0 x000000040 x000000040 xFFFF00040 xFFFF0004軟中斷(軟中斷(SWISWI)0 x000000080 x000000080 xFFFF0008

15、0 xFFFF0008預(yù)取指令中止(預(yù)取指令中止(PABTPABT)0 x0000000C0 x0000000C0 xFFFF000C0 xFFFF000C數(shù)據(jù)中止(數(shù)據(jù)中止(DABTDABT)0 x000000100 x000000100 xFFFF00100 xFFFF0010保留保留0 x000000140 x000000140 xFFFF00140 xFFFF0014中斷(中斷(IRQIRQ)0 x000000180 x000000180 xFFFF00180 xFFFF0018快中斷(快中斷(FIQFIQ)0 x0000001C0 x0000001C0 xFFFF001C0 xFFF

16、F001C 處理器在響應(yīng)中斷(異常后),可以處理器在響應(yīng)中斷(異常后),可以通過(guò)兩次跳轉(zhuǎn)轉(zhuǎn)移到中斷(異常)服務(wù)程通過(guò)兩次跳轉(zhuǎn)轉(zhuǎn)移到中斷(異常)服務(wù)程序。兩次跳轉(zhuǎn)的示意圖如下:序。兩次跳轉(zhuǎn)的示意圖如下:2 2、中斷(異常)向量表的保留項(xiàng)、中斷(異常)向量表的保留項(xiàng) 在實(shí)際應(yīng)用系統(tǒng)中,常常會(huì)需要多個(gè)在實(shí)際應(yīng)用系統(tǒng)中,常常會(huì)需要多個(gè)中斷(異常)向量表,這時(shí)就需要利用這中斷(異常)向量表,這時(shí)就需要利用這個(gè)保留項(xiàng)中數(shù)據(jù)來(lái)對(duì)這多個(gè)向量表進(jìn)行區(qū)個(gè)保留項(xiàng)中數(shù)據(jù)來(lái)對(duì)這多個(gè)向量表進(jìn)行區(qū)別。別。7.2.2 ARM7.2.2 ARM中斷(異常)的管理中斷(異常)的管理 ARM ARM按事件的緊急程度為每個(gè)中斷按事件

17、的緊急程度為每個(gè)中斷(異常)都定義了一個(gè)固定的優(yōu)先級(jí)別。(異常)都定義了一個(gè)固定的優(yōu)先級(jí)別。I I位值位值 F F位值位值禁止的異常禁止的異常/ /中斷中斷中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)1 11 1復(fù)位(復(fù)位(RESETRESET)中斷)中斷1 11 1- -未定義指令(未定義指令(UNDEFUNDEF)異常)異常6 61 1- -軟中斷(軟中斷(SWISWI)6 61 1- -預(yù)取指令中止(預(yù)取指令中止(PABTPABT)異常)異常5 51 1- -數(shù)據(jù)中止(數(shù)據(jù)中止(DABTDABT)異常)異常2 21 1- -中斷(中斷(IRQIRQ)4 41 11 1快中斷(快中斷(FIQFIQ)1 1 I=1

18、I=1表示禁止表示禁止IRQIRQ中斷;中斷;F=1F=1表示禁止表示禁止FIQFIQ中斷。中斷。1 1、普通中斷(、普通中斷(IRQIRQ)和快中斷()和快中斷(FIQFIQ) 外部設(shè)備的中斷請(qǐng)求可以通過(guò)兩個(gè)中外部設(shè)備的中斷請(qǐng)求可以通過(guò)兩個(gè)中斷請(qǐng)求輸入端進(jìn)入處理器,其中一個(gè)是叫斷請(qǐng)求輸入端進(jìn)入處理器,其中一個(gè)是叫做做IEQIEQ的普通中斷,另一個(gè)是叫做的普通中斷,另一個(gè)是叫做FIQFIQ的快的快中斷。所謂普通中斷就是前面講過(guò)的中斷,中斷。所謂普通中斷就是前面講過(guò)的中斷,而快中斷就是能比普通中斷響應(yīng)快的中斷。而快中斷就是能比普通中斷響應(yīng)快的中斷。 用下面的指令實(shí)現(xiàn)現(xiàn)場(chǎng)數(shù)據(jù)的壓棧:用下面的指令實(shí)

19、現(xiàn)現(xiàn)場(chǎng)數(shù)據(jù)的壓棧: STMFD R13!,R0,R4-R12,LR ;STMFD R13!,R0,R4-R12,LR ;壓入堆棧壓入堆棧 用下面的指令將現(xiàn)場(chǎng)數(shù)據(jù)彈出:用下面的指令將現(xiàn)場(chǎng)數(shù)據(jù)彈出: LDMFD R13!,R0,R4-R12,PC ;LDMFD R13!,R0,R4-R12,PC ;壓入堆棧壓入堆棧 這種壓棧和出棧操作都比較費(fèi)時(shí),它這種壓棧和出棧操作都比較費(fèi)時(shí),它們?cè)黾恿酥袛嗵幚淼难舆t時(shí)間。另外,由們?cè)黾恿酥袛嗵幚淼难舆t時(shí)間。另外,由于處理器在響應(yīng)一個(gè)于處理器在響應(yīng)一個(gè)IRQIRQ中斷后要經(jīng)歷兩中斷后要經(jīng)歷兩次跳轉(zhuǎn)才能轉(zhuǎn)到中斷服務(wù)程序,因此也增次跳轉(zhuǎn)才能轉(zhuǎn)到中斷服務(wù)程序,因此也增加

20、了一些延時(shí)。加了一些延時(shí)。 為了減少中斷延遲,為了減少中斷延遲,ARMARM在普通中斷在普通中斷IRQIRQ的基礎(chǔ)上又增加了一個(gè)快中斷的基礎(chǔ)上又增加了一個(gè)快中斷FIQFIQ,以,以處理有快速要求的外設(shè)的中斷。處理有快速要求的外設(shè)的中斷。 為減少延時(shí),為減少延時(shí),ARMARM在快中斷中采取了在快中斷中采取了兩個(gè)措施:兩個(gè)措施:(1 1)專門為快中斷)專門為快中斷FIQFIQ設(shè)置了一個(gè)設(shè)置了一個(gè)FIQFIQ模式,模式,并為這個(gè)模式配置了較多的私有寄存器,并為這個(gè)模式配置了較多的私有寄存器,從而可使中斷服務(wù)程序有足夠的寄存從而可使中斷服務(wù)程序有足夠的寄存器來(lái)使用,而不必與被中斷服務(wù)程序使用器來(lái)使用,

21、而不必與被中斷服務(wù)程序使用同一組寄存器,這樣就免去了因寄存器沖同一組寄存器,這樣就免去了因寄存器沖突而必需的保護(hù)及恢復(fù)現(xiàn)場(chǎng)工作。突而必需的保護(hù)及恢復(fù)現(xiàn)場(chǎng)工作。(2 2)ARMARM把把FIQFIQ的中斷向量放在了中斷的中斷向量放在了中斷(異常)向量表末尾(異常)向量表末尾0X0000001C0X0000001C處,因此處,因此它后面沒(méi)有其它中斷向量,允許用戶將中它后面沒(méi)有其它中斷向量,允許用戶將中斷服務(wù)車工許程序直接放在這里。斷服務(wù)車工許程序直接放在這里。2 2、復(fù)位中斷、復(fù)位中斷 復(fù)位通常在兩種情況下發(fā)生復(fù)位通常在兩種情況下發(fā)生:(:(1 1)系統(tǒng)初始運(yùn)行時(shí)的正常上電;(系統(tǒng)初始運(yùn)行時(shí)的正常

22、上電;(2 2)由程)由程序引起的復(fù)位。序引起的復(fù)位。 復(fù)位中斷的優(yōu)先級(jí)別最高,當(dāng)系統(tǒng)響復(fù)位中斷的優(yōu)先級(jí)別最高,當(dāng)系統(tǒng)響應(yīng)復(fù)位中斷時(shí),系統(tǒng)會(huì)進(jìn)入應(yīng)復(fù)位中斷時(shí),系統(tǒng)會(huì)進(jìn)入ARMARM的管理模的管理模式(式(SVCSVC模式)。模式)。3 3、軟中斷異常、軟中斷異常 SWI SWI是程序中使用的指令,從程序設(shè)是程序中使用的指令,從程序設(shè)計(jì)的角度來(lái)看,可以把它看承是一種目標(biāo)計(jì)的角度來(lái)看,可以把它看承是一種目標(biāo)地址固定為地址固定為0X000000080X00000008的特殊轉(zhuǎn)移指令。的特殊轉(zhuǎn)移指令。 該指令除了目標(biāo)地址為硬件提供的該指令除了目標(biāo)地址為硬件提供的固定地址外,它還會(huì)在轉(zhuǎn)移的同時(shí)使處固定地

23、址外,它還會(huì)在轉(zhuǎn)移的同時(shí)使處理器自動(dòng)進(jìn)入管理模式(理器自動(dòng)進(jìn)入管理模式(SVCSVC模式),在模式),在該模式下可以訪問(wèn)系統(tǒng)中的所有資源。該模式下可以訪問(wèn)系統(tǒng)中的所有資源。 由于它是由用戶在程序使用指令而產(chǎn)由于它是由用戶在程序使用指令而產(chǎn)生的中斷,所以叫做軟中斷。它也是所有生的中斷,所以叫做軟中斷。它也是所有中斷(異常)中唯一的一個(gè)同步事件。中斷(異常)中唯一的一個(gè)同步事件。4 4、預(yù)取指令中止異常和數(shù)據(jù)中止異常、預(yù)取指令中止異常和數(shù)據(jù)中止異常 這是給操作系統(tǒng)存儲(chǔ)管理模塊準(zhǔn)備的這是給操作系統(tǒng)存儲(chǔ)管理模塊準(zhǔn)備的異常。異常。5 5、未定義指令異常、未定義指令異常 由于由于ARMARM是是3232位

24、指令系統(tǒng),理論上位指令系統(tǒng),理論上ARMARM可以擁有可以擁有2 23232個(gè)指令,但實(shí)際上它遠(yuǎn)遠(yuǎn)沒(méi)有個(gè)指令,但實(shí)際上它遠(yuǎn)遠(yuǎn)沒(méi)有這么多指令。這么多指令。 在實(shí)踐中,用戶通常利用這個(gè)異常中在實(shí)踐中,用戶通常利用這個(gè)異常中斷服務(wù)程序來(lái)模擬某種硬件的功能,或斷服務(wù)程序來(lái)模擬某種硬件的功能,或自定義一些指令來(lái)完成一些特殊功能。自定義一些指令來(lái)完成一些特殊功能。7.2.3 ARM7.2.3 ARM中斷(異常)運(yùn)行模式中斷(異常)運(yùn)行模式 處理器響應(yīng)中斷(異常)后所進(jìn)入的處理器響應(yīng)中斷(異常)后所進(jìn)入的模式如下表所示:模式如下表所示:中斷(異常)中斷(異常)進(jìn)入的模式進(jìn)入的模式復(fù)位(復(fù)位(RESETRES

25、ET)管理模式(管理模式(SVCSVC)未定義指令(未定義指令(UNDEFUNDEF)未定義指令中止模式(未定義指令中止模式(UNDUND)軟中斷(軟中斷(SWISWI)管理模式(管理模式(SVCSVC)預(yù)取指令中止(預(yù)取指令中止(PABTPABT)中止模式(中止模式(ABTABT)中斷(異常)中斷(異常)進(jìn)入的模式進(jìn)入的模式數(shù)據(jù)中止(數(shù)據(jù)中止(DABTDABT)中止模式(中止模式(ABTABT)快中斷(快中斷(FIQFIQ)快中斷模式(快中斷模式(FIQFIQ)中斷(中斷(IRQIRQ)中斷模式(中斷模式(IRQIRQ)續(xù)表續(xù)表7.2.4 7.2.4 中斷(異常)的響應(yīng)過(guò)程及返回中斷(異常)

26、的響應(yīng)過(guò)程及返回1 1、中斷(異常)的響應(yīng)過(guò)程、中斷(異常)的響應(yīng)過(guò)程 當(dāng)處理器響應(yīng)中斷(異常)請(qǐng)求后,當(dāng)處理器響應(yīng)中斷(異常)請(qǐng)求后,系統(tǒng)的硬件電路一般需要先做四項(xiàng)準(zhǔn)備工系統(tǒng)的硬件電路一般需要先做四項(xiàng)準(zhǔn)備工作:作:(1 1)把程序計(jì)數(shù)器()把程序計(jì)數(shù)器(PCPC)中的當(dāng)前地址)中的當(dāng)前地址值保存到連接寄存器值保存到連接寄存器LRLR中。中。(2 2)把當(dāng)前程序狀態(tài)寄存器()把當(dāng)前程序狀態(tài)寄存器(CPSRCPSR)中)中的內(nèi)容保護(hù)到模式私有寄存器的內(nèi)容保護(hù)到模式私有寄存器SPSRSPSR中。中。(3 3)將寄存器)將寄存器CPSRCPSR中的中的MODEMODE域設(shè)置為中域設(shè)置為中斷(異常)應(yīng)

27、進(jìn)入的運(yùn)行模式。斷(異常)應(yīng)進(jìn)入的運(yùn)行模式。(4 4)對(duì))對(duì)CPSRCPSR的的I I位和位和F F位進(jìn)行相應(yīng)的設(shè)置,位進(jìn)行相應(yīng)的設(shè)置,以防止再次響應(yīng)同一個(gè)中斷請(qǐng)求。以防止再次響應(yīng)同一個(gè)中斷請(qǐng)求。 接下來(lái)便到中斷向量表中獲取中斷向接下來(lái)便到中斷向量表中獲取中斷向量,轉(zhuǎn)向用戶所需編寫的中斷(異常)服量,轉(zhuǎn)向用戶所需編寫的中斷(異常)服務(wù)程序。務(wù)程序。 下圖為復(fù)位的工作過(guò)程。下圖為復(fù)位的工作過(guò)程。 未定義指令響應(yīng)過(guò)程:未定義指令響應(yīng)過(guò)程: 軟中斷響應(yīng)過(guò)程:軟中斷響應(yīng)過(guò)程: 預(yù)取指令中止響應(yīng)過(guò)程:預(yù)取指令中止響應(yīng)過(guò)程: 數(shù)據(jù)訪問(wèn)中止異常響應(yīng)過(guò)程:數(shù)據(jù)訪問(wèn)中止異常響應(yīng)過(guò)程: IRQIRQ響應(yīng)過(guò)程:響應(yīng)過(guò)程: FIQ FIQ的響應(yīng)過(guò)程:的響應(yīng)過(guò)程:2 2、中斷(異常)處理的返回、中斷(異常)處理的返回 當(dāng)一個(gè)中斷(異常)發(fā)生時(shí),處理器當(dāng)一個(gè)中斷(異常)發(fā)生時(shí),處理器會(huì)自動(dòng)在會(huì)自動(dòng)在LRLR中保存一個(gè)與當(dāng)前中保存一個(gè)與當(dāng)前PCPC值相關(guān)的值相關(guān)的信息,中斷服務(wù)程序可以利用這個(gè)信息來(lái)信息,中斷服務(wù)程序可以利用這個(gè)信息來(lái)推算返回地址。具體如下表:推算返回地址。具體如下表:異常異常/ /中斷中斷地址地址說(shuō)明說(shuō)明復(fù)位(復(fù)位(RESETRESET)- - -未

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論