ARM和嵌入式系統(tǒng)設(shè)計(jì)2_第1頁(yè)
ARM和嵌入式系統(tǒng)設(shè)計(jì)2_第2頁(yè)
ARM和嵌入式系統(tǒng)設(shè)計(jì)2_第3頁(yè)
ARM和嵌入式系統(tǒng)設(shè)計(jì)2_第4頁(yè)
ARM和嵌入式系統(tǒng)設(shè)計(jì)2_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、ARM 9體系結(jié)構(gòu)體系結(jié)構(gòu)嵌入式處理器嵌入式處理器嵌入式處理器概述嵌入式處理器概述v早期的嵌入式系統(tǒng)通常使用普通個(gè)人計(jì)算機(jī)中的通用處理器v近年來(lái),隨著大量先進(jìn)的微處理器制造技術(shù)的發(fā)展,越來(lái)越多的嵌入式系統(tǒng)用嵌入式處理器建造,而不是用通用目的的處理器。 這些嵌入式處理器可以大致分為以下幾類: 注重嵌入式處理器的尺寸、能耗和價(jià)格。應(yīng)用于PDA等不注重計(jì)算的設(shè)備; 注重嵌入式處理器的性能。應(yīng)用于路由器等計(jì)算密集型的設(shè)備; 注重嵌入式處理器的性能、尺寸、能耗和價(jià)格。應(yīng)用于蜂窩電話等設(shè)備;嵌入式處理器概述嵌入式處理器概述v 嵌入式微處理器是嵌入式系統(tǒng)的核心。目前32位嵌入式微處理器是市場(chǎng)的主流。v 32

2、位嵌入式微處理器市場(chǎng),我們可以發(fā)現(xiàn)超過(guò)100家的芯片供應(yīng)商和近30種指令體系結(jié)構(gòu)。v 在1996年以前,最成功的嵌入式微處理器是Motorola公司的68000系列。此外還包括其它體系結(jié)構(gòu),如Intel公司的I960,Motorola公司的Coldfire,Sun公司的Sparc,以及嵌入式X86系列平臺(tái)。v 當(dāng)然,最引人注目的還是ARM公司的ARM系列、MIPS公司的MIPS系列,以及Hitachi公司的SuperH系列ARMARM處理器的使用量處理器的使用量ARM的應(yīng)用無(wú)處不在的應(yīng)用無(wú)處不在ARM公司簡(jiǎn)介公司簡(jiǎn)介 v 英文全稱:Advanced RISC Machines v 國(guó)家:英國(guó)(

3、歐洲) v 行業(yè):電子 半導(dǎo)體 微處理器 智能手機(jī) v 總部:英國(guó)劍橋 v CEO:沃倫.伊斯特 v 競(jìng)爭(zhēng)對(duì)手:英特爾 v 市場(chǎng)份額 :v 手機(jī)處理器90%的市場(chǎng)份額 v 上網(wǎng)本處理器30%的市場(chǎng)份額 v 平板電腦處理器80%的市場(chǎng)份額 ARM產(chǎn)品產(chǎn)品 ARM系列處理器已經(jīng)被廣泛的應(yīng)用于移動(dòng)電話、手持式計(jì)算機(jī)以及各種各樣的嵌入式應(yīng)用領(lǐng)域,成為世界上銷量最大的32位微處理器。 據(jù)最新統(tǒng)計(jì),全球有103家巨型IT公司在采用ARM技術(shù),20家最大的半導(dǎo)體廠商中有19家是ARM的用戶,包括德州儀器,意法半導(dǎo)體,Philips,Intel等。ARM支持支持OS類型類型 v Linux、WinCE、iOS

4、、Symbianv 2011年1月10日微軟公司宣布,下一版Windows將正式支持ARM處理器,即Windows8支持ARM。這是計(jì)算機(jī)工業(yè)發(fā)展歷史上的一件大事,標(biāo)識(shí)著x86處理器的主導(dǎo)地位發(fā)生動(dòng)搖。ARM處理器的3大特點(diǎn)如下:v 小體積、低功耗、成本低、高性能;v 16位/32位雙指令集;v 全球眾多的合作伙伴。當(dāng)前ARM體系結(jié)構(gòu)的擴(kuò)充包括:v Thumb:16位指令集,用以改善代碼密度;v DSP:用于DSP應(yīng)用的算術(shù)運(yùn)算指令集;v Jazeller:允許直接執(zhí)行Java代碼的擴(kuò)充。ARM處理器系列提供的解決方案包括:v 在無(wú)線、消費(fèi)電子和圖像應(yīng)用方面的開(kāi)放平臺(tái);v 存儲(chǔ)、自動(dòng)化、工業(yè)和

5、網(wǎng)絡(luò)應(yīng)用的嵌入式實(shí)時(shí)系統(tǒng);v 智能卡和SIM卡的安全應(yīng)用。ARM處理器的特點(diǎn)ARM7系列系列v ARM7采用馮諾依曼(Von-Neumann)結(jié)構(gòu),數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器使用同一存儲(chǔ)空間,用相同的指令訪問(wèn) 。此結(jié)構(gòu)也被大多數(shù)計(jì)算機(jī)所采用。v ARM7為三級(jí)流水線結(jié)構(gòu)(取指,譯碼,執(zhí)行),平均功耗為0.6mW/MHz,時(shí)鐘速度為66MHz,每條指令平均執(zhí)行1.9個(gè)時(shí)鐘周期。 v ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、 ARM720T、ARM7EJ。v ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義

6、為(對(duì)其它系列也適用): T: 支持16為壓縮指令集Thumb,稱為T變種D: 支持片上Debug,稱為D變種M:內(nèi)嵌硬件乘法器 Multiplier,稱為M變種I: 嵌入式ICE,支持片上斷點(diǎn)和調(diào)試,稱為I變種ARM處理器系列ARM7系列產(chǎn)品系列產(chǎn)品 項(xiàng)目項(xiàng)目 型號(hào)型號(hào)Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令指令版本版本ARM7TDMINoNoAHBYesNoNov4TARM7TDMI-SNoNoAHBYesNoNov4TARM720T8KBMMUAHBYesNoNov4TARM7EJNoNoAHBYesYesYesv5TEJARM9系列系列v

7、 ARM7采用的Neumann結(jié)構(gòu),取指令和取操作數(shù)都是通過(guò)一條總線分時(shí)進(jìn)行,這樣,在高速運(yùn)算時(shí),不但不能同時(shí)取指令和取操作數(shù),而且還會(huì)造成傳輸通道上的瓶頸現(xiàn)象。v ARM9采用哈佛(Harvard)結(jié)構(gòu),程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器分開(kāi),提供了較大的存儲(chǔ)器帶寬。同時(shí),大多數(shù)DSP都采用此結(jié)構(gòu)。v ARM9為五級(jí)流水(取指,譯碼,執(zhí)行,緩沖/數(shù)據(jù),回寫(xiě)),平均功耗為0.7mW/MHz。時(shí)鐘速度為120MHz-200MHz,每條指令平均執(zhí)行1.5個(gè)時(shí)鐘周期。v ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,主要應(yīng)用在手持產(chǎn)品、視頻電話、PDA、數(shù)字消費(fèi)產(chǎn)品、機(jī)頂盒、家

