




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章 ARM微處理器編程模型參考:1) ARM體系結(jié)構(gòu)與編程,杜春雷(chnli) 2) ARM公司官方網(wǎng)站 7.1 ARM 內(nèi)核體系結(jié)構(gòu)(了解)ARM 體系結(jié)構(gòu)版本ARM 內(nèi)核簡(jiǎn)介(jin ji)7.2 ARM 編程模型(理解)處理器工作狀態(tài)處理器運(yùn)行模式寄存器組織數(shù)據(jù)類型和儲(chǔ)存格式異常共五十三頁將技術(shù)授權(quán)給其它芯片(xn pin)廠商加入ROM、RAM和外部接口形成(xngchng)各具特色的ARM芯片 ARM(Advanced RISC Machines)公司設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC (精簡(jiǎn)指令集)處理器; ARM公司的特點(diǎn)是只設(shè)計(jì)而不生產(chǎn),也不銷售。它將技術(shù)授權(quán)給世界
2、上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。共五十三頁ARM的應(yīng)用領(lǐng)域工業(yè)控制領(lǐng)域 電力控制、數(shù)控機(jī)床、ABS無線通訊領(lǐng)域 基站、帶藍(lán)牙/定位等的手機(jī)/PDA、GPS網(wǎng)絡(luò)應(yīng)用 ADSL、路由器、交換機(jī)、VoIP消費(fèi)類電子產(chǎn)品 DVD、機(jī)頂盒、游戲機(jī)成像產(chǎn)品 數(shù)碼相機(jī)、打印機(jī)、錄像機(jī)安全產(chǎn)品 ATM機(jī)、POS機(jī)、考勤系統(tǒng)、SIM卡到目前為止,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微處理器75以上的市場(chǎng)份額;全球80%的GSM/3G手機(jī)、99%的CDMA手機(jī)以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系(tx)的嵌入式處理器,“掌上計(jì)算”相關(guān)的領(lǐng)域主要使用ARM技術(shù);3/94參考(cnko
3、)常用術(shù)語共五十三頁ARM體系結(jié)構(gòu)的特點(diǎn)(tdin)ARM體系特別技術(shù):在同一條數(shù)據(jù)處理指令(zhlng)中包含算術(shù)邏輯單元和移位處理支持Thumb(16 位)/ARM(32 位)雙指令集,能很好的兼容16 位器件使用地址自動(dòng)增加(減少)來優(yōu)化程序中的循環(huán)處理Load/Store指令可以批量傳輸數(shù)據(jù),從而提高數(shù)據(jù)傳輸?shù)男仕兄噶畹臈l件執(zhí)行實(shí)現(xiàn)最快速的代碼執(zhí)行4/94具有RISC技術(shù)特點(diǎn):具有大量的寄存器絕大多數(shù)操作都在寄存器中進(jìn)行,通過Load/Store(裝載/保存)的體系結(jié)構(gòu)在內(nèi)存和寄存器之間傳遞數(shù)據(jù)尋址方式靈活簡(jiǎn)單采用固定長(zhǎng)度的指令格式,簡(jiǎn)化了指令的譯碼,便于指令流水線設(shè)計(jì)RISC簡(jiǎn)單
4、的結(jié)構(gòu)使ARM內(nèi)核非常小、功耗低、成本低共五十三頁ARM體系結(jié)構(gòu)的版本(bnbn)ARM架構(gòu)自誕生至今已發(fā)展并定義了V1到V7七種不同的版本。V1版架構(gòu) 只在原型機(jī)ARM1中出現(xiàn)過支持基本的數(shù)據(jù)處理指令(無乘法)支持字節(jié)、半字和字的LOAD/STORE指令支持轉(zhuǎn)移指令,包括子程序調(diào)用及鏈接指令支持軟件中斷(zhngdun)指令SWI尋址空間位64MB(26位)yyyy-M-5/94共五十三頁V2版架構(gòu) 已廢棄不再使用(shyng)支持乘法和乘加指令支持協(xié)處理器操作指令支持基本的存儲(chǔ)器與寄存器交換指令SWP/SWPB支持快速中斷模式V3版架構(gòu) 已廢棄不再使用尋址范圍擴(kuò)展到4GB(32位)快速中斷
5、模式具有兩個(gè)以上的分組寄存器增加狀態(tài)寄存器CPSR/SPSR,及從異常處理返回的MSR/MRS指令,便于異常的處理增加了中止和未定義兩種處理器模式y(tǒng)yyy-M-6/94共五十三頁V4版架構(gòu) 目前應(yīng)用最廣的ARM體系結(jié)構(gòu),ARM7、ARM8、ARM9和StrongARM都采用該版架構(gòu)增加了有/無符號(hào)的半字和有符號(hào)字節(jié)的Load/Store指令增加了16位Thumb指令集完善了軟件中斷SWI指令的功能增加了處理器的特權(quán)模式V5版架構(gòu) ARM10和XScale都采用該版架構(gòu)改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率;E-增強(qiáng)DSP指令集,包括全部算法操作和16位乘法操作;J-支持(zhch)新的JA
6、VA,提供字節(jié)代碼執(zhí)行的加速功能增加了帶有鏈接和交換指令BLX增加了計(jì)數(shù)前導(dǎo)零指令CLZ增加了軟件斷點(diǎn)指令為協(xié)處理器增加更多可選擇的指令7/94共五十三頁V6版架構(gòu) ARM11處理器采用該版架構(gòu)增加了多媒體功能擴(kuò)展SIMD,提高了嵌入式應(yīng)用系統(tǒng)的音、視頻處理能力改進(jìn)了內(nèi)存管理改進(jìn)了混合端與不對(duì)齊數(shù)據(jù)支持,使得小端系統(tǒng)支持大端數(shù)據(jù)V7版架構(gòu) Cortex-A8處理器采用該版架構(gòu) 2005年發(fā)布(fb),采用Thumb-2技術(shù)。yyyy-M-8/94共五十三頁ARM處理器(核)命名(mng mng)規(guī)則x系列號(hào)(最小為7) y存儲(chǔ)管理/保護(hù)單元zCacheTThumb指令集DJTAG調(diào)試器M快速乘
7、法器I嵌入式跟蹤宏單元E增強(qiáng)(zngqing)DSP指令JJazelle技術(shù)F向量浮點(diǎn)單元S可綜合的內(nèi)核ARM7TDMI-SARM926EJ-SARM966ESARM1022E9/94ARM x y z T D M I E J F -S0:標(biāo)準(zhǔn)cache2:小cache6:可變cache2:帶MMU4:帶MPU6:無MMU和MPUMMU:Memory Management Unit, MPU:Memory Protection Unit共五十三頁ARM系列微處理器核特點(diǎn)ARM7ARM7TDMI:整數(shù)處理核ARM7TDMI 處理器的可綜合版本; ARM720T:帶MMU的處理器核心,支持操作系統(tǒng)
8、;ARM7EJ-S:帶有DSP和Jazelle TM 技術(shù),能夠?qū)崿F(xiàn)Java加速功能馮諾伊曼體系結(jié)構(gòu);ARMTDMI是目前應(yīng)用最廣的微處理器核ARM720T帶有MMU和8KB的指令數(shù)據(jù)混合cache;ARM7EJ-執(zhí)行ARMv5TEJ指令,5級(jí)流水線,提供Java加速指令,沒有存儲(chǔ)器保護(hù)。ARM9ARM920T:帶有獨(dú)立的16KB 數(shù)據(jù)和指令Cache;ARM922T:帶有獨(dú)立的8位KB 數(shù)據(jù)和指令Cache;ARM940T包括更小數(shù)據(jù)和指令Cache和一個(gè)MPU基于ARM9TDMI ,帶16位的Thumb指令集,增強(qiáng)代碼密度最多到35%;在0.13m工藝下最高性能可達(dá)到300MIPS(Dhr
9、ystone 2.1測(cè)試標(biāo)準(zhǔn));集成了數(shù)據(jù)和指令Chche;32位AMBA總線接口的MMU支持;可在0.18m、 0.15m和0.13m工藝的硅芯片上實(shí)現(xiàn)。ARM處理器(核)簡(jiǎn)介(jin ji)yyyy-M-10/94共五十三頁ARM9EARM926EJ-S:Jazelle 技術(shù),有MMU,可配置的數(shù)據(jù)和指令Cache,TCM接口;ARM946E-S:可配置的數(shù)據(jù)和指令Cache及TCM;ARM966E-S:針對(duì)要求高性能和低功耗的可預(yù)測(cè)的指令執(zhí)行時(shí)間的硬實(shí)時(shí)應(yīng)用設(shè)計(jì) ARM968E-S:最小、功耗最小的ARM9E系列處理器,針對(duì)嵌入式實(shí)時(shí)應(yīng)用設(shè)計(jì);ARM9E是針對(duì)微控制器、DSP和Java的
10、單處理器解決方案; ARMJazelle技術(shù)提供 8倍的 Java 加速性能 (ARM926EJ-S) ;5-級(jí)整數(shù)流水線; 在0.13m工藝下最高性能可達(dá)到300MIPS(Dhrystone 2.1測(cè)試標(biāo)準(zhǔn));可選擇的向量浮點(diǎn)單元VFP9 協(xié)處理器指令優(yōu)秀海浮點(diǎn)性能,對(duì)于3D圖形加速和實(shí)時(shí)控制可達(dá)到215MFLOPS。高性能的AHB總線,帶MMU可在0.18m, 0.15m, 0.13m工藝的硅芯片上實(shí)現(xiàn)。 ARM10EARM1020E:帶DSP指令集,在片調(diào)試功能,獨(dú)立的32KB數(shù)據(jù)和指令Cache,MMU支持;ARM1022E:與ARM1020E相同,只是獨(dú)立的數(shù)據(jù)和指令Cache變?yōu)?
11、6KB;ARM1026EJ-S:同時(shí)具有MPU和MMU,可綜合版本; 帶分支預(yù)測(cè)的6級(jí)整數(shù)流水線;在0.13m工藝下最高性能可達(dá)到430MIPS(Dhrystone 2.1測(cè)試標(biāo)準(zhǔn));對(duì)于3D圖形運(yùn)算和實(shí)時(shí)控制采用VFP協(xié)處理器,浮點(diǎn)運(yùn)算性能最高可達(dá)650MFLOPS;雙64位AMBA總線接口和64位內(nèi)部總路線接口;優(yōu)化的緩存結(jié)構(gòu)提高了處理器訪問低速存儲(chǔ)器的性能;可在0.18m, 0.15m, 0.13m工藝的硅芯片上實(shí)現(xiàn)共五十三頁ARM11ARM11 MPCore:可綜合的多處理器核,1至4個(gè)處理器可配置;ARM1136J(F)-S:可配置的數(shù)據(jù)和指令Cache,可提供1.9位的MPEG4編
12、碼加速功能;ARM1156T2(F)-S:帶集成浮點(diǎn)協(xié)處理器,帶內(nèi)存保護(hù)單元MPU;ARM1176JZ(F)-S:帶針對(duì)CPU和系統(tǒng)安全架構(gòu)擴(kuò)展的TrustZone技術(shù)。增強(qiáng)的Thumb、Jazelle、DSP擴(kuò)展支持; 帶片上和系統(tǒng)安全TrustZone 技術(shù)支持 ;在0.13m工藝下最高可達(dá)到550MHz;MPCore在0.13m工藝下最高性能可達(dá)到740MIPS(Dhrystone 2.1測(cè)試標(biāo)準(zhǔn));支持多媒體指令SIMD;采用三種電源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。 SecurCoreSC100:第一個(gè)32位安全處理器;、SC110:在SC100上增加密鑰協(xié)處理
13、器;SC200:帶Jazelle技術(shù)的高級(jí)安全處理器;SC210:在SC200上增加密鑰協(xié)處理器SecurCore是專門為智能卡、安全I(xiàn)C提供的32位安全處理器, 為電子商務(wù)、銀行、網(wǎng)絡(luò)、移動(dòng)多媒體、公共交通提供安全解決方案;體積小、功耗低,代碼壓縮密度高;為快速增長(zhǎng)的Java卡平臺(tái)提供Java加速功能;共五十三頁項(xiàng)目ARM7ARM9ARM10ARM11流水線3568典型頻率MHz80150260335功耗mW/MHz0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS/MHz0.971.11.31.2架構(gòu)馮諾伊曼哈佛哈佛哈佛ARM處理器(核)比較(bjio
14、)共五十三頁ARM處理器內(nèi)核流水線工作(gngzu)流程共五十三頁ARM處理器的工作(gngzu)狀態(tài)ARM狀態(tài) : 執(zhí)行32位(字方式)的ARM指令(zhlng)Thumb狀態(tài): 執(zhí)行16位(半字方式)的Thumb指令Jazelle狀態(tài): 執(zhí)行可變長(zhǎng)的、以字節(jié)為單位的Jazelle(Java)指令注意:處理器復(fù)位后處于ARM狀態(tài);處理器異常處理時(shí)進(jìn)入ARM狀態(tài)(即中斷服務(wù)子程序處于ARM狀態(tài));若處理器在Thumb狀態(tài)進(jìn)入異常,則異常返回仍然自動(dòng)轉(zhuǎn)換到Thumb狀態(tài);狀態(tài)切換不影響工作模式及寄存器內(nèi)容。yyyy-M-15/94共五十三頁ARM處理器工作(gngzu)狀態(tài)的切換 使用跳轉(zhuǎn)指令B
15、X(此處的X表示需要(xyo)進(jìn)行狀態(tài)切換)可將處理器內(nèi)核在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換。;從Arm狀態(tài)切換到Thumb狀態(tài) LDR R0,=Label+1 BX R0;從Thumb狀態(tài)切換到ARM狀態(tài) LDR R0,=Label BX R0 地址最低位為1,表示切換到Thumb狀態(tài) 地址最低位為0,表示切換到ARM狀態(tài)跳轉(zhuǎn)地址標(biāo)號(hào),最低2bit為0yyyy-M-16/94共五十三頁處理器模式說明備注 用戶(usr)正常程序執(zhí)行模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道
16、處理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ù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式ARM處理器的運(yùn)行模式(支持異常(ychng)處理) 除用戶模式(msh)外,其它模式(msh)均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。 未定義(und)
17、中止(abt) 管理(svc) 中斷(irq) 快中斷(fiq) 系統(tǒng)(sys) 這五種模式稱為異常模式。它們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。 這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問一些受控的資源。 系統(tǒng)(sys) 用戶 (usr)共五十三頁共五十三頁寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a
18、1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSP
19、SR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR
20、13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態(tài)各模式下的37個(gè)寄存器(V3版架構(gòu)(ji u)以上 )R0R7為不分組寄存器注意:在異常處理中進(jìn)行(jnxng)模式切換時(shí),可能會(huì)破壞寄存器中的數(shù)據(jù),需要保護(hù);R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R
21、10_fiqR10R9_fiqR9R8_fiqR8R8R14為分組寄存器。不同處理器模式下它們對(duì)應(yīng)不同的物理寄存器。 R8R12有一個(gè)分組專用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。R14為鏈接寄存器LR,具有兩個(gè)特殊功能:用于保存子程序返回地址;根據(jù)不同的異常模式保存為異常返回地址(有些異常有一個(gè)小的固定偏移量)。共五十三頁Label程序1程序2R14R14(LR)寄存器與子程序調(diào)用(dioyng)BL Label地址A?MOV PC,LRR14(地址(dzh)A)1. 程序1執(zhí)行過程中調(diào)用程序2;2. 程序跳轉(zhuǎn)至標(biāo)號(hào)Label,執(zhí)行程序2。3. 同時(shí)硬件將“BL L
22、abel” 的下一條指令所在地址存入R14(LR);4. 程序2執(zhí)行完后,將R14 (LR)寄存器的內(nèi)容放入PC,返回程序1繼續(xù)執(zhí)行;yyyy-M-20/94Label?共五十三頁1.異常返回地址的處理與子程序調(diào)用類似,都是由硬件自動(dòng)完成。區(qū)別在于有些異常有一個(gè)小常量(chngling)偏移。2.當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突。如用戶模式下發(fā)生IRQ中斷嵌套時(shí),R14_irq中低級(jí)中斷返回主程序的地址將被高級(jí)中斷的返回地址所覆蓋;R14(LR)寄存器與異常(ychng)處理R14R14_irq用戶模式下的程序0IRQ模式下的程序1指令m+1.指令m+n指令m地址A地址A未被破壞I
23、RQ模式下的程序2return指令j+1.指令j+k指令j地址B地址BR14_irq 被破壞returnreturn1.執(zhí)行用戶模式下的程序0;2.發(fā)生IRQ中斷后,硬件將帶偏移的返回地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3. IRQ服務(wù)程序1執(zhí)行完后,可將R14_irq寄存器的內(nèi)容減去偏移量后存入PC,返回之前被中斷的程序;4. 如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;5. 硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址信息將被覆蓋,造成錯(cuò)誤;6. 在程序2返回到程序1,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,
24、將不能正確返回;解決辦法是確保R14的對(duì)應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將R14保存到堆棧)yyyy-M-21/94共五十三頁R15(PC)寄存器的讀操作(cozu)ARM指令以字為單位,因此R15的最低兩位總是為0;R15的值是處理器正在(zhngzi)取指的指令地址。因?yàn)橛辛魉€,它與當(dāng)前正在執(zhí)行指令的地址之間存在一個(gè)偏移(對(duì)于確定的ARM芯片該值為常量)。當(dāng)使用指令STR/STM保存R15時(shí),不同芯片中(可能是三級(jí)流水的ARM7或五級(jí)流水的ARM9)PC偏移量可能是8或12,因此需事先計(jì)算出該芯片的PC偏移量。MOV R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指
25、流水線、ARM狀態(tài)下指令地址程序代碼共五十三頁寫入R15 的值被當(dāng)作指令地址,程序?qū)倪@個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行無條件跳轉(zhuǎn));由于ARM指令以字為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在V3及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)(mbio)地址(寫入R15的值)和0 xFFFFFFFC相與得到;在V4及以上版本中,寫入R15的值的最低兩位如果不為0,結(jié)果將不可預(yù)測(cè)。R15(PC)寄存器的寫操作(cozu)yyyy-M-23/94共五十三頁NZCVIM0M1M2M3M4TF. . .31 30 29 28 27 2
26、6 8 7 6 5 4 3 2 1 0程序(chngx)狀態(tài)寄存器PSR條件代碼(di m)標(biāo)志保留控制位溢出oVerflow進(jìn)/借位擴(kuò)展 Carry零 Zero負(fù)Negative禁止IRQ禁止 FIQThumb狀態(tài)模式 ( Mode)NZCVIM0M1M2M3M4TF一般指令帶S后綴時(shí),執(zhí)行結(jié)果會(huì)影響條件代碼標(biāo)志;但有一些指令的執(zhí)行總是會(huì)影響條件代碼標(biāo)志。所有ARM指令都可由條件域來指定是否需要執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。每個(gè)異常模式還有SPSR用于保存在異常發(fā)生之前的CPSR。CPSR和SPSR可通過特殊指令(MRS/MSR)進(jìn)行訪問。24/94共五十三頁CPSR中的
27、條件(tiojin)標(biāo)志位共五十三頁如何判定(pndng)溢出如果加法的最高位(o wi)和次高位(o wi)進(jìn)位一致則沒有溢出,如果不一致則溢出舉例說明四種條件代碼標(biāo)志的變化情況。共五十三頁M4:0模式可見的Thumb狀態(tài)寄存器可見的ARM狀態(tài)寄存器10000用戶R0R7,SP,LR,PC,CPSRR0R14,PC, CPSR 10001快中斷R0R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq R0R7,R8_fiqR14_fiq,PC,CPSR, SPSR_fiq 10010中斷R0R7,SP_irq,LR_irq,PC,CPSR, SPSR_fiq R0R12,R13
28、_irq,R14_irq,PC,CPSR, SPSR_irq 10011管理R0R7,SP_svc,LR_svc,PC,CPSR, SPSR_svc R0R12,R13_svc,R14_svc,PC,CPSR, SPSR_svc 10111中止R0R7,SP_abt,LR_abt,PC,CPSR, SPSR_abt R0R12,R13_abt,R14_abt,PC,CPSR, SPSR_abt 11011未定義R0R7,SP_und,LR_und,PC,CPSR, SPSR_und R0R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系統(tǒng)R0R7,SP,LR,
29、PC,CPSR R0R14,PC, CPSR 程序狀態(tài)寄存器CPSR模式(msh)位設(shè)置表yyyy-M-27/94共五十三頁Thumb狀態(tài)(zhungti)與ARM狀態(tài)的寄存器映射關(guān)系 R8 R9 R10 R11 R12 堆棧指針(R13) 連接寄存器(R14) 程序計(jì)數(shù)器(R15) 低寄存器高寄存器 Thumb狀態(tài)(zhungti)下高寄存器(R8R15)不是標(biāo)準(zhǔn)寄存器集的一部分,但可以使用MOV、CMP和ADD指令對(duì)高寄存器操作。共五十三頁ARM體系(tx)中存儲(chǔ)空間ARM體系使用單一的平板地址空間。該地址空間的大小為232個(gè)8位的字節(jié)單元,器其范圍為0到232 - 1ARM地址空間也可以
30、看作230個(gè)32位的字單元,這些字單元的地址可以被4整除,也就是說該地址的低兩位為00(即地址線的A0=0,A1=0)。地址為A的字?jǐn)?shù)據(jù)包括地址為A、A+1、A+2、A+3這4個(gè)字節(jié)單元的內(nèi)容ARMv4及以上(yshng)版本,ARM地址空間也可以看作231個(gè)16位的半個(gè)單元,這些字單元的地址可以被2整除,也就是說該地址的最低位為0 (即地址線的A0=0) 。地址為A的字?jǐn)?shù)據(jù)包括地址為A、A+1這2個(gè)字節(jié)單元的內(nèi)容各存儲(chǔ)單元的地址為32位無符號(hào)數(shù),可以進(jìn)行常規(guī)的整數(shù)運(yùn)算。這些運(yùn)算結(jié)果進(jìn)行232 取模。即發(fā)生溢出時(shí),地址發(fā)生卷繞共五十三頁ARM支持(zhch)的數(shù)據(jù)類型字節(jié):8位半字:16位(必
31、須分配為占用2個(gè)字節(jié))字: 32位(必須分配為占用4個(gè)字節(jié))注意數(shù)據(jù)存儲(chǔ)的對(duì)齊問題:1)半字存儲(chǔ)單元地址最低位為0 2)字存儲(chǔ)單元地址最低兩位為0N位無符號(hào)數(shù): 二進(jìn)制格式表示范圍為0 2N-1的非負(fù)整數(shù);N位有符號(hào)數(shù)時(shí),N位數(shù)據(jù)值使用(shyng)2的補(bǔ)碼格式表示范圍為-2N-1 +2N-1-1的整數(shù)1112342yyyy-M-30/94共五十三頁數(shù)據(jù)存儲(chǔ)(cn ch)格式ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))ARM體系結(jié)構(gòu)將存儲(chǔ)器看成是以字節(jié)為單位的線性組合,存儲(chǔ)單元地址(dzh)從0 x00000000開始編址(復(fù)位后從地址執(zhí)行指令)ARM可按大端格式和小端格式兩種方式
32、存儲(chǔ)字?jǐn)?shù)據(jù) 地址偏移小端格式 0 x00000003 0 x12 0 x00000002 0 x34 0 x00000001 0 x56 0 x00000000 0 x78 地址偏移大端格式 0 x00000003 0 x78 0 x00000002 0 x56 0 x00000001 0 x34 0 x00000000 0 x12字?jǐn)?shù)據(jù)0 x12345678在內(nèi)存中的格式一個(gè)基于ARM內(nèi)核的芯片可以只支持大端模式或小端模式,也可以兩者都支持(小端模式是ARM處理器的默認(rèn)形式),ARM芯片通過設(shè)置寄存器CP15的C1的位7動(dòng)態(tài)配置。在ARM指令集中不包含任何直接選擇大小端的指令。31/94共五
33、十三頁開發(fā)工具中的內(nèi)存(ni cn)顯示格式字?jǐn)?shù)據(jù)0 x12345678在內(nèi)存(ni cn)中的格式32/94地址0 x000000000 x000000010 x000000020 x00000003小端格式0 x780 x560 x340 x12大端格式0 x120 x340 x560 x78共五十三頁大/小端形式(xngsh)的決定方式小端與INTEL兼容, 大端與MOTOROLA的CPU兼容 ARM CPU與用戶程序采用大/小端形式(xngsh)的方式要匹配用戶編寫的匯編程序中采用大/小端形式由編譯器的設(shè)置決定ARM CPU采用大/小端形式,由啟動(dòng)代碼的開始部分通過設(shè)置ARM核內(nèi)部協(xié)處
34、理器(CP15)的內(nèi)容決定(即通過程序動(dòng)態(tài)配置)共五十三頁 基于ARM內(nèi)核的芯片訪問外設(shè)的方法是使用存儲(chǔ)器映射的I/O,為每個(gè)端口寄存器都分配一個(gè)地址。 通常,從這些地址裝載數(shù)據(jù)用于讀入,向這些地址保存數(shù)據(jù)用于輸出。有些地址的裝載和保存用于外設(shè)的控制功能,而不是輸入或輸出功能。 存儲(chǔ)器映射的I/O位置的操作(cozu)不同于正常的存儲(chǔ)器位置的操作(cozu)(數(shù)據(jù)讀取后不發(fā)生變化)。存儲(chǔ)器映射的I/O空間不能使用高速緩存技術(shù)。 存儲(chǔ)器映射(yngsh)的I/Oyyyy-M-34/94共五十三頁異常(ychng)exception異常指正常執(zhí)行的程序(chngx)流因故被暫時(shí)中止;ARM支持7種
35、異常類型(對(duì)應(yīng)5種異常模式);若同時(shí)發(fā)生多個(gè)異常,將按優(yōu)先級(jí)順序處理;異常類型對(duì)應(yīng)異常模式優(yōu)先級(jí)復(fù)位Supervisor1(最高優(yōu)先級(jí))數(shù)據(jù)中止Abort2FIQFIQ3IRQIRQ4指令預(yù)取中止Abort5未定義指令Undefined6SWISupervisor7(最低優(yōu)先級(jí))優(yōu)先級(jí)降低yyyy-M-35/94提示:中斷(IRQ和FIQ)是異常的一種特殊情況。共五十三頁共五十三頁復(fù)位(f wi)異常Reset當(dāng)nRESET引腳信號(hào)變?yōu)榈碗娖綍r(shí), ARM立即停止執(zhí)行當(dāng)前指令,產(chǎn)生復(fù)位異常;當(dāng)nRESET再次變?yōu)楦唠娖胶?,ARM處理器執(zhí)行下列操作:1.強(qiáng)制CPSR中的M4:0變?yōu)閎10011,進(jìn)
36、入管理模式;2.置位CPSR中的I和F位;3.清零(qn ln)CPSR中的T位;4.強(qiáng)制PC從地址0 x00開始取第一條指令;5.返回到ARM狀態(tài)并恢復(fù)執(zhí)行;yyyy-M-37/94共五十三頁共五十三頁中止(zhngzh)異常Abort中止異常包括指令預(yù)取中止和數(shù)據(jù)中止;預(yù)取中止時(shí),ARM將預(yù)取的指令標(biāo)記為無效,但在指令到達(dá)流水線的執(zhí)行階段時(shí)才進(jìn)入異常。如果指令在流水線中因?yàn)榘l(fā)生(fshng)分支而沒有被執(zhí)行,中止將不會(huì)發(fā)生(fshng)。數(shù)據(jù)中止時(shí),數(shù)據(jù)訪問被記為無效,中止程序應(yīng)根據(jù)中止原因作出處理,使數(shù)據(jù)可以被訪問。中止異常表示對(duì)存儲(chǔ)器的訪問失敗,這種機(jī)制實(shí)際保證了虛擬存儲(chǔ)技術(shù)的實(shí)現(xiàn)。y
37、yyy-M-39/94共五十三頁中斷(zhngdun)異常(IRQ、FIQ) 中斷請(qǐng)求(IRQ)是一個(gè)由nIRQ引腳信號(hào)低電平所產(chǎn)生的正常(zhngchng)中斷(nIRQ是內(nèi)核信號(hào),對(duì)用戶不可見)。IRQ的優(yōu)先級(jí)低于FIQ,對(duì)于FIQ異常它是被屏蔽的。在一個(gè)特權(quán)模式中可通過置位CPSR中的I 位來禁止IRQ 快速中斷請(qǐng)求(FIQ)適用于對(duì)一個(gè)突發(fā)事件的快速響應(yīng)。ARM狀態(tài)中FIQ模式多設(shè)置了7個(gè)分組寄存器(R8_fiqR14_fiq)可加速上下文切換的速度。在一個(gè)特權(quán)模式中可通過置位CPSR中的F位來禁止FIQ異常40/94共五十三頁未定義指令(zhlng)異常當(dāng)ARM處理器遇到一條自己和系
38、統(tǒng)內(nèi)任何協(xié)處理器都無法處理的指令時(shí),將產(chǎn)生未定義指令陷阱。軟件可使用這一機(jī)制通過模擬(mn)未定義的協(xié)處理器指令來擴(kuò)展ARM指令集。yyyy-M-41/94共五十三頁軟件(run jin)中斷異常(SWI)執(zhí)行指令SWI可進(jìn)入軟件中斷異常該異常使處理器從用戶模式進(jìn)入管理模式,通常用于請(qǐng)求一個(gè)特定的管理函數(shù)(即調(diào)用系統(tǒng)(xtng)功能函數(shù))yyyy-M-42/94共五十三頁異常(ychng)向量(表)向量地址異常類型進(jìn)入時(shí)模式進(jìn)入時(shí)I狀態(tài)進(jìn)入時(shí)F狀態(tài)0 x0000 0000復(fù)位管理禁止禁止0 x0000 0004未定義指令未定義IF0 x0000 0008軟件中斷(SWI)管理禁止F0 x000
39、0 000C預(yù)取中止(指令)中止IF0 x0000 0010數(shù)據(jù)中止中止IF0 x0000 0014保留保留0 x0000 0018IRQ中斷禁止F0 x0000 001CFIQ快中斷禁止禁止 異常發(fā)生時(shí)處理器將PC值強(qiáng)制設(shè)置為對(duì)應(yīng)(duyng)的異常向量; 異常向量處通常只存放一條跳轉(zhuǎn)指令,指向真正的異常處理程序;異常向量表的后面一般緊跟著存放FIQ的異常處理程序,這樣可以減少一次跳轉(zhuǎn),提高FIQ的響應(yīng)速度;yyyy-M-43/94共五十三頁實(shí)際(shj)ARM啟動(dòng)代碼AREA Init,CODE,READONLYENTRY ; 相當(dāng)于C語言中的main函數(shù)ResetEntry bReset
40、Handler;ARM CPU執(zhí)行(zhxng)的第一條指令bHandlerUndef;handler for Undefined modebHandlerSWI;handler for SWI interruptbHandlerPabort;handler for PAbortbHandlerDabort;handler for DAbortb.;reservedbHandlerIRQ;handler for IRQ interruptbHandlerFIQ;handler for FIQ interrupt共五十三頁異常響應(yīng)過程(復(fù)位異常特殊(tsh)處理)在LR中保存返回地址信息(xnx
41、);ARM狀態(tài)下將當(dāng)前指令地址加4或加8復(fù)制到LRThumb狀態(tài)下將當(dāng)前指令地址加2、4或加8 復(fù)制到LR將CPSR復(fù)制到適當(dāng)?shù)腟PSR中;將CPSR模式位強(qiáng)制設(shè)置為與異常類型相對(duì)應(yīng)的值;強(qiáng)制PC從相關(guān)的異常向量處取指;注1:中斷異常時(shí)置位中斷禁止標(biāo)志可以防止不受控制的異常嵌套 2:異??偸窃贏RM狀態(tài)中處理。若處理器處于Thumb狀態(tài)時(shí)發(fā)生異常,則異常向量地址裝入PC時(shí)會(huì)自動(dòng)切換到ARM狀態(tài)。取決于異常類型yyyy-M-45/94共五十三頁程序AIRQ服務(wù)程序用戶模式IRQ模式程序寄存器組異常響應(yīng)(xingyng)(進(jìn)入)過程1. 程序運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)(zhungti)為Th
42、umb狀態(tài)、允許IRQ中斷;2. 用戶程序運(yùn)行時(shí)發(fā)生IRQ中斷,硬件完成以下動(dòng)作:LR_usrSPSR_irqLR_irqLRPCCPSRSPSRUSR1?0. . .?MODTFI. . .NZCV置位I位(禁止IRQ中斷)清零T位(進(jìn)入ARM狀態(tài)) 設(shè)置MODE位,切換處理器模式至IRQ模式將返回地址信息存入IRQ模式的LR寄存器將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器將跳轉(zhuǎn)地址存入PC,實(shí)現(xiàn)跳轉(zhuǎn)IRQ0?1. . .?BackAddrJumpAddrJumpUSR1?0. . .?“?”表示對(duì)該位不關(guān)心yyyy-M-46/94共五十三頁異常返回過程(guchng)(復(fù)位異常特殊處理)將LR( R14 )中的值減去偏移量后存入PC,偏移量根據(jù)(gnj)異常的類型而有所不同;將SPSR的值復(fù)制回CPSR;清零在入口置位的中斷禁止標(biāo)志;注:恢復(fù)CPSR的動(dòng)作會(huì)將T、F和I位自動(dòng)恢復(fù)為異常發(fā)生前的值。yyyy-M-47/94共五十三
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西醫(yī)結(jié)合婦產(chǎn)科學(xué)知到課后答案智慧樹章節(jié)測(cè)試答案2025年春山西中醫(yī)藥大學(xué)
- 三級(jí)人力資源管理師-企業(yè)人力資源管理師(三級(jí))《理論知識(shí)》考前沖刺卷6
- 三級(jí)人力資源管理師-《企業(yè)人力資源》管理師三級(jí)(專業(yè)能力)考前沖刺卷5
- 英語(新高考Ⅰ卷01)(考試版)
- 廣東省惠州市惠東中學(xué)2017-2018學(xué)年高三5月熱身綜合練習(xí)歷史(二)
- 數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)
- 高考化學(xué)二輪專題復(fù)習(xí)特色專項(xiàng)訓(xùn)練7第七題化學(xué)反應(yīng)原理的理解及應(yīng)用
- 高強(qiáng)格柵掛網(wǎng)施工方案
- 基于Modbus+TCP工業(yè)控制網(wǎng)絡(luò)入侵檢測(cè)分析方法研究
- 事業(yè)單位財(cái)務(wù)預(yù)算管理的必要性及優(yōu)化措施
- 2025年食品供應(yīng)商合同范本
- 《網(wǎng)絡(luò)信息安全教學(xué)》課件
- 公路養(yǎng)護(hù)服務(wù)方案(技術(shù)方案)
- 徐州2025年江蘇徐州市口腔醫(yī)院招聘非在編醫(yī)務(wù)人員53人筆試歷年參考題庫附帶答案詳解-1
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術(shù)規(guī)程
- DZ∕T 0213-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 石灰?guī)r、水泥配料類(正式版)
- MOOC 跨文化交際通識(shí)通論-揚(yáng)州大學(xué) 中國(guó)大學(xué)慕課答案
- GB/T 28799.2-2020冷熱水用耐熱聚乙烯(PE-RT)管道系統(tǒng)第2部分:管材
- 2023-瑞幸咖啡vi手冊(cè)
- 10000中國(guó)普通人名大全
- 首件檢驗(yàn)作業(yè)流程控制卡
評(píng)論
0/150
提交評(píng)論