微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)-第七章-ARM微處理器編程模型_第1頁
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)-第七章-ARM微處理器編程模型_第2頁
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)-第七章-ARM微處理器編程模型_第3頁
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)-第七章-ARM微處理器編程模型_第4頁
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)-第七章-ARM微處理器編程模型_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計第七章ARM微處理器編程模型第七章

(4)ARM微處理器編程模型7.1ARM內(nèi)核體系結(jié)構(gòu)(了解)ARM體系結(jié)構(gòu)版本ARM內(nèi)核簡介7.2ARM編程模型(理解)處理器工作狀態(tài) 處理器運行模式 寄存器組織 數(shù)據(jù)類型和儲存格式異常

ARM是AdvancedRISCMachines的縮寫,該公司設(shè)計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器;ARM公司的特點是只設(shè)計而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導體、軟件和OEM廠商,并提供服務(wù)。將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片3/95ARM的應(yīng)用領(lǐng)域工業(yè)控制領(lǐng)域過程控制、電力控制、數(shù)控機床、ABS無線通訊領(lǐng)域

基站、帶藍牙/定位等的手機/PDA、GPS網(wǎng)絡(luò)應(yīng)用ADSL、路由器、交換機、VoIP消費類電子產(chǎn)品DVD、機頂盒、游戲機成像產(chǎn)品數(shù)碼相機、打印機、錄像機安全產(chǎn)品

ATM機、POS機、考勤系統(tǒng)、SIM卡到目前為止,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微處理器75%以上的市場份額;全球80%的GSM/3G手機、99%的CDMA手機以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系的嵌入式處理器,“掌上計算”相關(guān)的所有領(lǐng)域皆為其所主宰;4/95ARM體系結(jié)構(gòu)的特點RISC簡單的結(jié)構(gòu)使ARM內(nèi)核非常小、功耗低、成本低統(tǒng)一和固定長度的指令域,簡化了指令的譯碼,便于指令流水線設(shè)計采用裝載/保存結(jié)構(gòu),數(shù)據(jù)處理操作只針對寄存器的內(nèi)容,而不直接對存儲器進行操作支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件每條數(shù)據(jù)處理指令都對算術(shù)邏輯單元和移位器控制,實現(xiàn)了ALU和移位器的最大利用尋址方式靈活簡單,執(zhí)行效率高地址自動增加和減少尋址模式,優(yōu)化程序循環(huán)多寄存器裝載和存儲指令實現(xiàn)最大數(shù)據(jù)吞吐量所有指令的條件執(zhí)行實現(xiàn)最快速的代碼執(zhí)行5/95ARM處理器內(nèi)核流水線工作流程ARM體系結(jié)構(gòu)的版本ARM架構(gòu)自誕生至今已發(fā)展并定義了V1到V7七種不同的版本V1版架構(gòu)只在原型機ARM1中出現(xiàn)過支持基本的數(shù)據(jù)處理指令(無乘法)支持字節(jié)、半字和字的LOAD/STORE指令支持轉(zhuǎn)移指令,包括子程序調(diào)用及鏈接指令支持軟件中斷指令SWI尋址空間位64MB(26位)*7/95V2版架構(gòu)已廢棄不再使用支持乘法和乘加指令支持協(xié)處理器操作指令支持基本的存儲器與寄存器交換指令SWP/SWPB支持快速中斷模式V3版架構(gòu)已廢棄不再使用尋址范圍擴展到4GB(32位)快速中斷模式具有兩個以上的分組寄存器增加狀態(tài)寄存器CPSR/SPSR,及從異常處理返回的MSR/MRS指令,便于異常的處理增加了中止和未定義兩種處理器模式*8/95V4版架構(gòu)目前應(yīng)用最廣的ARM體系結(jié)構(gòu),ARM7、ARM8、ARM9和StrongARM都采用該版架構(gòu)增加了有/無符號的半字和有符號字節(jié)的Load/Store指令增加了16位Thumb指令集完善了軟件中斷SWI指令的功能增加了處理器的特權(quán)模式V5版架構(gòu)ARM10和XScale都采用該版架構(gòu)改進了ARM/Thumb狀態(tài)之間的切換效率;E-增強DSP指令集,包括全部算法操作和16位乘法操作;J-支持新的JAVA,提供字節(jié)代碼執(zhí)行的加速功能增加了帶有鏈接和交換指令BLX增加了計數(shù)前導零指令CLZ增加了軟件斷點指令為協(xié)處理器增加更多可選擇的指令9/95V6版架構(gòu)ARM11處理器采用該版架構(gòu)增加了多媒體功能擴展SIMD,提高了嵌入式應(yīng)用系統(tǒng)的音、視頻處理能力改進了內(nèi)存管理改進了混合端與不對齊數(shù)據(jù)支持,使得小端系統(tǒng)支持大端數(shù)據(jù)V7版架構(gòu)Cortex-A/M/R系列處理器采用該版架構(gòu)2005年發(fā)布,采用Thumb-2技術(shù)。

