ARM9體系結(jié)構(gòu).ppt_第1頁
ARM9體系結(jié)構(gòu).ppt_第2頁
ARM9體系結(jié)構(gòu).ppt_第3頁
ARM9體系結(jié)構(gòu).ppt_第4頁
ARM9體系結(jié)構(gòu).ppt_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)講義第2章 ARM9體系結(jié)構(gòu),周國運 2007.3,第2章 ARM9體系結(jié)構(gòu),主要內(nèi)容 2.1 ARM處理器簡介 2.2 ARM9結(jié)構(gòu) 2.3 ARM數(shù)據(jù)類型和存儲格式 2.4 處理器狀態(tài)和工作模式 2.5 ARM寄存器 2.6 ARM異常 2.7 ARM調(diào)試接口,2.1 ARM處理器簡介,2.1.1 ARM公司簡介 ARM是Advance RISC Machine 的縮寫,既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術(shù)的名字。 ARM公司于1990年11月在英國劍橋成立,前身為Acorn計算機公司。 ARM公司是全球領(lǐng)先的16/32位嵌入式RIS

2、C微處理器解決方案供應(yīng)商。 ARM公司是知識產(chǎn)權(quán)(IP)公司,本身不生產(chǎn)芯片,靠轉(zhuǎn)讓設(shè)計許可,由合作伙伴公司來生產(chǎn)各具特色的芯片。 目前,全世界有幾十家著名的半導體公司都使用ARM公司的授權(quán),其中包括MOTOROLA、IBM、Intel、 LG、 SONY、NEC、ATMEL等,從而保證了大量的開發(fā)工具和豐富的第三方資源,它們共同保證了基于ARM處理器核的設(shè)計可以很快投入市場。ARM公司已成為移動通信、手持設(shè)備、多媒體數(shù)字消費嵌入式解決方案的RISC標準。,2.1.2 ARM體系結(jié)構(gòu)的特點,總體思想:在不犧牲性能的同時,盡量簡化處理器。同時從體系結(jié)構(gòu)的層面上靈活支持處理器擴展。這種簡化和開放的

3、思路使得ARM處理器采用了很簡單的結(jié)構(gòu)來實現(xiàn)。 ARM處理器是最先進的:目前,ARM32位體系結(jié)構(gòu)被公認為業(yè)界領(lǐng)先的32位嵌入式RISC微處理器核,所有ARM處理器都共享這一體系結(jié)構(gòu)。,2.1.2 ARM體系結(jié)構(gòu)的特點(2),一、RISC型處理器結(jié)構(gòu) ARM采用RISC結(jié)構(gòu),在簡化處理器結(jié)構(gòu),減少復雜功能指令的同時,提高了處理器的速度。 考慮到處理器與存儲器打交道的指令執(zhí)行時間遠遠大于在寄存器內(nèi)操作的指令執(zhí)行時間,RISC型處理器采用了Load/Store(加載/存儲)結(jié)構(gòu),即只有Load/Store指令可與存儲器打交道,其余指令都不允許進行存儲器操作。 同時,為了進一步提高指令和數(shù)據(jù)的存取速

4、度,RISC型處理器增加了指令高速緩沖I-Cache和數(shù)據(jù)高速緩沖D-Cache及多處理器結(jié)構(gòu),使指令的操作盡可能在寄存器之間進行。,2.1.2 ARM體系結(jié)構(gòu)的特點(3),只能對寄存器執(zhí)行算術(shù)和邏輯 操作,Load/Store體系結(jié)構(gòu),2.1.2 ARM體系結(jié)構(gòu)的特點(4),二、Thumb指令集 雖然ARM處理器本身是32位設(shè)計,但考慮到RISC型處理器的指令功能相對較弱,新型的ARM體系結(jié)構(gòu)中定義了16位的Thumb指令集。 Thumb指令集比通常的8/16位CISC/RISC處理器有更好的代碼密度,而芯片面積只增加6%,卻可以使程序存儲器更小。 三、多處理器狀態(tài)模式 ARM體系結(jié)構(gòu)定義了

5、7種處理器模式:用戶、 快中斷、中斷、管理、終止、未定義和系統(tǒng)模式,大大提高了ARM處理器的效率。 四、兩種處理器工作狀態(tài)(執(zhí)行32位ARM指令) ARM狀態(tài)和Thumb狀態(tài)。(執(zhí)行16位Thumb指令),2.1.2 ARM體系結(jié)構(gòu)的特點(5),五、嵌入式在線仿真調(diào)試 ARM體系結(jié)構(gòu)的處理器芯片都嵌入了在線仿真ICE-RT邏輯,便于通過JTAG來仿真調(diào)試芯片,省去了價格昂貴的在線仿真器。 六、靈活方便的接口 ARM體系結(jié)構(gòu)具有協(xié)處理器接口,允許接16個協(xié)處理器。既可以使基本的ARM處理器內(nèi)核盡可能小,方便地擴充ARM指令集,也可以通過未定義指令來支持協(xié)處理器的軟件仿真。 七、低電壓功耗的設(shè)計

6、考慮到ARM處理器主要用于手持式嵌入式系統(tǒng)中,在設(shè)計中就十分注意功耗的設(shè)計。,2.1.3 ARM指令系統(tǒng)版本,ARM公司從最初的開發(fā)到現(xiàn)在,ARM指令集結(jié)構(gòu)有了巨大的改進,并在不斷完善和發(fā)展。為了清楚地表達每個ARM內(nèi)核所使用的指令集,ARM公司定義了一系列的指令集體系結(jié)構(gòu)版本,以vx表示某種版本。下面對版本v1v5做一介紹。 一、版本1(v1) v1在ARM1中使用,但從未商業(yè)化。 26位尋址空間,其指令主要有: 基本的數(shù)據(jù)處理指令(無乘法指令) 字、字節(jié)和半字存儲器訪問指令 分支指令(包括帶鏈接的分支指令) 軟件中斷指令,2.1.3 ARM指令系統(tǒng)版本(2),二、版本2(v2) 仍是26位

7、尋址空間,在v1的基礎(chǔ)上增加的內(nèi)容有: 乘法和乘法加指令 支持協(xié)處理器 快速中斷模式中的分組寄存器 交換式加載/存儲指令。 三、版本3(v3) 將尋址范圍擴展到32位,但兼容26位尋址。在v2的基礎(chǔ)上增加的內(nèi)容有: 設(shè)置了專用的當前程序狀態(tài)寄存器CPSR、增加了程序狀態(tài)保存寄存器 增加了中止異常和未定義指令異常兩種處理器模式 增加了訪問CPSR、SPSR的指令MRS和MSR 修改了異常返回指令的功能,2.1.3 ARM指令系統(tǒng)版本(3),四、版本4(v4) 32位尋址方式,但不再兼容26位尋址,在v3的基礎(chǔ)上增加的內(nèi)容有: 半字加載/存儲指令 在T變量中轉(zhuǎn)換到Thumb狀態(tài)的指令 增加了在使用

