嵌入式系統(tǒng)原理及應(yīng)用教程第2章_第1頁
嵌入式系統(tǒng)原理及應(yīng)用教程第2章_第2頁
嵌入式系統(tǒng)原理及應(yīng)用教程第2章_第3頁
嵌入式系統(tǒng)原理及應(yīng)用教程第2章_第4頁
嵌入式系統(tǒng)原理及應(yīng)用教程第2章_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、主講內(nèi)容,第1章 嵌入式系統(tǒng)概述 第2章 ARM微處理器概述與編程模型 第3章 ARM9指令系統(tǒng) 第4章 嵌入式程序設(shè)計基礎(chǔ) 第5章 嵌入式內(nèi)部可編程模塊 第6章 嵌入式接口技術(shù)應(yīng)用 第7章 軟件開發(fā)環(huán)境,第2章 ARM微處理器概述與編程模型,ARM微處理器概述 ARM微處理器結(jié)構(gòu) ARM微處理器的工作狀態(tài) ARM體系結(jié)構(gòu)的存儲器格式 處理器模式 寄存器組織 異常(Exceptions),2.1 ARM微處理器概述,ARM公司簡介,ARM是Advanced RISC Machines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計了大量高性能、廉價、耗能低的RISC (精簡指令集)處理器。

2、公司的特點是只設(shè)計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。,2.1 ARM微處理器概述,ARM公司簡介,將技術(shù)授權(quán)給其它芯片廠商,形成各具特色的ARM芯片,2.1 ARM微處理器概述,ARM(Advanced RISC Machines)有3種含義 一個公司的名稱 一類微處理器的通稱 一種技術(shù)的名稱,2.1.1 ARM微處理器的特點,采用RISC架構(gòu)的ARM微處理器一般具有如下特點: 體積小、低功耗、低成本、高性能; 支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件; 大量使用寄存器,指令執(zhí)行速度更快; 大多數(shù)數(shù)據(jù)操作

3、都在寄存器中完成; 尋址方式靈活簡單,執(zhí)行效率高; 指令長度固定。,2.1.2 ARM微處理器系列,ARM處理器的產(chǎn)品系列非常廣,包括ARM7、ARM9、ARM9E、ARM10E、ARM11和SecurCore、Cortex等。以及其它廠商基于ARM體系結(jié)構(gòu)的處理器,除了具有ARM體系結(jié)構(gòu)的共同特點以外,每一系列提供一套特定的性能來滿足設(shè)計者對功耗、性能、體積的需求。 表2-1總結(jié)了ARM各系列處理器所包含的不同類型。,2.1.2 ARM微處理器系列,2.1.2 ARM微處理器系列,2.1.2 ARM微處理器系列,ARM Cortex系列簡介,基于ARMv7版本的ARM Cortex系列產(chǎn)品由

4、A、R、M三個系列組成,具體分類延續(xù)了一直以來ARM面向具體應(yīng)用設(shè)計CPU的思路。,ARM Cortex,2.1.2 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.2 ARM微處理器系列,CortexTM-R4處理器簡介,該處理器是首款基于ARMv7架構(gòu)的高級嵌入式處理器,其主要目標(biāo)為產(chǎn)量巨大的高級嵌入式應(yīng)用系統(tǒng)

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

6、術(shù)。 眾多先進的技術(shù)使其適用于家電以及電子行業(yè)等各種高端的應(yīng)用領(lǐng)域。,2.1.2 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.2 ARM微處理器系列,該系列包括ARM9TDMI、ARM920T和帶有高速緩存處理器宏單元的ARM94

7、0T。除了兼容ARM7系列,而且能夠更加靈活的設(shè)計。 ARM9系列主要應(yīng)用于引擎管理、儀器儀表、安全系統(tǒng)和機頂盒等領(lǐng)域。,ARM9系列簡介,2.1.2 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è)控制、存儲設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。,ARM9E系列簡介,2.1.2 ARM微處理器系列,ARM10E

