第2章ARM7體系結(jié)構(gòu)82899_第1頁
第2章ARM7體系結(jié)構(gòu)82899_第2頁
第2章ARM7體系結(jié)構(gòu)82899_第3頁
第2章ARM7體系結(jié)構(gòu)82899_第4頁
第2章ARM7體系結(jié)構(gòu)82899_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) 2.1 ARM簡介 ARM公司簡介 ARM是Advanced RISC Machines的縮寫,它是 一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計了大量 高性能、廉價、耗能低的RISC (精簡指令集)處 理器。 公司的特點是只設(shè)計芯片,而不生 產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟 件和OEM廠商,并提供服務(wù)。 2.1 ARM簡介 ARM公司簡

2、介 將技術(shù)授權(quán)給 其它芯片廠商 形成各具特色 的ARM芯片 . . . 2.1 ARM簡介 RISC結(jié)構(gòu)特性 RISC是精簡指令集計算機的縮寫,其目標是設(shè)計出 在高時鐘頻率下單周期執(zhí)行,簡單而有效的指令集。 ARM內(nèi)核采用RISC體系結(jié)構(gòu),因此具有RISC的結(jié)構(gòu)特 點: 具有大量的通用存儲器; 獨特的裝載/保存(load-store)結(jié)構(gòu); 簡單的尋址模式; 統(tǒng)一和固定長度的指令格式。 2.1 ARM簡介 為了使ARM能夠更好地滿足嵌入式應(yīng)用的需要, ARM體系結(jié)構(gòu)還有以下特點: 每條數(shù)據(jù)處理指令可同時包含算術(shù)邏輯單元(ALU) 的運算和移位處理,實現(xiàn)ALU和移位器的最大利用; 使用地址自增和

3、自減的尋址方式優(yōu)化程序循環(huán); 裝載/保存指令對數(shù)據(jù)的批量傳輸,實現(xiàn)最大數(shù)據(jù)吞 吐量; 大多數(shù)指令的條件執(zhí)行,實現(xiàn)最快速的代碼執(zhí)行。 ARM體系結(jié)構(gòu) 2.1 ARM簡介 常用ARM處理器系列 ARM公司開發(fā)了很多系列的ARM處理器核,目前 最新的系列是Cortex,而ARM6核以及更早的系列已經(jīng) 很罕見了。當前應(yīng)用比較多的ARM處理器核系列有: ARM7ARM9ARM10E Xscale ARM11CortexARM9E 2.1 ARM簡介 ARM Cortex系列簡介 基于ARMv7版本的ARM Cortex系列產(chǎn)品由A、R、 M三個系列組成,具體分類延續(xù)了一直以來ARM面向具 體應(yīng)用設(shè)計CP

4、U的思路。 ARM Cortex A應(yīng)用處理器(Application Processor )系列 R實時控制處理(Real Time Control )系列 M微控制器(Micro Controller )系列 2.1 ARM簡介 CortexTM-M3處理器簡介 該處理器是首款基于ARMv7-M架構(gòu)的處理器,采 用了純Thumb2指令的執(zhí)行方式,具有極高的運算能力 和中斷相應(yīng)能力。 Cortex-M3主要應(yīng)用于汽車車身系統(tǒng),工業(yè)控制系 統(tǒng)和無線網(wǎng)絡(luò)等對功耗和成本敏感的嵌入式應(yīng)用領(lǐng)域。 目前最便宜的基于該內(nèi)核的ARM單片機售價為1美元。 2.1 ARM簡介 CortexTM-R4處理器簡介

5、該處理器是首款基于ARMv7架構(gòu)的高級嵌入式處理 器,其主要目標為產(chǎn)量巨大的高級嵌入式應(yīng)用系統(tǒng), 如硬盤,噴墨式打印機,以及汽車安全系統(tǒng)等等。 CortexTM-R4F處理器簡介 該處理器在CortexTM-R4處理器的基礎(chǔ)上加入了代碼 錯誤校正(ECC)技術(shù),浮點運算單元(FPU)以及DMA綜合 配置的能力,增強了處理器在存儲器保護單元、緩存、 緊密耦合存儲器、DMA訪問以及調(diào)試方面的能力。 2.1 ARM簡介 CortexTM-A8處理器簡介 該處理器是ARM公司所開發(fā)的基于ARMv7架構(gòu)的 首款應(yīng)用級處理器,其特色是運用了可增加代碼密度 和加強性能的技術(shù)、可支持多媒體以及信號處理能力 的

6、NEONTM技術(shù)、以及能夠支持Java和其他文字代碼語 言的提前和即時編譯的JazelleRTC技術(shù)。 眾多先進的技術(shù)使其適用于家電以及電子行業(yè)等各 種高端的應(yīng)用領(lǐng)域。 2.1 ARM簡介 ARM7系列簡介 該系列包括ARM7TDMI、ARM7TDMI-S、帶有高 速緩存處理器宏單元的ARM720T和擴充了Jazelle的 ARM7EJ-S。該系列處理器提供Thumb 16位壓縮指令 集和EmbededICE軟件調(diào)試方式,適用于更大規(guī)模的 SoC設(shè)計中。 ARM7系列廣泛應(yīng)用于多媒體和嵌入式設(shè)備,包括 Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備,以及移動電話、 PDA等無線設(shè)備。 2.1 AR