8、用網(wǎng)關(guān)等方面。ARM9系列產(chǎn)品系列產(chǎn)品 項(xiàng)目項(xiàng)目 型號(hào)型號(hào)Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令指令版本版本ARM920T16KB/16KBMMUASBYesNoNov4TARM922T8KB/8KBMMUASBYesNoNov4TARM940T4KB/4KBMMUASBYesNoNov4TARM9E系列系列vARM9E系列微處理器包括如下4種類型的核:ARM926EJ-S、ARM946E-S和ARM966E-S,見(jiàn)表2-3。vARM9E系列是一種包含有微控制器、DSP、Java功能的綜合處理器,強(qiáng)化了數(shù)字信號(hào)處理能力,適用于需要DSP和微控制

9、器結(jié)合使用的情況,并且把Thumb技術(shù)和DSP都擴(kuò)展到了ARM指令中,并且具有EmbededICE-RT邏輯,更好地適應(yīng)了實(shí)時(shí)系統(tǒng)開(kāi)發(fā)的需要。同時(shí)ARM9E使用了Jazelle增強(qiáng)技術(shù),該技術(shù)支持一種新的Java操作狀態(tài),在硬件中執(zhí)行Java字節(jié)碼。ARM9E系列產(chǎn)品系列產(chǎn)品 項(xiàng)目項(xiàng)目 型號(hào)型號(hào)Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令指令版本版本ARM926EJ-S可變MMU2*AHBYesYesYesv5TEJARM946E-S可變MPUAHBYesYesNov5TEARM966E-S無(wú)-AHBYesYesNov5TEARM968E-S無(wú)DMA

10、AHBYesYesNov5TEARM10系列系列v ARM10系列微處理器包括:ARM1020E和ARM1022E等型號(hào),見(jiàn)表2-4。v ARM10系列采用了新的體系結(jié)構(gòu),其核心為使用了向量浮點(diǎn)單元,有強(qiáng)大的浮點(diǎn)運(yùn)算能力,并且增加了Cache容量和總線寬度,并且具有低功耗的特點(diǎn)。 ARM10系列微處理器主要應(yīng)用于下一代無(wú)線設(shè)備、視頻消費(fèi)品等。ARM10系列產(chǎn)品系列產(chǎn)品 項(xiàng)目項(xiàng)目 型號(hào)型號(hào)Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令指令版本版本ARM1020E32KB/32KBMMU2*AHBYesYesNov5TEARM1022E16KB/16KBM

11、MU2*AHBYesYesNov5TEARM1022E可變MPUMMU2*AHBYesYesYesv5TEJARMStrong/Xscale系列系列v StrongARM是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Intel公司的設(shè)計(jì)技術(shù),以及ARM體系結(jié)構(gòu)的電源效率,其體系結(jié)構(gòu)在軟件上兼容ARMv4,同時(shí)又具有Intel技術(shù)優(yōu)點(diǎn)。StrongARM是Intel公司為手持消費(fèi)類電子和移動(dòng)計(jì)算與通信設(shè)備生產(chǎn)的嵌入式處理器。采用StrongARM架構(gòu)的處理器有:SA-1、SA-110、SA-1100、SA1110和IXP1200。v Xscale是基于ARMv5體系結(jié)構(gòu)的解決方案

12、,是一款性能全、性價(jià)比高、功耗低的處理器,支持16位的Thumb和DSP指令集,主要應(yīng)用于數(shù)字移動(dòng)電話、個(gè)人數(shù)字助理和網(wǎng)絡(luò)產(chǎn)品等。 Xscale架構(gòu)的處理器有:PXA250、PXA255和PXA270等。ARM核核體系結(jié)構(gòu)體系結(jié)構(gòu)ARM1V1ARM2V2ARM2aS,ARM3V2aARM6,ARM600,ARM610V3ARM7,ARM700,ARM710V3ARM7TDMI,ARM710T,ARM720T ARM740TV4TStrong ARM,ARM8,ARM810V4ARM9TDMI,ARM920T,ARM940TV4TARM9E-SV5TEARM10TDMI,ARM1020EV5TE

13、ARM11,ARM1156T2-S,ARM1156T2F-S,ARM1176JZ-S,ARM11JZF-SV6西安電子科技大學(xué)電子對(duì)抗研究所ARM流水線結(jié)構(gòu)的發(fā)展預(yù)取預(yù)?。‵etch)譯碼譯碼(Decode)執(zhí)行執(zhí)行(Execute)預(yù)取預(yù)取(Fetch)譯碼譯碼(Decode)執(zhí)行執(zhí)行(Execute)訪存訪存(Memory)寫(xiě)入寫(xiě)入(Write)預(yù)取預(yù)?。‵etch)譯碼譯碼(Decode)發(fā)送發(fā)送(Issue)預(yù)取預(yù)?。‵etch)預(yù)取預(yù)?。‵etch)執(zhí)行執(zhí)行(Execute)訪存訪存(Memory)寫(xiě)入寫(xiě)入(Write)譯碼譯碼(Decode)發(fā)送發(fā)送(Issue)執(zhí)行執(zhí)行(Exec

14、ute)轉(zhuǎn)換轉(zhuǎn)換(Snny)訪存訪存(Memory)寫(xiě)入寫(xiě)入(Write)ARM7ARM9ARM10ARM1121ARM9TDMI流水線的變化InstructionFetch Shift + ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARM or ThumbInst DecodeReg SelectRegReadShiftALURegWriteThumbARMdecompressARM decodeInstructionFetchFETCHDECODEEXECUTEARM7TDMIv5

15、級(jí)流水線的級(jí)流水線的ARM9內(nèi)核是內(nèi)核是哈佛哈佛架構(gòu)架構(gòu),擁有,擁有獨(dú)立的指令和數(shù)據(jù)總線;指令和數(shù)據(jù)的讀獨(dú)立的指令和數(shù)據(jù)總線;指令和數(shù)據(jù)的讀取可以在同一周期進(jìn)行;取可以在同一周期進(jìn)行;v3級(jí)流水的級(jí)流水的ARM7內(nèi)核是指令和數(shù)據(jù)總線復(fù)內(nèi)核是指令和數(shù)據(jù)總線復(fù)用的用的馮馮.諾依曼諾依曼架構(gòu)架構(gòu),指令和數(shù)據(jù)的讀取不,指令和數(shù)據(jù)的讀取不能在同一周期進(jìn)行;能在同一周期進(jìn)行;v5級(jí)流水線設(shè)計(jì)把寄存器讀取、邏輯運(yùn)算、級(jí)流水線設(shè)計(jì)把寄存器讀取、邏輯運(yùn)算、結(jié)果回寫(xiě)分散在不同的流水當(dāng)中,結(jié)果回寫(xiě)分散在不同的流水當(dāng)中, 每一級(jí)每一級(jí)流水的操作簡(jiǎn)潔,提升了處理器的主頻。流水的操作簡(jiǎn)潔,提升了處理器的主頻。ARM 體系

