嵌入式微處理器結(jié)構(gòu)與應(yīng)用:ARM體系結(jié)構(gòu)_第1頁
嵌入式微處理器結(jié)構(gòu)與應(yīng)用:ARM體系結(jié)構(gòu)_第2頁
嵌入式微處理器結(jié)構(gòu)與應(yīng)用:ARM體系結(jié)構(gòu)_第3頁
嵌入式微處理器結(jié)構(gòu)與應(yīng)用:ARM體系結(jié)構(gòu)_第4頁
嵌入式微處理器結(jié)構(gòu)與應(yīng)用:ARM體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩157頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2CHAPTERARM體系結(jié)構(gòu)第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O2.1ARM簡介ARM公司簡介ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。公司的特點是只設(shè)計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導體、軟件和OEM廠商,并提供服務(wù)。2.1ARM簡介ARM(AdvancedRISCMachines)不僅是公司名字,也是一類微處理器的通稱ARM公司1991年成立于英國劍橋知識產(chǎn)權(quán)(IP)ARM公司本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計許可全世界有幾十家大的半導體公司都使用ARM公司的微處理器核(TI、NXP、Atmel、ST、Freescale等)市場份額基于ARM技術(shù)的微處理器占32位RISC微處理器75%以上的市場份額2.1ARM簡介ARM公司簡介將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片...2.1ARM簡介微處理器是整個系統(tǒng)的核心,通常由3大部分組成:控制單元、算術(shù)邏輯單元和寄存器。

算術(shù)邏輯單元寄存器控制單元微處理器存儲器輸入輸出2.1ARM簡介ARM處理器的特點功耗低、成本低、性能高支持Thumb(16位)/ARM(32位)雙指令集Cortex支持Thumb-2(16/32位混合指令系統(tǒng))指令長度固定(32位/16位)大量使用寄存器,指令執(zhí)行速度更快尋址方式靈活簡單,執(zhí)行效率高C5000:0.5mW/MHzARM7TDMI:0.28mW/MHzCortex-M3:0.19mW/MHz2.1ARM簡介ARM處理器的應(yīng)用當前主要應(yīng)用于消費類電子領(lǐng)域;到目前為止,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微處理器75%以上的市場份額全球80%的GSM/3G手機、99%的CDMA手機以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系的嵌入式處理器,“掌上計算”相關(guān)的所有領(lǐng)域皆為其所主宰。ARM技術(shù)正在逐步滲入到我們生活的各個方面。2.1ARM簡介ARM體系結(jié)構(gòu)ARM處理器為RISC芯片,其簡單的結(jié)構(gòu)使ARM內(nèi)核非常小,這使得器件的功耗也非常低。它具有經(jīng)典RISC的特點:大的、統(tǒng)一的寄存器文件;裝載/保存結(jié)構(gòu),數(shù)據(jù)處理操作只針對寄存器的內(nèi)容,而不直接對存儲器進行操作;簡單的尋址模式;統(tǒng)一和固定長度的指令域,簡化了指令的譯碼,便于指令流水線設(shè)計。2.1ARM簡介ARM體系結(jié)構(gòu)ARM體系結(jié)構(gòu)的特點:每條數(shù)據(jù)處理指令都對算術(shù)邏輯單元和移位器控制,實現(xiàn)了ALU和移位器的最大利用;地址自動增加和減少尋址模式,優(yōu)化程序循環(huán);多寄存器裝載和存儲指令實現(xiàn)最大數(shù)據(jù)吞吐量;所有指令的條件執(zhí)行實現(xiàn)最快速的代碼執(zhí)行。2.1ARM簡介各ARM體系結(jié)構(gòu)版本ARM體系結(jié)構(gòu)從最初開發(fā)到現(xiàn)在有了很大的改進,并仍在完善和發(fā)展。為了清楚的表達每個ARM應(yīng)用實例所使用的指令集,ARM公司定義了7種主要的ARM指令集體系結(jié)構(gòu)版本,以版本號V1~V7表示。2.1ARM簡介各ARM體系結(jié)構(gòu)版本——V1