8、系列簡介,該系列包括ARM1020E和ARM1020E處理器核,其核心在于使用向量浮點(VFP)單元VFP10提供高性能的浮點解決方案,從而極大提高了處理器的整型和浮點運算性能。 可以用于視頻游戲機和高性能打印機等場合。,2.1.2 ARM微處理器系列,Xscale簡介,Intel Xscale微控制器則提供全性能、高性價比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號處理(DSP)指令。 主要應(yīng)用于手提式通訊和消費電子類設(shè)備。,2.2. ARM微處理器結(jié)構(gòu),2.2.1 RISC體系結(jié)構(gòu) 1嵌入式CISC微處理器 傳統(tǒng)的CISC(Complex Instruction Set Co

9、mputer,復(fù)雜指令集計算機)結(jié)構(gòu)有其固有的缺點,即隨著計算機技術(shù)的發(fā)展而不斷引入新的復(fù)雜的指令集,為支持這些新增的指令,計算機的體系結(jié)構(gòu)會越來越復(fù)雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有20的指令會被反復(fù)使用,占整個程序代碼的80。而余下的80的指令卻不經(jīng)常使用,在程序設(shè)計中只占20,顯然,這種結(jié)構(gòu)是不太合理的。,2.2.1 RISC體系結(jié)構(gòu),2. 嵌入式RISC微處理器 基于以上的不合理性,1979年美國加州大學(xué)伯克利分校提出了RISC(Reduced Instruction Set Computer,精簡指令集計算機)的概念, RISC是精簡指令集計算機,但

10、RISC并非只是簡單地去減少指令,而是把著眼點放在了如何使計算機的結(jié)構(gòu)更加簡單合理地提高運算速度上。RISC結(jié)構(gòu)優(yōu)先選取使用頻最高的簡單指令,拋棄復(fù)雜指令,固定指令長度,減少指令格式和尋址方式,以控制邏輯為主,不用或少用微碼控制等措施來達到上述目的。,2.2.1 RISC體系結(jié)構(gòu),RISC體系結(jié)構(gòu)應(yīng)具有如下特點: 采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有23種。 使用單周期指令,便于流水線操作執(zhí)行。 大量使用寄存器,數(shù)據(jù)處理指令只對寄存器進行操作,只有加載/ 存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率。 除此以外,ARM體系結(jié)構(gòu)還采用了一些特別的技術(shù),在保證高性能的前提下盡量縮

11、小芯片的面積,并降低功耗.,2.2.1 RISC體系結(jié)構(gòu),RISC體系結(jié)構(gòu)應(yīng)具有如下特點: 所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率。 可用加載/存儲指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率。 可在一條數(shù)據(jù)處理指令中同時完成邏輯處理和移位處理。 在循環(huán)處理中使用地址的自動增減來提高運行效率。,2.2.1 RISC體系結(jié)構(gòu),RISC和CISC之間的主要區(qū)別:,2.2.2 ARM微處理器的寄存器結(jié)構(gòu),ARM處理器共有37個寄存器,被分為若干個組(BANK),這些寄存器包括: 31個通用寄存器,包括程序計數(shù)器(PC指針),均為32位的寄存器。 6個狀態(tài)寄存器,用以標(biāo)識CP

12、U的工作狀態(tài)及程序的運行狀態(tài),均為32位,目前只使用了其中的一部分。,2.2.2 ARM微處理器的寄存器結(jié)構(gòu),ARM處理器又有7種不同的處理器模式,在每一種處理器模式下均有一組相應(yīng)的寄存器與之對應(yīng)。 即在任意一種處理器模式下,可訪問的寄存器包括15個通用寄存器(R0R14)、12個狀態(tài)寄存器和程序計數(shù)器。 在所有的寄存器中,有些是在7種處理器模式下共用的同一個物理寄存器,而有些寄存器則是在不同的處理器模式下有不同的物理寄存器。,2.2.3 ARM微處理器的指令結(jié)構(gòu),ARM微處理器在較新的體系結(jié)構(gòu)中支持兩種指令集:ARM指令集和Thumb指令集。 ARM指令為32位的長度 Thumb指令為16位