8、用戶模式寄存器的特權(quán)處理器模式 五、版本5(v5) 對v4指令做了必要的修改和擴展,并且增加了指令,具體變化為: 改進在T變量中ARM/Thumb狀態(tài)之間的切換效率 對于T和非T變量使用相同的代碼生成技術(shù) 增加了計數(shù)前導零指令 增加了軟件斷點指令 對乘法指令設(shè)置標志做了嚴格定義。 將流水線的級數(shù)從3級(如ARM7TDMI使用的)增加到5級; 并改變存儲器接口來使用分開的指令與數(shù)據(jù)存儲器。,2.1.3 ARM指令系統(tǒng)版本(4),六、版本6 (v6) 對v5指令做了必要的修改和擴展,并且增加了指令, 2001年發(fā)布,首先在ARM11處理器中使用(2002年春季發(fā)布),具體變化為: ARM體系版本6

9、的新架構(gòu)在降低耗電量的同時,還強化了圖形處理性能。 增加了多媒體處理功能:通過追加有效進行多媒體處理的SIMD功能,將語音及圖像的處理功能提高到了原機型的4倍。 V6版本還支持多微處理器內(nèi)核。,2.1.3 ARM指令系統(tǒng)版本(5),2.1.4 ARM 體系結(jié)構(gòu)的演變,一、Thumb指令集(T變種) 支持Thumb指令的ARM體系版本,一般加字符T來表示(如V4T)。 目前Thumb指令集有以下兩個版本:Thumb 指令集版本1,此版本作為ARM體系版本4的T變種;Thumb指令集版本2,此版本作為ARM體系版本5的T變種。 與版本1相比,Thumb指令集的版本2具有以下特點: 通過增加新的指令

10、和對已有指令的修改,來提高ARM指令和Thumb指令混合使用時的效率。 增加了軟件斷點(BKPT)指令和更嚴格地定義了Thumb乘法指令對條件碼標志位的影響。,2.1.4 ARM 體系結(jié)構(gòu)的演變(2),二、長乘指令(M變種) M變種增加了兩條這樣的長乘指令: 其中一條指令完成32位整數(shù)乘以32位整數(shù),生成64位整數(shù)的長乘操作; 另一條指令完成32位整數(shù)乘以32位整數(shù),然后在加上一個32位整數(shù),生成64位整數(shù)的長乘加操作。這種長乘的應(yīng)用場合M變種很適合。,2.1.4 ARM 體系結(jié)構(gòu)的演變(3),三、增強型DSP指令(E變種) E變種的ARM體系增加了一些增強處理器對典型DSP算法處理能力的附加

11、指令 : 幾條新的完成16位數(shù)據(jù)乘法和乘加操作的指令; 實現(xiàn)飽和的帶符號數(shù)的加減法操作的指令。 Cache預取指令PLD; E變種首先在ARM體系版本5T中使用,用字符E表示。 在早期的一些E變種中,未包含雙字讀取指令LDRD,雙字寫入指令STRD,協(xié)處理器的寄存器傳輸指令MCRR/MRRC以及Cache預取指令PLD。這種E變種記作ExP,其中x表示缺少,P代表上述的幾種指令,2.1.4 ARM 體系結(jié)構(gòu)的演變(4),四、Java加速器Jazelle(J變種) ARM的Jazelle技術(shù)是Java語言和先進的32位RISC芯片完美結(jié)合的產(chǎn)物。 Jazelle技術(shù)使得Java代碼的運行速度比普

12、通的Java虛擬機提高了8倍,這是因為Jazelle技術(shù)提供了Java加速功能,大幅的提高了機器的運行性能,而功耗反而降低了80%。 Jazelle技術(shù)使得在一個單獨的處理器上同時運行Java應(yīng)用程序、已經(jīng)建立好的操作系統(tǒng)和中間件以及其他的應(yīng)用程序成為可能。 Jazelle技術(shù)的誕生使得一些必須用到協(xié)處理器和雙處理器的場合可以用單處理器代替,這樣,既保證了機器的性能,又降低了功耗和成本。 ARM體系版本4TEJ是最早包含了J變種。用字符J表示J變種,2.1.4 ARM 體系結(jié)構(gòu)的演變(5),五、ARM媒體功能擴展(SIMD變種) ARM的SIMD媒體功能擴展為這些應(yīng)用系統(tǒng)提供了解決方案。它為包

13、括音頻視頻處理在內(nèi)的應(yīng)用系統(tǒng)提供了優(yōu)化功能。其主要特點如下: 使處理器的音頻視頻處理的性能提高了24倍。 可同時進行兩個16位操作數(shù)或者4個8位操作數(shù)的運算。 用戶可以自定義飽和運算的模式。 可進行兩個16位操作數(shù)的乘加乘減運算及32位乘以32位的小數(shù)乘加運算。 同時8位/16位選擇操作。,2.1.4 ARM 體系結(jié)構(gòu)的演變(6),2.1.4 ARM 體系結(jié)構(gòu)的演變(7),2.1.4 ARM系列處理器簡介,ARM有以下系列處理器: ARM7系列 ARM9系列 ARM9E系列 ARM10系列 ARM11系列 SecurCore系列 Inter的StrongARM和Xscale系列 其中,ARM7

14、、ARM9、ARM9E、ARM10和ARM11為5個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應(yīng)用領(lǐng)域的需求。SecurCore系列專門為安全要求較高的應(yīng)用而設(shè)計。,2.1.4 ARM系列處理器簡介(2),一、ARM7系列 ARM7采用馮諾依曼(Von-Neumann)結(jié)構(gòu),數(shù)據(jù)存儲器和程序存儲器使用同一存儲空間,用相同的指令訪問 。此結(jié)構(gòu)也被大多數(shù)計算機所采用。 ARM7為三級流水線結(jié)構(gòu)(取指,譯碼,執(zhí)行),平均功耗為0.6mW/MHz,時鐘速度為66MHz,每條指令平均執(zhí)行1.9個時鐘周期。 ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、