該版本的ARM體系結(jié)構(gòu),只有26位的尋址空間,沒有商業(yè)化,其特點為:基本的數(shù)據(jù)處理指令(不包括乘法);字節(jié)、字和半字加載/存儲指令;具有分支指令,包括在子程序調(diào)用中使用的分支和鏈接指令;在操作系統(tǒng)調(diào)用中使用的軟件中斷指令。2.1ARM簡介各ARM體系結(jié)構(gòu)版本——V2

同樣為26位尋址空間,現(xiàn)在已經(jīng)廢棄不再使用,它相對V1版本有以下改進:具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中的兩個以上的分組寄存器;具有原子性加載/存儲指令SWP和SWPB。2.1ARM簡介各ARM體系結(jié)構(gòu)版本——V3

尋址范圍擴展到32位(目前已廢棄),具有獨立的程序:具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中具有的兩個以上的分組寄存器;具有原子性加載/存儲指令SWP和SWPB。2.1ARM簡介各ARM體系結(jié)構(gòu)版本——V4

不在為了與以前的版本兼容而支持26位體系結(jié)構(gòu),并明確了哪些指令會引起未定義指令異常發(fā)生,它相對V3版本作了以下的改進:半字加載/存儲指令;字節(jié)和半字的加載和符號擴展指令;具有可以轉(zhuǎn)換到Thumb狀態(tài)的指令(BX);增加了用戶模式寄存器的新的特權(quán)處理器模式。2.1ARM簡介各ARM體系結(jié)構(gòu)版本——V5

在V4版本的基礎(chǔ)上,對現(xiàn)在指令的定義進行了必要的修正,對V4版本的體系結(jié)構(gòu)進行了擴展并并增加了指令,具體如下:改進了ARM/Thumb狀態(tài)之間的切換效率;E---增強型DSP指令集,包括全部算法操作和16位乘法操作;J----支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能。2.1ARM簡介各ARM體系結(jié)構(gòu)版本——V62001年推出ARMv6,它在許多方面做了改進。如內(nèi)存系統(tǒng)、異常處理和較好地支持多處理器。具體如下:SIMD擴展使得廣大的軟件應(yīng)用如Video和Audiocodec的性能提高了4倍;Thumb-2和TrustZone技術(shù)也用于ARMv6中。ARMv6第一個實現(xiàn)是2002年春推出的ARM1136J(F)-STM處理器,2003年又推出了

ARM1156T2(F)-S

和ARM1176JZ(F)-S處理器。2.1ARM簡介各ARM體系結(jié)構(gòu)版本——V7

ARMv7定義了3種不同的處理器配置(processorprofiles):

ProfileA—面向復雜、基于虛擬內(nèi)存的OSProfileR—針對實時系統(tǒng)的ProfileM—針對低成本應(yīng)用的微控制器的所有ARMv7profiles實現(xiàn)Thumb-2技術(shù),同時還包括了NEON?技術(shù)的擴展,提高DSP和多媒體處理吞吐量400%

,并提供浮點支持以滿足下一代3D圖形、游戲以及傳統(tǒng)嵌入式控制應(yīng)用的需要。2.1ARM簡介ARM處理器核簡介ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列已經(jīng)是ARM11了,而ARM6核以及更早的系列已經(jīng)很罕見了。目前應(yīng)用比較廣泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleARM11Cortex2.1ARM微處理器系列ARM微處理器目前包括下面幾個系列通用系列1ARM7系列2ARM9系列3ARM9E系列4ARM10E系列5ARM11系列6Cortex系列安全系列7SecurCore系列體系結(jié)構(gòu)版本(Architecture)ARMv4TARMv5TEARMv6ARMCortex(v7)ProcessorFamilyARM7ARM9ARM10ARM11ARMCortex按應(yīng)用特征分類應(yīng)用處理器