13、長度 Thumb指令集為ARM指令集的功能子集,但與等價的ARM代碼相比較,可節(jié)省3040以上的存儲空間,同時具備32位代碼的所有優(yōu)點。,2.2.4 ARM微處理器的應(yīng)用選型,從應(yīng)用的角度出發(fā),對在選擇ARM微處理器時所應(yīng)考慮的主要問題 : ARM微處理器內(nèi)核的選擇 從前面所介紹的內(nèi)容可知,ARM微處理器包含一系列的內(nèi)核結(jié)構(gòu),以適應(yīng)不同的應(yīng)用領(lǐng)域,用戶如果希望使用WinCE或標(biāo)準(zhǔn)Linux等操作系統(tǒng)以減少軟件開發(fā)時間,就需要選擇ARM720T以上帶有MMU(Memory Management Unit)功能的ARM芯片,ARM720T、ARM920T、ARM922T、ARM946T、Stron

14、g-ARM都帶有MMU功能。 而ARM7TDMI則沒有MMU,不支持Windows CE和標(biāo)準(zhǔn)Linux,但目前有uCLinux等不需要MMU支持的操作系統(tǒng)可運行于ARM7TDMI硬件平臺之上。事實上,uCLinux已經(jīng)成功移植到多種不帶MMU的微處理器平臺上,并在穩(wěn)定性和其他方面都有上佳表現(xiàn)。,2.2.4 ARM微處理器的應(yīng)用選型,系統(tǒng)的工作頻率 系統(tǒng)的工作頻率在很大程度上決定了ARM微處理器的處理能力。 ARM7系列微處理器的典型處理速度為0.9MIPS/MHz,常見的ARM7芯片系統(tǒng)主時鐘為20MHz-133MHz。 ARM9系列微處理器的典型處理速度為1.1MIPS/MHz,常見的AR

15、M9的系統(tǒng)主時鐘頻率為100MHz-233MHz。 ARM10最高可以達到700MHz。 不同芯片對時鐘的處理不同,有的芯片只需要一個主時鐘頻率,有的芯片內(nèi)部時鐘控制器可以分別為ARM核和USB、UART、DSP、音頻等功能部件提供不同頻率的時鐘。,2.2.4 ARM微處理器的應(yīng)用選型,芯片內(nèi)存儲器的容量 大多數(shù)的ARM微處理器片內(nèi)存儲器的容量都不太大,需要用戶在設(shè)計系統(tǒng)時外擴存儲器. 但也有部分芯片具有相對較大的片內(nèi)存儲空間,如ATMEL的AT91F40162就具有高達2MB的片內(nèi)程序存儲空間,用戶在設(shè)計時可考慮選用這種類型,以簡化系統(tǒng)的設(shè)計。,2.2.4 ARM微處理器的應(yīng)用選型,片內(nèi)外圍

16、電路的選擇 幾乎所有的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)的可靠性。,2.3 ARM微處理器的工作狀態(tài),ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換: ARM狀態(tài),此時處理器執(zhí)行32位的字對齊的ARM指令; Thumb狀態(tài),此時處理器執(zhí)行16位的、半字對齊的Thumb指令。 ARM指令集和Thumb指令集均有切換處理器狀態(tài)的指令,并可

17、在兩種工作狀態(tài)之間切換,但ARM微處理器在開始執(zhí)行代碼時,應(yīng)該處于ARM狀態(tài)。,2.3 ARM微處理器的工作狀態(tài),進入Thumb狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時,可以采用執(zhí)行BX指令的方法,使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此外,當(dāng)處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時,自動切換到Thumb狀態(tài)。 進入ARM狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位為0時,執(zhí)行BX指令時可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。此外,在處理器進行異常處理時,把PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使

18、處理器切換到ARM狀態(tài)。,2.4 ARM處理器狀態(tài),狀態(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,執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令,程序代碼,指令集關(guān)系,從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼如下:,從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下:,執(zhí)行完BX指令

19、,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令,2.4 ARM體系結(jié)構(gòu)的存儲器格式,ARM體系結(jié)構(gòu)將存儲器看作是從零地址開始的字節(jié)的線性組合。 從零字節(jié)到三字節(jié)放置第一個存儲的字?jǐn)?shù)據(jù). 從第四個字節(jié)到第七個字節(jié)放置第二個存儲的字?jǐn)?shù)據(jù),依次排列。 作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))。 ARM體系結(jié)構(gòu)可以用兩種方法存儲字?jǐn)?shù)據(jù),稱之為 大端格式 小端格式,2.4 ARM體系結(jié)構(gòu)的存儲器格式,大端格式 在這種格式中,字?jǐn)?shù)據(jù)的高字節(jié)存儲在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,如圖所示。,2.4 ARM體系結(jié)構(gòu)的存儲器格式,小端格式 在這種格式中,字?jǐn)?shù)據(jù)的高

