ARM微處理器編程模型_第1頁(yè)
ARM微處理器編程模型_第2頁(yè)
ARM微處理器編程模型_第3頁(yè)
ARM微處理器編程模型_第4頁(yè)
ARM微處理器編程模型_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

7.1ARM體系結(jié)構(gòu)ARM概述ARM(AdvancedRISCMachines,1991Cambridge),所設(shè)計(jì)的基于RISC技術(shù)IP內(nèi)核已成為絕大部分嵌入式系統(tǒng)核心工業(yè)控制領(lǐng)域過(guò)程控制、電力控制、數(shù)控機(jī)床、ABS無(wú)線(xiàn)通訊領(lǐng)域

基站、帶藍(lán)牙/定位等的手機(jī)/PDA、GPS網(wǎng)絡(luò)應(yīng)用

ADSL、路由器、交換機(jī)、VoIP消費(fèi)類(lèi)電子產(chǎn)品

DVD、機(jī)頂盒、游戲機(jī)成像產(chǎn)品

數(shù)碼相機(jī)、打印機(jī)、錄像機(jī)安全產(chǎn)品

ATM機(jī)、POS機(jī)、考勤系統(tǒng)、SIM卡全球處理器75%以上的市場(chǎng)份額;到目前為止,基于A(yíng)RM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微80%的GSM/3G手機(jī)、99%的CDMA手機(jī)以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系的嵌入式處理器,“掌上計(jì)算”相關(guān)的所有領(lǐng)域皆為其所主宰;RISC的簡(jiǎn)單結(jié)構(gòu)簡(jiǎn)化ARM內(nèi)核,在保證高性能的前提下盡量縮小芯片的面積,并降低功耗:采用固定長(zhǎng)度的指令格式,指令歸整、簡(jiǎn)單、基本尋址方式有2~3種。使用單周期指令,便于流水線(xiàn)操作執(zhí)行。大量使用寄存器,數(shù)據(jù)處理指令只對(duì)寄存器進(jìn)行操作,只有加載/存儲(chǔ)指令可以訪(fǎng)問(wèn)存儲(chǔ)器,以提高指令的執(zhí)行效率。所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率。用加載/存儲(chǔ)指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率??稍谝粭l數(shù)據(jù)處理指令中同時(shí)完成邏輯處理和移位處理。在循環(huán)處理中使用地址的自動(dòng)增減來(lái)提高運(yùn)行效率。

ARM體系特點(diǎn)

ARM處理器系列ARM7ARM9ARM10ARM11流水線(xiàn)3568典型頻率MHz80150260335功耗mW/MHz0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS/MHz0.971.11.31.2架構(gòu)馮