16、結(jié)構(gòu)簡(jiǎn)介體系結(jié)構(gòu)簡(jiǎn)介具有片上總線AMBAARM處理器內(nèi)核可以通過(guò)AMBA來(lái)擴(kuò)展不同體系架構(gòu)的宏單元及I/O部件。AMBA已成為事實(shí)上的片上總線OCB(On Chip Bus)標(biāo)準(zhǔn),它有以下三類v AHB (先進(jìn)高性能總線):不但支持突發(fā)方式的數(shù)據(jù)傳送,還支持分離式總線事務(wù)處理,以進(jìn)一步提高總線的利用效率。特別在高性能的ARM架構(gòu)系統(tǒng)中,AHB有逐步取代ASB的趨勢(shì),例如在ARM1020E處理器核中。v ASB (先進(jìn)系統(tǒng)總線) :是目前ARM常用的系統(tǒng)總線,用來(lái)連接高性能系統(tǒng)模塊,支持突發(fā)(Burst)方式數(shù)據(jù)傳送。v APB (先進(jìn)外圍總線) :為外圍宏單元提供了簡(jiǎn)單的接口,也可以把APB看

17、作ASB的余部。 采用存儲(chǔ)器映像I/O的方式,即把I/O端口地址作為特殊的存儲(chǔ)器地址; 具有協(xié)處理器接口。ARM允許接16個(gè)協(xié)處理器,如CP15用于系統(tǒng)控制,CP14用于調(diào)試控制器; 采用了降低電源電壓,可工作在3.0V以下;減少門的翻轉(zhuǎn)次數(shù),當(dāng)某個(gè)功能電路不需要時(shí)禁止門翻轉(zhuǎn);減少門的數(shù)目,即降低芯片的集成度;降低時(shí)鐘頻率等一些措施降低功耗; 體積小、低成本、高性能西安電子科技大學(xué)電子對(duì)抗研究所ARM9體系結(jié)構(gòu)v 系列微處理器:包含ARM920T、ARM922T和ARM940T幾種類型,可以在高性能和低功耗特性方面提供最佳的性能。 采用5級(jí)整數(shù)流水線(取指、譯碼、執(zhí)行、訪存、回寫(xiě))級(jí)整數(shù)流水線

18、(取指、譯碼、執(zhí)行、訪存、回寫(xiě))。 提供1.1MIPS/MHz的哈佛結(jié)構(gòu)哈佛結(jié)構(gòu)。 支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 全性能的MMU。 支持Windows CE、Linux、Palm OS、UCOSII 等多種主流嵌入式操作系統(tǒng)。 MPU(內(nèi)存保護(hù)單元)支持實(shí)時(shí)操作系統(tǒng)。v ARM920T處理器核在ARM9TDMI處理器內(nèi)核基礎(chǔ)上,增加了分離式的指令Cache和數(shù)據(jù)Cache,并帶有相應(yīng)的存儲(chǔ)器管理單元I-MMU和D-MMU、寫(xiě)緩沖器及AMBA接口等,如圖2.2.3所示。 A

19、RM體系結(jié)構(gòu)簡(jiǎn)介圖2.2.3 ARM920T內(nèi)核結(jié)構(gòu) ARM體系結(jié)構(gòu)簡(jiǎn)介vARM940T處理器核采用了ARM9TDMI處理器內(nèi)核,是ARM920T處理器核的簡(jiǎn)化版本,沒(méi)有存儲(chǔ)器管理單元MMU,不支持虛擬存儲(chǔ)器尋址,而是用存儲(chǔ)器保護(hù)單元MPU來(lái)提供存儲(chǔ)保護(hù)和Cache控制。vARM9系列微處理器主要應(yīng)用于無(wú)線通信設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。典型產(chǎn)品如Samsung公司的S3C2410A。 ARM微處理器的寄存器結(jié)構(gòu) ARM微處理器支持7種運(yùn)行模式,分別為: 1. usr(用戶模式):ARM處理器正常程序執(zhí)行模式。2. fiq(快速中斷模式):用于高速數(shù)

20、據(jù)傳輸或通道處理 3. irq(外部中斷模式):用于通用的中斷處理 4. svc(管理模式):操作系統(tǒng)使用的保護(hù)模式 5. abt (數(shù)據(jù)訪問(wèn)終止模式): 當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。 6. sys(系統(tǒng)模式): 運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。 7. und(未定義指令中止模式):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。 注:ARM微處理器的運(yùn)行模式可以通過(guò)軟件改變,也可以通過(guò)外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資源是不能被訪問(wèn)的。 ARM微處理器的寄存器結(jié)構(gòu)除用戶模式以外

21、,其余的所有6種模式稱之為非用戶模式,或特權(quán)模式(Privileged Modes);其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式(Exception Modes),常用于處理中斷或異常,以及需要訪問(wèn)受保護(hù)的系統(tǒng)資源等情況。v ARM處理器在每一種處理器模式下均有一組相應(yīng)的寄存器與之對(duì)應(yīng)。即在任意一種處理器模式下,可訪問(wèn)的寄存器包括15個(gè)通用寄存器(R0R14)、一至二個(gè)狀態(tài)寄存器和程序計(jì)數(shù)器。在所有的寄存器中,有些是在7種處理器模式下共用的同一個(gè)物理寄存器,而有些寄存器則是在不同的處理器模式下有不同的物理寄存器。ARM微處理器的寄存器結(jié)構(gòu)v 處理器工作狀態(tài):處理器工作狀態(tài):ARM處理器

22、有處理器有32位位ARM和和16位位Thumb兩種工兩種工作狀態(tài)。作狀態(tài)。在在32位位ARM狀態(tài)下執(zhí)行狀態(tài)下執(zhí)行字對(duì)齊字對(duì)齊的的ARM指令,在指令,在16位位Thumb狀態(tài)下執(zhí)行狀態(tài)下執(zhí)行半字對(duì)齊半字對(duì)齊的的Thumb指令。指令。v 在在Thumb狀態(tài)下,程序計(jì)數(shù)器狀態(tài)下,程序計(jì)數(shù)器PC(Program Counter)使用位)使用位1選擇另一個(gè)半字。選擇另一個(gè)半字。v ARM處理器在兩種工作狀態(tài)之間可以切換,切換不影響處理器處理器在兩種工作狀態(tài)之間可以切換,切換不影響處理器的模式或寄存器的內(nèi)容。的模式或寄存器的內(nèi)容。 (1)當(dāng)操作數(shù)寄存器的狀態(tài)位(位)當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為)為1時(shí)

