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

下載本文檔

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

文檔簡介

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

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

3、可通過置位當前程序狀態(tài)寄存器(CPSR)中的I位來禁止IRQ??焖僦袛嗾埱?FIQ)支持數(shù)據(jù)轉(zhuǎn)移或通道處理,在ARM 狀態(tài)中,F(xiàn)IQ模式有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個當前程序狀態(tài)寄存器(CPSR),該寄存器中包含條件代碼標志位、控制中斷的使能和禁止位,以及設置處理器操作模式位。當前程序狀態(tài)寄存器如下圖所示。

4、當前程序狀態(tài)寄存器的控制位中包含2個中斷禁止位 I和F位:當I位置位時,禁止IRQ 中斷,清零時允許IRQ 中斷;當F位置位時,禁止FIQ 中斷,清零時允許FIQ 中斷。在ARM7系列的處理器中,只有“MRS”和“MSR”兩條指令可以直接讀取和設置當前程序狀態(tài)寄存器(CPSR)或保存程序狀態(tài)寄存器(SPSR)。在ARM 公司提供的C編譯器中并沒用提供特殊的語法格式,用于指定生成這兩條指令,所以如要想將IRQ 中斷和FIQ中斷都屏蔽,就必須使用匯編語言來編寫函數(shù)。對于IRQ 中斷,ARM 還有另外一種管理模式,即通過向量中斷控制器(VIC)負責管理芯片的中斷源,如果是只屏蔽或打開向量中斷IRQ,

5、也可以使用C語言來設計這兩個函數(shù)。ARM7處理器中斷:ARM 7TDMI具有常規(guī)中斷(IRQ)、快中斷(FIQ)和軟件中斷(SoftWare Interrupt)三種中方式。常規(guī)中斷和快中斷都是硬件中斷??熘袛嗍菫橹С謹?shù)據(jù)傳輸或快速數(shù)據(jù)通道而設計的,為快速處理快中斷??熘袛啾辉O為最高中斷優(yōu)先級;在快中斷模式增設了7個私有工作寄存器,從而避免了由于主工作寄存器數(shù)據(jù)的保存和恢復而帶來了額外開銷;快中斷處理程序處于異常向量表的最后位置,因此可緊接異常向量表書寫快中斷處理程序,而不必進行程序跳轉(zhuǎn)操作,避免了刷新指令流水線和高速緩存。軟件中斷是一種由用戶設置的同步中斷,由程序指令產(chǎn)生,不像硬件中斷那樣由

6、外部事件觸發(fā)。軟件中斷允許運行在用戶模式的程序進入監(jiān)督模式,并運行監(jiān)督態(tài)下的函數(shù)。在ARM7TDMI的硬件調(diào)試系統(tǒng)中,應用程序可利用軟件中斷來申請半自主式操作,利用軟件中斷機制,可以直觀和高效地仿真調(diào)試應用程序。另外,軟件中斷也可用于一般性的程序控制。向量地址中斷類型工作模式優(yōu)先級返回地址0x8軟件中斷SWI模式6pc-40x18常規(guī)則中斷IRQ模式4pc-80x1C快中斷FIQ模式3pc-82.ARM中斷優(yōu)先級管理方式:S3c2440共有7組基于優(yōu)先級輪轉(zhuǎn)的沖裁機制來控制32個中斷源。說明:ARBITER6所控制的REQ0,1,2,3,4,5實際上對應ARBITER0,1,2,3,4,5RE

7、Q0在任何情況下具有最高優(yōu)先級,REQ5具有最低優(yōu)先級;即:對ARBITER1-4來說,在任何情況下:REQ0具有最高優(yōu)先級,REQ5具有最低優(yōu)先級對ARBITER6來說,在任何情況下:ARBITER0具有最高優(yōu)先級,ARBITER5具有最低優(yōu)先級3.中斷的處理過程:ARM響應中斷和中斷返回:(1)當中斷產(chǎn)生時,ARM7TDMI將執(zhí)行的操作把當前程序狀態(tài)寄存器(CPSR)的內(nèi)容拷貝到相應的備份程序狀態(tài)寄存器(SPSR)。當前工作模式、中斷屏蔽位和狀態(tài)標志被保存下來。轉(zhuǎn)入相應的模式,并關閉常規(guī)中斷。如響應快中斷,則同時關閉快中斷。把程序計數(shù)器(pc)的值減4后,存入相應的連接寄存器(1r)。將程