15、 ARM720T、ARM7EJ。 ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義為(對其它系列也適用): T: 支持16為壓縮指令集Thumb,稱為T變種 D: 支持片上Debug,稱為D變種 M:內(nèi)嵌硬件乘法器 Multiplier,稱為M變種 I: 嵌入式ICE,支持片上斷點和調(diào)試,稱為I變種,2.1.4 ARM系列處理器簡介(3),表2-1 ARM7系列產(chǎn)品,2.1.4 ARM系列處理器簡介(4),二、ARM9系列 ARM7采用的Neumann結(jié)構(gòu),取指令和取操作數(shù)都是通過一條總線分時進行,這樣,在高速運算時,不但不能同時取指令和取

16、操作數(shù),而且還會造成傳輸通道上的瓶頸現(xiàn)象。 ARM9采用哈佛(Harvard)結(jié)構(gòu),程序存儲器與數(shù)據(jù)存儲器分開,提供了較大的存儲器帶寬。同時,大多數(shù)DSP都采用此結(jié)構(gòu)。 ARM9為五級流水(取指,譯碼,執(zhí)行,緩沖/數(shù)據(jù),回寫),平均功耗為0.7mW/MHz。時鐘速度為120MHz-200MHz,每條指令平均執(zhí)行1.5個時鐘周期。 ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,主要應(yīng)用在手持產(chǎn)品、視頻電話、PDA、數(shù)字消費產(chǎn)品、機頂盒、家用網(wǎng)關(guān)等方面。,2.1.4 ARM系列處理器簡介(5),表2-2 ARM9系列產(chǎn)品,2.1.4 ARM系列處理器簡介(6),三

17、、ARM9E系列 ARM9E系列微處理器包括如下4種類型的核:ARM926EJ-S、ARM946E-S和ARM966E-S,見表2-3。 ARM9E系列是一種包含有微控制器、DSP、Java功能的綜合處理器,強化了數(shù)字信號處理能力,適用于需要DSP和微控制器結(jié)合使用的情況,并且把Thumb技術(shù)和DSP都擴展到了ARM指令中,并且具有EmbededICE-RT邏輯,更好地適應(yīng)了實時系統(tǒng)開發(fā)的需要。同時ARM9E使用了Jazelle增強技術(shù),該技術(shù)支持一種新的Java操作狀態(tài),在硬件中執(zhí)行Java字節(jié)碼。,2.1.4 ARM系列處理器簡介(7),表2-3 ARM9E系列產(chǎn)品,2.1.4 ARM系列

18、處理器簡介(8),四、ARM10系列 ARM10系列微處理器包括:ARM1020E和ARM1022E等型號,見表2-4。 ARM10系列采用了新的體系結(jié)構(gòu),其核心為使用了向量浮點單元,有強大的浮點運算能力,并且增加了Cache容量和總線寬度,并且具有低功耗的特點。 ARM10系列微處理器主要應(yīng)用于下一代無線設(shè)備、視頻消費品等。,表2-4 ARM10系列產(chǎn)品,2.1.4 ARM系列處理器簡介(9),五、ARMStrong/Xscale系列 StrongARM是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Intrl公司的設(shè)計技術(shù),以及ARM體系結(jié)構(gòu)的電源效率,其體系結(jié)構(gòu)在軟件上兼容

19、ARMv4,同時又具有Intel技術(shù)優(yōu)點。 StrongARM是Intrl公司為手持消費類電子和移動計算與通信設(shè)備生產(chǎn)的嵌入式處理器。采用StrongARM架構(gòu)的處理器有:SA-1、SA-110、SA-1100、SA1110和IXP1200。 Xscale是基于ARMv5體系結(jié)構(gòu)的解決方案,是一款性能全、性價比高、功耗低的處理器,支持16位的Thumb和DSP指令集,主要應(yīng)用于數(shù)字移動電話、個人數(shù)字助理和網(wǎng)絡(luò)產(chǎn)品等。 Xscale架構(gòu)的處理器有:PXA250、PXA255和PXA270等。,2.1.4 ARM系列處理器簡介(10),六、ARM微處理器應(yīng)用 1、工業(yè)控制領(lǐng)域:作為32的RISC架

20、構(gòu),基于ARM核的微控制器芯片不但占據(jù)了高端微控制器市場的大部分市場份額,同時也逐漸向低端微控制器應(yīng)用領(lǐng)域擴展,ARM微控制器的低功耗、高性價比,向傳統(tǒng)的8位/16位微控制器提出了挑戰(zhàn)。 2、無線通訊領(lǐng)域:目前已有超過85%的無線通訊設(shè)備采用了ARM技術(shù), ARM以其高性能和低成本,在該領(lǐng)域的地位日益鞏固。 3、網(wǎng)絡(luò)應(yīng)用:隨著寬帶技術(shù)的推廣,采用ARM技術(shù)的ADSL芯片正逐步獲得競爭優(yōu)勢。此外,ARM在語音及視頻處理上進行了優(yōu)化,并獲得廣泛支持,也對DSP的應(yīng)用領(lǐng)域提出了挑戰(zhàn)。ADSL(非對稱數(shù)字用戶線路) 4、消費類電子產(chǎn)品:ARM技術(shù)在目前流行的數(shù)字音頻播放器、數(shù)字機頂盒和游戲機中得到廣泛

21、采用。 5、成像和安全產(chǎn)品:現(xiàn)在流行的數(shù)碼相機和打印機中絕大部分采用ARM技術(shù)。手機中的32位SIM智能卡也采用了ARM技術(shù)。,ARM系列產(chǎn)品命名規(guī)則,2.2 ARM9體系結(jié)構(gòu),2.2.1ARM9體系結(jié)構(gòu)框圖 對于ARM9系列,其基本內(nèi)核是ARM9TDMI,下頁圖給出了ARM9TDMI結(jié)構(gòu)框圖。主要有7部分構(gòu)成。 比較最常用的是ARM920T內(nèi)核,后頁圖給出了ARM920T結(jié)構(gòu)框圖。 ARM920T結(jié)構(gòu)主要部分有:ARM9TDMI內(nèi)核CPU、MMU、Cache、協(xié)處理器接口、運行跟蹤信息接口(ETM)、JTAG調(diào)試接口、總線接口等7部分構(gòu)成。,一、ARM9TDMI體系結(jié)構(gòu)框圖,二、ARM920

22、T體系結(jié)構(gòu)框圖,二、ARM920T體系結(jié)構(gòu)框圖,ARM9TDMI核性能,0.25微米的ARM9TDMI核在執(zhí)行32位ARM代碼時的特性綜述于下表3。核的版圖示于下頁圖。,2.2.2 ARM流水線結(jié)構(gòu),一、流水線技術(shù)概述 流水線方式:是把一個重復的過程分解為若干個子過程,每個子過程可以與其他子過程同時進行。 由于這種工作方式與工廠中的生產(chǎn)流水線十分相似,因此,把它稱為流水線工作方式。 處理器按照一系列步驟來執(zhí)行每一條指令。典型的步驟為: 1)從存儲器讀取指令(fetch) 2)譯碼以鑒別它是哪一類指令(dec) 3)從寄存器組取得所需的操作數(shù)(reg) 4)將操作數(shù)進行組合以得到結(jié)果或存儲器地址