7、M簡介 該系列包括ARM9TDMI、ARM920T和帶有高速 緩存處理器宏單元的ARM940T。除了兼容ARM7系列, 而且能夠更加靈活的設(shè)計。 ARM9系列主要應(yīng)用于引擎管理、儀器儀表、安 全系統(tǒng)和機頂盒等領(lǐng)域。 ARM9系列簡介 2.1 ARM簡介 該系列為含有DSP指令集的綜合處理器,包括 ARM926EJ-S、帶有高速緩存處理器宏單元的 ARM966E-S/ARM946E-S。其內(nèi)核在ARM7處理器內(nèi)核 的基礎(chǔ)上使用了Jazelle增強技術(shù),該技術(shù)支持一種新 的Java操作狀態(tài),允許在硬件中執(zhí)行Java字節(jié)碼。 ARM9E系列主要應(yīng)用于下一代無線設(shè)備、數(shù)字消 費品、成像設(shè)備、工業(yè)控制、

8、存儲設(shè)備和網(wǎng)絡(luò)設(shè)備等 領(lǐng)域。 ARM9E系列簡介 2.1 ARM簡介 ARM10E系列簡介 該系列包括ARM1020E和ARM1020E處理器核, 其核心在于使用向量浮點(VFP)單元VFP10提供高性 能的浮點解決方案,從而極大提高了處理器的整型和 浮點運算性能。 可以用于視頻游戲機和高性能打印機等場合。 2.1 ARM簡介 Xscale簡介 Intel Xscale微控制器則提供全性能、高性價比、 低功耗的解決方案,支持16位Thumb指令并集成數(shù)字 信號處理(DSP)指令。 主要應(yīng)用于手提式通訊和消費電子類設(shè)備。 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖

9、4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) ARM7TDMI-S 2.2 ARM7TDMI 簡介 ARM7TDMI是基于ARM體系結(jié)構(gòu)V4版本的低端 ARM核。 其彌補了ARM6很難在低于5V電壓下穩(wěn)定工 作的不足,還增加了后綴所對應(yīng)的功能: 支持高密度16位的Thumb指令集; 支持片上調(diào)試; 支持64位乘法; 支持EmbededICE觀察硬件; ARM7TDMI 的可綜合(synthesizable) 版本(軟核),對應(yīng)用工程師來說其編 程模型與ARM7TD

10、MI 一致; 注意:“ARM核”并非芯片,ARM核與其它部件 如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成現(xiàn)實的 芯片。 2.2 ARM7TDMI 存儲器的字與半字 從偶數(shù)地址開始的連續(xù)2個字節(jié)構(gòu)成一個半字; 以能被4整除的地址開始的連續(xù)4個字節(jié)構(gòu)成一個 字; ARM指令的長度剛好是一個字,Thumb指令的長 度剛好是一個半字。 2.2 ARM7TDMI 如果一個數(shù)據(jù)是從偶地址開始的連續(xù)存儲,那么 它就是半字對齊,否則就是非半字對齊; 如果一個數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存 儲,那么它就是字對齊,否則就是非字對齊。 方式半字對齊字對齊 地址 0 x4002 0 x4004 0 x4004

11、 0 x4008 特征 Bit0=0 其他位為任意值 Bit1=0,Bit0=0 其他位為任意值 存儲器的存儲方式 2.2 ARM7TDMI 三級流水線 ARM處理器使用流水線來增加處理器指令流的速度, 這樣可使幾個操作同時進行,并使處理和存儲器系統(tǒng)連 續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。 ARM7TDMI的流水線分3級,分別為: 取指譯碼執(zhí)行取指譯碼執(zhí)行 處理指令并將結(jié)果寫回寄存器 識別將要被執(zhí)行的指令 從寄存器裝載一條指令 正常操作過程中,在執(zhí)行一條指令的同時對下一條 (第二條)指令進行譯碼,并將第三條指令從存儲器中取 出。 在ARM狀態(tài)下,流水線上各指令的地址為: 在Th

12、umb狀態(tài)下,流水線上各指令的地址為: PCPC-4PC-8PCPC-2PC-4 2.2 ARM7TDMI 三級流水線結(jié)構(gòu)的指令執(zhí)行順序 PC 指令1 指令2 指令3 指令4 程序存儲器 PC-4 PC-8 PC+4 周期1周期2周期3周期4周期5周期6 取指 譯碼 執(zhí)行 取指 譯碼 執(zhí)行 取指 譯碼 執(zhí)行 取指 譯碼 執(zhí)行 周期周期2周期周期1周期周期3周期周期4 在第1個周期,PC指向指令1,此時指令1 進入三級流水線的取指階段。 1 在第2個周期,PC指向指令2,此時指令 1進入三級流水線的譯碼階段,同時取出指 令2。 2 在第3個周期,PC指向指令3,此時指令 1進入三級流水線的執(zhí)行階