20、字節(jié)存儲在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,如圖所示。,2.4.1 指令長度及數(shù)據(jù)類型,ARM微處理器的指令長度可以是 32位(在ARM狀態(tài)下) 16位(在Thumb狀態(tài)下) ARM微處理器中支持字節(jié)(8位)、半字(16位)、字(32位)三種數(shù)據(jù)類型. 其中,字需要4字節(jié)對齊(地址的低兩位為0)、半字需要2字節(jié)對齊(地址的最低位為0)。,2.4.2 存儲管理單元-MMU,在復(fù)雜的嵌入式系統(tǒng)設(shè)計時,越來越多的會選用帶有存儲管理單元(MMU)的微處理器芯片。 MMU完成的主要功能有: 將主存地址從虛擬存儲空間映射到物理存儲空間。 存儲器訪問權(quán)限控制。 設(shè)置虛擬存儲空間的緩沖特性等。,2.

21、4.2 存儲管理單元-MMU,虛擬地址存儲系統(tǒng)示意圖,2.4.2 存儲管理單元-MMU,ARM920T微處理器核的MMU采用了分頁虛擬存儲管理方式。它把虛擬存儲空間分成一個個固定大小的頁,把物理主存儲的空間也分成同樣大小的一個個頁。 通過查詢存放在主存中的頁表,來實現(xiàn)虛擬地址到物理地址的轉(zhuǎn)換。但由于頁表存儲在主存儲中,查詢頁表所花的代價很大,因此,通常又采用快表技術(shù)(TLB translation lookaside buffer)來提高地址變換效率。,2.4.2 存儲管理單元-MMU,TLB技術(shù)中,將當(dāng)前需要訪問的地址變換條目存儲在一個容量較小(通常816個字)、訪問速度更快(與微處理器中通

22、用寄存器速度相當(dāng))的存儲器件中。當(dāng)微處理器訪問主存時,先在TLB中查找需要的地址變換條目,如果該條目不存在,再從存儲在主存中的頁表中查詢,并添加到TLB中。 這樣,當(dāng)微處理器下一次又需要該地址變換條目時,可以從TLB中直接得到,從而提高了地址變換速度。,2.4.2 存儲管理單元-MMU,表2-5是ARM920T的寫出其CP15中與MMU操作相關(guān)的寄存器。設(shè)計者編程控制這些寄存器,則可以相應(yīng)地控制MMU操作。,2.4.2 存儲管理單元-MMU,1.禁止與使能MMU CP15的寄存器C1的位0用于設(shè)置禁止/使能MMU。C1的位0為0時,禁止MMU;當(dāng)C1的位0為1時,使能MMU。下面指令實現(xiàn)了使能

23、MMU。 MRC P15,0,R0,C1,0,0 ; C1的內(nèi)容賦給R0 ORR R0,#0 x1 MCR P15,0,R0,C1,0,0 ;R0的內(nèi)容賦給C1,2.4.2 存儲管理單元-MMU,使能MMU時,其控制存儲訪問的過程是: 首先在TLB中查找虛擬地址,如果該虛擬地址對應(yīng)的地址變換條目不在TLB中,則到頁表中查詢對應(yīng)的地址變換條目,并把查詢到的結(jié)果添加到TLB中。如果TLB已滿,還需根據(jù)一定的淘汰算法進行替換。得到地址變換條目后,進行一下步驟的操作。,2.4.2 存儲管理單元-MMU,禁止MMU時,所有的虛擬地址和物理地址是相等的,也不進行存儲訪問權(quán)限的控制。是否支持cache和寫緩