ApplicationProcessor實時控制處理器

Real-timeController微控制器

Micro-controller特征:MMU,Cache最快頻率、最高性能、合理功耗特征:MPU,Cache實時響應(yīng)、合理性能、較低功耗特征:nosub-memorysystem一般性能、最低成本、極低功耗ARMFamilyARM7?FamilyARM9?FamilyARM10?FamilyARM11?Family150DMIPS300DMIPS500DMIPS1000DMIPSARMCortex?FamilyARM720TARM1136JARM1176JZARM1026EARM920T/ARM922TARM926EJCortexAApplicationProcessorARM7TDMIARM1156T2ARM1026EARM946ECortexREmbeddedRTControllerARM7TDMIARM966EARM968ECortexMMicro-controllerARMArchitecture系列相應(yīng)產(chǎn)品性能特點ARM7系列ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ三級流水性能:0.9MIPS/MHz,可達到130MIPs(Dhrystone2.1)

ARM9系列ARM920T,ARM922T

五級流水,性能:1.1MIPS/MHz,可達300MIPS(Dhrystone2.1),單32-bitAMBAbus接口,支持MMUARM9E系列ARM926EJ-S,RM946E-S,ARM966E-S,ARM968E-S,ARM996HS

五級流水,支持DSP指令。性能:1.1MIPS/MHz,可達300MIPS(Dhrystone2.1),高性能AHB,軟核(softIP)

ARM10系列ARM1020E,ARM1022EARM1026EJ-S

6級流水支持分支預(yù)測(branchprediction),支持DSP指令。性能:1.35MIPS/MHz,可達430+Dhrystone2.1

MIPS,可選支持高性能浮點操作,雙64位總線接口,內(nèi)部64位數(shù)據(jù)通路系列相應(yīng)產(chǎn)品性能特點ARM11系列ARM11MPCore,ARM1136J(F)-S,ARM1156T2(F)-S,ARM1176JZ(F)-S

8級流水線(9級ARM1156T2(F)-S),獨立的load-store和arithmetic流水線,支持分支預(yù)測和返回棧(ReturnStack)。強大的ARMv6指令集,支持DSP,SIMD(SingleInstructionMultipleData)擴展,支持ARMTrustZone、Thumb-2核心技術(shù)。740Dhrystone2.1MIPS,低功耗0.6mW/MHz(0.13μm,1.2V)Cortex系列Cortex-A9MPCoreCortex-A9SingleCoreProcessorCortex-A8,Cortex-M3,Cortex-R4Cortex-A系列:面向用于復雜OS和應(yīng)用的應(yīng)用處理器(applicationsprocessors),支持ARM,ThumbandThumb-2指令集。Cortex-R系列:面向嵌入式實時領(lǐng)域的嵌入式處理器,支持ARM,Thumb,和Thumb-2指令集。Cortex-M系列:面向深嵌入式價格敏感的嵌入式處理器,只支持Thumb-2指令集SecurCore系列SecurCoreSC100,SecurCoreSC200用于SmartCard和SecureIC的32-bit解決方案。支持ARM和Thumb

指令集,軟核。具有安全特征和低成本安全存儲保護單元

當前的主流ARM處理器ARM7世界上最為廣泛使用的CPU之一<100MHzARM9100-300MHzARMPowerdshipmentinyearof2005,31%isARM9based.ARM11芯片廣泛應(yīng)用ARM11300-700+MHzSIMD指令擴展支持更豐富的多媒體應(yīng)用40家授權(quán)芯片公司,一些已開始量產(chǎn)FOMAN902iFirstARM11basedphoneOMAP2420i.MX31/i.MX31L目前最快的嵌入式處理器之一最快的處理器A9提供超過10,000DMIPS的性能運行于2GHz頻率(40nm制造工藝)功耗小于1.9WARMCortexA9ApplicationProcessor目前最快的嵌入式處理器之一ARMCortexA9ApplicationProcessorTI獲得首家ARMCortex-A9授權(quán)