13、段,指令2進入譯 碼階段,取出指令3。 3 在第4個周期,指令1執(zhí)行完成,指令2和 指令3流水線推進一級,同時開始指令4的 取指處理。 4 處理器執(zhí)行一條 指令的三個階段 執(zhí)行ADD PC,PC,#4指 令后,PC的值為多少? 2.2 ARM7TDMI 思考題 ADD PC,PC,#4 0 x4000 0 x4004 0 x4008 0 x400C 地址指令 PC 取指譯碼執(zhí)行 PCPC-4PC-8 ARM7的3級流水線 ADD 程序計數(shù)器R15(PC) 總是指向“正在取指” 的指令,而不是指向 “正在執(zhí)行”的指令或 “正在譯碼”的指令。 一般來說,人們習(xí)慣 性約定將“正在執(zhí)行” 的指令作為參

14、考點,則: PC值當前程序執(zhí)行位置8 注:ARM狀態(tài)時, 每條指令為4字節(jié)長。 PC指向0 x4000地址, 取指ADD指令。 PC指向0 x4004地址, 譯碼ADD指令。 PC指向0 x4008地址, 執(zhí)行ADD指令,所以指 令執(zhí)行的結(jié)果為: PC=PC+40 x40084 0 x400C。 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) CPU 掃 描 鏈 1 掃 描 鏈 1 數(shù) 據(jù) 總

15、 線 數(shù)據(jù)總線掃描鏈 1 掃 描 鏈 2 協(xié)處理器 信號接口 EmbeddedICE-RT TAP 控制器 EmbeddedICE-RT 宏單元 DBGTCKEN DBGTMS DBGnTRST DBGTDI DBGTDO RDATA31:0 WDATA31:0 ADDR31:0 TRANS1:0 PROT1:0 SIZE1:0 WRITE LOCK DBGRNG(0) DBGRNG(1) DBGEXT(1) DBGEXT(0) 2.3 ARM模塊框圖 CPU協(xié)處理 接口信號 EmbedICE硬件 仿真功能模塊 片上調(diào)試系統(tǒng) 讀寫總線 2.3 ARM內(nèi)核框圖 地址寄存器 寄存器組 31*32位

16、寄存器 (6個狀態(tài)寄存器) 地址增加器 乘法器 桶形移位器 32位ALU 寫數(shù)據(jù)寄存器 指令管線讀數(shù)據(jù)寄存器 Thumb指令譯碼器 指令譯碼 和 控制邏輯 ADDR31:0 CLK CLEN CFGBIGEND nIRQ nFIQ nRESET ABORT LOCK WRITE SIZE1:0 PROT1:0 TRANS1:0 DBG輸出 DBG輸入 CP控制 CP握手 WDATA31:0RDATA31:0 掃描調(diào)試 控制 2.3 ARM功能框圖 ARM7TDMI-S 處理器 LOCK CLK CLKEN nIRQ nFIQ nRESET CFGBIGEND DBGRQ DMORE DBGIN

17、STRVAILD DBGBREAK DBGACK DBGnEXEC DBGEXT1 DBGEXT0 DBGEN DBGCOMMTX DBGCOMMRX DBGRNG0 DBGRNG1 DBGTCKEN DBGTMS DBGTDI DBGnTRST DBGTDO DBGnTDOEN ADDR31:0 WDATA31:0 RDATA31:0 ABORT WRITE SIZE1:0 PROT1:0 TRANS1:0 CPnTRANS CPnOPC CPnMREQ CPSEQ CPTBIT CPnI CPA CPB 同步的掃描調(diào) 試訪問接口 存儲器接口 存儲器管理接口 協(xié)處理器接口 時鐘 中斷 總線控

18、制 仲裁 調(diào)試 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) 2.4 ARM處理器狀態(tài) 處理器狀態(tài) ARM7TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為 ARM指令集和Thumb指令,并且各自對應(yīng)1種處理器的 狀態(tài): ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令, 處理器默認為此狀態(tài); Thumb狀態(tài):16位,處理器執(zhí)行半字方式的Thumb 指令。 注意:兩個狀態(tài)之間的切換并不影響處理器模

19、式或 寄存器內(nèi)容。 2.4 ARM處理器狀態(tài) 狀態(tài)切換的一個例子 地址最低位為 0,表示切換 到ARM狀態(tài) 使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和 Thumb狀態(tài)之間進行切換。 ARM指令集 Thumb 指令集 CODE32 LDRR0, =Lable+1 BX R0 CODE16 Lable MOV R1, #12 CODE16 LDR R0, =Lable BX R0 CODE32 LableMOV R1, #10 地址最低位為 1,表示切換 到Thumb狀態(tài) 跳轉(zhuǎn)地址標號 執(zhí)行完BX指令,處 理器切換到Thumb 狀態(tài),開始執(zhí)行 Thumb指令程序代碼指令集關(guān)系 從ARM狀態(tài)切

20、換到Thumb狀態(tài)的程序代碼如下: 從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下: 執(zhí)行完BX指令,處 理器切換到ARM狀 態(tài),開始執(zhí)行ARM 指令 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) 2.5 ARM處理器模式 簡介 ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模 式、快中斷模式、中斷模式、管理模式、中止模式、未定 義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系 統(tǒng)并提高工