23、(exe) 5)如果需要,則訪問存儲器存取數(shù)據(jù)(mem) 6)將結(jié)果回寫到寄存器組(res),二、ARM7的三級流水線 1取指:從程序存儲器中取指令,放入指令流水線。(占用存儲器訪問操作) 2譯碼:指令譯碼。(占用譯碼邏輯) 3執(zhí)行:執(zhí)行指令/讀寫REG。(占用ALU及數(shù)據(jù)路徑),2.2.2 ARM流水線結(jié)構(gòu)(2),下圖為3個單周期指令在流水線上的情況。一條指令有3個時鐘周期的執(zhí)行時間,但吞吐量是每個周期1條指令。,t,1 2 3,PC值如何計算?,PC 指向處于讀取級的指令地址,而不是處于執(zhí)行級的指令地址 PC=當前執(zhí)行指令地址+8,ARM單周期指令的3級流水線操作,2.2.2 ARM流水線

24、結(jié)構(gòu)(3),優(yōu)秀的流水線結(jié)構(gòu),Operation,Cycle,1 2 3 45 6,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Decode,Execute,Fetch,Decode,Fetch,Fetch,本例中 6 個時鐘周期內(nèi)一共完成了 ? 條指令 全部對寄存器進行操作 (單周期執(zhí)行) 指令周期數(shù) (CPI) = 1,2.2.2 ARM流水線結(jié)構(gòu)(4),多周期指令的3級流水線操作,1 2 3 4 5 6 7 8,1 ADD,

25、2 STB,3 ADD,4 ADD,5 ADD,指令流水線出現(xiàn)了中斷,2.2.2 ARM流水線結(jié)構(gòu)(5),T4周期: 指令2地址計算產(chǎn)生下一周期數(shù)據(jù)路 徑需要的控制信號。 指令3譯碼產(chǎn)生下一周期數(shù)據(jù)路徑需要 的控制信號。 二者都產(chǎn)生下一周期數(shù)據(jù)路徑控制信號,數(shù)據(jù)路徑控制沖突,因此斷流。 T5周期: 指令2 STB訪問數(shù)據(jù)存儲器 指令5取指訪問程序存儲器 二者都訪問存儲器,造成訪問存儲器沖突,在此斷流。 指令3譯碼 指令4的譯碼則不得不推遲一個周期。,2.2.2 ARM流水線結(jié)構(gòu)(6),三、ARM9TDMI的五級流水線,ARM7TDMI與ARM9TDMI流水線比較,2.2.2 ARM流水線結(jié)構(gòu)(

26、7),四、ARM7和ARM9流水線比較 5級流水線的ARM9內(nèi)核是哈佛架構(gòu),擁有獨立的指令和數(shù)據(jù)總線;指令和數(shù)據(jù)的讀取可以在同一周期進行; 3級流水的ARM7內(nèi)核是指令和數(shù)據(jù)總線復用的馮.諾依曼架構(gòu),指令和數(shù)據(jù)的讀取不能在同一周期進行; 5級流水線設(shè)計把寄存器讀取、邏輯運算、結(jié)果回寫分散在不同的流水當中, 每一級流水的操作簡潔,提升了處理器的主頻。,2.2.2 ARM流水線結(jié)構(gòu)(8),2.2.2 ARM流水線結(jié)構(gòu)(9),隨著流水線深度(級數(shù))的增加,每一段的工作量被削減了,這使得處理器可以工作在更高的頻率,同時改進了處理器的性能; 負面作用是增加了系統(tǒng)的延時,即內(nèi)核在執(zhí)行一條指令前,需要更多的

27、周期來填充流水線; 流水線級數(shù)的增加也意味著在某些段之間會產(chǎn)生數(shù)據(jù)相關(guān)。,2.2.2 ARM流水線結(jié)構(gòu)(10),ARM處理器性能比較,2.2.3 ARM總線結(jié)構(gòu),ARM微控制器使用的是AMBA總線體系結(jié)構(gòu) AMBA(Advanced Microcontroller Bus Architecture)是ARM公司公布的總線標準,先進的AMBA規(guī)范定義了三種總線: AHB總線(Advanced High-performance Bus):用于連接高性能系統(tǒng)模塊。它支持突發(fā)數(shù)據(jù)傳輸方式及單個數(shù)據(jù)傳輸方式,所有時序 參考同一個時鐘沿。 ASB總線(Advanced System Bus):用于連接高性

28、能系統(tǒng)模塊,它支持突發(fā)數(shù)據(jù)傳輸模式。 APB總線(Advance Peripheral Bus):是一個簡單接口支持低性能的外圍接口。,本節(jié)主要內(nèi)容 1、數(shù)據(jù)類型 2、存儲器組織 3、存儲器層次,2.3 ARM存儲結(jié)構(gòu),2.3.1 ARM存儲數(shù)據(jù)類型 ARM處理器支持以下6種數(shù)據(jù)類型: 8位有符號和無符號字節(jié)(Byte)。 16位有符號和無符號半字(Halfword) 它們必須以兩字節(jié)的邊界對齊(半字對齊)。 32位有符號和無符號字(word) 它們必須以4字節(jié)的邊界對齊(字對齊)。 字對齊:字單元地址的低兩位 A1A0=0b00。即地址末位為0 x0, 0 x4, 0 x8, 0 xc。 半

29、字對齊:半字單元地址的最低位 A0=0b0 (地址末位為0 x0,0 x2,0 x4,0 x6,0 x8,0 xa,0 xc,0 xe)。,2.3 ARM存儲結(jié)構(gòu),對于指令,ARM指令系統(tǒng)分為32位ARM指令集和16位的Thumb指令集,在存儲時分別以32位和16位的兩種不同長度存儲。 對于數(shù)據(jù),ARM支持對32位字數(shù)據(jù),16位半字數(shù)據(jù),8位字節(jié)數(shù)據(jù)操作。因此數(shù)據(jù)存儲器可以存儲32位,16位,8位三種不同長度數(shù)據(jù)。 在ARM內(nèi)部,所有操作都面向32位的操作數(shù),只有數(shù)據(jù)傳送指令支持較短的字節(jié)和半字的數(shù)據(jù)類型。當從存儲器讀入一個字節(jié)或半字時,根據(jù)其數(shù)據(jù)類型將其擴展到32位。,2.3 ARM存儲結(jié)構(gòu)