24、存由具體芯片設(shè)計確定。 在禁止/使能MMU時,應(yīng)該注意以下幾點。 使能MMU之前,要在內(nèi)存中建立0號頁表,同時CP15中的各相關(guān)寄存器必須完成初始化. 如果設(shè)計的物理地址與虛擬地址空間不相等,在禁止/使能MMU時,虛擬地址和物理地址的對應(yīng)關(guān)系會改變,應(yīng)清除cache中當(dāng)前地址變換條目。 完成禁止/使能MMU代碼的物理地址最好和虛擬地址相同。,2.4.2 存儲管理單元-MMU,2.MMU中的地址變換過程 虛擬存儲空間到物理存儲空間的映射是以內(nèi)存塊為單位進行的。在頁表或TLB中,每個地址變換條目記錄了一個虛擬存儲空間的存儲塊的基地址與物理存儲空間的一個存儲塊基地址的對應(yīng)關(guān)系。 ARM920T支持的

25、存儲塊大小有一下幾種: 段(section)是大小為1MB的存儲塊。 大頁(large pages)是大小為64KB的存儲塊。 小頁(small pages)是大小為4KB的存儲塊。 極小頁(tiny pages)是大小為1KB的存儲塊。,2.4.2 存儲管理單元-MMU,3.MMU中的存儲訪問權(quán)限控制 在MMU中,CP15的寄存器C1的R、S控制位和頁表中地址轉(zhuǎn)換條目中的訪問權(quán)限控制位聯(lián)合作用控制存儲訪問權(quán)限。 具體規(guī)則如表2-6所示。,2.4.2 存儲管理單元-MMU,表2-6 MMU中存儲訪問控制權(quán)限控制規(guī)則,2.4.2 存儲管理單元-MMU,4.MMU中的域 MMU中的域指的是一些段、

26、大頁或者小頁的集合。ARM920T支持最大16個域,每個域的訪問控制特性由CP15的寄存器C3中的兩位來控制。 C3寄存器是32位的,每兩位控制一個域,其控制編碼如表2-7所示。,2.4.2 存儲管理單元-MMU,表2-7 MMU中域訪問控制字段編碼及含義,2.4.2 存儲管理單元-MMU,5.快表操作 從虛擬地址到物理地址的變換過程其實就是查詢頁表的過程,由于頁表存放在主存儲器中,這個查詢代價很大。而程序在執(zhí)行時其過程具有局部性,對頁表中各存儲單元的訪問并不是隨機的,在一段時間內(nèi),只局限在少數(shù)幾個單元中。 因此,采用TLB技術(shù)可以提高存儲系統(tǒng)的整體性能。,2.4.2 存儲管理單元-MMU,6

27、.存儲訪問失效 在ARM920T中,MMU可以產(chǎn)生4種類型的存儲訪問失效,即地址對齊失效、地址變換失效、域控制失效和訪問權(quán)限控制失效。當(dāng)發(fā)生存儲訪問失效時,存儲系統(tǒng)可以中止3種存儲訪問,即cache內(nèi)容預(yù)取、非緩沖的存儲器訪問操S作和頁表訪問。,2.4.2 存儲管理單元-MMU,有下面兩種機制可以檢測存儲訪問失效,并進而中止微處理器的執(zhí)行。 (1)當(dāng)MMU檢測到存儲訪問失效時,它可以向微處理器報告該情況,并將存儲訪問失效的相關(guān)信息保存到寄存器C5和C6中。這種機制成為MMU失效。 (2)存儲系統(tǒng)也可以向微處理器報告存儲訪問失效。這種機制稱為外部存儲訪問中止(external abort)。 上

28、述兩種情況通稱為存儲訪問中止(abort)。,2.4.2 存儲管理單元-MMU,如果存儲訪問發(fā)生在數(shù)據(jù)訪問周期,微處理器將產(chǎn)生數(shù)據(jù)訪問中止異常。 如果存儲訪問發(fā)生在指令預(yù)取周期,當(dāng)該指令執(zhí)行時,微處理器將產(chǎn)生指令預(yù)取異常。 MMU中與存儲訪問失效相關(guān)的寄存器有兩個: C5和C6。 C5為失效狀態(tài)寄存器,C6為失效地址寄存器。,2.5 處理器模式,ARM微處理器支持7種運行模式,分別為: 用戶模式(usr): ARM處理器正常的程序執(zhí)行狀態(tài)。 快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理。 外部中斷模式(irq):用于通用的中斷處理。 管理模式(svc):操作系統(tǒng)使用的保護模式。 數(shù)據(jù)訪問