OMAP4430的芯片將提供比目前的OMAP3系列芯片強大一倍的性能,使應(yīng)用程序在移動設(shè)備上運行的速度更快。雙核芯片將給移動設(shè)備帶來1080p高清視頻重放等功能。處理器的時鐘速度最多可達到1GHz,耗電量比它以前的產(chǎn)品減少50%。Cortex-M3實現(xiàn)$1

ARM芯片ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz–30%overARM7TDMI33Kgates–30%smallerthanARM7TDMILuminaryMicro的Stellaris系列MCU產(chǎn)品售價僅1美元ARMCortex-M3微控制器內(nèi)核,專門針對MCU應(yīng)用領(lǐng)域而設(shè)計,突出低成本、低功耗和高效率。預(yù)?。‵etch)譯碼(Decode)執(zhí)行(Execute)預(yù)?。‵etch)譯碼(Decode)執(zhí)行(Execute)訪存(Memory)寫入(Write)預(yù)取(Fetch)譯碼(Decode)發(fā)送(Issue)預(yù)?。‵etch)預(yù)?。‵etch)執(zhí)行(Execute)訪存(Memory)寫入(Write)譯碼(Decode)發(fā)送(Issue)執(zhí)行(Execute)轉(zhuǎn)換(Snny)訪存(Memory)寫入(Write)ARM7ARM9ARM10ARM112.1ARM簡介各版本指令情況項目ARM7ARM9ARM10ARM11流水線3568典型頻率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS**/MHz0.971.11.31.2架構(gòu)馮

諾伊曼哈佛哈佛哈佛2.1ARM簡介各版本情況一覽1ARM7系列ARM7微處理器系列特點極低的功耗(0.28mW/MHz),適合對功耗要求較高的應(yīng)用具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便能夠提供0.9MIPS/MHz的三級流水線結(jié)構(gòu)支持的操作系統(tǒng):uC/OS-II、uCLinux等性能最高可達130MIPSC5000:0.5mW/MHzARMT7DMI:0.28mW/MHzCortex-M3:0.19mW/MHz1ARM7系列(續(xù))ARM7系列微處理器的主要應(yīng)用領(lǐng)域為工業(yè)控制、網(wǎng)絡(luò)和調(diào)制解調(diào)器移動電話、消費電子等ARM7系列包括如下幾種類型ARM7TDMI、ARM7TDMI-SARM7TMDI是目前使用最廣泛的32位嵌入式處理器,屬低端ARM處理器核TDMI的基本含義為T:支持16位壓縮指令集ThumbD:支持片上DebugM:內(nèi)嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上斷點和調(diào)試點ATMELARM7框圖2ARM9系列ARM9系列微處理器具有以下特點5級流水線,指令執(zhí)行效率更高提供1.1MIPS/MHz的加速能力全性能的MMU,支持WindowsCE、EmbeddedLinux等支持數(shù)據(jù)Cache和指令Cache性能最高可達300MIPS2ARM9系列(續(xù))ARM9系列微處理器主要應(yīng)用無線設(shè)備機頂盒高端打印機、數(shù)字照相機和數(shù)字攝像機汽車電子ARM9系列微處理器類型ARM920TARM922TATMELARM9框圖3ARM9E系列ARM9E系列微處理器的主要特點支持DSP指令集(MAC)5級整數(shù)流水線,指令執(zhí)行效率更高支持VFP9浮點處理協(xié)處理器全性能的MMU,支持WindowsCE、EmbeddedLinux等支持數(shù)據(jù)Cache和指令Cache性能最高可達300MIPS3ARM9E系列(續(xù))ARM9系列微處理器主要應(yīng)用工業(yè)控制無線設(shè)備和網(wǎng)絡(luò)設(shè)備數(shù)字消費品、圖像處理設(shè)備、存儲設(shè)備ARM9E系列微處理器類型ARM926EJ-SARM946E-SARM966E-S、ARM968E-SARM996HS4ARM10E系列ARM10E系列微處理器的主要特點支持DSP指令集(MAC)6級整數(shù)流水線,指令執(zhí)行效率更高支持VFP10浮點處理協(xié)處理器全性能的MMU,支持WindowsCE、EmbeddedLinux支持數(shù)據(jù)Cache和指令Cache性能最高可達400MIPS4ARM10E系列(續(xù))ARM10E系列微處理器主要應(yīng)用手持設(shè)備工業(yè)控制數(shù)字消費品、汽車電子圖像處理設(shè)備ARM10E系列微處理器類型ARM1020EARM1022EARM1026EJ-S5ARM11系列高性能8級流水增強的ARMv6體系結(jié)構(gòu)與同等的ARM10相比較,在同樣的時鐘頻率下,性能提高了近50%時鐘頻率達到500~750MHz低功耗ARM11系列微處理器采用了兩種先進的節(jié)能方式,使其功耗極低0.6mW/MHz(0.13μm,1.2V)C5000:0.5mW/MHzARMT7DMI:0.28mW/MHzCortex-M3:0.19mW/MHz5ARM11系列ARM11系列微處理器主要應(yīng)用消費電子、汽車電子數(shù)據(jù)存儲、圖像處理設(shè)備網(wǎng)絡(luò)基礎(chǔ)、無線設(shè)備ARM11系列微處理器類型ARM11MPCore(多核處理器)ARM1136J(F)-SARM1156T2(F)-SARM1176JZ(F)-S三星S3C6410處理器ARM1176JZF-S核最高主頻可達667MHz魅族M8Appleiphone6Cortex系列ARMCortex-A