21、作效率。ARM7TDMI完全支持這七種模式。 除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部 寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為 只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切 換處理器模式,而用戶模式不能直接切換到別的模式。 處理器模式處理器模式說明說明備注備注 用戶(usr)正常程序運行的工作模式不能直接從用戶模式切換到其它模式 特 權(quán) 模 式 系統(tǒng)(sys) 用于支持操作系統(tǒng)的特權(quán)任務(wù) 等 與用戶模式類似,但具有可以直接切換 到其它模式等特權(quán) 異 常 模 式 快中斷(fiq)快速中斷請求處理只有在FIQ異常響應(yīng)時,才進入此模式 中斷(irq)中斷請求處理只有在IRQ異

22、常響應(yīng)時,才進入此模式 管理(svc) 供操作系統(tǒng)使用的一種保護模 式 只有在系統(tǒng)復(fù)位和軟件中斷響應(yīng)時,才 進入此模式 中止(abt)用于虛擬內(nèi)存和/或存儲器保護在ARM7內(nèi)核中沒有多大用處 未定義(und)支持軟件仿真的硬件協(xié)處理器 只有在未定義指令異常響應(yīng)時,才進入 此模式 處理器模式 這兩種模式都不能由異常進入,想要進入必須修改 CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是 特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下 訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一 些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。 這五種模式稱為異常模式。它們除了可以通過程序切 換進入外,也

23、可以由特定的異常進入。當特定的異常出現(xiàn) 時,處理器進入相應(yīng)的模式。每種異常模式都有一些獨立 的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。 何時進入異常模式,具體規(guī)定如下: 處理器復(fù)位之后進入管理模式,操作系統(tǒng)內(nèi)核通常處于 管理模式; 當處理器訪問存儲器失敗時,進入數(shù)據(jù)訪問中止模式; 當處理器遇到?jīng)]有定義或不支持的指令時,進入未定義 模式; 中斷模式與快速中斷模式分別對ARM處理器2種不同級 別的中斷作出響應(yīng)。 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器

24、 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) 2.6 ARM內(nèi)部寄存器 簡介 在ARM處理器內(nèi)部共有37個用戶可訪問的寄存器, 分別為31個通用32位寄存器和6個狀態(tài)寄存器。 ARM處理器共有7種不同的處理器模式,每種模 式都有一組相應(yīng)的寄存器組,最多可以18個活動的寄 存器。 ARM狀態(tài)各模式下的寄存器 寄存器寄存器 類別類別 寄存器在匯寄存器在匯 編中的名稱編中的名稱 各模式下實際訪問的寄存器各模式下實際訪問的寄存器 用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義中斷中斷快中斷快中斷 通通 用用 寄寄 存存 器器 和和 程程 序序 計計 數(shù)數(shù) 器器 R0(a1)R0