29、終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時進入該模式,可用于虛擬存儲及存儲保護。 系統(tǒng)模式(sys):運行具有特權(quán)的操作系統(tǒng)任務(wù)。 未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時進入該模式,可用于支持硬件協(xié)處理器的軟件仿真。,特權(quán)模式,除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,2.5 處理器模式,異常模式,這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當(dāng)特定的異常出現(xiàn)時,處理器進入相應(yīng)的模式。每種異常模式

30、都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。,2.5 處理器模式,用戶和系統(tǒng)模式,這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。,2.5 處理器模式,處理器啟動時的模式轉(zhuǎn)換圖,管理模式SVC (Supervisor),多種特權(quán)模式變化,用戶程序的運行模式,復(fù)位后 缺省模式,主要完成各模式的堆棧設(shè)置,注意不要進入用戶模式,一般為用戶模式User,2.5 處理器模式,2.6 寄存器組織,ARM微處理器中的寄存器不能被

31、同時訪問,具體哪些寄存器是可編程訪問的,取決微處理器的工作狀態(tài)及具體的運行模式。 但在任何時候,通用寄存器R14R0、程序計數(shù)器PC、一個或兩個狀態(tài)寄存器都是可訪問的。,2.6.1 ARM狀態(tài)下的寄存器組織,2.6.1 ARM狀態(tài)下的寄存器組織,所有的37個寄存器,分成兩大類: 31個通用32位寄存器; 6個狀態(tài)寄存器。,2.6.1 ARM狀態(tài)下的寄存器組織,2.6.1 ARM狀態(tài)下的寄存器組織,1.通用寄存器 通用寄存器包括R0R15,可以分為三類: 未分組寄存器R0R7; 分組寄存器R8R14; 程序計數(shù)器PC(R15)。,在匯編語言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是

32、完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。,2.6.1 ARM狀態(tài)下的寄存器組織,2.6.1 ARM狀態(tài)下的寄存器組織,2.未分組寄存器R0R7 在所有的運行模式下,未分組寄存器都指向同一個物理寄存器,他們未被系統(tǒng)用作特殊的用途,因此,在中斷或異常處理進行運行模式轉(zhuǎn)換時,由于不同的處理器運行模式均使用相同的物理寄存器,可能會造成寄存器中數(shù)據(jù)的破壞,這一點在進行程序設(shè)計時應(yīng)引起注意。,其中R0R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。,2.6.1 ARM狀態(tài)下的寄存器組織,2.6.1 ARM狀態(tài)下的寄存器組

33、織,3.分組寄存器R8R14 對于分組寄存器,他們每一次所訪問的物理寄存器與處理器當(dāng)前的運行模式有關(guān)。 對于R8R12來說,每個寄存器對應(yīng)兩個不同的物理寄存器,當(dāng)使用fiq模式時,訪問寄存器R8_fiqR12_fiq;當(dāng)使用除fiq模式以外的其他模式時,訪問寄存器R8_usrR12_usr。 對于R13、R14來說,每個寄存器對應(yīng)6個不同的物理寄存器,其中的一個是用戶模式與系統(tǒng)模式共用,另外5個物理寄存器對應(yīng)于其他5種不同的運行模式。 采用以下的記號來區(qū)分不同的物理寄存器: R13_ R14_ 其中,mode為以下幾種模式之一:usr、fiq、irq、svc、abt、und。,寄存器R8R14

34、為分組寄存器。它們所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器,2.6.1 ARM狀態(tài)下的寄存器組織,寄存器R8R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。,2.6.1 ARM狀態(tài)下的寄存器組織,寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。,2.6.1 ARM狀態(tài)下的寄存器組織,2.6.1 ARM狀態(tài)下的寄存器組織,寄存器R13在ARM指令中常用作堆棧指針,但這只是一種習(xí)慣用法,用戶也可使