M系列→傳統(tǒng)單片機市場A系列→高端應(yīng)用處理器市場R系列→實時性控制*10/95ARM處理器核與體系結(jié)構(gòu)的對應(yīng)關(guān)系A(chǔ)RM處理器(核)命名規(guī)則ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}x——系列號y——存儲管理/保護單元z——CacheT——Thumb指令集D——JTAG調(diào)試器M——快速乘法器I——嵌入式跟蹤宏單元E——增強DSP指令J——Jazelle技術(shù)F——向量浮點單元S——可綜合的內(nèi)核ARM7TDMI-SARM926EJ-SARM966ESARM1022E2:帶MMU4:帶MPU6:無MMU和MPU0:標準cache2:小cache6:可變cache12/95ARM芯片、內(nèi)核和CPU的關(guān)系A(chǔ)RMCPU數(shù)據(jù)通路ARMCPU控制邏輯ARM內(nèi)核ARMCPUARM芯片ARM內(nèi)核ARM處理器(核)比較ARM處理器(核)簡介*16/957.2ARM編程模型

ARM處理器的工作狀態(tài)ARM狀態(tài)

執(zhí)行32位字方式的ARM指令Thumb狀態(tài)

執(zhí)行16位半字方式的Thumb指令(P220)Jazelle狀態(tài)

執(zhí)行可變長的、以字節(jié)為單位的 Jazelle(Java)指令(P220)注意:1.處理器復位后處于ARM狀態(tài);2.處理器異常處理時進入ARM狀態(tài);3.若處理器在Thumb狀態(tài)進入異常,則異常返回仍然自動轉(zhuǎn)換到Thumb狀態(tài);4.狀態(tài)切換不影響工作模式及寄存器內(nèi)容。*20/95ARM處理器工作狀態(tài)的切換使用跳轉(zhuǎn)指令BX可將處理器內(nèi)核在ARM狀態(tài)和Thumb狀態(tài)之間進行切換。;從Arm狀態(tài)切換到Thumb狀態(tài)

LDRR0,=Lable+1BXR0;從Thumb狀態(tài)切換到ARM狀態(tài)

LDRR0,=LableBXR0地址最低位為1,表示切換到Thumb狀態(tài)地址最低位為0,表示切換到ARM狀態(tài)跳轉(zhuǎn)地址標號,最低2bit為0*21/95ARM處理器的運行模式除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。

未定義(und)

中止(abt)

管理(svc)

中斷(irq)

快中斷(fiq)

系統(tǒng)(sys)這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。

系統(tǒng)(sys)

