音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

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

出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-03 12:10:40

  1 ARM7TDMI

    談及ARM7TDMI就有必要先了解一下有關(guān)于它的其它知識(shí):

    ARM(Advanced RISC Machines)是微處理器行業(yè)的一家企業(yè),設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC處理器、相關(guān)技術(shù)及軟件。技術(shù)具有性能高、成本低和能耗省的特點(diǎn)。適用于多種領(lǐng)域,比如嵌入控制、消費(fèi)/教育類多媒體、DSP和移動(dòng)式應(yīng)用等。

    ARM公司是蘋果、Acorn、VLSI、Technology等公司的合資企業(yè)。ARM將其技術(shù)授權(quán)給世界上許多的半導(dǎo)體、軟件和OEM廠商,每個(gè)廠商得到的ARM公司(6張)都是一套的ARM相關(guān)技術(shù)及服務(wù)。利用這種合伙關(guān)系,ARM很快成為許多性RISC標(biāo)準(zhǔn)的。

    目前,采用 ARM技術(shù)知識(shí)產(chǎn)權(quán)( IP )核的微處理器,即我們通常所說(shuō)的 ARM 微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無(wú)線系統(tǒng)等各類產(chǎn)品市場(chǎng),基于 ARM 技術(shù)的微處理器應(yīng)用約占據(jù)了 32 位 RISC 微處理器 75 %以上的市場(chǎng)份額, ARM 技術(shù)正在逐步滲入到我們生活的各個(gè)方面。

    ARM7系列處理器是英國(guó)ARM公司設(shè)計(jì)的主流嵌入式處理器,內(nèi)核是0.9MIPS/MHz的三級(jí)流水線和馮·諾伊曼結(jié)構(gòu);ARM7TDMI是一款經(jīng)典的通用32位微處理器,采用精簡(jiǎn)指令系統(tǒng)(RISC)和流水線結(jié)構(gòu)。典型應(yīng)用如GPS、PDA、雙向?qū)ず魴C(jī)、移動(dòng)電話、板卡間高速通信等。

  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所列。

  表1 中斷特性表