Series——高性能應(yīng)用ApplicationsprocessorsforcomplexOSanduserapplications支持ARM、Thumb和Thumb-2指令集帶MMU,運行Linux、WindowsCE等操作系統(tǒng)TIOMAP35xx,ST(意法半導體)ARMCortex-RSeries——實時性應(yīng)用Embeddedprocessorsforreal-timesystems支持ARM、Thumb和Thumb-2指令集不帶MMU,運行Vxworks等實時操作系統(tǒng)6、Cortex系列(續(xù))ARMCortex-MSeries——低成本應(yīng)用EmbeddedprocessorsoptimizedforcostsensitiveapplicationsSupportstheThumb-2instructionsetonly不帶MMU,不加載或者加載簡單嵌入式操作系統(tǒng)AcceleratedTechnology公司的NucleusPLUSuC/OS-II、FreeRTOS典型芯片TI—Stellaris

LM3Sxxxx系列NXPLPC1000系列,ATMEL—SAM3系列C5000:0.5mW/MHzARM7TDMI:0.28mW/MHzCortex-M3:0.19mW/MHz6、Cortex系列(續(xù))愛可視7(320G)¥4150采用600MHz超標量ARMCortex-A8處理器的OMAP3實施方案OMAP3430處理器ARMCortex-A87SecurCore系列SecurCore系列微處理器專為安全需要而設(shè)計具有ARM體系結(jié)構(gòu)的低功耗、高性能的特點提供了完善的32位RISC技術(shù)的安全解決方案SecurCore系列微處理器在系統(tǒng)安全方面的特點帶有靈活的保護單元,以確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全采用軟處理器內(nèi)核技術(shù)(處理器布局隨機化),防止外部對其進行掃描探測可集成用戶自己的安全特性和其他協(xié)處理器7SecurCore系列(續(xù))SecurCore系列微處理器的應(yīng)用領(lǐng)域電子商務(wù)電子銀行電子政務(wù)網(wǎng)絡(luò)和認證系統(tǒng)SecurCore系列微處理器包含四種類型SecurCoreSC100SecurCoreSC110SecurCoreSC200SecurCoreSC210ARM微處理器的應(yīng)用選型ARM微處理器內(nèi)核結(jié)構(gòu)的選擇帶有MMU功能的ARM內(nèi)核ARM720T、ARM92xT、Cortex-A8支持WinCE、EmbeddedLinux等操作系統(tǒng)不含有MMU功能的ARM內(nèi)核ARM7TDMI、Cortex-M3、Cortex-R4支持uCLinux操作系統(tǒng)不支持WindowsCE、EmbeddedLinux等操作系統(tǒng)是否支持DSP或Java是否支持浮點協(xié)處理器VFPARM微處理器應(yīng)用選型(續(xù))系統(tǒng)的工作頻率ARM7系列的典型處理速度為0.9MIPS/MHz系統(tǒng)主時鐘為20MHz-133MHzARM9系列的典型處理速度為1.1MIPS/MHz系統(tǒng)主時鐘頻率為100MHz-233MHzARM10系統(tǒng)主時鐘高達400MHzARM11系統(tǒng)主時鐘高達750MHzCortex-M3—1.25MIPS/MHz,頻率高達100MHzCortex-R4—1.6MIPS/MHz,頻率高達400MHzCortex-A8—2.0MIPS/MHz,頻率高達1GHzARM微處理器應(yīng)用選型(續(xù))芯片內(nèi)存儲器的容量大多數(shù)的ARM微處理器片內(nèi)存儲器的容量都不太大,需要用戶在設(shè)計系統(tǒng)時外擴存儲器有部分芯片具有相對較大的片內(nèi)存儲空間如ATMEL的AT91F40162就具有高達2MB的片內(nèi)程序存儲空間用戶在設(shè)計時可考慮選用這種類型,以簡化系統(tǒng)的設(shè)計ARM微處理器應(yīng)用選型(續(xù))片內(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)的可靠性IIS:Inter-ICSoundbusRTC:Real-TimeClock2024/6/1754第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O2.2ARM7TDMI簡介ARM7TDMI基于ARM體系結(jié)構(gòu)V4版本,是目前低端的ARM核。具有廣泛的應(yīng)用,其最顯著的應(yīng)用為數(shù)字移動電話。注意:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成現(xiàn)實的芯片。2.2ARM7TDMI簡介ARM7TDMI支持32位尋址范圍,并彌補了ARM6不能在低于5V電源電壓下工作的不足。ARM7TDMI的后綴意義為:支持高密度16位的Thumb指令集;支持片上調(diào)試;支持64位乘法;支持Embeded-ICE觀察硬件;ARM7TDMI的可綜合(synthesizable)版本(軟核),對應(yīng)用工程師來說其編程模型與ARM7TDMI一致;ARM7TDMI-S2.2ARM7TDMI簡介ARM7TDMI處理器是ARM通用32位微處理器家族的成員之一。它具有優(yōu)異的性能,但功耗卻很低,使用門的數(shù)量也很少。它屬于精簡指令集計算機(RISC),比復雜指令集計算機(CISC)要簡單得多。這樣的簡化實現(xiàn)了:高的指令吞吐量;出色的實時中斷響應(yīng);小的、高性價比的處理器宏單元。2.2ARM7TDMI三級流水線ARM7TDMI處理器使用流水線來增加處理器指令流的速度。這樣可使幾個操作同時進行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。