30、(2),2.3.2 ARM存儲器組織 ARM存儲器以8位為一個單元存儲數(shù)據(jù)(一個字節(jié)),每個存儲單元分配一個存儲地址。 ARM將存儲器看作是從零地址開始的字節(jié)的線性組合。作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))。 從零字節(jié)到三字節(jié)放置第一個存儲的字數(shù)據(jù),從第四個字節(jié)到第七個字節(jié)放置第二個存儲的字數(shù)據(jù),依次排列。 32位的字數(shù)據(jù)要使用4個地址單元,16位半數(shù)據(jù)要使用2個地址單元。 這樣,就存在一個所存儲的字或半字數(shù)據(jù)的排列順序問題。ARM體系結(jié)構(gòu)可以用兩種方法存儲字數(shù)據(jù),稱為大端格式和小端格式 。,2.3 ARM存儲結(jié)構(gòu)(3),2.3 ARM存儲結(jié)構(gòu)(4),

31、大端格式(big-endian):字數(shù)據(jù)的高字節(jié)存儲在低地址中,而字數(shù)據(jù)的低字節(jié)則存放在高地址中。 小端格式(low-endian):與大端存儲格式相反。低地址中存放的是字數(shù)據(jù)的低字節(jié),高地址存放的是字數(shù)據(jù)的高字節(jié)。缺省設(shè)置為小端格式。,2.3.3 ARM存儲器層次 微處理器希望存儲器容量大、速度快。但容量大者速度慢;速度快者容量小。解決方法是構(gòu)建一個由多級存儲器組成的復合存儲器系統(tǒng)。 兩級存儲器方案 一般包括: 一個容量小但速度快的從存儲器 一個容量大但速度慢的主存儲器 宏觀上看這個存儲器系統(tǒng)像一個即大又快的存儲器。這個容量小但速度快的元件是Cache,它自動地保存處理器經(jīng)常用到的指令和數(shù)據(jù)

32、的拷貝。,2.3 ARM存儲結(jié)構(gòu)(5),多級存儲器系統(tǒng),寄存器組 訪問時間約為幾個ns。 片上RAM 與片外RAM比速度快、功耗小、 容量小。讀寫時間約為幾個ns。 片上Cache 832KB,訪問時間約為十幾個ns。 主存儲器 一般為幾兆字節(jié)1GB 的動態(tài)存 儲器,訪問時間約 50ns。,2.3 ARM存儲結(jié)構(gòu)(6),CPU,寄存器組,片上RAM,片上Cache,主存儲器,硬盤,2.4 ARM處理器的工作狀態(tài)和模式,為了能夠體現(xiàn)ARM的特點和性能,ARM處理器有兩種工作狀態(tài)和7種工作模式。 2.4.1 ARM處理器的工作狀態(tài) 有兩種工作狀態(tài): ARM狀態(tài):處理器執(zhí)行32位的字對齊的ARM指令

33、; Thumb狀態(tài):處理器執(zhí)行16位的半字對齊的Thumb指令。 兩種狀態(tài)可以切換。程序執(zhí)行過程中,通過執(zhí)行帶狀態(tài)切換的分支指令BX,隨時在兩種工作狀態(tài)之間進行切換。并且,處理器工作狀態(tài)的轉(zhuǎn)變,并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。,2.4 ARM處理器的工作狀態(tài)和模式(2),從ARM狀態(tài)切換到Thumb狀態(tài) 有兩種情況ARM處理器自動切換到Thumb狀態(tài)。 (1)執(zhí)行BX指令,當操作數(shù)寄存器的位0為1時,則微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此為主動切換。 (2)當處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef等),處理完異常后,在異常處理返回時,自動切換到T

34、humb狀態(tài)。此為自動切換。 從Thumb狀態(tài)切換到ARM狀態(tài) 有兩種情況ARM處理器自動切換到Thumb狀態(tài)。 (1)執(zhí)行BX指令,當操作數(shù)寄存器的位0為0時,則微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。 (2)當處理器在Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef等),則處理器從Thumb狀態(tài)自動切換到ARM狀態(tài)進行異常處理,2.4 ARM處理器的工作狀態(tài)和模式(3),例3.1 狀態(tài)切換程序 ;從ARM狀態(tài)切換到Thumb狀態(tài) LDRR0,=Lable+1 BXR0 ;從Thumb狀態(tài)切換到ARM狀態(tài) LDRR0,=Lable BXR0 注意: ARM和Thumb之間狀態(tài)的切換不

35、影響處理器的模式或寄存器的內(nèi)容。 ARM處理器在開始執(zhí)行代碼時,只能處于ARM狀態(tài)。,2.4.2 ARM處理器的工作模式,一、 ARM9的7種工作模式 1、用戶模式(usr):非特權(quán)模式,大部分任務(wù)執(zhí)行在這種模式。正常程序執(zhí)行的模式 2、快速中斷模式(fiq):當一個高優(yōu)先級(fast)中斷產(chǎn)生時將會進入這種模式。高速數(shù)據(jù)傳輸或通道處理 3、外部中斷模式(irq):當一個低優(yōu)先級(normal)中斷產(chǎn)生時將會進入這種模式。 通常的中斷處理 4、管理模式(svc):當復位或軟中斷指令執(zhí)行時將會進入這種模式。 供操作系統(tǒng)使用的一種保護模式,2.4.2 ARM處理器的工作模式(2),5、中止模式(a

36、bt):當存取異常時將會進入這種模式 虛擬存儲及存儲保護 6、未定義模式(und):當執(zhí)行未定義指令時會進入這種模式 軟件仿真硬件協(xié)處理器 7、系統(tǒng)模式(sys):供需要訪問系統(tǒng)資源的操作系統(tǒng)任務(wù)使用 特權(quán)級的操作系統(tǒng)任務(wù),2.4.2 ARM處理器的工作模式(2),二、模式分類及特點 七種模式可以劃分成四類 1、用戶模式特點: 應(yīng)用程序不能夠訪問受操作系統(tǒng)保護的系統(tǒng)資源。 應(yīng)用程序不能進行處理器模式的切換。 2、系統(tǒng)模式特點: 不屬于異常模式,不是通過異常進入的。系統(tǒng)模式屬于特權(quán)模式,可以訪問所有的系統(tǒng)資源,也可以直接進行模式的切換。它主要供操作系統(tǒng)使用。 3、特權(quán)模式及其特點: 特權(quán)模式:除