23、,執(zhí)行時(shí),執(zhí)行BX指令指令進(jìn)入進(jìn)入Thumb狀態(tài)。狀態(tài)。如果處理器在如果處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)狀態(tài)進(jìn)入異常,則當(dāng)異常處理(異常處理(IRQ、FIQ、Undef、Abort和和SWI)返回時(shí),自動(dòng))返回時(shí),自動(dòng)轉(zhuǎn)換到轉(zhuǎn)換到Thumb狀態(tài)。狀態(tài)。 (2)當(dāng)操作數(shù)寄存器的狀態(tài)位(位)當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為)為0時(shí),執(zhí)行時(shí),執(zhí)行BX指令進(jìn)入指令進(jìn)入ARM狀態(tài)狀態(tài)。處理器進(jìn)行異常處理(。處理器進(jìn)行異常處理(IRQ、FIQ、Reset、Undef、Abort和和SWI時(shí),把時(shí),把PC放入異常模式鏈接寄放入異常模式鏈接寄存器中。從異常向量地址開(kāi)始執(zhí)行也可以進(jìn)入存器中。從異常向量地址開(kāi)

24、始執(zhí)行也可以進(jìn)入ARM狀態(tài)。狀態(tài)。ARM微處理器的寄存器結(jié)構(gòu)ARM處理器共有處理器共有37個(gè)寄存器個(gè)寄存器,被分為若干個(gè)組(,被分為若干個(gè)組(BANK),),這些寄器包括:這些寄器包括: 31個(gè)通用寄存器個(gè)通用寄存器,包括程序計(jì)數(shù)器(,包括程序計(jì)數(shù)器(PC指針),指針),均為均為32位位的寄存器。的寄存器。 6個(gè)狀態(tài)寄存器個(gè)狀態(tài)寄存器,用以標(biāo)識(shí),用以標(biāo)識(shí)CPU的工作狀態(tài)及程序的運(yùn)行狀的工作狀態(tài)及程序的運(yùn)行狀態(tài),態(tài),均為均為32位,目前只使用了其中的一部分位,目前只使用了其中的一部分。v ARM處理器的處理器的37個(gè)寄存器被安排成部分重疊的組,不能在任何個(gè)寄存器被安排成部分重疊的組,不能在任何模

25、式都可以使用,模式都可以使用,寄存器的使用與處理器狀態(tài)和工作模式有關(guān)寄存器的使用與處理器狀態(tài)和工作模式有關(guān)。如下圖如下圖2.3.1所示,每種處理器模式使用不同的寄存器組。其中所示,每種處理器模式使用不同的寄存器組。其中15個(gè)通用寄存器(個(gè)通用寄存器(R0R14)、)、1或或2個(gè)狀態(tài)寄存器和程序計(jì)數(shù)個(gè)狀態(tài)寄存器和程序計(jì)數(shù)器是通用的器是通用的。2.3 ARM微處理器的寄存器結(jié)構(gòu) 運(yùn)行模式運(yùn)行模式 工作狀態(tài)工作狀態(tài) 寄存器組織寄存器組織 Thumb狀態(tài)的寄存器集狀態(tài)的寄存器集 ARM微處理器的寄存器結(jié)構(gòu)1通用寄存器(通用寄存器(R0R15)可分成:)可分成:不分組寄存器不分組寄存器R0R7、分組、分

26、組寄存器寄存器R8R14和程序計(jì)數(shù)器和程序計(jì)數(shù)器R15 三類。三類。(1)不分組寄存器)不分組寄存器R0R7:不分組寄存器不分組寄存器R0R7是真正的通用是真正的通用寄存器,可以工作在所有的處理器模式下,沒(méi)有隱含的特殊用途。寄存器,可以工作在所有的處理器模式下,沒(méi)有隱含的特殊用途。(2)分組寄存器)分組寄存器R8R14:分組寄存器分組寄存器R8R14取決于當(dāng)前的處取決于當(dāng)前的處理器模式,每種模式有專用的分組寄存器用于快速異常處理。理器模式,每種模式有專用的分組寄存器用于快速異常處理。寄存器寄存器R8Rl2可分為兩組物理寄存器:可分為兩組物理寄存器:一組用于一組用于FIQ模式:訪問(wèn)模式:訪問(wèn)R8

27、_fiqR12_fiq,允許快速中斷,允許快速中斷處理。處理。另一組用于除另一組用于除FIQ以外的其他模式:訪問(wèn)以外的其他模式:訪問(wèn)R8_usrR12_usr,寄存器寄存器R8R12沒(méi)有任何指定的特殊用途。沒(méi)有任何指定的特殊用途。寄存器寄存器R13R14可分為可分為6個(gè)分組的物理寄存器。個(gè)分組的物理寄存器。1個(gè)用于用個(gè)用于用戶模式和系統(tǒng)模式,而其他戶模式和系統(tǒng)模式,而其他5個(gè)分別用于個(gè)分別用于svc、abt、und、irq和和fiq五種異常模式。訪問(wèn)時(shí)需要指定它們的模式,如:五種異常模式。訪問(wèn)時(shí)需要指定它們的模式,如:R13_mode,R14_mode;其中:;其中:mode可以從可以從usr

28、、svc、abt、und、irq和和fiq六種模式中選取一個(gè)。六種模式中選取一個(gè)。ARM微處理器的寄存器結(jié)構(gòu)寄存器寄存器R13通常用作堆棧指針通常用作堆棧指針,稱作,稱作SP。每種異常模式都。每種異常模式都有自己的分組有自己的分組R13。通常通常R13應(yīng)當(dāng)被初始化成指向異常模式分配的應(yīng)當(dāng)被初始化成指向異常模式分配的堆棧堆棧。在入口處,異常處理程序?qū)⒂玫降钠渌拇嫫鞯闹当4娴蕉?。在入口處,異常處理程序?qū)⒂玫降钠渌拇嫫鞯闹当4娴蕉褩V校环祷貢r(shí),重新將這些值加載到寄存器。這種異常處理方法保棧中;返回時(shí),重新將這些值加載到寄存器。這種異常處理方法保證了異常出現(xiàn)后不會(huì)導(dǎo)致執(zhí)行程序的狀態(tài)不可靠。證了異常

29、出現(xiàn)后不會(huì)導(dǎo)致執(zhí)行程序的狀態(tài)不可靠。寄存器寄存器R14用作子程序鏈接寄存器,也稱為鏈接寄存器用作子程序鏈接寄存器,也稱為鏈接寄存器LR (Link Register)。當(dāng)執(zhí)行帶鏈接分支()。當(dāng)執(zhí)行帶鏈接分支(BL)指令時(shí),得到)指令時(shí),得到R15的備份。的備份。在其他情況下,將在其他情況下,將R14當(dāng)做通用寄存器。類似地,當(dāng)中斷當(dāng)做通用寄存器。類似地,當(dāng)中斷或異常出現(xiàn)時(shí),或當(dāng)中斷或異常程序執(zhí)行或異常出現(xiàn)時(shí),或當(dāng)中斷或異常程序執(zhí)行BL指令時(shí),指令時(shí),相應(yīng)的分組相應(yīng)的分組寄存器寄存器R14_svc、R14_irq、R14_fiq、R14_abt和和R14_und用來(lái)用來(lái)保存保存R15的返回值的返回

30、值。FIQ模式有模式有7個(gè)分組的寄存器個(gè)分組的寄存器R8R14,映射為,映射為R8_fiqR14_fiq。在。在ARM狀態(tài)下,許多狀態(tài)下,許多FIQ處理沒(méi)必要保存任何寄存器。處理沒(méi)必要保存任何寄存器。User、IRQ、Supervisor、Abort和和Undefined模式每一種都包含模式每一種都包含兩個(gè)分組的寄存器兩個(gè)分組的寄存器R13和和R14的映射,允許每種模式都有自己的堆的映射,允許每種模式都有自己的堆棧和鏈接寄存器。棧和鏈接寄存器。ARM微處理器的寄存器結(jié)構(gòu)(3)程序計(jì)數(shù)器)程序計(jì)數(shù)器R15:用作程序計(jì)數(shù)器(用作程序計(jì)數(shù)器(PC)。)。在在ARM狀態(tài),位狀態(tài),位1:0為為0,位,位