用戶(usr)無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態(tài)各模式下的寄存器組織R0~R7為不分組寄存器注意:在異常處理中進行模式切換時,可能會破壞寄存器中的數(shù)據(jù),需要保護;R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R8~R14為分組寄存器。不同處理器模式下它們對應(yīng)不同的物理寄存器。R8~R12有一個分組專用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。R14為鏈接寄存器LR,具有兩個特殊功能:用于保存子程序返回地址;根據(jù)不同的異常模式保存為異常返回地址(有些異常有一個小的固定偏移量)。Lable程序1程序2R14R14(LR)寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序1執(zhí)行過程中調(diào)用程序2;2.程序跳轉(zhuǎn)至標號Lable,執(zhí)行程序2。3.同時硬件將“BLLable”的下一條指令所在地址存入R14(LR);4.程序2執(zhí)行完后,將R14(LR)寄存器的內(nèi)容放入PC,返回程序1繼續(xù)執(zhí)行;*24/951.異常返回地址的處理與子程序調(diào)用類似,都是由硬件自動完成。區(qū)別在于有些異常有一個小常量偏移。2.當發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。如用戶模式下發(fā)生IRQ中斷嵌套時,R14_irq中低級中斷返回主程序的地址將被高級中斷的返回地址所覆蓋;R14(LR)寄存器與異常處理R14R14_irq用戶模式下的程序0IRQ模式下的程序1……指令m+1...指令m+n指令m地址A地址A未被破壞IRQ模式下的程序2……return指令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寄存器中,原來保存的返回地址信息將被覆蓋,造成錯誤;6.在程序2返回到程序1,然后在返回到用戶模式下被中斷的程序時,發(fā)生錯誤,將不能正確返回;解決辦法是確保R14的對應(yīng)版本在發(fā)生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。*25/95R15(PC)寄存器的讀操作ARM指令以字為單位,因此R15的最低兩位總是為0;R15的值是處理器正在取指的指令地址。因為有流水線,它與當前正在執(zhí)行指令的地址之間存在一個偏移(對于確定的ARM芯片該值為常量)。當使用指令STR/STM保存R15時,不同芯片中(可能是三級流水的ARM7或五級流水的ARM9)PC偏移量可能是8或12,因此需事先計算出該芯片的PC偏移量。MOVR0,PC??????PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線、ARM狀態(tài)下指令地址程序代碼寫入R15的值被當作指令地址,程序?qū)倪@個地址處繼續(xù)執(zhí)行(相當于執(zhí)行無條件跳轉(zhuǎn));由于ARM指令以字為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在V3及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實際目標地址(寫入R15的值)和0xFFFFFFFC相與得到;在V4及以上版本中,寫入R15的值的最低兩位如果不為0,結(jié)果將不可預測。R15(PC)寄存器的寫操作*27/95NZCV——IM0M1M2M3M4TF—...313029282726876543210程序狀態(tài)寄存器PSR條件代碼標志保留控制位溢出oVerflow進/借位擴展Carry零Zero負Negative禁止IRQ禁止FIQThumb狀態(tài)模式ModeNZCVIM0M1M2M3M4TF一般指令帶S后綴時,執(zhí)行結(jié)果會影響條件代碼標志;但有一些指令的執(zhí)行總是會影響條件代碼標志。所有ARM指令都可由條件域來指定是否需要執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。每個異常模式還有SPSR用于保存在異常發(fā)生之前的CPSR。CPSR和SPSR可通過特殊指令(MRS/MSR)進行訪問。28/95程序狀態(tài)寄存器CPSR模式位設(shè)置表Thumb狀態(tài)與ARM狀態(tài)的寄存器映射關(guān)系

R8

R9

R10

R11

R12

堆棧指針(R13)

連接寄存器(R14)

程序計數(shù)器(R15)

低寄存器高寄存器Thumb狀態(tài)下高寄存器(R8~R15)不是標準寄存器集的一部分,但可以使用MOV、CMP和ADD指令對高寄存器操作。30/95異常exception異常指正常執(zhí)行的程序流因故被暫時中止;ARM支持7種異常類型(P231表7-6)、5種異常模式;若同時發(fā)生多個異常,將按優(yōu)先級順序處理;優(yōu)先級降低*31/95復位異常Reset當nRESET引腳信號變?yōu)榈碗娖綍r,ARM立即停止執(zhí)行當前指令,產(chǎn)生復位異常;當nRESET再次變?yōu)楦唠娖胶?,ARM處理器執(zhí)行下列操作:1.強制CPSR中的M[4:0]變?yōu)閎10011,進入管理模式;2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.強制PC從地址0x00開始取第一條指令;5.返回到ARM狀態(tài)并恢復執(zhí)行;*32/95中止異常Abort中止異常包括指令預取中止和數(shù)據(jù)中止;預取中止時,ARM將預取的指令標記為無效,但在指令到達流水線的執(zhí)行階段時才進入異常。如果指令在流水線中因為發(fā)生分支而沒有被執(zhí)行,中止將不會發(fā)生。數(shù)據(jù)中止時,數(shù)據(jù)訪問被記為無效,中止程序應(yīng)根據(jù)中止原因作出處理,使數(shù)據(jù)可以被訪問。中止異常表示對存儲器的訪問失敗,這種機制實際保證了虛擬存儲技術(shù)的實現(xiàn)。*33/95中斷異常(IRQ、FIQ)