37、用戶模式之外的工作模式又稱為特權(quán)模式 特點: 應(yīng)用程序可以訪問所有的系統(tǒng)資源 可以任意地進行處理器模式的切換,2.4.2 ARM處理器的工作模式(3),4、異常模式及其特點: 異常模式:除用戶模式、系統(tǒng)模式之外的五種模式稱為異常模式。 特點:以各自的中斷或異常方式進入,并且處理各自的中斷或異常。對管理模式 (svc)進入方式和處理內(nèi)容有: 系統(tǒng)上電復位后進入管理模式,運行系統(tǒng)初始化程序,如中斷允許/禁止,主時鐘設(shè)置,SDRAM配置,各個功能模塊初始化等。 當執(zhí)行軟件中斷指令SWI時,進入管理模式。,2.4.2 ARM處理器的工作模式(4),處理器模式的切換方式: 軟件控制進行切換。 通過外部中

38、斷和異常進行切換 處理器啟動時的模式轉(zhuǎn)換圖,管理模式 (Supervisor),多種特權(quán) 模式變化,用戶程序的 運行模式,復位后的缺省模式,主要完成各模式的堆棧設(shè)置,注意不要進入用戶模式,一般為用戶模式User,2.5 ARM9寄存器,本節(jié)主要內(nèi)容 1、ARM寄存器概述 2、ARM通用寄存器 3、ARM狀態(tài)寄存器,2.5 ARM9寄存器,2.5.1、ARM寄存器概述 ARM處理器v4及以上版本有37個32位的寄存器 其中31個為通用寄存器;6個為狀態(tài)寄存器。 31個通用寄存器 R0R15; R13_svc、R14_svc; R13_abt、R14_abt; R13_und、R14_und; R

39、13_irq、R14_irq; R8_fiq-R14_fiq 6 個狀態(tài)寄存器 CPSR SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq,2.5 ARM9寄存器(2),每一類處理器模式都有一組相應(yīng)的寄存器組; 在任意的處理器模式下,可見的寄存器包括15個通用寄存器(R0R14)、1個或2個狀態(tài)寄存器和程序寄存器。 帶灰色底紋的單元格表示,用戶模式或系統(tǒng)模式使用的一般寄存器,已被異常模式特定的另一寄存器所替代。,2.5 ARM9寄存器(3),2.5 ARM寄存器(4),2.5.2 ARM的通用寄存器 通用寄存器包括R0R15,可以分為三類: 未分組寄存器

40、R0R7 分組寄存器R8R14 程序計數(shù)器PC(R15) 一、未分組寄存器R0R7 在所有的運行模式下,未分組寄存器都指向同一個物理寄存器,他們未被系統(tǒng)用作特殊的用途,是真正的通用寄存器。 因此,在中斷或異常處理進行運行模式轉(zhuǎn)換時,由于不同的處理器運行模式均使用相同的物理寄存器,可能會造成寄存器中數(shù)據(jù)的破壞,這一點在進行程序設(shè)計時應(yīng)引起注意。,2.5 ARM寄存器(5),二、分組的寄存器R8R14 對于R8R12,每一次所訪問的物理寄存器,與處理器當前的工作模式有關(guān)。 1、R8R12 當處理器工作于fiq模式時,訪問的寄存器為R8_fiqR12_fiq; 除fiq模式以外的其他模式,訪問的寄存

41、器為R8_usrR12_usr。 2、R13和R14: 每個寄存器對應(yīng)6個不同的物理寄存器,其中的一個是用戶模式與系統(tǒng)模式共用,另外5個物理寄存器,對應(yīng)于其他5種不同的異常模式。 采用以下的記號來區(qū)分不同的物理寄存器: R13_ R14_ 其中,mode為以下幾種模式之一:usr、fiq、irq、svc、abt、und。,2.5 ARM寄存器(6),R13:寄存器R13在ARM指令中常用作堆棧指針SP。但這只是一種習慣用法,用戶也可使用其他的寄存器作為堆棧指針。而在Thumb指令集中,某些指令強制性的要求使用R13作為堆棧指針。 R14:寄存器R14也稱作子程序鏈接寄存器(Subroutine

42、 Link Register)或鏈接寄存器LR。 當執(zhí)行BL子程序調(diào)用指令時,R14中得到R15(程序計數(shù)器PC)的備份。其他情況下,R14用作通用寄存器。 與之類似,當發(fā)生中斷或異常時,對應(yīng)的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來保存R15的返回值。,2.5 ARM寄存器(7),三、程序計數(shù)器PC(R15) 寄存器R15用作程序計數(shù)器(PC)。 在ARM狀態(tài)下,位1:0為0,位31:2用于保存PC;在Thumb狀態(tài)下,位0為0,位31:1用于保存PC; 使用R15時注意:雖然R15可以用作通用寄存器,但是有一些指令在使用R15時有一些特殊

43、限制,若不注意,執(zhí)行的結(jié)果將是不可預料的。所以,一般不這么使用。 關(guān)于PC的值:由于ARM采用多級流水線技術(shù),所以PC總是指向正在取指的指令,而不是正在執(zhí)行的指令。也即PC總是指向當前指令的下兩條指令的地址。因此,對于ARM指令集而言,PC的值為當前指令的地址值加8個字節(jié)。,2.5 ARM寄存器(8),2.5.3 ARM的狀態(tài)寄存器 一、兩種程序狀態(tài)寄存器 在ARM微處理器中,有CPSR和SPSR兩種程序狀態(tài)寄存器。 1、當前程序狀態(tài)寄存器 CPSR (Current Program Status Register) 用來保存當前程序狀態(tài)的寄存器。 所有處理器模式下都可以訪問當前程序狀態(tài)寄存器

44、CPSR。僅一個CPSR。 2、保存程序狀態(tài)寄存器SPSR_mode (Saved Program Status Register) SPSR_mode用來進行異常處理,其功能包括: 保存ALU中的當前操作信息 當異常發(fā)生時, 用來保存CPSR的值,從異常返回時,將 SPSR_mode復制到CPSR中,恢復CPSR的值。 控制允許和禁止中斷修改SPSR的值 設(shè)置處理器的運行模式修改SPSR的值 問題:一共有多少個SPSR?為什么?,2.5.3 ARM的狀態(tài)寄存器(2),二、ARM狀態(tài)寄存器的格式 1、條件碼標志位(保存ALU中的當前操作信息) N:正負號/大小 標志位 0表示:正數(shù)/大于;1表