35、用其他的寄存器作為堆棧指針。 而在Thumb指令集中,某些指令強制性的要求使用R13作為堆棧指針。,堆棧指針寄存器R13(SP),寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。,2.6.1 ARM狀態(tài)下的寄存器組織,R14也稱作子程序鏈接寄存器(Subroutine Link Register)或鏈接寄存器LR。 當(dāng)執(zhí)行BL子程序調(diào)用指令時,R14中得到R15(程序計數(shù)器PC)的備份。 其他情況下,R14用作通用寄存器。與之類似,當(dāng)發(fā)生中斷或異常時,對應(yīng)的分組寄存器R14_s

36、vc、R14_irq、R14_fiq、R14_abt和R14_und用來保存R15的返回值。,鏈接寄存器R14(LR),R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能: 在每種模式下,模式自身的R14版本用于保存子程序返回地址; 當(dāng)發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個小的固定偏移量)。,2.6.1 ARM狀態(tài)下的寄存器組織,寄存器R14常用在如下的情況: 在每一種運行模式下,都可用R14保存子程序的返回地址,當(dāng)用BL或BLX指令調(diào)用子程序時,將PC的當(dāng)前值拷貝給R14,執(zhí)行完子程序后,又將R14的值拷貝回PC,即可完成子程序的調(diào)用返回。,2.6.1 AR

37、M狀態(tài)下的寄存器組織,以上的描述可用指令完成: (1)執(zhí)行以下任意一條指令: MOV PC,LR BX LR (2)在子程序入口處使用以下指令將R14存入堆棧: STMFDSP!,LR 對應(yīng)的,使用以下指令可以完成子程序返回: LDMFDSP!,PC,R14寄存器與子程序調(diào)用,MOV PC,LR,R14(地址A),1.程序A執(zhí)行過程中調(diào)用程序B;,操作流程,2.程序跳轉(zhuǎn)至標(biāo)號Lable,執(zhí)行程序B。同時硬件將“BL Lable”指令的下一條指令所在地址存入R14;,3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;,2.6.1 ARM狀態(tài)下的寄存器組織,R14寄存器與異常發(fā)生,異常

38、發(fā)生時,程序要跳轉(zhuǎn)至異常服務(wù)程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個小常量的偏移。,2.6.1 ARM狀態(tài)下的寄存器組織,R14寄存器注意要點,當(dāng)發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。 例如:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。,2.6.1 ARM狀態(tài)下的寄存器組織,R14寄存器注意要點,a,return,地址A,1.執(zhí)行用戶模式下的程序;,2.

39、發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;,3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;,未被破壞,2.6.1 ARM狀態(tài)下的寄存器組織,R14寄存器注意要點,a,地址A,1.執(zhí)行用戶模式下的程序;,2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;,3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;,未被破壞,a,return,地址B,4. 如果在IRQ處理程序中打

40、開IRQ中斷,并且再次發(fā)生IRQ中斷,或者調(diào)用子程序;,5. 硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯誤;,被破壞,6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發(fā)生錯誤,將不能正確返回;,return,return,解決辦法是確保R14的對應(yīng)版本在發(fā)生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。,2.6.1 ARM狀態(tài)下的寄存器組織,2.6.1 ARM狀態(tài)下的寄存器組織,4.程序計數(shù)器PC 寄存器R15用作程序計數(shù)器(PC)。 在ARM狀態(tài)下,位1:0為0,位31:2用于保存PC; 在Thumb狀態(tài)下

41、,位0為0,位31:1用于保存PC; 由于ARM體系結(jié)構(gòu)采用了多級流水線技術(shù),對于ARM指令集而言,PC總是指向當(dāng)前指令的下兩條指令的地址,即PC的值為當(dāng)前指令的地址值加8個字節(jié)。,程序計數(shù)器R15(PC),寄存器R15常作為程序計數(shù)器(PC )。 R15雖然也可用作通用寄存器,但一般不這么使用,因為對R15的使用有一些特殊的限制,當(dāng)違反了這些限制時,程序的執(zhí)行結(jié)果是未知的。,寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在因為異常事件而進入異常時它保存CPSR的當(dāng)前值,異常退出時可通過它恢復(fù)CPSR。,程