31、31:2保存保存PC。在在Thumb狀態(tài),位狀態(tài),位0為為0,位,位31:1保存保存PC。R15雖然也可用作通用寄存器,但一般不這么使用,雖然也可用作通用寄存器,但一般不這么使用,因?yàn)閷?duì)因?yàn)閷?duì)R15的使用有一些特殊的限制,當(dāng)違反了這些限制時(shí),程序的執(zhí)的使用有一些特殊的限制,當(dāng)違反了這些限制時(shí),程序的執(zhí)行結(jié)果是未知的。行結(jié)果是未知的。 讀程序計(jì)數(shù)器。指令讀出的讀程序計(jì)數(shù)器。指令讀出的R15的值是指令地址加上的值是指令地址加上8字節(jié)。字節(jié)。由于由于ARM指令始終是字對(duì)齊的,所以讀出結(jié)果值的位指令始終是字對(duì)齊的,所以讀出結(jié)果值的位1:0總是總是0(在(在Thumb狀態(tài)下,情況有所變化)。讀狀態(tài)下,情

32、況有所變化)。讀PC主要用于快速地對(duì)臨近的主要用于快速地對(duì)臨近的指令和數(shù)據(jù)進(jìn)行位置無(wú)關(guān)尋址,包括程序中的位置無(wú)關(guān)轉(zhuǎn)移。指令和數(shù)據(jù)進(jìn)行位置無(wú)關(guān)尋址,包括程序中的位置無(wú)關(guān)轉(zhuǎn)移。 寫(xiě)程序計(jì)數(shù)器。寫(xiě)寫(xiě)程序計(jì)數(shù)器。寫(xiě)R15的通常結(jié)果是將寫(xiě)到的通常結(jié)果是將寫(xiě)到R15中的值作為中的值作為指令地址,并以此地址發(fā)生轉(zhuǎn)移。由于指令地址,并以此地址發(fā)生轉(zhuǎn)移。由于ARM指令要求字對(duì)齊,通常希指令要求字對(duì)齊,通常希望寫(xiě)到望寫(xiě)到R15中值的位中值的位1:0=0b00。由于由于ARM體系結(jié)構(gòu)采用了多級(jí)流水線技術(shù),對(duì)于體系結(jié)構(gòu)采用了多級(jí)流水線技術(shù),對(duì)于ARM指令集而指令集而言,言,PC總是指向當(dāng)前指令的下兩條指令的地址,即總

33、是指向當(dāng)前指令的下兩條指令的地址,即PC的值為當(dāng)前指令的值為當(dāng)前指令的地址值加的地址值加8字節(jié)。字節(jié)。ARM微處理器的寄存器結(jié)構(gòu)2程序狀態(tài)寄存器程序狀態(tài)寄存器寄存器寄存器R16用作程序狀態(tài)寄存器用作程序狀態(tài)寄存器CPSR(Current Program Status Register,當(dāng)前程序狀態(tài)寄存器)。,當(dāng)前程序狀態(tài)寄存器)。在所有處理器模式下都可在所有處理器模式下都可以訪問(wèn)以訪問(wèn)CPSR。CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其他狀態(tài)和控制信息。以及其他狀態(tài)和控制信息。每種異常模式都有一個(gè)程序狀態(tài)保存寄存器每種異常模式都有一個(gè)程序

34、狀態(tài)保存寄存器SPSR(Saved Program Status Register)。當(dāng)異常出現(xiàn))。當(dāng)異常出現(xiàn)SPSR用于用于保留保留CPSR的狀態(tài)。的狀態(tài)。CPSR和和SPSR的格式如下:的格式如下:(1)條件碼標(biāo)志)條件碼標(biāo)志N、Z、C、V(Negative、Zero、Carry、Overflow)均為條件碼標(biāo)志)均為條件碼標(biāo)志位(位(Condition Code Flags),它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)),它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行。果所改變,并且可以決定某條指令是否被執(zhí)行。CPSR中的條件碼標(biāo)志中的條件碼標(biāo)志可由大多數(shù)指令檢測(cè)以決定指

35、令是否執(zhí)行。在可由大多數(shù)指令檢測(cè)以決定指令是否執(zhí)行。在ARM狀態(tài)下,絕大多數(shù)狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的。在的指令都是有條件執(zhí)行的。在Thumb狀態(tài)下,僅有分支指令是有條件狀態(tài)下,僅有分支指令是有條件執(zhí)行的。執(zhí)行的。通常條件碼標(biāo)志通過(guò)執(zhí)行比較指令(通常條件碼標(biāo)志通過(guò)執(zhí)行比較指令(CMN、CMP、TEQ、TST)、一)、一些算術(shù)運(yùn)算、邏輯運(yùn)算和傳送指令進(jìn)行修改。些算術(shù)運(yùn)算、邏輯運(yùn)算和傳送指令進(jìn)行修改。ARM微處理器的寄存器結(jié)構(gòu)2程序狀態(tài)寄存器程序狀態(tài)寄存器(1)條件碼標(biāo)志條件碼標(biāo)志的通常含義如下: N:如果結(jié)果是帶符號(hào)二進(jìn)制補(bǔ)碼,那么,若結(jié)果為負(fù)數(shù),則N=1;若結(jié)果為正數(shù)或0,則N0。

36、 Z:若指令的結(jié)果為0,則置1(通常表示比較的結(jié)果為“相等”),否則置0。 C:可用如下4種方法之一設(shè)置:一加法(包括比較指令CMN)。若加法產(chǎn)生進(jìn)位(即無(wú)符號(hào)溢出),則C置1;否則置0。 一減法(包括比較指令CMP)。若減法產(chǎn)生借位(即無(wú)符號(hào)溢出),則C置0;否則置1。 一對(duì)于結(jié)合移位操作的非加法減法指令,C置為移出值的最后1位。 一對(duì)于其他非加法減法指令,C通常不改變。 V:可用如下兩種方法設(shè)置,即 一對(duì)于加法或減法指令,當(dāng)發(fā)生帶符號(hào)溢出時(shí),V置1,認(rèn)為操作數(shù)和結(jié)果是補(bǔ)碼形式的帶符號(hào)整數(shù)。 一對(duì)于非加法減法指令,V通常不改變。ARM微處理器的寄存器結(jié)構(gòu) 2程序狀態(tài)寄存器程序狀態(tài)寄存器(1)

37、條件碼標(biāo)志)條件碼標(biāo)志(2)控制位)控制位 程序狀態(tài)寄存器程序狀態(tài)寄存器CPSR(Program Status Register)的最低)的最低8位位I、F、T和和M4:0用作控制位用作控制位。當(dāng)異常出現(xiàn)時(shí)改變控制位。處理器在特權(quán)模式下時(shí)也可。當(dāng)異常出現(xiàn)時(shí)改變控制位。處理器在特權(quán)模式下時(shí)也可由軟件改變。由軟件改變。a中斷禁止位中斷禁止位 I:置:置1,則禁止,則禁止IRQ中斷中斷; F:置:置1,則禁止,則禁止FIQ中斷。中斷。bT位位 T=0 指示指示ARM執(zhí)行執(zhí)行; T=1 指示指示Thumb執(zhí)行執(zhí)行。c模式控制位模式控制位 M4、M3、M2、Ml和和M0(M4:0)是模式位,決定處理器的