8、序計數(shù)器指向相應的中斷向量。(2)由中斷返回時,ARM7TDMI將完成的操作將備份程序狀態(tài)寄存器的內(nèi)容拷貝到當前程序狀態(tài)寄存器,恢復中斷前的狀態(tài)。清除相應禁止中斷位(如果已設置的話)。把連接寄存器的值拷貝到程序計數(shù)器,繼續(xù)運行原程序。4.中斷向量:中斷向量是指中斷服務程序入口地址的偏移量與段基值,一個中斷向量占據(jù)4字節(jié)空間。中斷向量表是8088系統(tǒng)內(nèi)存中最低端1K字節(jié)空間,它的作用就是按照中斷類型號從小到大的順序存儲對應的中斷向量,總共存儲256個中斷向量。在中斷響應過程中,CPU通過從接口電路獲取的中斷類型號(中斷向量號)計算對應中斷向量在表中的位置,并從中斷向量表中獲取中斷向量,將程序流程

9、轉(zhuǎn)向中斷服務程序的入口地址。ARM中斷向量:在32位ARM系統(tǒng)中,一般都是在中斷向量表中放置一條分支指令或PC寄存器加載指令,實現(xiàn)程序跳轉(zhuǎn)到中斷服務例程的功能。一般ARM嵌入式系統(tǒng)的程序都是固化在從00000000H開始的低端ROM空間中,中斷向量表VectorTable也是固化在ROM中,所以無法在程序運行時動態(tài)隨機修改中斷向量表,在ARM 向量表中存放的是與中斷服務例程入口有關的一條分支指令,設置中斷向量都相當繁瑣,必須修改ARM的C程序的啟動代碼。表面上看,在ARM中斷向量設置方法的向量表VectorTable中也是純地址數(shù)據(jù),不含指令代碼,似乎可以把VectorTable設置在 RAM

10、數(shù)據(jù)段中。然而一般ARM體系的ROM代碼段和RAM數(shù)據(jù)段間的偏移遠大于2 12,故超出了LDR使用PC為基址的相對尋址范圍。二、X86處理器中斷1. X86處理器中斷:中斷是指CPU在正常執(zhí)行程序的過程中,由于某個外部或內(nèi)部事件的作用,強迫CPU停止當前正在執(zhí)行的程序,轉(zhuǎn)去為該事件服務(稱為中斷服務),待服務結(jié)束后,又能自動返回到被中斷的程序中繼續(xù)執(zhí)行。80x86中斷結(jié)構(gòu)及類型: 2.中斷源中斷X86 CPU支持256個中斷向量,中斷號00H-0FFH 。019是系統(tǒng)預定義的異常和NMI,2031被Intel保留,如表所示。所以,外部中斷從32開始。CPU處理的流程都一樣,在執(zhí)行完當前指令后,

11、根據(jù)中斷源提供的中斷向量,在IDT中找到并調(diào)用相應的服務例程。 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進行屏蔽,使中斷請求不進入。3.

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

13、入中斷響應周期,由硬件完成關中斷、保存斷點、取中斷服務的入口地址(N*4)等一系列操作,而后轉(zhuǎn)向中斷服務程序執(zhí)行中斷處理。中斷處理:執(zhí)行中斷服務程序中規(guī)定的操作。中斷返回:將壓棧的斷點從堆棧中彈出,開中斷,CPU轉(zhuǎn)向被中斷的主程序繼續(xù)執(zhí)行5.中斷向量8086中斷矢量表:存放中斷服務程序入口地址的存儲空間。實模式下存放于存儲器的低端00000H-003FFH,共1K字節(jié),每一個中斷號占據(jù)4字節(jié)的空間,低2字節(jié)存放對應中斷入口子程序的偏移地址,高2字節(jié)存放對應中斷入口子程序的段基址。保護模式下,稱中斷描述符表,可存放于存儲器的任意位置,由中斷描述符表寄存器IDTR標識其在物理存儲器中的位置,每個中