45、示:負數(shù)/小于 Z:零標志位 0表示:結(jié)果不為零;1表示:結(jié)果為零 C:進位/借位/移出位 0表示:未進位/借位/移出0;1表示:進位/未借位/移出1 V:溢出標志位 0表示:結(jié)果未溢出;1表示:結(jié)果溢出,2.5.3 ARM9的狀態(tài)寄存器(3),2、控制位 I、F中斷控制位控制允許和禁止中斷 I1 禁止IRQ中斷I0 允許IRQ中斷 F1 禁止FIQ中斷F0 允許FIQ中斷 T控制(標志)位反映處理器的運行狀態(tài) T=1時,程序運行于Thumb狀態(tài) T=0時,程序運行于ARM狀態(tài) M控制位決定了處理器的運行模式 當發(fā)生異常時這些位被改變。 如果處理器運行在特權(quán)模式,這些位也可以由程序修改。,2.

46、5.3 ARM9的狀態(tài)寄存器(4),3、保留位 CPSR中的其余位為保留位,當改變CPSR中的條件碼標志位或者控制位時,保留位不要改變,在程序中也不要使用保留位來存儲數(shù)據(jù)。保留位將用于ARM版本的擴展。 2.5.4 Thumb狀態(tài)下的寄存器組織 Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的子集。程序員可以直接訪問8個通用的寄存器(R0R7),程序計數(shù)器PC、堆棧指針SP、鏈接寄存器LR和當前狀態(tài)寄存器CPSP。,本節(jié)主要內(nèi)容 1、中斷和異常的概念 2、ARM的異常中斷介紹 3、ARM的異常中斷響應(yīng)過程 4、中斷向量和中斷優(yōu)先級,2.6 ARM異常,2.6 ARM異常,2.6.1 中斷和異

47、常的概念 1、中斷 當CPU正在執(zhí)行程序時,系統(tǒng)發(fā)生了一件急需處理的事件,CPU暫時停下正在執(zhí)行的程序,轉(zhuǎn)去處理相應(yīng)的事件,事件處理完后,CPU再返回執(zhí)行原來的程序,這種情況稱為中斷。這是中斷的本來意義。 中斷事件:引起CPU產(chǎn)生中斷、并且與CPU當前所執(zhí)行的程序無關(guān)的、由外部硬件產(chǎn)生的事件,也叫中斷源。中斷事件也常稱為外中斷。 常說的中斷:有時指的是中斷的本意,有時指的是外部中斷事件,即外中斷。 中斷是計算機系統(tǒng)基本的功能 利用中斷,外設(shè)可以與CPU并行工作,當外設(shè)需要傳輸數(shù)據(jù)或控制時,向CPU發(fā)出中斷請求信號。CPU響應(yīng)其請求進行處理。因此,使用中斷既可以實現(xiàn)CPU與外設(shè)并行工作,又可以實

48、時處理各種緊急事件。,2.6 ARM異常,2、異常 是指CPU在執(zhí)行指令時出現(xiàn)的錯誤,即不正常的情況。異常是與當前所執(zhí)行的程序有關(guān)的。如存取數(shù)據(jù)或指令錯誤、計算結(jié)果溢出等。 異常的處理:也用中斷的方式進行處理。 計算機通常是用中斷來處理外中斷和異常,因此下面將二者均稱為異常。 3、ARM程序的三種執(zhí)行流程 順序流程:每執(zhí)行一條ARM指令,程序計數(shù)器 (PC)的值加4;每執(zhí)行一條Thumb指令,程序計數(shù)器寄存器(PC)的值加2,整個過程是按順序執(zhí)行。,對異常的說明 當系統(tǒng)運行時,異常可能會隨時發(fā)生,為保證在ARM處理器發(fā)生異常時不至于處于未知狀態(tài),在應(yīng)用程序的設(shè)計中,首先要進行異常處理,采用的方

49、式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序,當ARM處理器發(fā)生異常時,程序計數(shù)器PC會被強制設(shè)置為對應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序,當異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。 我們需要處理所有的異常,盡管我們可以簡單的在某些異常處理程序處放置死循環(huán)。,2.6 ARM異常,2.6 ARM異常,跳轉(zhuǎn)流程:程序執(zhí)行了跳轉(zhuǎn)指令,則要跳轉(zhuǎn)到特定的地址標號處執(zhí)行,包括跳轉(zhuǎn)到子程序。例如,跳轉(zhuǎn)指令,B、BL、BLX和BX。 中斷流程:當異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。在當異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下條指令處執(zhí)

50、行。 在進行異常中斷處理程序時,要保存被中斷的程序的執(zhí)行現(xiàn)場,在從異常中斷處理程序退出時,要恢復被中斷的程序的執(zhí)行現(xiàn)場。 中斷處理與子程序調(diào)用的區(qū)別:中斷是隨機的,并且與正在執(zhí)行的程序無關(guān);子程序調(diào)用是程序的主動行為,并且與正在執(zhí)行的程序密切相關(guān)。,2.6.2 ARM的異常 ARM有7種異常 1、復位 處理器上一旦有復位輸入,ARM處理器立刻停止執(zhí)行當前指令。復位后,ARM處理器在禁止中斷的管理模式下,從地址0 x00000000或0 xFFFF0000開始執(zhí)行指令。 2、未定義指令異常 當ARM處理器執(zhí)行協(xié)處理器指令時,它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒有響

51、應(yīng),就會出現(xiàn)未定義指令異常。 未定義指令異常可用于在沒有物理協(xié)處理器(硬件)的系統(tǒng)上,對協(xié)處理器進行軟件仿真,或在軟件仿真時進行指令擴展。,2.6 ARM異常,3、軟件中斷異常 該異常由執(zhí)行SWI指令產(chǎn)生,可使用此機制進行軟件仿真。 4、預取中止(取指令存儲器中止) 若處理器預取指令的地址不存在,或該地址不允許當前指令訪問,存儲器會向處理器發(fā)出中止信號,但當預取的指令被執(zhí)行時,才會產(chǎn)生指令預取中止異常。 5、數(shù)據(jù)中止(訪問數(shù)據(jù)存儲器中止) 若處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當前指令訪問時,產(chǎn)生數(shù)據(jù)中止異常。,2.6 ARM異常,6、IRQ異常 當處理器的外部中斷請求引腳有效,且C