25、R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(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_scvR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiq R15(PC)R15 狀態(tài)狀態(tài) 寄存器寄存器 CPSRCPSR SPSRSPSR_svcSPSR_abt

26、SPSR_undSPSR_irqSPSR_fiq 所有的37個寄存器, 分成兩大類: 31個通用32位寄存器; 6個狀態(tài)寄存器。 ARM狀態(tài)各模式下可以訪問的寄存器 寄存器寄存器 類別類別 寄存器在匯寄存器在匯 編中的名稱編中的名稱 各模式下實際訪問的寄存器各模式下實際訪問的寄存器 用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義中斷中斷快中斷快中斷 通通 用用 寄寄 存存 器器 和和 程程 序序 計計 數(shù)數(shù) 器器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB

27、,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15(PC)R15 狀態(tài)狀態(tài) 寄存器寄存器 CPSRCPSR SPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq 未分組的通用寄存器 寄存器寄存器 類別類別 寄存器在匯寄存器在匯 編中的名稱編中的名稱 各模式下實際訪問的寄存器各模

28、式下實際訪問的寄存器 用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義中斷中斷快中斷快中斷 通通 用用 寄寄 存存 器器 和和 程程 序序 計計 數(shù)數(shù) 器器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(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_scvR13_abtR13_undR13_irqR13_fiq R14(LR)R14R1

29、4_svcR14_abtR14_undR13_irqR14_fiq R15(PC)R15 狀態(tài)狀態(tài) 寄存器寄存器 CPSRCPSR SPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器R0R7為未 分組的通用寄存器, 它們在任何處理器模 式都對應(yīng)于相同的32 位物理寄存器。 第一類分組的通用寄存器 寄存器R8R12 有兩個分組的物 理寄存器。一個 用于除FIQ模式 之外的所有寄存 器模式,另一個 用于FIQ模式。 在發(fā)生FIQ中斷 后,處理器不必 為保護寄存器而 浪費時間,從而 加速了FIQ的處 理速度。 第二類分組的通用寄存器 寄存器R13、R14

30、分別 有6個分組的物理寄存 器。1個用于用戶和系 統(tǒng)模式,其余5個分別 用于5種異常模式。 寄存器R13通常作為 堆棧指針(SP),用 于保存待使用的寄存 器的內(nèi)容。 寄存器R14稱為鏈接寄存器(LR), 在結(jié)構(gòu)上有兩個特殊功能: 當使用BL指令調(diào)用子程序時,返回 地址將自動存入R14中; 當發(fā)生異常時,將R14對應(yīng)的異常 模式版本設(shè)置為異常返回地址(有 些異常有一個小的固定偏移量)。 程序計數(shù)器 寄存器R15稱為程序計 數(shù)器(PC),它指向 正在“取指”的指令。 狀態(tài)寄存器 寄存器CPSR為當前程序狀態(tài)寄存器,在異常 模式中,另外一個寄存器“程序狀態(tài)保存寄 存器(SPSR)”可以被訪問。每種

31、異常都有 自己的SPSR,在進入異常時它保存CPSR的當 前值,異常退出時可通過它恢復(fù)CPSR。 2.6 ARM內(nèi)部寄存器 在Thumb狀態(tài)各模式下實際訪問的寄存器 Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序 員可以直接訪問的寄存器為: 8個通用寄存器R0R7; 程序計數(shù)器(PC); 堆棧指針(SP); 鏈接寄存器(LR); 當前程序狀態(tài)寄存器( CPSR)。 在Thumb狀態(tài)各模式下的寄存器 寄存器寄存器 類別類別 寄存器在匯寄存器在匯 編中的名稱編中的名稱 各模式下實際訪問的寄存器各模式下實際訪問的寄存器 用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義中斷中斷快中斷快中斷 通通 用用

32、寄寄 存存 器器 和和 程程 序序 計計 數(shù)數(shù) 器器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4,WR)R7 SPR13R13_scvR13_abtR13_undR13_irqR13_fiq LRR14R14_svcR14_abtR14_undR13_irqR14_fiq PCR15 狀態(tài)狀態(tài) 寄存器寄存器 CPSRCPSR 未分組的通用寄存器 第二類分組的通用寄存器 在匯編語言中寄存器R0R7為通用寄存 器,對于任何處理器模式,它們中的每 一個都對應(yīng)于相同的32為物理寄存器。 堆棧指針SP對應(yīng)ARM

33、狀態(tài)的寄存器R13。 每個異常模式都有其自身的SP分組版本, SP通常指向各異常模式所專用的堆棧。 注意:在發(fā)生異常時,處理器自動進入 ARM狀態(tài)。 鏈接寄存器LR對應(yīng)ARM狀態(tài)寄存器R14。 注意:在發(fā)生異常時,處理器自動進入 ARM狀態(tài)。 ARM狀態(tài) Thumb寄存器在ARM狀態(tài)寄存器上的映射 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 堆棧指針(R13) 連接寄存器(R14) 程序計數(shù)器(R15) CPSR SPSR R0 R1 R2 R3 R4 R5 R6 R7 堆棧指針(SP) 連接寄存器(LR) 程序計數(shù)器(PC) CPSR Thumb狀態(tài)

34、Thumb狀態(tài)R0R7與 ARM狀態(tài)R0R7相同; 1 Thumb狀態(tài)CPSR(無 SPSR)與ARM狀態(tài)CPSR相 同。 5 Thumb狀態(tài)SP映射到 ARM狀態(tài)R13; 2 Thumb狀態(tài)LR映射到 ARM狀態(tài)R14; 3 Thumb狀態(tài)PC映射到 ARM狀態(tài)R15(PC); 4 低端寄存器 高端寄存器 在Thumb狀態(tài)中,高端 寄存器的訪問是受到限制的, 只有MOV、CMP和ADD指 令可以對其訪問,可以用于 數(shù)據(jù)的快速暫存。 ARM Thumb ARM Reset BX BX ARM 中斷服務(wù)程序正常程序事件 ARM ARM ISR1 ISR2 ISRn 狀態(tài)切換過程 異常發(fā)生 進入

35、退出 系統(tǒng)復(fù)位,自動切換到ARM狀態(tài)。 1 通過BX和BLX指令改變當前處理器模式,使之從 ARM狀態(tài)切換到Thumb狀態(tài)。 2 在Thumb狀態(tài)下,正常程序執(zhí)行時產(chǎn)生中斷異常。 3 處理器進入中斷異常,自動的將模式切換到ARM狀 態(tài)。 4 異常處理完畢,返回正常程序,此時處理器自動的 將模式切換到Thumb狀態(tài)。 5 再次通過BX和BLX指令改變當前處理器模式,使之從 Thumb狀態(tài)切換到ARM狀態(tài)。 6 程序在正常運行的過程中,復(fù)位事件產(chǎn)生,導(dǎo)致 系統(tǒng)復(fù)位。 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)

36、構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) 2.7 當前程序狀態(tài)寄存器 簡介 ARM內(nèi)核包含1個CPSR和5個僅供異常處理程序 使用的SPSR。CPSR反映當前處理器的狀態(tài),其包含: 4個條件代碼標志(負標志N、零標志Z、進位標志 C和溢出標志V ); 2個中斷禁止位(IRQ禁止與FIQ禁止); 5個對當前處理器模式進行編碼的位(M4:0); 1個用于指示當前執(zhí)行指令的位(ARM指令還是 Thumb指令)。 2.7 當前程序狀態(tài)寄存器 程序狀態(tài)寄存器的格式 NZCV IM0M1M2M3M4TF. . . 31 30 2