諾伊曼哈佛哈佛哈佛取指(Fetch)譯碼(Decode)執(zhí)行(Exec)取指(Fetch)譯碼(Decode)執(zhí)行(Exec)訪(fǎng)問(wèn)(Memory)回寫(xiě)(Write)取指(Fetch)發(fā)射(Issue)譯碼(Decode)執(zhí)行(Exec)訪(fǎng)問(wèn)(Memory)回寫(xiě)(Write)取指(Fetch)取指(Fetch)發(fā)射(Issue)譯碼(Decode)轉(zhuǎn)換(Snny)執(zhí)行(Exec)訪(fǎng)問(wèn)(Memory)回寫(xiě)(Write)ARM7ARM9ARM10ARM11指令集典型內(nèi)核應(yīng)用領(lǐng)域ARM7ARM,ThumbARM7TDMI,ARMTDMI-S,ARM720T,ARM7EJ工業(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動(dòng)電話(huà)等多種多媒體和嵌入式應(yīng)用ARM9ARM,ThumbARM920T,ARM922TARM940T無(wú)線(xiàn)設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等ARM9EARM,ThumbARM926EJ-S,ARM946E-S,ARM966E-S,ARM968EJ-S下一代無(wú)線(xiàn)設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域ARM10EDSP,ARM,ThumbARM1020E,ARM1022E,ARM1026EJ-S下一代無(wú)線(xiàn)設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、通信和信息系統(tǒng)等領(lǐng)域ARM產(chǎn)品命名規(guī)則ARM[x][y][z][T][D][M][I][E][J][F][-S]系列2帶有MMU4帶有MPU6無(wú)MMU/MPU0標(biāo)準(zhǔn)cache2減小cache6可變cacheThumb指令集JTAG調(diào)試器快速乘法器嵌入式跟蹤宏單元增強(qiáng)指令Jazzlle加速向量浮點(diǎn)單元可綜合版本ARM946E-SARM720TARM7TDMIARM7TDMI以后的ARM核,”TDMI”功能為默認(rèn)配置7.2ARM編程模型ARM兩種工作狀態(tài)

ARM狀態(tài):執(zhí)行32位(字)ARM指令集

Thumb狀態(tài):執(zhí)行16位(半字)Thumb指令集說(shuō)明1.處理器復(fù)位后處于A(yíng)RM狀態(tài);2.處理器異常處理時(shí)進(jìn)入ARM狀態(tài);3.若處理器在Thumb狀態(tài)進(jìn)入異常,則異常返回仍然自動(dòng)轉(zhuǎn)換到Thumb狀態(tài);4.狀態(tài)切換不影響工作模式及寄存器內(nèi)容。MOVR5,#0x00120005;最后bit0=1表示切換到Thumb狀態(tài)BXR5 ;轉(zhuǎn)移到0x00120005地址執(zhí)行Thumb指令A(yù)RMCPU數(shù)據(jù)通路ARMCPU控制邏輯ARMCPUARM內(nèi)核ARMCPUARM內(nèi)核ARM芯片處理器運(yùn)行模式處理器模式說(shuō)明備注用戶(hù)(usr)正常程序執(zhí)行模式不能直接切換到其它模式系統(tǒng)(sys)運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)與用戶(hù)模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式管理(svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)數(shù)據(jù)或指令預(yù)取出錯(cuò)時(shí)進(jìn)入未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式處理器模式用戶(hù)(usr)系統(tǒng)(sys)快中斷(fiq)中斷(irq)管理(svc)中止(abt)未定義(und)系統(tǒng)(sys)快中斷(fiq)中斷(irq)管理(svc)中止(abt)未定義(und)特權(quán)模式快中斷(fiq)中斷(irq)管理(svc)中止(abt)未定義(und)異常模式通過(guò)修改PSR寄存器D0~D4實(shí)現(xiàn)模式切換或通過(guò)異常切換到異常模式通過(guò)異常切換到異常模式處理器模式切換每種異常模式對(duì)應(yīng)一組寄存器供相應(yīng)的異常處理程序使用

ARM寄存器組織共37個(gè)32bit寄存器(有ARM和Thumb兩種組織方式)。寄存器的使用與處理器運(yùn)行模式有關(guān)。不分組寄存器——所有模式共用(其中每一個(gè)都指向一個(gè)物理寄存器)分組寄存器——與工作模式有關(guān)。R8_fiq~R12_fiq通用寄存器R0~R7R8~R12R13_<mode>R14_<mode>快中斷模式下其余模式下R13、R14異常模式下。根據(jù)不同模式各有5個(gè)寄存器用戶(hù)、系統(tǒng)模式下程序計(jì)數(shù)器PCR15狀態(tài)寄存器CPSRSPSR_<mode>所有模式異常模式下。作CPSR的副本寄存器用戶(hù)系統(tǒng)管理中止未定義中斷快中斷不分組寄存器R0R0R1R1R2R2R3R3R4R4R5R5R6R6R7R7分組寄存器R8R8R8_fiqR9R9R9_fiqR10R10R10_fiqR11R11R11_fiqR12R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)程序計(jì)數(shù)器R15CPSR狀態(tài)寄存器CPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針指向該模式下的堆??臻g鏈接寄存器保存子程序返回地址或異常處理返回地址R8~R14專(zhuān)用于FIQ的分組,有利于加快FIQ處理備份程序狀態(tài)寄存器用戶(hù)系統(tǒng)管理終止未定義中斷快中斷1PC指示處理器要取的下一條指令的地址。由于流水線(xiàn)機(jī)制,PC值為當(dāng)前指令地址值加8個(gè)字節(jié)。也就是說(shuō),對(duì)于A(yíng)RM指令集來(lái)說(shuō),PC指向當(dāng)前指令的下兩條指令的地址;2ARM指令是字對(duì)齊。對(duì)于A(yíng)RMV4以及更高的版本,程序必須保證寫(xiě)入R15寄存器的地址值的bits[1:0]為0b00,否則將會(huì)產(chǎn)生不可預(yù)知的結(jié)果;對(duì)于Thumb指令集(16位)來(lái)說(shuō),指令是半字對(duì)齊的。處理器將忽略bit[0]。寫(xiě)入R15的值被看作程序轉(zhuǎn)移的目標(biāo)地址。3指令BX利用bit[0]來(lái)確定是ARM指令,還是Thumb指令。這種讀取PC值和寫(xiě)入PC值的不對(duì)稱(chēng)的操作需要特別注意。關(guān)于程序計(jì)數(shù)器R15(PC)關(guān)于程序狀態(tài)寄存器CPSR反映ALU狀態(tài)標(biāo)志、當(dāng)前工作模式、中斷允許標(biāo)志;可在任何模式下被訪(fǎng)問(wèn)(指令MRS/MSR);每種異常模式有專(zhuān)用寄存器SPSR備份CPSR,便于從異常退出時(shí)恢復(fù)CPSR。NZCV……IFTM4M3M2M1M0b31b30b29b28……b7b6b5b4b3b2b1b0符號(hào)標(biāo)志:當(dāng)補(bǔ)碼運(yùn)算結(jié)果為負(fù)時(shí),N=1;否則N=0。零標(biāo)志:當(dāng)運(yùn)算結(jié)果為0時(shí),Z=1;否則Z=0。進(jìn)位標(biāo)志:加法/減法(包括比較指令CMN/CMP)有進(jìn)位/借位時(shí)C=1/0,其他情況C=0/1。對(duì)于移位操作,C=移出值的最后一位。其他非加/減運(yùn)算指令,C通常不變。溢出標(biāo)志對(duì)于帶符號(hào)數(shù)加減運(yùn)算V=1符號(hào)位溢出;V=0符號(hào)位未溢出;其他非加/減運(yùn)算指令,V通常不變符號(hào)標(biāo)志:當(dāng)補(bǔ)碼運(yùn)算結(jié)果為負(fù)時(shí),N=1;否則N=0。b31b30b29b28……b7b6b5b4b3b2b1b0NZCV……IFTM4M3M2M1M0一般指令帶S后綴時(shí),執(zhí)行結(jié)果會(huì)影響條件碼;但有一些指令的執(zhí)行總是會(huì)影響條件碼。中斷禁止標(biāo)志

