北交微機作業(yè)--三種CPU中斷技術(shù)對比綜述_第1頁
北交微機作業(yè)--三種CPU中斷技術(shù)對比綜述_第2頁
北交微機作業(yè)--三種CPU中斷技術(shù)對比綜述_第3頁
北交微機作業(yè)--三種CPU中斷技術(shù)對比綜述_第4頁
北交微機作業(yè)--三種CPU中斷技術(shù)對比綜述_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、三種 CPU 中斷技術(shù)對比引言:中斷是一種使 CPU 中止正在執(zhí)行的程序而轉(zhuǎn)去處理特殊事件的操作。有了中斷功能, PC 系統(tǒng)就可以使 CPU和外設(shè)同時工作,使系統(tǒng)可以及時地響應(yīng)外部事件,大大提高了CPU的利用率,也提高了數(shù)據(jù)輸入、輸出的速度。另一方面,可以使 CPU及時處理各種軟硬件故障。本文將X86、ARM與 8051 單片機的中斷系統(tǒng)做了對比,從而能更好的學(xué)習(xí)和理解中斷技術(shù)。、 ARM處理器中斷1. ARM7處理器中斷ARM 是Advanced RISC Machines 的縮寫, ARM公 司開發(fā)了很多系列的 ARM處 理器內(nèi)核, ARM7處理器就是其中的一個系列, 其中包括 ARM7T

2、DM、IARM7TDMI s 、帶有高速緩存處理器宏單元的 ARM720T和 擴充了 Jazelle 的ARM7EJ S。該系列處理器提供 Thumb 16位壓縮指令集和 EmbededICE軟件調(diào)試方 式,多應(yīng)用于多媒體和嵌入式設(shè)備,包括 Internet 設(shè)備、移動電話、 PDA 等。ARM7中斷工作模式: ARM7處理器具有 2個中斷輸入,分別為 IRQ 中斷和 FIQ 中斷,如下圖所示。其對應(yīng)的中斷操作模式為向量中斷 IRQ模式 (用于通用中斷處理 )和快速中 斷FIQ模式(支持數(shù)據(jù)傳輸或通道處理 ) 。向量中斷請求 (IRQ)是一個由 nIRQ 輸入端的低電平。所產(chǎn)生的正常中斷。 I

3、RQ的優(yōu)先級低于 FIQ,對于 FIQ序列 它是被屏蔽的。任何時候在一個特權(quán)模式下,都可通過置位當前程序狀態(tài) 寄存器 (CPSR)中的I 位來禁止 IRQ??焖僦袛嗾埱?(FIQ) 支持數(shù)據(jù)轉(zhuǎn)移或通道 處理,在 ARM 狀態(tài)中, FIQ模式有 8個專用的寄存器可用來滿足寄存器保護的需要,這是上下文切換的最小開銷。 將 nFIQ信號拉低可實現(xiàn)外部產(chǎn)生 FIQ。 在一個特權(quán)模式中, 可通過置位當前程序狀態(tài)寄存器 (cPsR) 中的 F標志來禁 止FIQ異常。當 F標志清零時, ARM7處理器在每條指令結(jié)束時檢測 FIQ 同步 器輸出端的低電平。ARM7中斷屏蔽程序?qū)崿F(xiàn)ARM7內(nèi)核包含 1個當前程序

4、狀態(tài)寄存器 (CPSR),該寄存器中包含條件代碼標 志位、控制中斷的使能和禁止位,以及設(shè)置處理器操作模式位。當前程序 狀態(tài)寄存器如下圖所示。當前程序狀態(tài)寄存器的控制位中包含 2個中斷禁止位 I和F位:當I 位置 位時,禁止 IRQ 中斷,清零時允許 IRQ 中斷; 當F位置位時, 禁止FIQ 中斷, 清零時允許 FIQ 中斷。在ARM7 系列的處理器中,只有“ MRS ”和“ MSR ”兩條指令可以直接讀 取和設(shè)置當前程序狀態(tài)寄存器 (CPSR) 或保存程序狀態(tài)寄存器 (SPSR)。在 ARM 公司提供的 C編譯器中并沒用提供特殊的語法格式, 用于指定生成這 兩條指令,所以如要想將 IRQ 中

5、斷和 FIQ 中斷都屏蔽,就必須使用匯編語 言來編寫函數(shù)。對于 IRQ 中斷, ARM 還有另外一種管理模式,即通過向 量中斷控制器 (VIC) 負責管理芯片的中斷源, 如果是只屏蔽或打開向量中斷 IRQ ,也可以使用 C 語言來設(shè)計這兩個函數(shù)。ARM7 處理器中斷: ARM 7TDMI 具有常規(guī)中斷( IRQ )、快中斷( FIQ)和 軟件中斷( SoftWare Interrupt )三種中方式。常規(guī)中斷和快中斷都是硬件中 斷??熘袛嗍菫橹С謹?shù)據(jù)傳輸或快速數(shù)據(jù)通道而設(shè)計的,為快速處理快中 斷??熘袛啾辉O(shè)為最高中斷優(yōu)先級; 在快中斷模式增設(shè)了 7個私有工作 寄存器,從而避免了由于主工作寄存器