14、斷描述符由8字節(jié)組成。當 80x86微機啟動時,ROM BIOS中的程序會在物理內(nèi)存開始地址0x0000:0x0000處初始化并設置中斷向量表,而各中斷的默認中斷服務程序則在BIOS中給出。由于中斷向量表中的向量是按中斷號順序排列,因此給定一個中斷號N,那么它對應的中斷向量在內(nèi)存中的位置就是0x0000:N×4,即對應的中斷服務程序入口地址保存在物理內(nèi)存0x0000:N×4位置處。在X86體系結(jié)構(gòu)的PC系統(tǒng)中,不論是用匯編還是用C語言,都可以動態(tài)隨機地設置、修改中斷向量表只需要簡單地把中斷程序例程的入口地址寫入到中斷向量表數(shù)據(jù)區(qū),即可完成向量表的設置。80x86中斷向量表:

15、三、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、INT1和三個內(nèi)部中斷源T0、T1定時/計數(shù)謚出中斷源和串行口發(fā)送或接收中斷源。外部中斷是由外部信號引起的,它們的中斷請求信號分別從引腳INT0和INT1上引入3.中斷優(yōu)先級

16、管理方式在80C51中有高、低兩個中斷優(yōu)先級,通過IP來設定,IP寄存器中各位設置為0時,為低中斷優(yōu)先級,為1時,設為高中斷優(yōu)先級。系統(tǒng)復位后IP寄存器中各位均為0,全部設定為低中斷優(yōu)先級。IP寄存器如下:中斷優(yōu)先級控制,還有兩個不可尋址的優(yōu)先級狀態(tài)觸發(fā)器,一個用于指示某一高優(yōu)先級中斷正在進行服務,而屏蔽其它高優(yōu)先級中斷;另一個用于指示某一低優(yōu)先級中斷正在進行服務,從而屏蔽其它低優(yōu)先級中斷,但不能屏蔽高優(yōu)先級中斷。中斷優(yōu)先級由高到低為:外部中斷0, 定時器T0中斷 , 外部中斷1,定時器T1中斷, 串行口中斷,定時器T2中斷。4.中斷的處理過程80C51外部中斷請求有兩種信號觸發(fā)方式??赏ㄟ^設

17、置有關控制位進行定義。 當設定為電平有效方式時,若INT0或INT1引腳上采樣到有效的低電平,則向CPU提出中斷請求;當設定為跳變有效方式時,若INT0或INT1引腳上采樣到有效負跳變,則向CPU提出中斷請求。 中斷采樣:針對外部中斷請求信號進行的,而內(nèi)部中斷請求都發(fā)生在芯片內(nèi)部,可以直接置位TCON或SCON中的中斷請求標志。在每個機器周期的S5P2期間,各中斷標志采樣相應的中斷源,并置入相應標志。中斷查詢:若查詢到某中斷標志為1,則按優(yōu)先級的高低進行處理,即響應中斷。80C51的中斷請求都匯集在TCON和SCON中。而CPU則在下一機器周期的S6期間按優(yōu)先級的順序查詢各中斷標志。先查詢高級

18、中斷,再查詢低級中斷。同級中斷按內(nèi)部中斷優(yōu)先級序列查詢。如果查詢到有中斷標志位為“1” ,則表明有中斷請求發(fā)生,接著從相鄰的下一個機器周期的S1狀態(tài)開始進行中斷響應。中斷響應:硬件自動生成長調(diào)用指令為LCALL addr16,而addr16就是各中斷源的中斷矢量地址,如下表所示。中斷源 中斷矢量地址 外部中斷0(INT0) 0003H定時器/計數(shù)器0(T0)000BH外部中斷1(INT1) 0013H定時器/計數(shù)器1(T1) 001BH串行口(RI、TI) 0023H定時器/計數(shù)器2 002BH中斷響應是有條件的,在接受中斷申請時,如遇下列情況之一時,硬件生成的長調(diào)用指令“LCALL”將被封鎖: CPU正在執(zhí)行同級或高一級的中斷服務程序中。因為當一個中斷被響應時,其對應的中斷優(yōu)先級觸發(fā)器被置“1”,封鎖了同級和低級中斷; 查詢中斷請求的機器周期不是執(zhí)行當前指令的最后一個周期。 當前正在執(zhí)行RETI指令或執(zhí)行對IE、IP的讀寫操作指令。80C51中斷系統(tǒng)的特性規(guī)定,在執(zhí)行完這些指令之后,必須再繼續(xù)執(zhí)行一條指令,然后才能響應中斷。5.中斷向量80C51矢量中斷:當CPU響應中斷時,由硬件直接產(chǎn)生一個固定的地址,即矢量地址,由矢量地址指出每個中斷源設備的中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論