38、工作模式,)是模式位,決定處理器的工作模式,如如下表下表2.3.1所列。所列。并非所有的模式位組合都能定義一種有效的處理器模式。其他組合的結(jié)果不可并非所有的模式位組合都能定義一種有效的處理器模式。其他組合的結(jié)果不可預(yù)知。預(yù)知。(3)其他位)其他位 程序狀態(tài)寄存器的其他位保留,用做以后的擴(kuò)展程序狀態(tài)寄存器的其他位保留,用做以后的擴(kuò)展。ARM微處理器的寄存器結(jié)構(gòu)M4:0 處理器工作模處理器工作模式式可訪問(wèn)的寄存器可訪問(wèn)的寄存器10000 用戶模式用戶模式PC,CPSR,R14R0 10001 FIQ模式模式PC,R7R0,CPSR, SPSR_fiq,R14_fiqR8_fiq 10010 IRQ

39、模式模式PC,R12R0,CPSR, SPSR_irq,R14_irq,R13_irq10011 管理模式管理模式PC,R12R0, CPSR, SPSR_svc,R14_svc,R13_svc10111 中止模式中止模式PC,R12R0, CPSR, SPSR_abt,R14_abt,R13_abt11011 未定義模式未定義模式PC,R12R0, CPSR, SPSR_und,R14_und,R13_und11111 系統(tǒng)模式系統(tǒng)模式PC,R14R0,CPSR(ARM v4及以上版本)及以上版本)ARM微處理器的寄存器結(jié)構(gòu)v Thumb狀態(tài)的寄存器集:如下圖所示,是ARM狀態(tài)下的寄存器集的

40、子集。程序員可以直接訪問(wèn)8個(gè)通用寄存器(R0R7)、PC、SP、LR和CPSR。每種特權(quán)模式都有一組SP、LR和SPSR。圖2.3.2 Thumb狀態(tài)下寄存器組織ARM微處理器的寄存器結(jié)構(gòu)ARM微處理器的寄存器結(jié)構(gòu) Thumb狀態(tài)狀態(tài)R0R7與與ARM狀態(tài)狀態(tài)R0R7是一致的。是一致的。 Thumb狀態(tài)狀態(tài)CPSR和和SPSR與與ARM的狀態(tài)的狀態(tài)CPSR和和SPSR是一是一致的。致的。 Thumb狀態(tài)狀態(tài)SP映射到映射到ARM狀態(tài)狀態(tài)R13。 Thumb狀態(tài)狀態(tài)LR映射到映射到ARM狀態(tài)狀態(tài)R14。 Thumb狀態(tài)狀態(tài)PC映射到映射到ARM狀態(tài)狀態(tài)PC(R15)。)。在在Thumb狀態(tài)下,寄

41、存器狀態(tài)下,寄存器R8R15(高寄存器)并不是(高寄存器)并不是標(biāo)準(zhǔn)寄存器集的一部分。匯編語(yǔ)言編程者訪問(wèn)它雖有限制,但可標(biāo)準(zhǔn)寄存器集的一部分。匯編語(yǔ)言編程者訪問(wèn)它雖有限制,但可以將其用做快速暫存存儲(chǔ)器,將以將其用做快速暫存存儲(chǔ)器,將R0R7(Lo-registers,低寄,低寄存器)中的值傳送到存器)中的值傳送到R8R15(Hi-registers,高寄存器)。,高寄存器)。2.3 ARM微處理器的異常處理在一個(gè)正常的程序流程執(zhí)行過(guò)程中,由內(nèi)部或外部源產(chǎn)生的在一個(gè)正常的程序流程執(zhí)行過(guò)程中,由內(nèi)部或外部源產(chǎn)生的一個(gè)事件使正常的程序產(chǎn)生暫時(shí)的停止時(shí),稱之為一個(gè)事件使正常的程序產(chǎn)生暫時(shí)的停止時(shí),稱之

42、為異常異常。異常是。異常是由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如一個(gè)外部由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如一個(gè)外部的中斷請(qǐng)求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,當(dāng)?shù)闹袛嗾?qǐng)求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,當(dāng)異常處理完成之后,恢復(fù)保留的當(dāng)前處理器狀態(tài),繼續(xù)執(zhí)行當(dāng)前異常處理完成之后,恢復(fù)保留的當(dāng)前處理器狀態(tài),繼續(xù)執(zhí)行當(dāng)前程序。程序。多個(gè)異常同時(shí)發(fā)生時(shí),處理器將會(huì)按固定的優(yōu)先級(jí)進(jìn)行處多個(gè)異常同時(shí)發(fā)生時(shí),處理器將會(huì)按固定的優(yōu)先級(jí)進(jìn)行處理。理。ARM體系結(jié)構(gòu)中的異常,與單片機(jī)的中斷有相似之處,但異體系結(jié)構(gòu)中的異常,與單片機(jī)的中斷有相似之處,但異常與中斷的概念并

43、不完全等同,例如外部中斷或試圖執(zhí)行未定義常與中斷的概念并不完全等同,例如外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。指令都會(huì)引起異常。v ARM體系結(jié)構(gòu)的異常類型:體系結(jié)構(gòu)的異常類型:ARM體系結(jié)構(gòu)支持體系結(jié)構(gòu)支持7種類型的異常。種類型的異常。異常類型、異常處理模式和優(yōu)先級(jí)如下表異常類型、異常處理模式和優(yōu)先級(jí)如下表2.4.1所示。所示。異常出現(xiàn)后,強(qiáng)制從異常類型對(duì)應(yīng)的固定存儲(chǔ)器地址開(kāi)始執(zhí)行程異常出現(xiàn)后,強(qiáng)制從異常類型對(duì)應(yīng)的固定存儲(chǔ)器地址開(kāi)始執(zhí)行程序序。這些固定的地址稱為。這些固定的地址稱為異常向量異常向量(Exception Vectors)。)。ARM微處理器的異常處理異常類型異常類型異常異常

44、進(jìn)入模式進(jìn)入模式地址(異常向量)地址(異常向量)優(yōu)先級(jí)優(yōu)先級(jí)復(fù)位復(fù)位復(fù)位復(fù)位管理模式管理模式0 x0000,00001(最高)(最高)未定義指令未定義指令未定義指令未定義指令未定義模式未定義模式0 x0000,00046(最低)(最低)軟件中斷軟件中斷軟件中斷軟件中斷管理模式管理模式0 x0000,00086(最低)(最低)指令預(yù)取中止指令預(yù)取中止中止(預(yù)取指中止(預(yù)取指令)令)中止模式中止模式0 x0000,000C5數(shù)據(jù)中止數(shù)據(jù)中止中止(數(shù)據(jù))中止(數(shù)據(jù))中止模式中止模式0 x0000,00102IRQ(外部中斷請(qǐng)(外部中斷請(qǐng)求)求)IRQIRQ0 x0000,00184FIQ(快速中斷請(qǐng)

45、(快速中斷請(qǐng)求)求)FIQFIQ0 x0000,001C3ARM體系結(jié)構(gòu)的異常類型和異常處理模式體系結(jié)構(gòu)的異常類型和異常處理模式注:可在注:可在1C處存放處存放FIQ服務(wù)程序,以提高執(zhí)行速度服務(wù)程序,以提高執(zhí)行速度2.3 ARM微處理器的異常處理異常類型的含義:異常類型的含義:(1)復(fù)位:)復(fù)位:當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,ARM處理處理器立刻停止執(zhí)行當(dāng)前指令。復(fù)位后,器立刻停止執(zhí)行當(dāng)前指令。復(fù)位后,ARM處理器在禁止中斷的管理處理器在禁止中斷的管理模式下,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行(從地址模式下,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行(從地址

46、0 x00000000或或0 xFFFF0000開(kāi)始執(zhí)行指令)。開(kāi)始執(zhí)行指令)。(2)未定義指令異常:)未定義指令異常:當(dāng)當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常。令時(shí),產(chǎn)生未定義指令異常。當(dāng)當(dāng)ARM處理器執(zhí)行協(xié)處理器指令時(shí),處理器執(zhí)行協(xié)處理器指令時(shí),它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒(méi)有響應(yīng),就會(huì)出現(xiàn)未定義指令異常。若試圖執(zhí)行未定義協(xié)處理器沒(méi)有響應(yīng),就會(huì)出現(xiàn)未定義指令異常。若試圖執(zhí)行未定義的指令,也會(huì)出現(xiàn)未定義指令異常。未定義指令異??捎糜谠跊](méi)有的