6、數(shù)據(jù)的保存和恢復(fù)而帶來了額外開 銷;快中斷處理程序處于異常向量表的最后位置,因此可緊接異常向量 表書寫快中斷處理程序,而不必進行程序跳轉(zhuǎn)操作,避免了刷新指令流水 線和高速緩存。 軟件中斷是一種由用戶設(shè)置的同步中斷, 由程序指令產(chǎn)生, 不像硬件中斷那樣由外部事件觸發(fā)。軟件中斷允許運行在用戶模式的程序 進入監(jiān)督模式, 并運行監(jiān)督態(tài)下的函數(shù)。 在 ARM7TDMI 的硬件調(diào)試系統(tǒng)中, 應(yīng)用程序可利用軟件中斷來申請半自主式操作,利用軟件中斷機制,可以 直觀和高效地仿真調(diào)試應(yīng)用程序。另外,軟件中斷也可用于一般性的程序 控制。向量地址中斷類型工作模式優(yōu)先級返回地址0x8軟件中斷SWI模式6pc-40x18

7、常規(guī)則中斷IRQ 模式4pc-80x1C快中斷FIQ 模式3pc-82. ARM 中斷優(yōu)先級管理方式:S3c2440 共有 7 組基于優(yōu)先級輪轉(zhuǎn)的沖裁機制來控制 32 個中斷源。3. 中斷的處理過程:ARM 響應(yīng)中斷和中斷返回: (1)當中斷產(chǎn)生時, ARM7TDMI 將執(zhí)行 的操作把當前程序狀態(tài)寄存器 (CPSR)的內(nèi)容拷貝到相應(yīng)的備份程序狀 態(tài)寄存器( SPSR)。當前工作模式、中斷屏蔽位和狀態(tài)標志被保存下來。 轉(zhuǎn)入相應(yīng)的模式,并關(guān)閉常規(guī)中斷。如響應(yīng)快中斷,則同時關(guān)閉快中斷。 把程序計數(shù)器( pc)的值減 4 后,存入相應(yīng)的連接寄存器( 1r)。將程 序計數(shù)器指向相應(yīng)的中斷向量。 ( 2)

8、由中斷返回時, ARM7TDMI 將完成的 操作將備份程序狀態(tài)寄存器的內(nèi)容拷貝到當前程序狀態(tài)寄存器,恢復(fù)中 斷前的狀態(tài)。清除相應(yīng)禁止中斷位(如果已設(shè)置的話) 。把連接寄存器 的值拷貝到程序計數(shù)器,繼續(xù)運行原程序。說明:ARBITER6 所控制的 REQ0,1,2,3,4,5 實際上對應(yīng)ARBITER0,1,2,3,4,5 REQ0 在任何情況下具有最高優(yōu)先級, REQ5 具有最 低優(yōu)先級;即:對 ARBITER1-4 來說,在任何情況下: REQ0 具有最高優(yōu)先級, REQ5 具有最低優(yōu)先級對 ARBITER6 來說,在任何情況下: ARBITER0 具有最高優(yōu)先級, ARBITER54.中斷

9、向量:中斷向量是指中斷服務(wù)程序入口地址的偏移量與段基值,一個中 斷向量占據(jù) 4 字節(jié)空間。 中斷向量表是 8088 系統(tǒng)內(nèi)存中最低端 1K 字 節(jié)空間,它的作用就是按照中斷類型號從小到大的順序存儲對應(yīng)的中 斷向量,總共存儲 256 個中斷向量。在中斷響應(yīng)過程中, CPU 通過從 接口電路獲取的中斷類型號(中斷向量號)計算對應(yīng)中斷向量在表中 的位置,并從中斷向量表中獲取中斷向量,將程序流程轉(zhuǎn)向中斷服務(wù) 程序的入口地址。具有最低優(yōu)先級ARM中斷向量:在 32 位 ARM系統(tǒng)中,一般都是在中斷向量表中放置一條分支指令或PC 寄存器加載指令,實現(xiàn)程序跳轉(zhuǎn)到中斷服務(wù)例程的功能。一般ARM 嵌入式系統(tǒng)的程