ARM7TDMI的流水線分3級,分別為:取指

譯碼

執(zhí)行2.2ARM7TDMI存儲器訪問ARM7TDMI處理器使用了馮·諾依曼(VonNeumann)結(jié)構(gòu),指令和數(shù)據(jù)共用一條32位總線。只有裝載、存儲和交換指令可以對存儲器中的數(shù)據(jù)進行訪問。數(shù)據(jù)可以是字節(jié)(8位)、半字(16位)或者字(32位)。第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O2.3系統(tǒng)內(nèi)部結(jié)構(gòu)圖ARM7TDMI處理器部件和主要信號路徑的框圖如圖所示。它內(nèi)部由處理器核、用于邊界掃描的TAP控制器和在線仿真器ICE組成。雙向數(shù)據(jù)總線D[31:0]被分割成單向輸入和輸出總線,以便于與外部存儲器兼容。2.3ARM7TDMI的模塊和內(nèi)核框圖ARM7TDMI模塊地址寄存器寄存器組31*32位寄存器(6個狀態(tài)寄存器)地址增量器乘法器桶形移位器32位ALU寫數(shù)據(jù)寄存器指令流水線讀數(shù)據(jù)寄存器Thumb指令譯碼器指令譯碼和邏輯控制ADDR[31:0]CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE[1:0]PROT[1:0]TRANS[1:0]DBG輸出DBG輸入CP控制CP握手WDATA[31:0]RDATA[31:0]掃描調(diào)試控制A總線B總線ALU總線增量器總線PC總線2.3ARM7TDMI功能信號圖ARM7TDMI第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O2.4體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:字節(jié)8位半字16位(必須分配為占用2個字節(jié))字32位(必須分配為占用4個字節(jié))1112342體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型注意:V4版本之后的ARM結(jié)構(gòu)都支持這3種結(jié)構(gòu)(包括V4版本),而以前的版本只支持字節(jié)和字;當數(shù)據(jù)類型定義為無符號型時,N位數(shù)據(jù)值使用正常的二進制格式表示范圍為0~2N-1的非負整數(shù);當數(shù)據(jù)類型定義為有符號型時,N位數(shù)據(jù)值使用2的補碼格式表示范圍為-2N-1~+2N-1-1的整數(shù);2.4體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型注意:所有數(shù)據(jù)操作,例如ADD,都以字為單位;裝載和保存指令可以對字節(jié)、半字和字進行操作,當裝載字節(jié)或半字時自動實現(xiàn)零擴展或符號擴展;ARM指令的長度剛好是1個字(分配為占用4個字節(jié)),Thumb指令的長度剛好是半字(占用2個字節(jié))。2.4體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O2.5處理器狀態(tài)處理器狀態(tài)ARM7TDMI處理器內(nèi)核使用V4T版本的ARM結(jié)構(gòu),該結(jié)構(gòu)包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI處理器有兩種操作狀態(tài):ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令;Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的ARM指令。注意:兩個狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。2.5處理器狀態(tài)處理器狀態(tài)