47、指令,也會(huì)出現(xiàn)未定義指令異常。未定義指令異??捎糜谠跊](méi)有物理協(xié)處理器(硬件)的系統(tǒng)上,對(duì)協(xié)處理器進(jìn)行軟件仿真,或在物理協(xié)處理器(硬件)的系統(tǒng)上,對(duì)協(xié)處理器進(jìn)行軟件仿真,或在軟件仿真時(shí)進(jìn)行指令擴(kuò)展。軟件仿真時(shí)進(jìn)行指令擴(kuò)展。(3)軟件中斷異常()軟件中斷異常(SoftWare Interrupt,SWI):):軟件中斷異常由軟件中斷異常由執(zhí)行執(zhí)行SWI指令產(chǎn)生,可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用,指令產(chǎn)生,可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用,用于用用于用戶模式下的程序調(diào)用特權(quán)操作指令,以請(qǐng)求特定的管理(操作系統(tǒng))戶模式下的程序調(diào)用特權(quán)操作指令,以請(qǐng)求特定的管理(操作系統(tǒng))函數(shù)。函數(shù)。ARM微處理器的異

48、常處理異常類型的含義:異常類型的含義:(4)指令預(yù)取中止:)指令預(yù)取中止:若處理器預(yù)取指令的地址不存在,或該地址不允許若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出存儲(chǔ)器中止(存儲(chǔ)器會(huì)向處理器發(fā)出存儲(chǔ)器中止(Abort)信號(hào),但)信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。(5)數(shù)據(jù)中止(數(shù)據(jù)訪問(wèn)存儲(chǔ)器中止):)數(shù)據(jù)中止(數(shù)據(jù)訪問(wèn)存儲(chǔ)器中止):若處理器數(shù)據(jù)訪問(wèn)指令的地址若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常。不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)

49、生數(shù)據(jù)中止異常。存儲(chǔ)存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止信號(hào)。響應(yīng)數(shù)據(jù)訪問(wèn)(加載或存儲(chǔ))激活中止,器系統(tǒng)發(fā)出存儲(chǔ)器中止信號(hào)。響應(yīng)數(shù)據(jù)訪問(wèn)(加載或存儲(chǔ))激活中止,標(biāo)記數(shù)據(jù)為無(wú)效。在后面的任何指令或異常改變標(biāo)記數(shù)據(jù)為無(wú)效。在后面的任何指令或異常改變CPU狀態(tài)之前,數(shù)據(jù)狀態(tài)之前,數(shù)據(jù)中止異常發(fā)生。中止異常發(fā)生。(6)外部中斷請(qǐng)求()外部中斷請(qǐng)求(IRQ)異常:)異常:當(dāng)處理器的外部中斷請(qǐng)求引腳有效,當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且且CPSR中的中的I位為位為0時(shí),產(chǎn)生時(shí),產(chǎn)生IRQ異常。異常。系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)。中斷服務(wù)。IRQ異常的優(yōu)先級(jí)比異常的優(yōu)先級(jí)比FIQ異常的

50、低異常的低。當(dāng)進(jìn)入。當(dāng)進(jìn)入FIQ處理時(shí),會(huì)處理時(shí),會(huì)屏蔽掉屏蔽掉IRQ異常。異常。(7)快速中斷請(qǐng)求()快速中斷請(qǐng)求(FIQ)異常:)異常:當(dāng)處理器的快速中斷請(qǐng)求引腳有效,當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且且CPSR中的中的F位為位為0時(shí),產(chǎn)生時(shí),產(chǎn)生FIQ異常異常。FIQ支持?jǐn)?shù)據(jù)傳送和通道處理,支持?jǐn)?shù)據(jù)傳送和通道處理,并有足夠的私有寄存器。并有足夠的私有寄存器。ARM微處理器的異常處理異常名稱異常名稱對(duì)應(yīng)模式對(duì)應(yīng)模式正常向量正常向量高地址向量高地址向量復(fù)位復(fù)位管理管理(svc)(svc)0 x000000000 x000000000 xFFFF00000 xFFFF0000未定義指令未定義指

51、令未定義未定義(und)(und)0 x000000040 x000000040 xFFFF00040 xFFFF0004軟件中斷軟件中斷(SWI)(SWI)管理管理(svc)(svc)0 x000000080 x000000080 xFFFF00080 xFFFF0008指令預(yù)取中止指令預(yù)取中止(取指令存儲(chǔ)(取指令存儲(chǔ)器中止)器中止)中止中止(abt)(abt)0 x0000000C0 x0000000C0 xFFFF000C0 xFFFF000C數(shù)據(jù)中止數(shù)據(jù)中止中止中止(abt)(abt)0 x000000100 x000000100 xFFFF00100 xFFFF0010IRQIRQ(

52、中斷)(中斷)IRQ(irq)IRQ(irq)0 x000000180 x000000180 xFFFF00180 xFFFF0018FIQFIQ(快速中斷)(快速中斷)FIQ(fiq)FIQ(fiq)0 x0000001C0 x0000001C0 xFFFF001C0 xFFFF001CARM9的異常處理模式的異常處理模式ARM9的運(yùn)行模式的運(yùn)行模式(用戶模式、系統(tǒng)模式)(用戶模式、系統(tǒng)模式)ARM微處理器的異常處理當(dāng)一個(gè)異常出現(xiàn)以后,當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作:微處理器會(huì)執(zhí)行以下幾步操作: 將下一條指令的地址存入相應(yīng)連接寄存器將下一條指令的地址存入相應(yīng)連接寄存器L

53、R(R14),以便程),以便程序在處理異常返回時(shí)能從正確的位置重新開(kāi)始執(zhí)行。序在處理異常返回時(shí)能從正確的位置重新開(kāi)始執(zhí)行。若異常是從若異常是從ARM狀態(tài)進(jìn)入,狀態(tài)進(jìn)入,LR寄存器中保存的是下一條指令的地址(當(dāng)前寄存器中保存的是下一條指令的地址(當(dāng)前PC4或或PC8,與異常的類型有關(guān));若異常是從,與異常的類型有關(guān));若異常是從Thumb狀狀態(tài)進(jìn)入,則在態(tài)進(jìn)入,則在LR寄存器中保存當(dāng)前寄存器中保存當(dāng)前PC的偏移量。的偏移量。 將將CPSR狀態(tài)傳送到相應(yīng)的狀態(tài)傳送到相應(yīng)的SPSR中。中。 根據(jù)異常類型,強(qiáng)制設(shè)置根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。的運(yùn)行模式位。 強(qiáng)制強(qiáng)制PC從相關(guān)的異常向量