I=1:禁止IRQ;F=1:禁止FIQ運(yùn)行狀態(tài)標(biāo)志T=0:運(yùn)行于A(yíng)RM狀態(tài)T=1:運(yùn)行于Thumb狀態(tài)M4~M0處理器模式10000User10111Abort10001FIQ11011Underfined10010IRQ11111System10011SupervisorThumb狀態(tài)寄存器組織R0R1R2R3R4R5R6R7SPLRPCCPSRSPSR通用寄存器堆棧指針鏈接寄存器程序計(jì)數(shù)器完全訪(fǎng)問(wèn)R13R14R15限制訪(fǎng)問(wèn)間接訪(fǎng)問(wèn)不能訪(fǎng)問(wèn)ARM狀態(tài)寄存器組織的子集無(wú)R8~R15,但可使用匯編語(yǔ)言程序有限制訪(fǎng)問(wèn)數(shù)據(jù)類(lèi)型與格式字節(jié):8位半字:16位字:32位以上類(lèi)型均支持unsigned:二進(jìn)制格式表示范圍為0~2n-1的非負(fù)整數(shù);signed:補(bǔ)碼格式表示范圍為-2n-1~+2n-1-1的整數(shù)所有數(shù)據(jù)類(lèi)指令的操作數(shù)都是“字”0x0210~0x02170x0218~0x021F0x0220~0x0227數(shù)據(jù)類(lèi)型信息按字長(zhǎng)訪(fǎng)問(wèn),在存儲(chǔ)器中按整數(shù)邊界存儲(chǔ)信息長(zhǎng)度整數(shù)邊界8位(字節(jié))x…xxxx16位(半字)x…xxx032位(單字)x…xx0064位(雙字)x…x000122334558字節(jié)123458字節(jié)ARM體系最大尋址空間4GB(232)。存儲(chǔ)器編址從0x00000000開(kāi)始,以字節(jié)為單位。支持大端格式/小端格式小端格式

高字節(jié)→高地址;低字節(jié)→低地址大端格式

高字節(jié)→低地址;低字節(jié)→高地址地址大端格式小端格式0x000000000x120x780x000000010x340x560x000000020x560x340x000000030x780x12字?jǐn)?shù)據(jù)0x12345678存放I/O地址采用存儲(chǔ)器地址映射(統(tǒng)一編址)異常(exception)程序執(zhí)行流程被短暫停止(包括正常的外部中斷Interrupt)異常種類(lèi)異常類(lèi)型對(duì)應(yīng)異常模式優(yōu)先級(jí)復(fù)位(Reset)Supervisor數(shù)據(jù)中止(DataAbort)AbortFIQFIQIRQIRQ指令預(yù)取中止(PrefetchAbort)Abort未定義指令(Undefined)Undefined軟件中斷(SWI)Supervisor高低1復(fù)位