37、9 28 27 26 8 7 6 5 4 3 2 1 0 條件代碼標志保留控制位 溢出標志 進位或借位擴展 零 負或小于 IRQ禁止 FIQ禁止 狀態(tài)位 模式位 NZCVIM0M1M2M3M4TF 2.7 當前程序狀態(tài)寄存器 條件代碼標志 各標志位的含義如下: 負標志N:運算結(jié)果的第31位值,記錄標志設(shè)置操 作的結(jié)果; 零標志Z:如果標志設(shè)置的操作為0,則置位; 進位標志C:記錄無符號加法溢出,減法無借位, 循環(huán)移位; 溢出標志V:記錄標志設(shè)置操作的有符號溢出。 警告:絕對不要強制改變CPSR寄存器中的控制 位T。如果這樣做,處理器將進入一個無法預(yù)測的 狀態(tài)。 2.7 當前程序狀態(tài)寄存器 控制

38、位 1、中斷禁止控制位I和F;2、處理器狀態(tài)位T; 3、處理器模式位M0M4。 當控制位I置位時,IRQ中斷被禁止; 當控制位F置位時,F(xiàn)IQ中斷被禁止。 當控制位T置位時,處理器正在Thumb狀態(tài)下運行; 當控制位T清零時,處理器正在ARM狀態(tài)下運行。 M4:0模式模式可見的可見的Thumb狀態(tài)寄存器狀態(tài)寄存器可見的可見的ARM狀態(tài)寄存器狀態(tài)寄存器 10000用戶R0R7, SP, LR, PC, CPSRR0R14, PC, CPSR 10001快速中斷 R0R7, SP_fiq, LR_fiq, PC, CPSR, SPSR_fiq R0R7, R8_fiqR14_fiq, PC, CP

39、SR, SPSR_fiq 10010中斷 R0R7, SP_irq, LR_irq, PC, CPSR, SPSR_fiq R0R12, R13_irq, R14_irq, PC, CPSR, SPSR_irq 10011管理 R0R7, SP_svc, LR_svc, PC, CPSR, SPSR_svc R0R12, R13_svc, R14_svc, PC, CPSR, SPSR_svc 10111中止 R0R7, SP_abt, LR_abt, PC, CPSR, SPSR_abt R0R12, R13_abt, R14_abt, PC, CPSR, SPSR_abt 11011未定義

40、 R0R7, SP_und, LR_und, PC, CPSR, SPSR_und R0R12, R13_und, R14_und, PC, CPSR, SPSR_und 11111系統(tǒng) R0R7, SP, LR, PC, CPSR R0R14, PC, CPSR 注意:不是所有模式位的組合都定義了有 效的處理器模式,如果將非法值寫入M4:0中, 處理器將進入一個無法恢復(fù)的模式。 2.7 當前程序狀態(tài)寄存器 保留位 CPSR中的保留位被保留將來使用。當改變CPSR 標志和控制位時,請確認沒有改變這些保留位。 另外,請確保您的程序不依賴于包含特定值的 保留位,因為將來的處理器可能會將這些位設(shè)置為

41、1 或者0。 1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi) 核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式 ARM7體系結(jié)構(gòu) 6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存 器 8.ARM體系的異常、 中斷及其向量表 9.ARM體系的存儲系 統(tǒng) 2.8 ARM體系的異常 異常簡介 只要正常的程序流被暫時中止,處理器就進入異常 模式。例如在用戶模式下執(zhí)行程序時,當外設(shè)向處理 器內(nèi)核發(fā)出中斷請求導(dǎo)致內(nèi)核從用戶模式切換到異常 中斷模式。 如果同時發(fā)生兩個或更多異常,那么將按照固定的 順序來處理異常。 異常入口/出口匯總 下表所示為異常返回地址值以及退出異 常處理程序所推薦使用的指

42、令。 異?;蛉肟诋惓;蛉肟诜祷刂噶罘祷刂噶罘祷氐刂贩祷氐刂?SWIMOVS PC,R14_svcR14 未定義的指令MOVS PC,R14_undR14 預(yù)取中止SUBS PC,R14_abt,#4R144 快速中斷SUBS PC,R14_fiq,#4R144 中斷SUBS PC,R14_irq,#4R144 數(shù)據(jù)中止SUBS PC,R14_abt,#8R148 復(fù)位無 注意:“MOVS PC,R14_svc”是指在管理模式執(zhí)行 MOVS PC,R14 指令,同樣類似的指令還有“MOVS PC,R14_und”、“SUBS PC,R14_abt,#4”等。 2.8 ARM體系的異常 異常向量表