10、序都是固化在從 00000000H 開始的低端 ROM 空間中, 中斷 向量表 VectorTable 也是固化在 ROM 中,所以無法在程序運行時動態(tài)隨機 修改中斷向量表,在 ARM 向量表中存放的是與中斷服務(wù)例程入口有關(guān)的 一條分支指令,設(shè)置中斷向量都相當繁瑣,必須修改 ARM 的 C 程序的啟 動代碼。表面上看, 在 ARM 中斷向量設(shè)置方法的向量表 VectorT able 中也 是純地址數(shù)據(jù), 不含指令代碼, 似乎可以把 VectorT able 設(shè)置在 RAM 數(shù)據(jù) 段中。然而一般 ARM 體系的 ROM 代碼段和 RAM 數(shù)據(jù)段間的偏移遠大于 2 12 ,故超出了 LDR 使用

11、PC 為基址的相對尋址范圍。二、 X86處理器中斷1. X86 處理器中斷:80x86 中斷結(jié)構(gòu)及類型:中斷是指 CPU在正常執(zhí)行程序的過程中,由于某個外部或內(nèi)部事件的 作用,強迫 CPU停止當前正在執(zhí)行的程序,轉(zhuǎn)去為該事件服務(wù)(稱為中斷 服務(wù)),待服務(wù)結(jié)束后,又能自動返回到被中斷的程序中繼續(xù)執(zhí)行。2. 中斷源中斷X86 CPU 支持 256 個中斷向量,中斷號 00H-0FFH 。 019 是系統(tǒng)預(yù) 定義的異常和 NMI ,2031 被 Intel 保留,如表所示。所以,外部中斷從 32 開始。 CPU 處理的流程都一樣,在執(zhí)行完當前指令后,根據(jù)中斷源提供的中斷向量,在 IDT 中找到并調(diào)用

12、相應(yīng)的服務(wù)例程。 X86 CPU 中斷分為內(nèi) 部中斷和外部中斷。內(nèi)部中斷分為:軟中斷,內(nèi)部中斷和異常,異常分為3 種: Fault :可以被更正的錯誤,異常處理程序的返回地址是產(chǎn)生fault 的指令。 Trap:執(zhí)行 trap 指令(例如 INT 3)后被報告的異常,異常處理程序的 返回地址是產(chǎn)生 trap指令的后一條指令。 Abort :嚴重錯誤, 無法繼續(xù)執(zhí)行。 外部中斷分為:不可屏蔽硬件中斷和可屏蔽硬件中斷。不可屏蔽硬件中斷 (02H ):由 NMI 端引入的中斷請求, 中斷請求不可被屏蔽;可屏蔽硬件 中斷請求:由 INTR 端引入,中斷請求可由 IF=0 進行屏蔽,使中斷請求不 進入。

13、3. 80x86 中斷優(yōu)先級管理方式:80x86CPU 工作在實地址模式下時, 多個中斷請求同時發(fā)生, 高級中斷可以打斷低級中斷,反之則不然,響應(yīng)順序按優(yōu)先級從高到低排列為:內(nèi)部中斷和異常,軟件中斷,外部不可屏蔽中斷,外部可屏蔽中斷,單步中 斷。4. 中斷的處理過程80x86 中斷請求:當外設(shè)需要中斷服務(wù)時,由硬件產(chǎn)生一個中斷請求 信號 INTR發(fā)送給 CPU;CPU在當前指令結(jié)束時檢測 INTR引腳, 判斷是否有 中斷請求。 中斷響應(yīng):當檢測到有中斷請求且 IF=1 時,總線周期信號 M/IO, D/C , W/R為 000,通過總線控制邏輯發(fā)中斷響應(yīng)信號。INTA 給中斷請求設(shè)備表示應(yīng)答:

14、中斷請求設(shè)備將中斷號送上數(shù)據(jù)總線;系統(tǒng)自動進入中斷 響應(yīng)周期,由硬件完成關(guān)中斷、保存斷點、取中斷服務(wù)的入口地址(N*4)5. 中斷向量8086 中斷矢量表:等一系列操作,而后轉(zhuǎn)向中斷服務(wù)程序執(zhí)行中斷處理。中斷處理:執(zhí)行中 斷服務(wù)程序中規(guī)定的操作。中斷返回:將壓棧的斷點從堆棧中彈出,開中 斷, CPU轉(zhuǎn)向被中斷的主程序繼續(xù)執(zhí)行存放中斷服務(wù)程序入口地址的存儲空間。實模式下存放于存儲器的低端 00000H-003FFH ,共 1K 字節(jié),每一個中斷號占據(jù) 4 字節(jié)的空間,低 2 字節(jié)存放對應(yīng)中斷入口子程序的偏移地址,高 2 字節(jié)存放對應(yīng)中斷入口子 程序的段基址。保護模式下,稱中斷描述符表,可存放于存