用于系統(tǒng)上電、系統(tǒng)復(fù)位處理器復(fù)位電平有效(nRESET=0),ARM立即停止執(zhí)行當(dāng)前指令,跳轉(zhuǎn)到復(fù)位異常處理程序。操作:CPSR[4:0]=0b10011 進(jìn)入管理模式;CPSR[5]=0 處理器進(jìn)入ARM狀態(tài)CPSR[6]=1 禁止FIQ、IRQCPSR[7]=1PC=0x00000000 PC從地址0x00開(kāi)始取第一條指令異常2未定義指令當(dāng)ARM處理器遇到不能處理的指令時(shí),將產(chǎn)生未定義指令異常。軟件可使用這一機(jī)制通過(guò)模擬未定義的協(xié)處理器指令來(lái)擴(kuò)展ARM指令集。操作R14_und=下一條指令地址SPSR_und=CPSR ;復(fù)制CPSRCPSR[4:0]=0b11011 ;進(jìn)入未定義指令模式CPSR[5]=0 ;進(jìn)入ARM狀態(tài)CPSR[7]=1 ;禁止IRQPC=0x00000004 ;PC從地址0x04開(kāi)始取指令異常3軟中斷執(zhí)行SWI指令,進(jìn)入管理模式。操作R14_svc=SWI的下一條指令地址SPSR_svc=CPSR ;復(fù)制CPSRCPSR[4:0]=0b10011 ;進(jìn)入管理模式CPSR[5]=0 ;進(jìn)入ARM狀態(tài)CPSR[7]=1 ;禁止IRQPC=0x00000008 ;PC從地址0x08開(kāi)始取指令異常4數(shù)據(jù)中止、預(yù)取指令中止處理器試圖去取一條被標(biāo)記為預(yù)取無(wú)效的指令時(shí)發(fā)生預(yù)取中止。數(shù)據(jù)訪(fǎng)問(wèn)指令的目標(biāo)地址不存在或該地址不允許當(dāng)前指令訪(fǎng)問(wèn)時(shí)產(chǎn)生數(shù)據(jù)中止。中止異常表示對(duì)存儲(chǔ)器訪(fǎng)問(wèn)失敗。這種機(jī)制實(shí)際保證了虛擬存儲(chǔ)技術(shù)的實(shí)現(xiàn)。R14_abt=中止指令地址+8(數(shù)據(jù)中止)或R14_abt=中止指令地址+4(預(yù)取中止)SPSR_abt=CPSR ;復(fù)制CPSRCPSR[4:0]=0b10111 ;進(jìn)入中止模式CPSR[5]=0 ;進(jìn)入ARM狀態(tài)CPSR[7]=1 ;禁止IRQPC=0x00000010 ;PC指向地址0x010(數(shù)據(jù)中止)或PC=0x0000000C ;PC指向地址0x00C(預(yù)取中止)異常5外部中斷IRQ處理器外部中斷請(qǐng)求引腳有效,且CPSR寄存器的I位被清除時(shí),產(chǎn)生IRQ異常。外設(shè)通過(guò)該異常請(qǐng)求處理器服務(wù)。操作R14_irq=被執(zhí)行的下一條指令地址+4SPSR_irq=CPSR ;復(fù)制CPSRCPSR[4:0]=0b10010 ;進(jìn)入IRQ模式CPSR[5]=0 ;進(jìn)入ARM狀態(tài)CPSR[7]=1 ;禁止IRQPC=0x00000018 ;PC指向地址0x018異常6快速中斷FIQ處理器快速中斷請(qǐng)求引腳有效,且CPSR寄存器的F位被清除時(shí),產(chǎn)生FIQ異常。操作R14_frq=被執(zhí)行的下一條指令地址+4SPSR_fiq=CPSR ;復(fù)制CPSRCPSR[4:0]=0b10001 ;進(jìn)入FIQ模式CPSR[5]=0 ;進(jìn)入ARM狀態(tài)CPSR[6]=1CPSR[7]=1 ;禁止IRQ、FIQPC=0x0000001c ;PC指向地址0x01c異常

異常向量表向量地址異常類(lèi)型進(jìn)入時(shí)模式0x00000000復(fù)位管理0x00000004未定義指令未定義0x00000008軟件中斷(SWI)管理0x0000000C預(yù)取中止(指令)中止0x00000010數(shù)據(jù)中止中止0x00000014保留保留0x00000018IRQ中斷0x0000001CFIQ快中斷存儲(chǔ)器中為每個(gè)異常類(lèi)型

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論