![嵌入式系統(tǒng)原理及應(yīng)用教程_第1頁](http://file4.renrendoc.com/view/d040fe04df183477fb3096d53d7d8643/d040fe04df183477fb3096d53d7d86431.gif)
![嵌入式系統(tǒng)原理及應(yīng)用教程_第2頁](http://file4.renrendoc.com/view/d040fe04df183477fb3096d53d7d8643/d040fe04df183477fb3096d53d7d86432.gif)
![嵌入式系統(tǒng)原理及應(yīng)用教程_第3頁](http://file4.renrendoc.com/view/d040fe04df183477fb3096d53d7d8643/d040fe04df183477fb3096d53d7d86433.gif)
![嵌入式系統(tǒng)原理及應(yīng)用教程_第4頁](http://file4.renrendoc.com/view/d040fe04df183477fb3096d53d7d8643/d040fe04df183477fb3096d53d7d86434.gif)
![嵌入式系統(tǒng)原理及應(yīng)用教程_第5頁](http://file4.renrendoc.com/view/d040fe04df183477fb3096d53d7d8643/d040fe04df183477fb3096d53d7d86435.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
嵌入式系統(tǒng)原理及應(yīng)用教程第1頁,共100頁,2023年,2月20日,星期一ARM公司簡介
ARM是AdvancedRISCMachines的縮寫。1991年ARM公司成立于英國劍橋,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。
公司的特點是只設(shè)計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。第2頁,共100頁,2023年,2月20日,星期一ARM公司簡介將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片...第3頁,共100頁,2023年,2月20日,星期一ARM(AdvancedRISCMachines)有3種含義一個公司的名稱一類微處理器的通稱一種技術(shù)的名稱第4頁,共100頁,2023年,2月20日,星期一采用RISC架構(gòu)的ARM微處理器一般具有如下特點:體積小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令執(zhí)行速度更快;大多數(shù)數(shù)據(jù)操作都在寄存器中完成;尋址方式靈活簡單,執(zhí)行效率高;指令長度固定。第5頁,共100頁,2023年,2月20日,星期一
ARM處理器的產(chǎn)品系列非常廣,包括ARM7、ARM9、ARM9E、ARM10E、ARM11和SecurCore、Cortex等。以及其它廠商基于ARM體系結(jié)構(gòu)的處理器,除了具有ARM體系結(jié)構(gòu)的共同特點以外,每一系列提供一套特定的性能來滿足設(shè)計者對功耗、性能、體積的需求。
第6頁,共100頁,2023年,2月20日,星期一ARM公司定義了7種ARM指令集體系結(jié)構(gòu)版本。ARM版本Ⅰ:V1版架構(gòu),在原型機ARM1出現(xiàn)過,只有26位尋址空間,沒有用于商業(yè)產(chǎn)品。ARM版本Ⅱ:V2版架構(gòu),對V1版進行了擴展,例如ARM2和ARM3(V2a)架構(gòu)。包含了對32位乘法指令和協(xié)處理器指令的支持。ARM版本Ⅲ:V3版架構(gòu),在1990年設(shè)計ARM6中采用了版本3。具有片上高速緩存、MMU和寫緩沖等功能。尋址空間增至32位(4GB)。目前V1~V3版本目前都已廢棄。第7頁,共100頁,2023年,2月20日,星期一ARM版本Ⅳ:V4版架構(gòu),在V3版上作了進一步擴充,V4版架構(gòu)是目前應(yīng)用最廣的ARM體系結(jié)構(gòu),ARM7、ARM8、ARM9和StrongARM都采用該架構(gòu)。ARM版本Ⅴ:V5版架構(gòu),是在V4版基礎(chǔ)上增加了一些新的指令,如:轉(zhuǎn)移BLX指令、計數(shù)前導(dǎo)零CLZ指令、BRK中斷指令,DSP指令集(E增強型)、在ARM10和Xscale都采用該版架構(gòu)。ARM版本Ⅵ:V6版架構(gòu),V6版架構(gòu)是2001年發(fā)布的,首先在2002年春季發(fā)布的ARM11處理器中使用。采用單指令多數(shù)據(jù)SIMD(SingleInstruction,MultipleData)技術(shù),將語音及圖像處理功能提高了4倍。第8頁,共100頁,2023年,2月20日,星期一ARM版本Ⅶ:V7版架構(gòu),ARMv7架構(gòu)是ARMv6架構(gòu)的基礎(chǔ)上誕生的,該架構(gòu)采用了Thumb-2技術(shù)。Thumb-2技術(shù)比純32位代碼少使用31%的內(nèi)存,減小了系統(tǒng)開銷;同時能夠比已有的基于Thumb技術(shù)的解決方案提高38%的性能。V7版架構(gòu)分為三類:Cortex-A系列,應(yīng)用處理器,目前提供Cortex-A5、Cortex-A8、Cortex-A9、Cortex-A15等產(chǎn)品。Cortex-M系列,嵌入式控制器,目前提供Cortex-M4、Cortex-M3、Cortex-M1FPGA和Cortex-M0處理器。Cortex-R系列,深嵌入式實時系統(tǒng),目前,此系列包含Cortex-R4和Cortex-R4F處理器。第9頁,共100頁,2023年,2月20日,星期一ARM命名格式如下:
ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}x:系列號,例如ARM7中的“7”、ARM9中的“9”;y:內(nèi)部存儲管理/保護單元,例如ARM72中的“2”、ARM94中的“4”;z:內(nèi)含有高速緩存Cache;T:支持16位的Thumb指令集;D:支持JTAG片上調(diào)試;M:支持長乘法操作(64位結(jié)果)的ARM指令,包含快速乘法器;I:帶有嵌入式追蹤宏單元ETM(EmbeddedTraceMacro),用來設(shè)置斷點和觀察點;第10頁,共100頁,2023年,2月20日,星期一E:增強型DSP指令(基于TDMI);J:含有Java加速器Jazelle,與Java虛擬機相比,Java加速器Jazelle使Java代碼運行速度提高了8倍,功耗降低到原來的80%;F:向量浮點運算單元;S:可綜合版本,意味著處理器內(nèi)核是以源代碼形式提供的。版本V7用字符串ARMCortex開頭,隨后附加-A、-R、-M表示處理器的市場定位方向,其后跟有數(shù)字,表示該方向產(chǎn)品的序列號。第11頁,共100頁,2023年,2月20日,星期一第12頁,共100頁,2023年,2月20日,星期一第13頁,共100頁,2023年,2月20日,星期一版本版本變種系列號處理器核V1V1ARM1ARM1V2V2ARM2ARM2V2aARM2aSARM3ARM3V3V3ARM6ARM6、ARM600、ARM610ARM7ARM7、ARM700、ARM710V4V4TARM7TDMI、ARM710T、ARM720T、ARM740TV4ARM8StrongARM、ARM8、ARM810V4TARM9ARM9TDMI、ARM920T、ARM940TV5V5TEARM9EARM10ARM10TDMI、ARM10EV6V6ARM11ARM11、ARM11562-S、ARM1156T2F-S、ARM11JZF-SV7V7-ACotex-AARMCotex-A8、ARMCotex-A9、ARMCotex-A5、ARMCotex-A15、V7-RCotex-RARMCotex-R4、V7-MCotex-MARMCotex-M3、ARMCotex-M0、ARMCotex-M1第14頁,共100頁,2023年,2月20日,星期一2.2.1RISC體系結(jié)構(gòu)1.嵌入式CISC微處理器傳統(tǒng)的CISC(ComplexInstructionSetComputer,復(fù)雜指令集計算機)結(jié)構(gòu)有其固有的缺點,即隨著計算機技術(shù)的發(fā)展而不斷引入新的復(fù)雜的指令集,為支持這些新增的指令,計算機的體系結(jié)構(gòu)會越來越復(fù)雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有20%的指令會被反復(fù)使用,占整個程序代碼的80%。而余下的80%的指令卻不經(jīng)常使用,在程序設(shè)計中只占20%,顯然,這種結(jié)構(gòu)是不太合理的。第15頁,共100頁,2023年,2月20日,星期一2.嵌入式RISC微處理器
基于以上的不合理性,1979年美國加州大學(xué)伯克利分校提出了RISC(ReducedInstructionSetComputer,精簡指令集計算機)的概念, RISC是精簡指令集計算機,但RISC并非只是簡單地去減少指令,而是把著眼點放在了如何使計算機的結(jié)構(gòu)更加簡單合理地提高運算速度上。RISC結(jié)構(gòu)優(yōu)先選取使用頻最高的簡單指令,拋棄復(fù)雜指令,固定指令長度,減少指令格式和尋址方式,以控制邏輯為主,不用或少用微碼控制等措施來達到上述目的。第16頁,共100頁,2023年,2月20日,星期一RISC體系結(jié)構(gòu)應(yīng)具有如下特點:采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有2~3種。使用單周期指令,便于流水線操作執(zhí)行。大量使用寄存器,數(shù)據(jù)處理指令只對寄存器進行操作,只有加載/存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率。除此以外,ARM體系結(jié)構(gòu)還采用了一些特別的技術(shù),在保證高性能的前提下盡量縮小芯片的面積,并降低功耗.第17頁,共100頁,2023年,2月20日,星期一RISC體系結(jié)構(gòu)應(yīng)具有如下特點:所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率??捎眉虞d/存儲指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率??稍谝粭l數(shù)據(jù)處理指令中同時完成邏輯處理和移位處理。在循環(huán)處理中使用地址的自動增減來提高運行效率。第18頁,共100頁,2023年,2月20日,星期一RISC和CISC之間的主要區(qū)別:指
標RISCCISC指令集一個周期執(zhí)行一條指令,通過簡單指令的組合實理復(fù)雜操作;指令長度固定。指令長度不固定,執(zhí)行需要多個周期。流水線流水線每周期前進一步。指令的執(zhí)行需要調(diào)用微代碼的一個微程序。寄存器更多通用寄存器。用于特定目的的專用寄存器。Load/Store結(jié)構(gòu)獨立的Load和Store指令完成數(shù)據(jù)在寄存器和外部存儲器之間的傳輸。處理器能夠直接處理存儲器中的數(shù)據(jù)。第19頁,共100頁,2023年,2月20日,星期一2.2.2流水線技術(shù)CPU中的流水線技術(shù)是一種將指令分解為多步,并讓不同指令的各步操作重疊執(zhí)行,從而實現(xiàn)幾條指令并行處理,以加速程序運行過程的技術(shù)。ARM7采用三級流水線、ARM9采用五級流水線,ARM10采用六級流水線、ARM11采用八級流水線。
第20頁,共100頁,2023年,2月20日,星期一2.2.2流水線技術(shù)以ARM7三級流水線為例,由三個獨立的部件分別執(zhí)行:取指,從存儲器中裝載一條指令到CPU中;解碼,識別并解釋將要被執(zhí)行的指令;執(zhí)行,將解碼識別的指令進行計算處理并將結(jié)果寫回寄存器。第21頁,共100頁,2023年,2月20日,星期一第22頁,共100頁,2023年,2月20日,星期一第23頁,共100頁,2023年,2月20日,星期一哈佛結(jié)構(gòu)是一種將程序中指令和數(shù)據(jù)分開存儲的存儲器結(jié)構(gòu)。它是一種并行存儲體系結(jié)構(gòu),程序存儲器和數(shù)據(jù)存儲器采用不同的總線,從而提供了較大的存儲器帶寬。馮·諾伊曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲器結(jié)構(gòu)。程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存儲器的不同物理位置。ARM7采用了普林斯頓結(jié)構(gòu),在隨后的ARM9、ARM10、ARM11、ARMCortex等處理器采用了哈佛結(jié)構(gòu),第24頁,共100頁,2023年,2月20日,星期一馮·諾依曼體系結(jié)構(gòu)模型第25頁,共100頁,2023年,2月20日,星期一哈佛體系結(jié)構(gòu)模型第26頁,共100頁,2023年,2月20日,星期一AMBA(AdvancedMicrocontrollerBusArchitec-ture)總線規(guī)范:是ARM公司設(shè)計的一種用于高性能嵌入式系統(tǒng)的總線標準。AMBA2.0規(guī)范中定義了三種可以組合使用的不同類型的總線:AHB(AdvancedHigh-performanceBus)、ASB(AdvancedSystemBus)和APB(AdvancedPerpheralBus)。AHB總線適用于連接高性能和高時鐘頻率的系統(tǒng)模塊;ASB總線適用于連接高性能的系統(tǒng)模塊。它的讀/寫數(shù)據(jù)總線采用的是同一條雙向數(shù)據(jù)總線;APB總線適用于連接低功耗的外部設(shè)備模塊;第27頁,共100頁,2023年,2月20日,星期一第28頁,共100頁,2023年,2月20日,星期一ARM處理器共有37個寄存器,被分為若干個組(BANK),這些寄存器包括:31個通用寄存器,包括程序計數(shù)器(PC指針),均為32位的寄存器。6個狀態(tài)寄存器,用以標識CPU的工作狀態(tài)及程序的運行狀態(tài),均為32位,目前只使用了其中的一部分。第29頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq第30頁,共100頁,2023年,2月20日,星期一ARM處理器又有7種不同的處理器模式,在每一種處理器模式下均有一組相應(yīng)的寄存器與之對應(yīng)。即在任意一種處理器模式下,可訪問的寄存器包括15個通用寄存器(R0~R14)、1~2個狀態(tài)寄存器和程序計數(shù)器。在所有的寄存器中,有些是在7種處理器模式下共用的同一個物理寄存器,而有些寄存器則是在不同的處理器模式下有不同的物理寄存器。第31頁,共100頁,2023年,2月20日,星期一第32頁,共100頁,2023年,2月20日,星期一第33頁,共100頁,2023年,2月20日,星期一ARM微處理器在較新的體系結(jié)構(gòu)中支持兩種指令集:ARM指令集和Thumb指令集。ARM指令為32位的長度Thumb指令為16位長度Thumb指令集為ARM指令集的功能子集,但與等價的ARM代碼相比較,可節(jié)省30%~40%以上的存儲空間,同時具備32位代碼的所有優(yōu)點。第34頁,共100頁,2023年,2月20日,星期一
從應(yīng)用的角度出發(fā),對在選擇ARM微處理器時所應(yīng)考慮的主要問題:ARM微處理器內(nèi)核的選擇 從前面所介紹的內(nèi)容可知,ARM微處理器包含一系列的內(nèi)核結(jié)構(gòu),以適應(yīng)不同的應(yīng)用領(lǐng)域,用戶如果希望使用WinCE或標準Linux等操作系統(tǒng)以減少軟件開發(fā)時間,就需要選擇ARM720T以上帶有MMU(MemoryManagementUnit)功能的ARM芯片,ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都帶有MMU功能。 而ARM7TDMI則沒有MMU,不支持WindowsCE和標準Linux,但目前有uCLinux等不需要MMU支持的操作系統(tǒng)可運行于ARM7TDMI硬件平臺之上。事實上,uCLinux已經(jīng)成功移植到多種不帶MMU的微處理器平臺上,并在穩(wěn)定性和其他方面都有上佳表現(xiàn)。第35頁,共100頁,2023年,2月20日,星期一系統(tǒng)的工作頻率 系統(tǒng)的工作頻率在很大程度上決定了ARM微處理器的處理能力。ARM7系列微處理器的典型處理速度為0.9MIPS/MHz,常見的ARM7芯片系統(tǒng)主時鐘為20MHz-133MHz。ARM9系列微處理器的典型處理速度為1.1MIPS/MHz,常見的ARM9的系統(tǒng)主時鐘頻率為100MHz-233MHz。ARM10最高可以達到700MHz。 不同芯片對時鐘的處理不同,有的芯片只需要一個主時鐘頻率,有的芯片內(nèi)部時鐘控制器可以分別為ARM核和USB、UART、DSP、音頻等功能部件提供不同頻率的時鐘。第36頁,共100頁,2023年,2月20日,星期一芯片內(nèi)存儲器的容量
大多數(shù)的ARM微處理器片內(nèi)存儲器的容量都不太大,需要用戶在設(shè)計系統(tǒng)時外擴存儲器. 但也有部分芯片具有相對較大的片內(nèi)存儲空間,如ATMEL的AT91F40162就具有高達2MB的片內(nèi)程序存儲空間,用戶在設(shè)計時可考慮選用這種類型,以簡化系統(tǒng)的設(shè)計。第37頁,共100頁,2023年,2月20日,星期一片內(nèi)外圍電路的選擇 幾乎所有的ARM芯片均根據(jù)各自不同的應(yīng)用領(lǐng)域,擴展了相關(guān)功能模塊,并集成在芯片之中,稱之為片內(nèi)外圍電路. 如USB接口、IIS接口、LCD控制器、鍵盤接口、RTC、ADC和DAC、DSP協(xié)處理器等,設(shè)計者應(yīng)分析系統(tǒng)的需求,盡可能采用片內(nèi)外圍電路完成所需的功能,這樣既可簡化系統(tǒng)的設(shè)計,同時提高系統(tǒng)的可靠性。第38頁,共100頁,2023年,2月20日,星期一ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:ARM狀態(tài),此時處理器執(zhí)行32位的字對齊的ARM指令;Thumb狀態(tài),此時處理器執(zhí)行16位的、半字對齊的Thumb指令。ARM指令集和Thumb指令集均有切換處理器狀態(tài)的指令,并可在兩種工作狀態(tài)之間切換,但ARM微處理器在開始執(zhí)行代碼時,應(yīng)該處于ARM狀態(tài)。第39頁,共100頁,2023年,2月20日,星期一進入Thumb狀態(tài):當操作數(shù)寄存器的狀態(tài)位(位0)為1時,可以采用執(zhí)行BX指令的方法,使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此外,當處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時,自動切換到Thumb狀態(tài)。進入ARM狀態(tài):當操作數(shù)寄存器的狀態(tài)位為0時,執(zhí)行BX指令時可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。此外,在處理器進行異常處理時,把PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使處理器切換到ARM狀態(tài)。第40頁,共100頁,2023年,2月20日,星期一狀態(tài)切換的一個例子地址最低位為0,表示切換到ARM狀態(tài)
使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換。ARM指令集Thumb指令集
CODE32 LDR R0,=Lable+1 BX R0 CODE16Lable MOV R1,#12
CODE16 LDR R0,=Lable BX R0 CODE32Lable MOV R1,#10地址最低位為1,表示切換到Thumb狀態(tài)跳轉(zhuǎn)地址標號執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令程序代碼指令集關(guān)系
從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼如下:從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下:執(zhí)行完BX指令,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令第41頁,共100頁,2023年,2月20日,星期一ARM體系結(jié)構(gòu)將存儲器看作是從零地址開始的字節(jié)的線性組合。從零字節(jié)到三字節(jié)放置第一個存儲的字數(shù)據(jù).從第四個字節(jié)到第七個字節(jié)放置第二個存儲的字數(shù)據(jù),依次排列。作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))。ARM體系結(jié)構(gòu)可以用兩種方法存儲字數(shù)據(jù),稱之為大端格式小端格式第42頁,共100頁,2023年,2月20日,星期一大端格式 在這種格式中,字數(shù)據(jù)的高字節(jié)存儲在低地址中,而字數(shù)據(jù)的低字節(jié)則存放在高地址中,如圖所示。3124231615870字地址84089101145670123低地址高地址第43頁,共100頁,2023年,2月20日,星期一小端格式 在這種格式中,字數(shù)據(jù)的高字節(jié)存儲在高地址中,而字數(shù)據(jù)的低字節(jié)則存放在低地址中,如圖所示。低地址高地址3124231615870字地址8401110987654321·0第44頁,共100頁,2023年,2月20日,星期一ARM微處理器的指令長度可以是32位(在ARM狀態(tài)下)16位(在Thumb狀態(tài)下)ARM微處理器中支持字節(jié)(8位)、半字(16位)、字(32位)三種數(shù)據(jù)類型.其中,字需要4字節(jié)對齊(地址的低兩位為0)、半字需要2字節(jié)對齊(地址的最低位為0)。第45頁,共100頁,2023年,2月20日,星期一
在復(fù)雜的嵌入式系統(tǒng)設(shè)計時,越來越多的會選用帶有存儲管理單元(MMU)的微處理器芯片。 MMU完成的主要功能有:將主存地址從虛擬存儲空間映射到物理存儲空間。存儲器訪問權(quán)限控制。設(shè)置虛擬存儲空間的緩沖特性等。第46頁,共100頁,2023年,2月20日,星期一虛擬地址存儲系統(tǒng)示意圖邏輯地址對換主存輔助存儲器物理地址MMU微處理器第47頁,共100頁,2023年,2月20日,星期一
ARM920T微處理器核的MMU采用了分頁虛擬存儲管理方式。它把虛擬存儲空間分成一個個固定大小的頁,把物理主存儲的空間也分成同樣大小的一個個頁。 通過查詢存放在主存中的頁表,來實現(xiàn)虛擬地址到物理地址的轉(zhuǎn)換。但由于頁表存儲在主存儲中,查詢頁表所花的代價很大,因此,通常又采用快表技術(shù)(TLBtranslationlookasidebuffer)來提高地址變換效率。第48頁,共100頁,2023年,2月20日,星期一
TLB技術(shù)中,將當前需要訪問的地址變換條目存儲在一個容量較?。ㄍǔ?~16個字)、訪問速度更快(與微處理器中通用寄存器速度相當)的存儲器件中。當微處理器訪問主存時,先在TLB中查找需要的地址變換條目,如果該條目不存在,再從存儲在主存中的頁表中查詢,并添加到TLB中。 這樣,當微處理器下一次又需要該地址變換條目時,可以從TLB中直接得到,從而提高了地址變換速度。第49頁,共100頁,2023年,2月20日,星期一
使能MMU時,其控制存儲訪問的過程是: 首先在TLB中查找虛擬地址,如果該虛擬地址對應(yīng)的地址變換條目不在TLB中,則到頁表中查詢對應(yīng)的地址變換條目,并把查詢到的結(jié)果添加到TLB中。如果TLB已滿,還需根據(jù)一定的淘汰算法進行替換。得到地址變換條目后,進行一下步驟的操作。第50頁,共100頁,2023年,2月20日,星期一ARM微處理器支持7種運行模式,分別為:用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)??焖僦袛嗄J剑╢iq):用于高速數(shù)據(jù)傳輸或通道處理。外部中斷模式(irq):用于通用的中斷處理。管理模式(svc):操作系統(tǒng)使用的保護模式。數(shù)據(jù)訪問終止模式(abt):當數(shù)據(jù)或指令預(yù)取終止時進入該模式,可用于虛擬存儲及存儲保護。系統(tǒng)模式(sys):運行具有特權(quán)的操作系統(tǒng)任務(wù)。未定義指令中止模式(und):當未定義的指令執(zhí)行時進入該模式,可用于支持硬件協(xié)處理器的軟件仿真。第51頁,共100頁,2023年,2月20日,星期一特權(quán)模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時進入此模式管理(svc)操作系統(tǒng)保護代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。
未定義(und)
中止(abt)
管理(svc)
中斷(irq)
快中斷(fiq)
系統(tǒng)(sys)第52頁,共100頁,2023年,2月20日,星期一異常模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時進入此模式管理(svc)操作系統(tǒng)保護代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式未定義(und)中止(abt)管理(svc)中斷(irq)快中斷(fiq)這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進入相應(yīng)的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。第53頁,共100頁,2023年,2月20日,星期一用戶和系統(tǒng)模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時進入此模式管理(svc)操作系統(tǒng)保護代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。系統(tǒng)(sys)用戶(usr)第54頁,共100頁,2023年,2月20日,星期一處理器啟動時的模式轉(zhuǎn)換圖管理模式SVC(Supervisor)多種特權(quán)模式變化用戶程序的運行模式
復(fù)位后缺省模式主要完成各模式的堆棧設(shè)置,注意不要進入用戶模式一般為用戶模式User2.5處理器模式第55頁,共100頁,2023年,2月20日,星期一ARM微處理器中的寄存器不能被同時訪問,具體哪些寄存器是可編程訪問的,取決微處理器的工作狀態(tài)及具體的運行模式。但在任何時候,通用寄存器R14~R0、程序計數(shù)器PC、一個或兩個狀態(tài)寄存器都是可訪問的。第56頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq第57頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSR所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。第58頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷第59頁,共100頁,2023年,2月20日,星期一1.通用寄存器通用寄存器包括R0~R15,可以分為三類:未分組寄存器R0~R7;分組寄存器R8~R14;程序計數(shù)器PC(R15)。第60頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在匯編語言中寄存器R0~R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。第61頁,共100頁,2023年,2月20日,星期一2.未分組寄存器R0~R7 在所有的運行模式下,未分組寄存器都指向同一個物理寄存器,他們未被系統(tǒng)用作特殊的用途,因此,在中斷或異常處理進行運行模式轉(zhuǎn)換時,由于不同的處理器運行模式均使用相同的物理寄存器,可能會造成寄存器中數(shù)據(jù)的破壞,這一點在進行程序設(shè)計時應(yīng)引起注意。第62頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。第63頁,共100頁,2023年,2月20日,星期一3.分組寄存器R8~R14 對于分組寄存器,他們每一次所訪問的物理寄存器與處理器當前的運行模式有關(guān)。 對于R8~R12來說,每個寄存器對應(yīng)兩個不同的物理寄存器,當使用fiq模式時,訪問寄存器R8_fiq~R12_fiq;當使用除fiq模式以外的其他模式時,訪問寄存器R8_usr~R12_usr。 對于R13、R14來說,每個寄存器對應(yīng)6個不同的物理寄存器,其中的一個是用戶模式與系統(tǒng)模式共用,另外5個物理寄存器對應(yīng)于其他5種不同的運行模式。第64頁,共100頁,2023年,2月20日,星期一采用以下的記號來區(qū)分不同的物理寄存器:
R13_<mode> R14_<mode>其中,mode為以下幾種模式之一:usr、fiq、irq、svc、abt、und。第65頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14為分組寄存器。它們所對應(yīng)的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器第66頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。第67頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13第68頁,共100頁,2023年,2月20日,星期一寄存器R13在ARM指令中常用作堆棧指針,但這只是一種習(xí)慣用法,用戶也可使用其他的寄存器作為堆棧指針。而在Thumb指令集中,某些指令強制性的要求使用R13作為堆棧指針。第69頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。第70頁,共100頁,2023年,2月20日,星期一R14也稱作子程序鏈接寄存器(SubroutineLinkRegister)或鏈接寄存器LR。當執(zhí)行BL子程序調(diào)用指令時,R14中得到R15(程序計數(shù)器PC)的備份。其他情況下,R14用作通用寄存器。與之類似,當發(fā)生中斷或異常時,對應(yīng)的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來保存R15的返回值。第71頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個小的固定偏移量)。第72頁,共100頁,2023年,2月20日,星期一寄存器R14常用在如下的情況: 在每一種運行模式下,都可用R14保存子程序的返回地址,當用BL或BLX指令調(diào)用子程序時,將PC的當前值拷貝給R14,執(zhí)行完子程序后,又將R14的值拷貝回PC,即可完成子程序的調(diào)用返回。
第73頁,共100頁,2023年,2月20日,星期一Lable程序A程序BR14R14寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執(zhí)行過程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標號Lable,執(zhí)行程序B。同時硬件將“BLLable”指令的下一條指令所在地址存入R14;3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;第74頁,共100頁,2023年,2月20日,星期一R14寄存器與異常發(fā)生
異常發(fā)生時,程序要跳轉(zhuǎn)至異常服務(wù)程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個小常量的偏移。第75頁,共100頁,2023年,2月20日,星期一4.程序計數(shù)器PC 寄存器R15用作程序計數(shù)器(PC)。在ARM狀態(tài)下,位[1:0]為0,位[31:2]用于保存PC;在Thumb狀態(tài)下,位[0]為0,位[31:1]用于保存PC;由于ARM體系結(jié)構(gòu)采用了多級流水線技術(shù),對于ARM指令集而言,PC總是指向當前指令的下兩條指令的地址,即PC的值為當前指令的地址值加8個字節(jié)。
第76頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計數(shù)器R15(PC)寄存器R15常作為程序計數(shù)器(PC)。R15雖然也可用作通用寄存器,但一般不這么使用,因為對R15的使用有一些特殊的限制,當違反了這些限制時,程序的執(zhí)行結(jié)果是未知的。
第77頁,共100頁,2023年,2月20日,星期一寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq
寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在因為異常事件而進入異常時它保存CPSR的當前值,異常退出時可通過它恢復(fù)CPSR。程序計數(shù)器R15(PC)第78頁,共100頁,2023年,2月20日,星期一Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個通用寄存器R0~R7;程序計數(shù)器(PC);堆棧指針(SP);鏈接寄存器(LR);有條件訪問程序狀態(tài)寄存器(CPSR)。第79頁,共100頁,2023年,2月20日,星期一CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別注意:括號內(nèi)為ATPCS中寄存器的命名,可以使用RN匯編偽指令將寄存器定義多個名字。其中ADS1.2的匯編程序直接支持這些名稱,但注意a1~a4,v1~v4必須用小寫。第80頁,共100頁,2023年,2月20日,星期一CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別R7R6R5R4R3R2R1R0在匯編語言中寄存器R0~R7為保存數(shù)據(jù)或地址值的通用寄存器。對于任何處理器模式,它們中的每一個都對應(yīng)于相同的32為物理寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊的用途,并且可用于任何使用通用寄存器的指令。第81頁,共100頁,2023年,2月20日,星期一Thumb狀態(tài)下的堆棧指針寄存器(SP)CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別堆棧指針SP對應(yīng)ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。R13_fiqR13_irqR13_undR13_abtR13_svcR13第82頁,共100頁,2023年,2月20日,星期一Thumb狀態(tài)下的鏈接寄存器R14(LR)CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別鏈接寄存器LR對應(yīng)ARM狀態(tài)寄存器R14,在結(jié)構(gòu)上有兩個特殊功能,詳見“ARM狀態(tài)下的鏈接寄存器LR”。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。R14_fiqR14_irqR14_undR14_abtR14_svcR14第83頁,共100頁,2023年,2月20日,星期一在Thumb狀態(tài)中訪問高寄存器
在Thumb狀態(tài)中,高寄存器(R8~R15)不是標準寄存器集的一部分。匯編語言程序員對它們的訪問受到限制,但可以將它們用于快速暫存??梢允褂肕OV、CMP和ADD指令對高寄存器操作。第84頁,共100頁,2023年,2月20日,星期一ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系Thumb狀態(tài)R0~R7與ARM狀態(tài)R0~R7相同;Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同;Thumb狀態(tài)SP映射到ARM狀態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)。第85頁,共100頁,2023年,2月20日,星期一Thumb狀態(tài)寄存器在ARM狀態(tài)寄存器上的映射R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R0
堆棧指針(R13)
連接寄存器(R14)
程序計數(shù)器(R15)
低寄存器高寄存器第86頁,共100頁,2023年,2月20日,星期一程序狀態(tài)寄存器—CPSR(1)+SPSR(5)CPSR反映了當前處理器的狀態(tài):4個條件代碼標志;2個中斷控制位;5個對當前處理器模式進行編碼的位;1個指示當前執(zhí)行指令的工作狀態(tài)位;保留位。SPSR:備份程序狀態(tài)字,保存異常事件發(fā)生之前的CPSR.
每個異常模式帶有一個備份程序狀態(tài)寄存器,用于保存在異常事件發(fā)生之前的CPSR;CPSR和SPSR通過特殊指令進行訪問。第87頁,共100頁,2023年,2月20日,星期一NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標志保留控制位溢出標志進位或借位擴展零負或小于IRQ禁止FIQ禁止狀態(tài)位模式位NZCVITFCPSR寄存器的格式
大多數(shù)“數(shù)值處理指令”可以選擇是否影響條件代碼標志位(指令帶S后綴);但有些指令執(zhí)行總是影響條件代碼標志。所有ARM指令都可按條件來執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。
運算結(jié)果的最高位反映在該標志位。對于有符號二進制補碼,結(jié)果為負數(shù)時N=1,結(jié)果為正數(shù)或零時N=0;
指令結(jié)果為0時Z=1(表示比較結(jié)果“相等”),否則Z=0;
當進行加法運算,并且最高位產(chǎn)生進位時C=1,否則C=0。當進行減法運算,并且最高位產(chǎn)生借位時C=0,否則C=1。對于移位操作指令,C為從最高位最后移出的值,其它指令C通常不變;當進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V通常不變。
保留位被保留將來使用。為了提高程序的可移植性,當改變CPSR標志和控制位時,請不要改變這些保留位。另外,請確保您程序的運行不受保留位的值影響,因為將來的處理器可能會將這些位設(shè)置為1或者0。
第88頁,共100頁,2023年,2月20日,星期一CPSR模式位設(shè)置表M[4:0]模式M[4:0]模式10000用戶10111中止10001快中斷11011未定義10010中斷11111系統(tǒng)10011管理注意:不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯誤的設(shè)置,將引起
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2013建設(shè)合同范例填寫
- 兼職擔保合同范本
- 公轉(zhuǎn)私勞務(wù)合同范本
- 加工技術(shù)服務(wù)合同范本
- 臨時借調(diào)人員合同范本
- 出租山合同范本
- 2025年飛標機項目投資可行性研究分析報告
- 供瓦合同范本
- 2025年度國際廣告代理合同標準
- 制作門合同范本
- 2023外貿(mào)業(yè)務(wù)協(xié)調(diào)期中試卷
- GB/T 16475-1996變形鋁及鋁合金狀態(tài)代號
- GB 4706.20-2004家用和類似用途電器的安全滾筒式干衣機的特殊要求
- 無紙化會議系統(tǒng)解決方案
- 佛教空性與緣起課件
- 上海鐵路局勞動安全“八防”考試題庫(含答案)
- 《愿望的實現(xiàn)》教學(xué)設(shè)計
- 效率提升和品質(zhì)改善方案
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 義務(wù)教育學(xué)科作業(yè)設(shè)計與管理指南
- 《汽車發(fā)展史》PPT課件(PPT 75頁)
評論
0/150
提交評論