15、儲器的任意位 置,由中斷描述符表寄存器 IDTR 標識其在物理存儲器中的位置,每個中斷描述符由 8 字節(jié)組成。當 80x86 微機啟動時, ROM BIOS 中的程序會 在物理內(nèi)存開始地址 0x0000:0x0000 處初始化并設(shè)置中斷向量表, 而各中 斷的默認中斷服務(wù)程序則在 BIOS 中給出。由于中斷向量表中的向量是按 中斷號順序排列,因此給定一個中斷號N ,那么它對應(yīng)的中斷向量在內(nèi)存中的位置就是 0x0000:N 4,即對應(yīng)的中斷服務(wù)程序入口地址保存在物理內(nèi) 存 0x0000:N 4 位置處。在 X86 體系結(jié)構(gòu)的 PC 系統(tǒng)中,不論是用匯編還 是用 C 語言,都可以動態(tài)隨機地設(shè)置、修改

16、中斷向量表 只需要簡單地把 中斷程序例程的入口地址寫入到中斷向量表數(shù)據(jù)區(qū),即可完成向量表的設(shè) 置。80x86 中斷向量表:三、 8051 單片機中斷1.8051 單片機中斷簡介8051 單片 機有五個中斷 請求源,四個用于中斷 控制的寄存器 IE.IP.TCON 和 SCON,用于控制中斷的類型,中斷允許,中斷起停和各種中 斷源的優(yōu)先級別。2.中斷源中斷80C51 的中斷系統(tǒng)包括中斷源、中斷允許寄存器IE、中斷優(yōu)先級寄存器 IP 、中斷矢量等。在 80C51 中,只有兩級中斷優(yōu)先級。如圖是 80C51 的 中斷系統(tǒng)結(jié)構(gòu)示意圖。 80C51 有 5 個中斷源分別為: 兩個外部中斷源 INT0 、

17、INT1 和三個內(nèi)部中斷源 T0、T1 定時 /計數(shù)謚出中斷源和串行口發(fā)送或接收 中斷源。外部中斷是由外部信號引起的,它們的中斷請求信號分別從引腳中斷優(yōu)先級控制,還有兩個不可尋址的優(yōu)先級狀態(tài)觸發(fā)器,一個用于指示某一高優(yōu)先級中斷正在進行服務(wù),而屏蔽其它高優(yōu)先級中斷;另一個INT0 和 INT1 上引入0, 定時器T0 中斷 , 外部中斷 1,定時器 T1 中斷, 串行口中斷,定時器 T2 中斷。4. 中斷的處理過程80C51外部中斷請求有兩種信號觸發(fā)方式??赏ㄟ^設(shè)置有關(guān)控制位進行 定義。 當設(shè)定為電平有效方式時, 若 INT0 或 INT1 引腳上采樣到有效的低 電平,則向 CPU提出中斷請求;

18、 當設(shè)定為跳變有效方式時, 若 INT0或 INT1 引腳上采樣到有效負跳變,則向CPU提出中斷請求。中斷采樣:針對外部中斷請求信號進行的,而內(nèi)部中斷請求都發(fā)生在用于指示某一低優(yōu)先級中斷正在進行服務(wù),從而屏蔽其它低優(yōu)先級中斷, 但不能屏蔽高優(yōu)先級中斷。中斷優(yōu)先級由高到低為:外部中斷3. 中斷優(yōu)先級管理方式芯片內(nèi)部,可以直接置位 TCON或 SCON中的中斷請求標志。在每個機器周在 80C51 中有高、低兩個中斷優(yōu)先級,通過IP 來設(shè)定, IP 寄存器中期的 S5P2 期間,各中斷標志采樣相應(yīng)的中斷源,并置入相應(yīng)標志。中斷查各位設(shè)置為 0 時,為低中斷優(yōu)先級,為 1 時,設(shè)為高中斷優(yōu)先級。系統(tǒng)復(fù)

19、詢:若查詢到某中斷標志為 1,則按優(yōu)先級的高低進行處理,即響應(yīng)中斷。位后 IP 寄存器中各位均為 0,全部設(shè)定為低中斷優(yōu)先級。 IP 寄存器如下:80C51 的中斷請求都匯集在 TCON和 SCON中。而 CPU則在下一機器周期的S6 期間按優(yōu)先級的順序查詢各中斷標志。先查詢高級中斷,再查詢低級中斷。同級中斷按內(nèi)部中斷優(yōu)先級序列查詢。如果查詢到有中斷標志位為后,必須再繼續(xù)執(zhí)行一條指令,然后才能響應(yīng)中斷。“1” , 則表明有中斷請求發(fā)生, 接著從相鄰的下一個機器周期的 S1狀態(tài) 開始進行中斷響應(yīng)。 中斷響應(yīng):硬件自動生成長調(diào)用指令為 LCALL addr16 ,而 addr16 就是各中斷源的中斷矢量地址,如下表所示。中斷源中斷矢量地址外部中斷 0( INT0)0003H定時器 / 計數(shù)器 0(T0)000BH外部中斷 1( INT1)0013H定時器

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論