54、地址取下一條指令執(zhí)行,從相關(guān)的異常向量地址取下一條指令執(zhí)行,跳轉(zhuǎn)到相應(yīng)跳轉(zhuǎn)到相應(yīng)的異常處理程序的異常處理程序。還可以設(shè)置中斷禁止位,以禁止中斷發(fā)生。還可以設(shè)置中斷禁止位,以禁止中斷發(fā)生。注:如果異常發(fā)生時(shí),處理器處于注:如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量狀態(tài),則當(dāng)異常向量地址加載入地址加載入PC時(shí),處理器自動(dòng)切換到時(shí),處理器自動(dòng)切換到ARM狀態(tài)。狀態(tài)。2.3 ARM微處理器的異常處理異常處理完畢之后,異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回:微處理器會(huì)執(zhí)行以下幾步操作從異常返回: 將連接寄存器將連接寄存器LR的值減去相應(yīng)的偏移量后送到的值減去相應(yīng)的偏移量

55、后送到PC中。中。P35第第1條指令:條指令:PC 8 0 x8000;發(fā)生異常;發(fā)生異常第第2條指令:條指令:PC 4 0 x8004 ;程序返回的位置(調(diào)整;程序返回的位置(調(diào)整LR為為PC 4)第第3條指令:條指令:PC 0 x8008;當(dāng)前;當(dāng)前PC(LR) PC 0 x800C;當(dāng)前;當(dāng)前PC(LR)例:例:返回指令返回指令 SWI : MOVS PC, LR ;R14_svc, pc 當(dāng)前指令的下兩條當(dāng)前指令的下兩條 IRQ :SUBS PC, R14_irq, #4 ;, pc 當(dāng)前指令的下三條當(dāng)前指令的下三條 將將SPSR內(nèi)容送回內(nèi)容送回CPSR中中。 若在進(jìn)入異常處理時(shí)設(shè)置了

56、中斷禁止位,要在此清除。若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除??梢哉J(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開(kāi)始執(zhí)行的,因此復(fù)位異常可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開(kāi)始執(zhí)行的,因此復(fù)位異常處理程序不需要返回。處理程序不需要返回。ARM微處理器的異常處理應(yīng)用程序中的異常處理: 在應(yīng)用程序的設(shè)計(jì)中,異常處理采用的方式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序。當(dāng)ARM處理器發(fā)生異常時(shí),程序計(jì)數(shù)器PC會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序,當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。2.4 ARM的存儲(chǔ)器結(jié)構(gòu)1地址空間:地址空間:ARM體系結(jié)構(gòu)使用體系結(jié)構(gòu)使用

57、232個(gè)字節(jié)的單一、線性地址空間。將字節(jié)地個(gè)字節(jié)的單一、線性地址空間。將字節(jié)地址做為無(wú)符號(hào)數(shù)看待,址做為無(wú)符號(hào)數(shù)看待,范圍為范圍為02321(4G)。注:注:1)目的地址越界時(shí),)目的地址越界時(shí),PC復(fù)位為復(fù)位為0 x0000 00002)程序順序執(zhí)行:)程序順序執(zhí)行:ARM狀態(tài):狀態(tài):PC寄存器的值寄存器的值 = 當(dāng)前執(zhí)行指令地址當(dāng)前執(zhí)行指令地址 + 8Thumb狀態(tài):狀態(tài): PC寄存器的值寄存器的值 = 當(dāng)前執(zhí)行指令地址當(dāng)前執(zhí)行指令地址 + 43)分支)分支ARM:目的地址:目的地址 = PC + 偏移量偏移量2存儲(chǔ)器格式:存儲(chǔ)器格式:字或半字的地址由其低地址表示字或半字的地址由其低地址表

58、示對(duì)于字對(duì)齊的地址對(duì)于字對(duì)齊的地址A,地址空間規(guī)則要求如下:,地址空間規(guī)則要求如下: 地址位于地址位于A的字由地址為的字由地址為A、A1、A2和和A3的字節(jié)組成;的字節(jié)組成; 地址位于地址位于A的半字由地址為的半字由地址為A和和A1的字節(jié)組成;的字節(jié)組成; 地址位于地址位于A2的半字由地址為的半字由地址為A2和和A3的字節(jié)組成;的字節(jié)組成; 地址位于地址位于A的字由地址為的字由地址為A和和A2的半字組成。的半字組成。ARM存儲(chǔ)系統(tǒng)可以使用小端存儲(chǔ)或者大端存儲(chǔ)兩種方法,大端存儲(chǔ)和存儲(chǔ)系統(tǒng)可以使用小端存儲(chǔ)或者大端存儲(chǔ)兩種方法,大端存儲(chǔ)和小端存儲(chǔ)格式如圖小端存儲(chǔ)格式如圖2.5.1所示。所示。2.4

59、ARM的存儲(chǔ)器結(jié)構(gòu)圖圖2.5.1 大端存儲(chǔ)和小端存儲(chǔ)格式大端存儲(chǔ)和小端存儲(chǔ)格式字或半字的對(duì)齊:字或半字的對(duì)齊:例半字地址均是偶地址,字地址均是例半字地址均是偶地址,字地址均是4的倍數(shù)的倍數(shù)ARM的存儲(chǔ)器結(jié)構(gòu)3ARM存儲(chǔ)器結(jié)構(gòu):存儲(chǔ)器結(jié)構(gòu):ARM處理器有的帶有指令處理器有的帶有指令Cache和數(shù)據(jù)和數(shù)據(jù)Cache,但不帶有片內(nèi),但不帶有片內(nèi)RAM和片內(nèi)和片內(nèi)ROM。系統(tǒng)所需的系統(tǒng)所需的RAM和和ROM(包括(包括Flash)都通過(guò)總線外接。由于系統(tǒng)的地址范圍較大)都通過(guò)總線外接。由于系統(tǒng)的地址范圍較大(2324GB),),有的片內(nèi)還帶有存儲(chǔ)器管理單元有的片內(nèi)還帶有存儲(chǔ)器管理單元MMU(Memor

60、y Management Unit)。)。4存儲(chǔ)器映射存儲(chǔ)器映射I/O:存儲(chǔ)器和存儲(chǔ)器和I/O統(tǒng)一編址。統(tǒng)一編址。I/O口使用特定的存儲(chǔ)口使用特定的存儲(chǔ)器地址,當(dāng)從這些地址加載(用于輸入)或向這些地址存儲(chǔ)(用器地址,當(dāng)從這些地址加載(用于輸入)或向這些地址存儲(chǔ)(用于輸出)時(shí),完成于輸出)時(shí),完成I/O功能。加載和存儲(chǔ)也可用于執(zhí)行控制功能,功能。加載和存儲(chǔ)也可用于執(zhí)行控制功能,代替或者附加到正常的輸入或輸出功能代替或者附加到正常的輸入或輸出功能S3C2410A簡(jiǎn)介v S3C2410A:是是Samsung公司推出的公司推出的16/32位位RISC處理器,主要面向處理器,主要面向高性價(jià)比、低功耗的高

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論