新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM內(nèi)核的中斷技術(shù)

ARM內(nèi)核的中斷技術(shù)

作者: 時(shí)間:2012-09-26 來源:網(wǎng)絡(luò) 收藏

1 ARM7TDMI簡介
ARM7TDMI是一款經(jīng)典的通用32位微處理器,采用精簡指令系統(tǒng)(RISC)和流水線結(jié)構(gòu)。典型應(yīng)用如GPS、PDA、雙向?qū)ず魴C(jī)、移動電話、板卡間高速通信等。
ARM7TDMI定義有7種工作模式,本文涉及到的有:用戶模式,程序正常運(yùn)行時(shí)的模式;快中斷模式,處理器響應(yīng)快中斷而進(jìn)入的模式;中斷模式,處理響應(yīng)常規(guī)中斷而進(jìn)入的模式;監(jiān)督模式,操作系統(tǒng)的保護(hù)模式。處理器響應(yīng)軟件中斷時(shí)即進(jìn)入監(jiān)督模式。下面重點(diǎn)介紹ARM7TDMI的中斷特性。主要特性如表1所列。

ARM7TDMI具有常規(guī)中斷(IRQ)、快中斷(FIQ)和軟件中斷(SoftWareInterrupt)三種中方式。常規(guī)中斷和快中斷都是硬件中斷。
快中斷是為支持?jǐn)?shù)據(jù)傳輸或快速數(shù)據(jù)通道而設(shè)計(jì)的,為快速處理快中斷。①快中斷被設(shè)為最高中斷優(yōu)先級;②在快中斷模式增設(shè)了7個(gè)私有工作寄存器,從而避免了由于主工作寄存器數(shù)據(jù)的保存和恢復(fù)而帶來了額外開銷;③快中斷處理程序處于異常向量表的最后位置,因此可緊接異常向量表書寫快中斷處理程序,而不必進(jìn)行程序跳轉(zhuǎn)操作,避免了刷新指令流水線和高速緩存。
軟件中斷是一種由用戶設(shè)置的同步中斷,由程序指令產(chǎn)生,不像硬件中斷那樣由外部事件觸發(fā)。軟件中斷允許運(yùn)行在用戶模式的程序進(jìn)入監(jiān)督模式,并運(yùn)行監(jiān)督態(tài)下的函數(shù)。在ARM7TDMI的硬件調(diào)試系統(tǒng)中,應(yīng)用程序可利用軟件中斷來申請半自主(semihosting)式操作,例如,打開主機(jī)中的一個(gè)文件、向調(diào)試通道發(fā)送一個(gè)字符等等(這些操作必須依賴主機(jī)中C程序庫才能運(yùn)行,因此被稱為半自主式的)。利用軟件中斷機(jī)制,可以直觀和高效地仿真調(diào)試應(yīng)用程序。另外,軟件中斷也可用于一般性的程序控制。
2 響應(yīng)中斷和中斷返回
(1)當(dāng)中斷產(chǎn)生時(shí),ARM7TDMI將執(zhí)行的操作
①把當(dāng)前程序狀態(tài)寄存器(CPSR)的內(nèi)容拷貝到相應(yīng)的備份程序狀態(tài)寄存器(SPSR)。當(dāng)前工作模式、中斷屏蔽位和狀態(tài)標(biāo)志被保存下來。
②轉(zhuǎn)入相應(yīng)的模式,并關(guān)閉常規(guī)中斷。如響應(yīng)快中斷,則同時(shí)關(guān)閉快中斷。
③把程序計(jì)數(shù)器(pc)的值減4后,存入相應(yīng)的連接寄存器(1r)。
④將程序計(jì)數(shù)器指向相應(yīng)的中斷向量。
(2)由中斷返回時(shí),ARM7TDMI將完成的操作
①將備份程序狀態(tài)寄存器的內(nèi)容拷貝到當(dāng)前程序狀態(tài)寄存器,恢復(fù)中斷前的狀態(tài)。
②清除相應(yīng)禁止中斷位(如果已設(shè)置的話)。
③把連接寄存器的值拷貝到程序計(jì)數(shù)器,繼續(xù)運(yùn)行原程序。
(3)返回地址的計(jì)算
ARM7TDMI采用流水線結(jié)構(gòu):當(dāng)一條指令被執(zhí)行時(shí),下一條指令正被譯碼,而第三條指令被從內(nèi)存中取出。當(dāng)程序計(jì)數(shù)器未更新的,pc指向從內(nèi)存中取出的指令,(pc-4)指向當(dāng)前指令的一條指令。
處理器響應(yīng)軟件中斷時(shí),由于軟件中斷由指令自身產(chǎn)生,程序計(jì)數(shù)器還沒有更新,(pc-4)正好指向當(dāng)前指令的下一條指令。因此,只要在中斷處理程序最后加入MOVSpc,lr把連接寄存器的值賦給程序計(jì)數(shù)器即可。
ARM7TDMI總是在一條指令執(zhí)行完畢后,才去檢查是否有硬件中斷信號和中斷屏蔽狀態(tài)。此時(shí),程序計(jì)數(shù)器已經(jīng)更新,(pc-4)指向當(dāng)前指令的下兩條指令。因此要先把連接寄存器的內(nèi)容減去4(指向pc-8)后,再賦給程序計(jì)數(shù)器。要添加的代碼是SUBSpc,lr #4


上一頁 1 2 下一頁

關(guān)鍵詞: ARM內(nèi)核 中斷技術(shù)

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