使用BX指令將ARM7TDMI內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換(詳見第3章),程序如下所示。;從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)地址標號第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O處理器模式說明備注

用戶(usr)正常程序執(zhí)行模式不能直接切換到其它模式

系統(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)復位和軟件中斷響應(yīng)時進入此模式

中止(abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處

未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式2.6處理器模式處理器7種模式2.6處理器模式特權(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)復位和軟件中斷響應(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)2.6處理器模式異常模式處理器模式說明備注

用戶(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)復位和軟件中斷響應(yīng)時進入此模式

中止(abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處

未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式

未定義(und)

中止(abt)

管理(svc)

中斷(irq)

快中斷(fiq)

這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進入相應(yīng)的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。2.6處理器模式用戶和系統(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)復位和軟件中斷響應(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)如何知道處理器正處于什么模式?NZCV——IM0M1M2M3M4TF—...313029282726876543210如何知道處理器正處于什么模式?程序狀態(tài)寄存器(CPSR)的M0-M4位有記錄控制位模式位ModeM0M1M2M3M4CPSR寄存器的格式M[4:0]模式10000用戶10001快中斷10010中斷10011管理10111中止11011未定義11111系統(tǒng)CPSR模式位設(shè)置表模式的切換切換至系統(tǒng)模式

mrsr0,cpsr bicr0,r0,#0x1f orrr0,r0,#0x1f msrcpsr_cxfs,r0第2章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.復位11.存儲器及存儲器映射I/O2.7內(nèi)部寄存器ARM處理器中有大量的寄存器可供編程人員使用,如用戶模式下:(r0-r14為寄存器名稱) movr0,#1 movr1,#2 movr2,#3 movr3,#4 movr4,#5 movr5,#6 movr6,#7 movr7,#8 movr8,#9 movr9,#10 movr10,#11 movr11,#12 movr12,#13 movr13,#14 movr14,#152.7內(nèi)部寄存器簡介

在ARM7TDMI處理器內(nèi)部有37個用戶可見的寄存器。在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器也不盡相同。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq*R9(SB,v6)R9R9_fiq*R10(SL,v7)R10R10_fiq*R11(FP,v8)R11R11_fiq*R12(IP)R12R12_fiq*R13(SP)R13R13_svc*R13_abt*R13_und*R13_irq*R13_fiq*R14(LR)R14R14_svc*R14_abt*R14_und*R14_irq*R14_fiq*R15(PC)R15狀態(tài)寄存器R16(CPSR)CPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_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)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0

在匯編語言中寄存器R0~R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0

其中R0~R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8

寄存器R8~R14為分組寄存器。它們所對應(yīng)的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8

寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器

寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)

寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個小的固定偏移量)。Lable程序A程序BR142.7內(nèi)部寄存器R14(LR)寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執(zhí)行過程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標號Lable,執(zhí)行程序B。同時硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);2.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;2.7內(nèi)部寄存器R14寄存器與異常發(fā)生

異常發(fā)生時,程序要跳轉(zhuǎn)至異常服務(wù)程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個小常量的偏移。2.7內(nèi)部寄存器R14寄存器注意要點

當發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。2.7內(nèi)部寄存器R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;2.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞R14_irq2.7內(nèi)部寄存器R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;2.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;5.硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯誤;R14_irq被破壞6.在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發(fā)生錯誤,將不能正確返回;returnreturn

解決辦法是確保R14的對應(yīng)版本在發(fā)生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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),它指向正在取指的地址。可以認為它是一個通用寄存器,但是對于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測的。2.7內(nèi)部寄存器讀R15的限制

正常操作時,從R15讀取的值是處理器正在取指的地址,即當前正在執(zhí)行指令的地址加上8個字節(jié)(兩條ARM指令的長度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。LDRR0,PC??????PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼2.7內(nèi)部寄存器讀R15的限制

當使用STR或STM指令保存R15時,會有一個例外。這些指令可能將當前指令地址加8字節(jié)或加12字節(jié)保存(將來可能還有其它數(shù)字)。偏移量是8還是12取決于具體的ARM芯片,但是對于一個確定的芯片,這個值是一個常量。所以最好避免使用STR和STM指令來保存R15,如果很難做到,那么應(yīng)當在程序中計算出該芯片的偏移量。2.7內(nèi)部寄存器讀R15的限制計算偏移量(PC值和當前指令地址的差)程序代碼:SUB R1,PC,#4 ;R1=下面STR指令的地址STR PC,[R0] ;保存STR指令地址+偏移量LDR R0,[R0] ;然后重裝SUB R0,R0,R1 ;計算偏移量04812ARM狀態(tài)2.7內(nèi)部寄存器寫R15的限制

正常操作時,寫入R15的值被當作一個指令地址,程序從這個地址處繼續(xù)執(zhí)行(相當于執(zhí)行一次無條件跳轉(zhuǎn))。2.7內(nèi)部寄存器寫R15的限制

由于ARM指令以字節(jié)為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在ARM結(jié)構(gòu)V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實際目標地址(寫入R15的值)和0xFFFFFFFC相與得到;在ARM結(jié)構(gòu)V4版及以上版本中,寫入R15的值的最低兩位為0,如果不是,結(jié)果將不可預(yù)測。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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程序狀態(tài)寄存器CPSR

寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。詳細描述參看2.8小節(jié)。2.7內(nèi)部寄存器ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系Thumb狀態(tài)寄存器與ARM狀態(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)。Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆棧指針(R13)

連接寄存器(R14)

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

低寄存器高寄存器2.7內(nèi)部寄存器在Thumb狀態(tài)中訪問高寄存器

在Thumb狀態(tài)中,高寄存

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論