向量地址 中斷類型 工作模式 優(yōu)先級(jí) 返回地址
0x8 軟件中斷 SWI模式 6 pc-4
0x18 常規(guī)則中斷 IRQ模式 4 pc-8
0x1C 快中斷 FIQ模式 3 pc-8

  ARM7TDMI具有常規(guī)中斷(IRQ)、快中斷(FIQ)和軟件中斷(SoftWare Interrupt)三種中方式。常規(guī)中斷和快中斷都是硬件中斷。

    快中斷

  快中斷是為支持?jǐn)?shù)據(jù)傳輸或快速數(shù)據(jù)通道而設(shè)計(jì)的,為快速處理快中斷。

    ①快中斷被設(shè)為中斷優(yōu)先級(jí);

    ②在快中斷模式增設(shè)了7個(gè)私有工作寄存器,從而避免了由于主工作寄存器數(shù)據(jù)的保存和恢復(fù)而帶來(lái)了額外開銷;

    ③快中斷處理程序處于異常向量表的位置,因此可緊接異常向量表書寫快中斷處理程序,而不必進(jìn)行程序跳轉(zhuǎn)操作,避免了刷新指令流水線和高速緩存。

    軟件中斷 

   編程異常通常叫做軟中斷,軟中斷是通訊進(jìn)程之間用來(lái)模擬硬中斷的 一種信號(hào)通訊方式,中斷源發(fā)中斷請(qǐng)求或軟中斷信號(hào)后,CPU或接收進(jìn)程在適當(dāng)?shù)臅r(shí)機(jī)自動(dòng)進(jìn)行中斷處理或完成軟中斷信號(hào)對(duì)應(yīng)的功能,軟中斷是軟件實(shí)現(xiàn)的中斷,也就是程序運(yùn)行時(shí)其他程序?qū)λ闹袛?;而硬中斷是硬件?shí)現(xiàn)的中斷,是程序運(yùn)行時(shí)設(shè)備對(duì)它的中斷。

  ①軟中斷發(fā)生的時(shí)間是由程序控制的,而硬中斷發(fā)生的時(shí)間是隨機(jī)的

 ?、谲浿袛嗍怯沙绦蛘{(diào)用發(fā)生的,而硬中斷是由外設(shè)引發(fā)的

 ?、塾布袛嗵幚沓绦蛞_保它能快速地完成它的任務(wù),這樣程序執(zhí)行時(shí)才不會(huì)等待較長(zhǎng)時(shí)間

  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)志被保存下來(lái)。

 ?、谵D(zhuǎn)入相應(yīng)的模式,并關(guān)閉常規(guī)中斷。如響應(yīng)快中斷,則同時(shí)關(guān)閉快中斷。

  ③把程序計(jì)數(shù)器(pc)的值減4后,存入相應(yīng)的連接寄存器(1r)。

 ?、軐⒊绦蛴?jì)數(shù)器指向相應(yīng)的中斷向量。

 ?。?)由中斷返回時(shí),ARM7TDMI將完成的操作

  ①將備份程序狀態(tài)寄存器的內(nèi)容拷貝到當(dāng)前程序狀態(tài)寄存器,恢復(fù)中斷前的狀態(tài)。

 ?、谇宄鄳?yīng)禁止中斷位(如果已設(shè)置的話)。

 ?、郯堰B接寄存器的值拷貝到程序計(jì)數(shù)器,繼續(xù)運(yùn)行原程序。

 ?。?)返回地址的計(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ì)數(shù)器已經(jīng)更新,(pc-4)指向當(dāng)前指令的下兩條指令。因此要先把連接寄存器的內(nèi)容減去4(指向pc-8)后,再賦給程序計(jì)數(shù)器。要添加的代碼是SUBS pc,lr #4

  3 中斷處理程序的編寫

 ?。?)軟件中斷處理程序的編寫

  軟件中斷指令的格式如圖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 //從中取出中斷號(hào)

  ADR r2,SWIJumpTable //r2指向代碼入口表

  LDR pc,[r2,r0,LSL #2] //把r0中的值乘4后加到r2。將//程序計(jì)數(shù)器指向中斷號(hào)對(duì)應(yīng)的代碼入口地址

  SWIJumpTable //代碼入口表

  DCD SWInum0

  DCD SWInum1

  ……

  SWInum0 //中斷號(hào)為0時(shí)的處理代碼(略)

  SWInum1 //中斷號(hào)為1時(shí)的處理代碼

  MOV r0,#0x80000000 //r0指向端口A

  STRB r0,#0x01 //A口0腳置“1”

  B EndofSWI //跳轉(zhuǎn)

  EndofSWI

  LDMFD sp! {r0-r12,pc} //恢復(fù)各寄存器,返回原程序

 ?。?)常規(guī)中斷處理程序的編寫

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

  SUB lr,lr,#4 //得至并保存返回地址

  STMFD sp!,{lr}

  MRS r14,SPSR //把SPSR和sl2入棧

  STMFD sp!,{r12,r14}

  MOV r12,#IntBase

  LDR r12,[r12,#IntLevel] //將優(yōu)先級(jí)號(hào)存入r12

  MRS r14,CPSR. //開中斷

  BIC r14,r14,#0x80

  MSR CPSR_c,r14

  LDR PC,[PC,r12,LSL #2] //將pc指向該優(yōu)先級(jí)號(hào)對(duì)應(yīng)的處理代碼入口

  NOP //補(bǔ)位

  DCD Priority0Handler //代碼入口表

  DCD Priority 1 Handler

  DCD Priority 2 Handler

  ……

  Priority0Handler //0優(yōu)先級(jí)中斷處理代碼

  STMFD sp!,{r0-r11} //保存工作寄存器

  ……(略) //具體代碼

  LDMFD sp!,{r0-r11} //恢復(fù)工作寄存器

  MRS r12,CPSR //關(guān)中斷

  ORR r12,r12,#0x80

  MSR CPSR_c,r12

  LDMFD sp!,{r12,r14} //恢復(fù)r12

  MSR SPSR_csxf,r14 //恢復(fù)備用程序狀態(tài)寄存器(SPSR)

  LDMFD sp!,{pc}^ //返回原程序

  Priority 1 Handler //優(yōu)先級(jí)中斷處理代碼(略)

 ?。?)快中斷處理程序的編寫

  為保證高速處理,快中斷處理程序必須要用匯編語(yǔ)言編寫,而且必須是非重入的。一般快中斷處理程序主要是些數(shù)據(jù)存取指令,就不具體介紹了。

  結(jié)束語(yǔ)

  中斷技術(shù)是處理器和系統(tǒng)芯片開發(fā)的重要技術(shù)??焖?、高效的中斷處理程序是實(shí)時(shí)多任務(wù)系統(tǒng)設(shè)計(jì)成功的關(guān)鍵。


  
關(guān)鍵詞:ARM

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見,您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!