ARM7內(nèi)核的中斷屏蔽方法
引言
CPU在執(zhí)行程序的過程中,由于外部的某種原因,有必要盡快地中止當前程序的執(zhí)行,而去執(zhí)行相應的處理程序,待處理結(jié)束后再回來繼續(xù)執(zhí)行被中止了的原程序,這種情況稱為“中斷”。從事嵌入式開發(fā)的工程師對中斷的概念都很熟悉,在x86系列CPU體系中,軟件設計人員會調(diào)用enable()函數(shù)和disable()函數(shù)來允許或屏蔽中斷。enable()和disable()是兩個庫函數(shù),函數(shù)disable()的作用是屏蔽中斷,它唯一允許執(zhí)行的中斷是NMI(不可屏蔽中斷);函數(shù)enable()的作用與函數(shù)disable()相反,是將被屏蔽的中斷打開,允許中斷。這兩個函數(shù)的原型都是在頭文件DOS.H中定義的,DOS.H定義的都是一些DOS接口函數(shù)。DOS的全稱為“Disk Operating System”,即“磁盤操作系統(tǒng)”,是一種在x86系列的微型計算機上運行的操作系統(tǒng)。
x86和ARM是兩種不同體系的微處理器,ARM不支持DOS接口函數(shù),在ARM公司提供的集成開發(fā)環(huán)境ADS1.2的頭文件中沒有DOS.H文件,DO-S.H中定義的所有函數(shù)在ARM的編譯器中都不支持,所以需要重新設計兩個函數(shù)替代上述函數(shù),以實現(xiàn)相同的功能。
1 ARM7處理器簡介
ARM是Advanced RISC Machines的縮寫,ARM公司開發(fā)了很多系列的ARM處理器內(nèi)核,ARM7處理器就是其中的一個系列,其中包括ARM7TD-MI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴充了Jazelle的ARM7EJ-S。該系列處理器提供Thumb 16位壓縮指令集和Embeded-ICE軟件調(diào)試方式,多應用于多媒體和嵌入式設備,包括Internet設備、移動電話、PDA等。
2 ARM7中斷工作模式
ARM7處理器具有2個中斷輸入,分別為IRQ中斷和FIQ中斷,如圖1所示。其對應的中斷操作模式為向量中斷IRQ模式(用于通用中斷處理)和快速中斷FIQ模式(支持數(shù)據(jù)傳輸或通道處理)。
向量中斷請求(IRQ)是一個由nIRQ輸入端的低電平所產(chǎn)生的正常中斷。IRQ的優(yōu)先級低于FIQ,對于FIQ序列它是被屏蔽的。任何時候在一個特權模式下,都可通過置位當前程序狀態(tài)寄存器(CPSR)中的I位來禁止IRQ。
快速中斷請求(FIQ)支持數(shù)據(jù)轉(zhuǎn)移或通道處理,在ARM狀態(tài)中,F(xiàn)IQ模式有8個專用的寄存器可用來滿足寄存器保護的需要,這是上下文切換的最小開銷。將nFIQ信號拉低可實現(xiàn)外部產(chǎn)生FIQ。在一個特權模式中,可通過置位當前程序狀態(tài)寄存器(CPSR)中的F標志來禁止FIQ異常。當F標志清零時,ARM7處理器在每條指令結(jié)束時檢測FIQ同步器輸出端的低電平。
3 ARM7中斷屏蔽程序?qū)崿F(xiàn)
ARM7內(nèi)核包含1個當前程序狀態(tài)寄存器(CPSR),該寄存器中包含條件代碼標志位、控制中斷的使能和禁止位,以及設置處理器操作模式位。當前程序狀態(tài)寄存器如圖2所示。
評論