42、序計數(shù)器R15(PC),2.6.2 Thumb狀態(tài)下的寄存器組織,Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為: 8個通用寄存器R0R7; 程序計數(shù)器(PC); 堆棧指針(SP); 鏈接寄存器(LR); 有條件訪問程序狀態(tài)寄存器( CPSR)。,注意:括號內(nèi)為ATPCS中寄存器的命名,可以使用RN匯編偽指令將寄存器定義多個名字。其中ADS1.2的匯編程序直接支持這些名稱,但注意a1a4,v1v4必須用小寫。,2.6.2 Thumb狀態(tài)下的寄存器組織,在匯編語言中寄存器R0R7為保存數(shù)據(jù)或地址值的通用寄存器。對于任何處理器模式,它們中的每一個都對應(yīng)于相同的32為物理寄

43、存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊的用途,并且可用于任何使用通用寄存器的指令。,2.6.2 Thumb狀態(tài)下的寄存器組織,Thumb狀態(tài)下的堆棧指針寄存器(SP),堆棧指針SP對應(yīng)ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。 注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。,Thumb狀態(tài)下的鏈接寄存器R14(LR),鏈接寄存器LR對應(yīng)ARM狀態(tài)寄存器R14,在結(jié)構(gòu)上有兩個特殊功能,詳見“ARM狀態(tài)下的鏈接寄存器LR”。 注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。,在Thumb狀態(tài)中訪問高寄存器,在Thumb狀態(tài)中,高

44、寄存器(R8R15)不是標(biāo)準(zhǔn)寄存器集的一部分。匯編語言程序員對它們的訪問受到限制,但可以將它們用于快速暫存。 可以使用MOV、CMP和ADD指令對高寄存器操作。,2.6.2 Thumb狀態(tài)下的寄存器組織,2.6.2 Thumb狀態(tài)下的寄存器組織,ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系 Thumb狀態(tài)R0R7與ARM狀態(tài)R0R7相同; 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)寄存器上的映射,低

45、寄存器,高寄存器,程序狀態(tài)寄存器CPSR(1)+SPSR(5),CPSR反映了當(dāng)前處理器的狀態(tài): 個條件代碼標(biāo)志; 2個中斷控制位; 5個對當(dāng)前處理器模式進行編碼的位; 1個指示當(dāng)前執(zhí)行指令的工作狀態(tài)位; 保留位。,SPSR:備份程序狀態(tài)字,保存異常事件發(fā) 生之前的CPSR,每個異常模式帶有一個備份程序狀態(tài)寄存器,用于保存在異常事件發(fā)生之前的CPSR;CPSR和SPSR通過特殊指令進行訪問。,2.6.3 程序狀態(tài)寄存器,條件代碼標(biāo)志,保留,控制位,溢出標(biāo)志,進位或借位擴展,零,負或小于,IRQ禁止,FIQ禁止,狀態(tài)位,模式位,N,Z,C,V,I,T,F,CPSR寄存器的格式,大多數(shù)“數(shù)值處理指

46、令”可以選擇是否影響條件代碼標(biāo)志位(指令帶S后綴);但有些指令執(zhí)行總是影響條件代碼標(biāo)志。 所有ARM指令都可按條件來執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。,運算結(jié)果的最高位反映在該標(biāo)志位。對于有符號二進制補碼,結(jié)果為負數(shù)時N=1,結(jié)果為正數(shù)或零時N=0;,指令結(jié)果為0時Z=1(表示比較結(jié)果“相等”),否則Z=0;,當(dāng)進行加法運算,并且最高位產(chǎn)生進位時C=1,否則C=0。 當(dāng)進行減法運算,并且最高位產(chǎn)生借位時C=0,否則C=1。 對于移位操作指令,C為從最高位最后移出的值,其它指令C通常不變;,當(dāng)進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V通常不變。,保留位被保留將來使用。為了提高程序的可移植性,當(dāng)改變CPSR標(biāo)志和控制位時,請不要改變這些保留位。另外,請確保您程序的運行不受保留位的值影響,因為將來的處理器可能會將這些位設(shè)置為1或者0。,2.6.3 程序狀態(tài)寄存器,CPSR模式位設(shè)置表,注意:不是所有模式位的組合都定義了有效的處理器模式,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論