43、 地址地址異常異常進入時的模式進入時的模式進入時進入時I的狀態(tài)的狀態(tài)進入時進入時F的狀態(tài)的狀態(tài) 0 x00000000復(fù)位管理禁止禁止 0 x00000004未定義指令未定義IF 0 x00000008軟件中斷異常管理禁止F 0 x0000000C中止(預(yù)?。┲兄笽F 0 x00000010中止(數(shù)據(jù))中止IF 0 x00000014保留保留 0 x00000018IRQ中斷禁止F 0 x0000001CFIQ快速中斷禁止禁止 注:表中的I和F表示不對該位有影響,保留原來的值。 2.8 ARM體系的異常 異常優(yōu)先級 當多個異常同時發(fā)生時,一個固定的優(yōu)先級決定系 統(tǒng)處理它們的順序。 優(yōu)先級優(yōu)先級

44、異常異常 1復(fù)位 2數(shù)據(jù)中止 3FIQ 4IRQ 5預(yù)取指中止 6未定義指令中止 6軟件中斷異常 優(yōu) 先 級 由 高 到 低 2.8 ARM體系的異常 異常的進入 當一個異常導(dǎo)致模式切換時,內(nèi)核自動的做如下處理: 將異常處理程序的返回地址(加固定的偏移量)保存 到相應(yīng)異常模式下的LR; 將CPSR的當前值保存到相應(yīng)異常模式下的SPSR; 設(shè)置CPSR為相應(yīng)的異常模式; 設(shè)置PC為相應(yīng)異常處理程序的中斷入口向量地址,跳 轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行; 用戶模式 SPSR 異常模式 CPSR R15(PC) R14(LR) R0R13 BackAddr JumpAddr UserMode Exc

45、eptionMode 程序代碼正常運行在用戶模式下。 2.8 ARM體系的異常 異常的進入 當一個異常導(dǎo)致模式切換時,內(nèi)核自動的做如下處理: 將異常處理程序的返回地址(加固定的偏移量)保存 到相應(yīng)異常模式下的LR; 將CPSR的當前值保存到相應(yīng)異常模式下的SPSR; 設(shè)置CPSR為相應(yīng)的異常模式; 設(shè)置PC為相應(yīng)異常處理程序的中斷入口向量地址,跳 轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行; 2.8 ARM體系的異常 異常的退出 當異常處理程序結(jié)束時,異常處理程序必須: 返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即 就是說將LR中的值減去偏移量后移入PC; 將SPSR的值復(fù)制回CPSR; SPSR 異常

46、模式用戶模式 CPSR R15(PC) R14(LR) R0R13 BackAddr CurrentAddr UserMode ExceptionMode BackAddrOff 2.8 ARM體系的異常 異常的退出 當異常處理程序結(jié)束時,異常處理程序必須: 返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即 就是說將LR中的值減去偏移量后移入PC; 將SPSR的值復(fù)制回CPSR; 清零在入口處置位的中斷禁止標志。 2.8 ARM體系的異常 復(fù)位異常 當nRESET信號被拉低時,ARM處理器放棄正在執(zhí) 行的指令,等到nRESET信號再次變高時,處理器執(zhí)行 一下操作: 強制M4:0變?yōu)閎10011,

47、系統(tǒng)進入管理模式; 將CPSR中的標志位I和F置位,IRQ與FIQ中斷被禁止; 將CPSR中的標志位T清零,處理器處于ARM狀態(tài); 強制PC從地址0 x00開始對下一條指令進行取指; 返回到ARM狀態(tài)并恢復(fù)執(zhí)行。 2.8 ARM體系的異常 中斷請求異常 只有當CPSR中相應(yīng)的中斷屏蔽位被清除時,才可 能發(fā)生IRQ異常,中斷請求(IRQ)異常由一個nIRQ輸 入端的低電平所產(chǎn)生的正常中斷。 注:中斷異常產(chǎn)生時,中斷異常模式下的R14保存 的是PC的值。 取指譯碼執(zhí)行 取指譯碼執(zhí)行 取指譯碼執(zhí)行 周期4 周期5周期1 周期2 周期3 PC-8指令1 指令2 指令3 PC-4 PC 中斷發(fā)生周期 指

48、令1的執(zhí)行不會中斷; 異常程序結(jié)束時返回到指令2; 進入中斷服務(wù)程序時,指令3 地址被保存在R14中。 程序運行在用戶模式下,當一個IRQ異常中斷發(fā)生 時,內(nèi)核切換到“中斷模式”,并自動的做如下處理: 2.8 ARM體系的異常 進入IRQ異常模式 R0R12 R13_usr R14_usr R15 CPSR - R13_irq R14_irq SPSR_irq USR模式IRQ模式 2 I=1,T=0,mod=irq 3 異常向量地址0 x0018 4 ISR代碼將寄存器壓棧 5 1 將異常處理程序的返回地址保存到異常模式下的 R14(R14_irq)中。 1 用戶模式的CPSR被保存到新的I

49、RQ中斷異常模式 SPSR_irq中。 2 修改CPSR,禁止新的IRQ中斷產(chǎn)生,進入ARM狀態(tài), 設(shè)置為IRQ模式。 3 設(shè)置IRQ模式下的PC為IRQ異常處理程序的中斷入口 向量地址0 x00000018。 4 將IRQ中斷異常模式的棧頂指針保存到R13_irq中, 之后軟件處理程序調(diào)用中斷服務(wù)程序為中斷源服務(wù)。 5 從R13_irq中獲取IRQ中斷異常模式的棧頂指針。 1 2.8 ARM體系的異常 退出IRQ異常模式 R0R12 R13_usr R14_usr R15 CPSR - R13_irq R14_irq SPSR_irq IRQ模式USR模式 恢復(fù)CPSR2 R14減4后為返回