52、PSR中的I=0,產(chǎn)生IRQ異常。 系統(tǒng)的外設(shè)可通過該異常請求中斷服務(wù)。 7、FIQ異常 當處理器的外部中斷請求引腳有效,且CPSR中的F=0,產(chǎn)生FIQ異常。 FIQ支持數(shù)據(jù)傳送和通道處理,并有足夠的私有寄存器,從而在應(yīng)用中可避免對寄存器保存的需求,減少了開銷。,2.6 ARM異常,2.6.3 ARM異常中斷響應(yīng)過程 一、進入異常 當發(fā)生異常時,除了復位異常立即中止當前指令外,處理器盡量完成當前指令,然后脫離當前的程序去處理異常。ARM處理器對異常中斷的響應(yīng)過程如下 : 1、保存返回地址 將引起異常指令的下一條指令的地址保存到新的異常模式x下的R14,即R14-中,使異常處理程序執(zhí)行完后能正

53、確返回原程序。 2、保存當前狀態(tài)寄存器CPSR的內(nèi)容 將CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對應(yīng)的SPSR中,便于中斷返回時恢復處理器當前的狀態(tài)位、中斷屏蔽位以及各條件標志位。,2.6 ARM異常,3、設(shè)置當前狀態(tài)寄存器CPSR中的相應(yīng)位 設(shè)置CPSR模式控制位CPSR4:0,使處理器進入相應(yīng)的執(zhí)行模式; 設(shè)置中斷標志位(CPSR6=1),禁止IRQ中斷; 設(shè)置中斷標志位(CPSR7=1)禁止FIQ中斷,當進入Reset或FIQ模式時。 4、轉(zhuǎn)去執(zhí)行中斷處理程序 取相應(yīng)的中斷向量給程序計數(shù)器PC,使程序開始執(zhí)行中斷處理程序。 一般地說,矢量地址處將包含一條指向相應(yīng)程序的轉(zhuǎn)移指令,從而可跳轉(zhuǎn)到

54、相應(yīng)的異常中斷處理程序處執(zhí)行異常中斷處理程序 。,2.6 ARM異常,2.6 ARM異常,ARM處理器對異常的響應(yīng)過程可以用偽代碼描述如下 : R14_=return link SPSR_=CPSR CPSR4:0=exception mode number CPSR5=0 /*當運行于ARM狀態(tài)時*/ CPSR6=1 /*禁止新的IRQ中斷*/ if =Reset or FIQ then CPSR7=1 /*當Reset 或FIQ異常中斷時*/ /*禁止新 的FIQ中斷*/ PC=exception vector address,注意使用異常模式下的特有寄存器 每個異常模式對應(yīng)有兩個寄存器R

55、13_、R14_分別保存相應(yīng)模式下的堆棧指針、返回地址;堆棧指針可用來定義一個存儲區(qū)域保存其它用戶寄存器,在程序初始化時應(yīng)該對各種模式堆棧設(shè)置,便于隨時使用。 FIQ模式還有額外的專用寄存器R8_fiqR12_fiq,使用這些寄存器可以加快快速中斷的處理速度。,2.6 ARM異常,二、異常返回 1、異常返回應(yīng)執(zhí)行的操作 異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回: 將返回地址裝入PC 把連接寄存器LR的值減去相應(yīng)的偏移量,然后送到PC中。 恢復CPSR的值 將SPSR復制回CPSR中。 清除中斷屏蔽位 若在進入異常處理時設(shè)置了中斷禁止位,要在此清除。 可以認為應(yīng)用程序總是從復

56、位異常處理程序開始執(zhí)行的,因此復位異常處理程序不需要返回。,2.6 ARM異常,2、各種異常返回方法 FIQ中斷返回 不管是在ARM狀態(tài)還是在Thumb狀態(tài)下進入FIQ模式,F(xiàn)IQ處理程序均可以執(zhí)行以下指令從FIQ模式返回: SUBS PC,R14-fiq ,#4 指令預取中止( Abort )異常返回 當指令預取訪問存儲器失敗時,存儲器系統(tǒng)向ARM處理器發(fā)出存儲器中止(Abort)信號,預取的指令被記為無效,但只有當處理器試圖執(zhí)行無效指令時,指令預取中止異常才會發(fā)生,如果指令未被執(zhí)行,例如在指令流水線中發(fā)生了跳轉(zhuǎn),則預取指令中止不會發(fā)生。 如果發(fā)生了指令預取中止異常,無論是在ARM狀態(tài)還是T

57、humb狀態(tài),其返回指令為: SUBS PC, R14_abt, #4;重新執(zhí)行被中止的指令,2.6 ARM異常,數(shù)據(jù)中止( Abort )異常返回 如果發(fā)生了數(shù)據(jù)中止異常,無論是在ARM狀態(tài)還是Thumb狀態(tài),其返回指令為: SUBS PC, R14_abt, #8 重新執(zhí)行被中止的指令 軟件中斷指令(SWI)異常返回 用于進入管理模式,常用于請求執(zhí)行特定的管理功能。軟件中斷處理程序執(zhí)行以下指令可以從SWI模式返回,無論是在ARM狀態(tài)還是Thumb狀態(tài): MOVS PC , R14_svc 以上指令恢復PC(從R14_svc)和CPSR(從SPSR_svc)的值,并返回到SWI的下一條指令。

58、,2.6 ARM異常,未定義指令異常返回 當ARM處理器遇到不能處理的指令時,會產(chǎn)生未定義指令異常。采用這種機制,可以通過軟件仿真擴展ARM或Thumb指令集。 處理器執(zhí)行以下程序返回,無論是在ARM狀態(tài)還是Thumb狀態(tài): MOVS PC, R14_und 以上指令恢復PC(從R14_und)和CPSR(從SPSR_und)的值,并返回到未定義指令后的下一條指令。,2.6 ARM異常,ARM中斷向量,2.6.4 ARM中斷向量和優(yōu)先級,異常中斷向量表,2.6 ARM的異常,異常中斷向量表說明: 存儲器的前8個字中除了地址0 x00000014之外,全部被用作異常矢量地址。 這是因為在早期的26位地址空間的ARM處理器中,曾使用地址0 x00000014來捕獲落在地址空間之外的load和store存儲器地址。這些陷阱稱為“地址異?!保驗?2位的ARM不會產(chǎn)生落在它的32位地址空間之外的地址,所以地址異常在當前的體系結(jié)構(gòu)中沒有作用,0 x00000014的矢量地址也就不再使用了。,2.6 ARM的異常,ARM中斷的優(yōu)先級,2.6 ARM異常,2.7 ARM系統(tǒng)調(diào)試接口,2.7.1 系統(tǒng)信號和調(diào)試工具狀況 傳統(tǒng)調(diào)試工具及調(diào)試方法 傳統(tǒng)的工具和方法存在過分依賴芯片引腳的特點,不能在處理器高速運行下正常工作,并且占用系統(tǒng)資源、不能實時跟

溫馨提示

  • 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

提交評論