ARM內(nèi)核的中斷技術(shù)_第1頁
ARM內(nèi)核的中斷技術(shù)_第2頁
ARM內(nèi)核的中斷技術(shù)_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、ARM內(nèi)核的中斷技術(shù)        摘要:以ARM7TDMI處理器為例,詳細(xì)介紹ARM內(nèi)核的三種中斷:常規(guī)中斷、快中斷和軟件中斷;結(jié)合應(yīng)用,給出優(yōu)化的中斷處理程序的ARM指令代碼,對(duì)電子設(shè)計(jì)人員有效大的參考價(jià)值。    關(guān)鍵詞:ARM 中斷 快速 精簡(jiǎn)指令系統(tǒng)1 ARM7TDMI簡(jiǎn)介ARM7TDMI是一款經(jīng)典的通用32位微處理器,采用精簡(jiǎn)指令系統(tǒng)(RISC)和流水線結(jié)構(gòu)。典型應(yīng)用如GPS、PDA、雙向?qū)ず魴C(jī)、移動(dòng)電話、板卡間高速通信等。ARM7TDMI定義有7種工作模式,本文涉及到的有:用戶模式

2、,程序正常運(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所列。表1 中斷特性表向量地址中斷類型工作模式優(yōu)先級(jí)返回地址0x8軟件中斷SWI模式6pc-40x18常規(guī)則中斷IRQ模式4pc-80x1C快中斷FIQ模式3pc-8ARM7TDMI具有常規(guī)中斷(IRQ)、快中斷(FIQ)和軟件中斷(SoftWare Interrupt)三種中方式。常規(guī)中斷和快中斷都是硬件中斷。快中斷是為支持?jǐn)?shù)據(jù)傳輸或快速數(shù)據(jù)通道而設(shè)計(jì)的,為快速處理快中

3、斷??熘袛啾辉O(shè)為最高中斷優(yōu)先級(jí);在快中斷模式增設(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)用程序可利用軟件中斷來申請(qǐng)半自主(semihosting)式操作,例如,打開主機(jī)中的一個(gè)文件、向調(diào)試通道發(fā)送一個(gè)字符等等(這些操作必須依賴主機(jī)中

4、C程序庫(kù)才能運(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ù)中斷前

5、的狀態(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)前指令的下一條指令。因此,只要在中斷處理程序最后加入MOVS pc,lr把連接寄存器的值賦給程序計(jì)數(shù)器即可。ARM7TDMI總是在一條指令執(zhí)行完畢后,才去檢查是否有硬件中斷信號(hào)和中斷屏蔽狀態(tài)。此時(shí),程序計(jì)

6、數(shù)器已經(jīng)更新,(pc-4)指向當(dāng)前指令的下兩條指令。因此要先把連接寄存器的內(nèi)容減去4(指向pc-8)后,再賦給程序計(jì)數(shù)器。要添加的代碼是SUBS pc,lr #43 中斷處理程序的編寫(1)軟件中斷處理程序的編寫軟件中斷指令的格式如圖1所示。低24位立即數(shù)為軟件中斷號(hào)。在中斷處理程序中,必須首先得到軟件中斷號(hào),然后根據(jù)中斷號(hào)執(zhí)行不同代碼。以下的中斷處理程序,在軟件中斷號(hào)為1時(shí),將端口A的0號(hào)引腳置“1”。    STMFD sp!,r0-r12,lr /保存各工作寄存器LDR r0,lr,#-4 /得到該軟件中斷指令BIC r0,r0,#0xff000000 /從

7、中取出中斷號(hào)ADR r2,SWIJumpTable /r2指向代碼入口表LDR pc,r2,r0,LSL #2 /把r0中的值乘4后加到r2。將/程序計(jì)數(shù)器指向中斷號(hào)對(duì)應(yīng)的代碼入口地址SWIJumpTable /代碼入口表DCD SWInum0DCD SWInum1SWInum0 /中斷號(hào)為0時(shí)的處理代碼(略)SWInum1 /中斷號(hào)為1時(shí)的處理代碼MOV r0,#0x80000000 /r0指向端口ASTRB r0,#0x01 /A口0腳置“1”B EndofSWI /跳轉(zhuǎn)EndofSWILDMFD sp! r0-r12,pc /恢復(fù)各寄存器,返回原程序(2)常規(guī)中斷處理程序的編寫為快速執(zhí)行

8、,常規(guī)中斷處理程序一般用匯編指令編寫。在編寫可重入常規(guī)中斷處理程序(運(yùn)行時(shí)仍可響應(yīng)常規(guī)中斷)時(shí),必須先把鏈接寄存器和程序用到的工作寄存器入棧,然后才能開放中斷;各寄存器出棧前,必須先關(guān)閉中斷。這樣可防止因寄存器崩潰而無法返回的情況發(fā)生。下文介紹了一個(gè)與中控制器相配置的可重入的常規(guī)中斷處理程序。當(dāng)若干中斷源同時(shí)有效時(shí),中斷控制器(基址為IntBase)把16個(gè)中斷源中優(yōu)先級(jí)最高的一個(gè)存入中斷寄存器(偏移地址為IntLevel)中,并發(fā)出硬件中斷信號(hào)。SUB lr,lr,#4 /得至并保存返回地址STMFD sp!,lrMRS r14,SPSR /把SPSR和sl2入棧STMFD sp!,r12,

9、r14MOV r12,#IntBaseLDR r12,r12,#IntLevel /將最高優(yōu)先級(jí)號(hào)存入r12MRS r14,CPSR. /開中斷BIC r14,r14,#0x80MSR CPSR_c,r14LDR PC,PC,r12,LSL #2 /將pc指向該優(yōu)先級(jí)號(hào)對(duì)應(yīng)的處理代碼入口NOP /補(bǔ)位DCD Priority0Handler /代碼入口表DCD Priority 1 HandlerDCD Priority 2 HandlerPriority0Handler /0優(yōu)先級(jí)中斷處理代碼STMFD sp!,r0-r11 /保存工作寄存器(略) /具體代碼LDMFD sp!,r0-r11 /恢復(fù)工作寄存器MRS r12,CPSR /關(guān)中斷ORR r12,r12,#0x80MSR CPSR_c,r12LDMFD sp!,r12,r14 /恢復(fù)r12MSR SPSR_csxf,r14 /恢復(fù)備用程序狀態(tài)寄存器(SPSR)LDMFD sp!,pc /返回原程序Priority 1 H

溫馨提示

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