50、地址3 ISR代碼將寄存器出棧 1 將SPSR_irq中的內(nèi)容復(fù)制到CPSR。 2 由于流水線的特性,將R14_irq指向的地址減去一個 偏移量后存入R15(PC),實現(xiàn)指令為: SUBS PC,R14_irq,#4 3 中斷服務(wù)程序執(zhí)行完畢后,系統(tǒng)將通過以下幾步軟 件操作返回用戶模式: 2.8 ARM體系的異常 快速中斷請求異常 快速中斷請求(FIQ)適用于對一個突發(fā)事件的快速 響應(yīng),這得益于在ARM狀態(tài)中,快中斷模式有8個專用 的寄存器可用來滿足寄存器保護的需要(這可以加速 上下文切換的速度)。 不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài), FIQ處理程序都會通過執(zhí)行下面的指令從中斷返

51、回: SUBS PC,R14_fiq,#4 在一個特權(quán)模式中,可以通過置位CPSR中的F位來 禁止FIQ異常。 系統(tǒng)模式FIQ模式 程 序 寄 存 器 組 FIQ中斷的例子 “?”表示該位無關(guān)SPSR_fiq PC CPSR SPSR MODTFI. . .N Z C V SYS100. . .? ? ? ? R8 R12 R8_fiq R12_fiq LR LR_sysLR_fiq R0R7 SP_sysSP_fiq Thumb Thumb 指令1 指令2 指令3 BX指令 BX指令 ARM ARM SYS100.? FIQ011. . .? ? ? ? BackAddr JumpAddr

52、Jump 1 0SYS100. . .? ? ? ? Jump BackAddr-4 Thumb不是一個完整 的體系結(jié)構(gòu),不能指望 處理器只執(zhí)行Thumb指 令而不支持ARM指令集。 因此,Thumb指令只 需要支持通用功能,必 要時可以借助于完善的 ARM指令集,比如,所 有異常自動進入ARM狀 態(tài)。 在系統(tǒng)模式下運行用 戶程序,當前處理器處 于Thumb狀態(tài),執(zhí)行 Thumb指令代碼,同時 處理器還允許IRQ和FIQ 中斷。 指令1的在執(zhí)行過程 產(chǎn)生了FIQ中斷。 注:完成指令1的執(zhí) 行后才響應(yīng)中斷。 FIQ中斷相應(yīng)過程中, 硬件自動執(zhí)行如下動作: 將CPSR寄存器內(nèi)容存入 IRQ模式的S

53、PSR寄存器 置為F和I(禁止FIQ和 IRQ中斷); 清零T位(進入ARM狀 態(tài)); 設(shè)置MOD位,切換處理 器模式至FIQ模式。 將下一條的地址存入 FIQ模式的LR寄存器,即 指令3的地址。 將跳轉(zhuǎn)地址存入PC,即 FIQ中斷服務(wù)函數(shù)的入口 地址,實現(xiàn)跳轉(zhuǎn)。 FIQ中斷服務(wù)程序在 ARM狀態(tài)下執(zhí)行現(xiàn)場保 護等操作。 FIQ中斷服務(wù)程序使 用BX指令,將處理器從 ARM狀態(tài)切換到Thumb 狀態(tài),通過置位CPSR的T 位實現(xiàn)。 FIQ中斷服務(wù)程序開 始執(zhí)行Thumb指令。 FIQ中斷服務(wù)程序使 用BX指令,將處理器從 Thumb狀態(tài)切換到ARM 狀態(tài),通過清除CPSR的T 位實現(xiàn)。 FIQ

54、中斷服務(wù)程序在 ARM狀態(tài)下執(zhí)行恢復(fù)中 斷現(xiàn)場等操作。 FIQ中斷異常處理結(jié) 束后,異常處理程序完 成以下動作: 將SPSR寄存器的值復(fù)制 回CPSR寄存器; 將LR寄存的值減去一個 常量(FIQ異常為4)后 復(fù)制到PC寄存器,跳轉(zhuǎn) 到被中斷的用戶程序 (指令2的地址)。 2.8 ARM體系的異常 未定義的指令異常 未定義指令異常是內(nèi)部異常中斷,當ARM處理器 遇到一條自己和系統(tǒng)內(nèi)部任何協(xié)處理器都無法執(zhí)行的 指令時,就會發(fā)生未定義指令異常,從而進入中斷處 理程序,同時軟件可使用這一機制通過仿真未定義的 協(xié)處理器指令來擴展ARM指令集。 在仿真失敗的指令后,捕獲處理器執(zhí)行下面的指令: MOVS PC,R14_und 2.8 ARM體系的異常 中止異常 中止表示當前對存儲器的訪問不能被完成,這是由 外部ABORT輸入信號引起的異常中斷。中止類型有2種 類型: 預(yù)取

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論