中斷請求(IRQ)是一個由nIRQ引腳信號低電平所產(chǎn)生的正常中斷(nIRQ是內(nèi)核信號,對用戶不可見)。IRQ的優(yōu)先級低于FIQ,對于FIQ異常它是被屏蔽的。在一個特權(quán)模式中可通過置位CPSR中的I位來禁止IRQ??焖僦袛嗾埱?FIQ)適用于對一個突發(fā)事件的快速響應(yīng)。ARM狀態(tài)中FIQ模式多設(shè)置了7個分組寄存器(R8_fiq~R14_fiq)可加速上下文切換的速度。在一個特權(quán)模式中可通過置位CPSR中的F位來禁止FIQ異常。34/95中斷延遲當允許FIQ中斷時,最壞情況下FIQ的中斷延遲由以下幾部分組成,即①Tsyncmax(請求通過同步器的最長時間)。Tsyncmax為4個處理器周期。②Tldm(最長指令的完成時間)。最長指令是加載包括PC在內(nèi)的所有寄存器的LDM指令。在零等待狀態(tài)的系統(tǒng)中,Tldm為20個處理器周期。③Texc(數(shù)據(jù)中止異常進入時間)。Texc為3個處理器周期。④Tfiq(FIQ進入時間)。Tfiq為2個處理器周期。總延遲是29個處理器周期。在使用40MHz處理器時鐘的系統(tǒng)中,總延遲超過0.7ms。當延遲結(jié)束時,處理器執(zhí)行在0x1C處的指令。對于最大的IRQ延遲,其計算與FIQ的類似。若必須允許FIQ有更高的優(yōu)先級,那么其結(jié)果是,進入IRQ處理程序的延遲時間是隨機的。

未定義指令異常當ARM處理器遇到一條自己和系統(tǒng)內(nèi)任何協(xié)處理器都無法處理的指令時,將產(chǎn)生未定義指令陷阱。軟件可使用這一機制通過模擬未定義的協(xié)處理器指令來擴展ARM指令集。*36/95軟件中斷異常(SWI)執(zhí)行指令SWI可進入軟件中斷異常;該異常使處理器從用戶模式進入管理模式,通常用于請求一個特定的管理函數(shù)(即調(diào)用系統(tǒng)功能函數(shù))。*37/95異常向量(表)異常發(fā)生時處理器將PC值強制設(shè)置為對應(yīng)的異常向量;異常向量處通常只存放一條跳轉(zhuǎn)指令,指向真正的異常處理

程序;異常向量表的后面一般緊跟著存放FIQ的異常處理程序,這樣

可以減少一次跳轉(zhuǎn),提高FIQ的響應(yīng)速度;*38/95異常響應(yīng)過程在LR中保存返回地址信息; ARM狀態(tài)下將當前指令地址加4或加8復制到LR Thumb狀態(tài)下將當前指令地址加2、4或加8復制到LR將CPSR復制到適當?shù)腟PSR中;將CPSR模式位強制設(shè)置為與異常類型相對應(yīng)的值;強制PC從相關(guān)的異常向量處取指;注1:中斷異常時置位中斷禁止標志可以防止不受控制的異常嵌套

2:異??偸窃贏RM狀態(tài)中處理。若處理器處于Thumb狀態(tài)時發(fā)生異常,則異常向量地址裝入PC時會自動切換到ARM狀態(tài)。取決于異常類型*39/95程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組異常響應(yīng)(進入)過程1.程序運行用戶程序,假定當前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;2.用戶程序運行時發(fā)生IRQ中斷,硬件完成以下動作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中斷)清零T位(進入ARM狀態(tài))設(shè)置MOD位,切換處理器模

式至IRQ模式將返回地址信息存入IRQ 模式的LR寄存器

溫馨提示

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

評論

0/150

提交評論