09arm64匯編瑞客論壇書本_第1頁
09arm64匯編瑞客論壇書本_第2頁
09arm64匯編瑞客論壇書本_第3頁
09arm64匯編瑞客論壇書本_第4頁
09arm64匯編瑞客論壇書本_第5頁
已閱讀5頁,還剩229頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ARM 應用系統開發詳解基于 S3C4510B 的系統設計1目錄第 1 章1.11.2ARM 微處理器概述ARMAdvanced RISC Machines ARM 微處理器的應用領域及特點5555666777888889910101.2.1 ARM 微處理器的應用領域1.2.2 ARM 微處理器的特點1.3 ARM 微處理器系列1.3.11.3.21.3.31.3.41.3.51.3.61.3.7ARM7 微處理器系列ARM9 微處理器系列ARM9E 微處理器系列ARM10E 微處理器系列SecurCore 微處理器系列StrongARM 微處理器系列Xscale 處理器1.4ARM 微處理

2、器結構1.4.11.4.21.4.3RISC 體系結構ARM 微處理器的寄存器結構ARM 微處理器的指令結構1.51.6ARM 微處理器的應用選型本章小節第 2 章2.12.22.32.42.5ARM 微處理器的編程模型ARM 微處理器的工作狀態11111112121313151618181819192020212121ARM 體系結構的指令長度及數據類型處理器模式寄存器組織器格式2.5.12.5.22.5.3ARM 狀態下的寄存器組織Thumb 狀態下的寄存器組織程序狀態寄存器2.6異常(Exceptions)2.6.12.6.22.6.32.6.42.6.52.6.62.6.72.6.8A

3、RM 體系結構所支持的異常類型對異常的響應從異常返回各類異常的具體描述異常進入/小節異常向量(Exception Vectors)異常優先級(Exception Priorities) 應用程序中的異常處理2.7本章小節ARM 應用系統開發詳解基于 S3C4510B 的系統設計2第 3 章 ARM 微處理器的指令系統3.1 ARM 微處理器的指令集概述3.1.1 ARM 微處理器的指令的分類與格式3.1.2 指令的條件域3.2 ARM 指令的尋址方式222222232324242424252525252526303232343535363838393.2.13.2.23.2.23.2.33.2

4、.43.2.53.2.6立即尋址 寄存器尋址寄存器間接尋址基址變址尋址 多寄存器尋址 相對尋址堆棧尋址3.3ARM 指令集3.3.13.3.23.3.33.3.43.3.53.3.63.3.73.3.83.3.93.3.10跳轉指令數據處理指令乘法指令與乘加指令程序狀態寄存器指令加載/指令批量數據加載/指令移位指令(操作) 協處理器指令異常產生指令指令3.43.5Thumb 指令及應用本章小節第 4 章4.1ARM 程序設計基礎ARM 匯編器所支持的偽指令4040404143454849495252525355564.1.14.1.24.1.34.1.4符號定義(Symbol Definiti

5、on)偽指令數據定義(Data Definition)偽指令匯編(Assembly Control)偽指令其他常用的偽指令4.2匯編語言的語句格式4.2.14.2.2在匯編語言程序中常用的符號匯編語言程序中的表達式和運算符4.3匯編語言的程序結構4.3.14.3.24.3.34.3.4匯編語言的程序結構 匯編語言的子程序調用匯編語言程序示例匯編語言與 C/C+的混合編程4.4本章小節第 5 章 應用系統設計與調試57ARM 應用系統開發詳解基于 S3C4510B 的系統設計35.15.2575858616772828283838589939495961001011011021031051051

6、05105106106系統設計概述S3C4510B 概述5.2.15.2.25.2.35.2.45.35.3.15.3.25.3.35.3.45.3.55.3.65.3.75.3.85.3.9S3C4510B 及片內簡介S3C4510B 的引腳分布及信號描述CPU 內核概述及特殊功能寄存器(Special Registers) S3C4510B 的系統管理器(System Manager)系統的硬件選型與單元電路設計S3C4510B電源電路及引腳分析晶振電路與復位電路Flash器接口電路SDRAM 接口電路串行接口電路 IIC 接口電路JTAG 接口電路10M/100M 以太網接口電路5.3.

7、10通用I/O 接口電路5.4硬件系統的調試5.4.15.4.25.4.35.4.45.4.5電源、晶振及復位電路S3C4510B 及 JTAG 接口電路SDRAM 接口電路的調試Flash 接口電路的調試10M/100M 以太網接口電路5.5印刷電路板的設計注意事項5.5.15.5.2電源質量與分配同類型信號線的分布5.6本章小節第 6 章6.16.2部件工作原理與編程示例系統的程序設計方法部件工作原理與編程示例1071071081081111201231271331381391401441471541601626.2.16.2.26.2.36.2.46.2.56.2.66.2.7通用 I/

8、O 口工作原理與編程示例串行通訊工作原理與編程示例中斷器工作原理與編程示例定時器工作原理與編程示例GDMA 工作原理與編程示例IIC 總線以太網器工作原理器工作原理主要特性MAC 功能模塊帶緩沖 DMA 接口(Buffered DMA Interface)以太網器特殊功能寄存器(Ethernet Controller Special Registers)MAC 寄存器(Media Access Control(MAC)Register)以太網器的操作(Ethernet Controller Operation)一個幀(Transmitting a Frame)ARM 應用系統開發詳解基于 S3

9、C4510B 的系統設計4接收一個幀(Receiving a Frame)1621621671676.2.8Flash器工作原理與編程示例6.36.4BootLoader 簡介本章小節第 7 章7.17.2uClinux 及其應用開發uClinux 系統概況開發工具 GNU 的使用1681681701701721771801811841851871881901952022052077.2.17.2.27.2.3GCC 編譯器GNU Make使用 GDB 調試程序7.3建立 uClinux 開發環境7.3.17.3.27.3.37.3.4建立交叉編譯器uClinux硬件的改動編譯 uClinux

10、 內核內核的加載運行7.4 在uClinux 下開發應用程序7.4.17.4.27.47.4.4串行通信socket 編程.3添加用戶應用程序到 uClinux通過網絡添加應用程序到目標系統7.5本章小結第 8 章ARM ADS 集成開發環境的使用8.1ADS 集成開發環境組成介紹2092092092182192212212222222252292302338.1.18.1.28.1.38.1.48.1.5命令行開發工具ARM 運行時庫GUI 開發環境(Code Warrior 和 AXD)實用程序支持的軟件8.2 使用 ADS 創建工程8.2.1 建立一個工程8.2.28.2.3編譯和工程使

11、用命令行工具編譯應用程序8.38.4用 AXD 進行代碼調試本章小結ARM 應用系統開發詳解基于 S3C4510B 的系統設計5第 1 章 ARM 微處理器概述本章簡介 ARM 微處理器的一些基本概念、應用領域及特點,引導讀者進入 ARM 技術的殿堂。本章主要內容:ARM 及相關技術簡介ARM 微處理器的應用領域及特點ARM 微處理器系列ARM 微處理器的體系結構ARM 微處理器的應用選型1.1ARMAdvanced RISC MachinesARM(Advanced RISC Machines),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。199

12、1 年 ARM 公司成立于英國,主要出售設計技術的。目前,采用 ARM 技術知識產權(IP)核的微處理器,即我們通常所說的 ARM 微處理器,已遍及工業、消費類電子產品、通信系統、網絡系統、無線系統等各類市場,基于 ARM 技術的微處理器應用約占據了 32位 RISC 微處理器 75以上的市場份額,ARM 技術正在逐步滲入到我們生活的各個方面。ARM 公司是專門從事基于 RISC 技術設計開發的公司,作為知識產權供應商,本身不直接,世界各大半導體生產商從 ARM從事公司生產,靠轉讓設計由合作公司生產各具特色的其設計的 ARM 微處理器核,根據各自不同的應用領域,加入適當的電路,從而形成自己的

13、ARM 微處理器進入市場。目前,全世界有幾十家大的半導體公司都使用 ARM 公司的,因此既使得 ARM 技術獲得的第工具、制造、軟件的支持,又使整個系統成本降低,使更容易進入市場被消費者所接受,更具有競爭力。1.2ARM 微處理器的應用領域及特點1.2.1ARM 微處理器的應用領域到目前為止,ARM 微處理器及技術的應用幾乎已經深入到各個領域:1、工業領域:作為 32 的 RISC 架構,基于 ARM 核的微器不但占據了高端微控制器市場的大部分市場份額,同時也逐漸向低端微器應用領域擴展,ARM 微器的低功耗、高性價比,向傳統的 8 位/16 位微器提出了。2、無線通訊領域:目前已有超過 85%

14、的無線通訊設備采用了 ARM 技術, ARM 以其高性能和低成本,在該領域的地位日益鞏固。3、網絡應用:隨著寬帶技術的推廣,采用 ARM 技術的 ADSL正逐步獲得競爭優勢。此外,ARM 在語音及4、消費類電子泛采用。5、成像和安全處理上行了優化,并獲得廣泛支持,也對 DSP 的應用領域提出了。機中得到廣:ARM 技術在目前流行的數字音頻器、數字機頂盒和:現在流行的數碼相機和打印機中絕大部分采用 ARM 技術。中的 32位 SIM 智能卡也采用了 ARM 技術。除此以外,ARM 微處理器及技術還應用到許多不同的領域,并會在將來取得更加廣泛的應用。ARM 應用系統開發詳解基于 S3C4510B

15、的系統設計61.2.2ARM 微處理器的特點采用 RISC 架構的 ARM 微處理器一般具有如下特點:1、體積小、低功耗、低成本、高性能;2、支持 Thumb(16 位)/ARM(32 位)雙指令集,能很好的兼容 8 位/16 位器件;3、大量使用寄存器,指令執行速度更快;4、大多數數據操作都在寄存器中完成;5、尋址方式靈活簡單,執行效率高;6、指令長度固定;1.3ARM 微處理器系列ARM 微處理器目前包括下面幾個系列,以及其它廠商基于 ARM 體系結構的處理器,除了具有ARM 體系結構的共同特點以外,每一個系列的 ARM 微處理器都有各自的特點和應用領域。ARM7 系列ARM9 系列ARM

16、9E 系列ARM10E 系列SecurCore 系列Inter 的 XscaleInter 的 StrongARM其中,ARM7、ARM9、ARM9E 和 ARM10 為 4 個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應用領域的需求。SecurCore 系列專門為安全要求較高的應用而設計。以下我們來詳細了解一下各種處理器的特點及應用領域。1.3.1ARM7 微處理器系列ARM7 系列微處理器為低功耗的 32 位 RISC 處理器,最適合用于對價位和功耗要求較高的消費類應用。ARM7 微處理器系列具有如下特點:具有ICERT 邏輯,調試開發方便。極低的功耗,適合對功耗要求較高的

17、應用,如便攜式能夠提供 0.9MIPS/MHz 的三級流水線結構。代碼密度高并兼容 16 位的 Thumb 指令集。對操作系統的支持廣泛,包括 Windows CE、Linux、Palm OS 等。指令系統與 ARM9 系列、ARM9E 系列和 ARM10E 系列兼容,便于用戶的主頻最高可達 130MIPS,高速的運算處理能力能勝任絕大多數的復雜應用。升級換代。ARM7 系列微處理器的主要應用領域為:工業、Internet 設備、網絡和調制解調器設備、移動等多種多和應用。ARM7 系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,AR

18、M7TMDI 是目前使用最廣泛的 32 位ARM 處理器核。TDMI 的基本含義為: T: 支持 16 為壓縮指令集 Thumb; D: 支持片上 Debug;M:內嵌硬件乘法器(Multiplier)RISC 處理器,屬低端I:ICE,支持片上斷點和調試點;ARM 應用系統開發詳解基于 S3C4510B 的系統設計7本書所介紹的 Samsung 公司的 S3C4510B 即屬于該系列的處理器。1.3.2ARM9 微處理器系列ARM9 系列微處理器在高性能和低功耗特性方面提供最佳的性能。具有以下特點:5 級整數流水線,指令執行效率更高。提供 1.1MIPS/MHz 的哈佛結構。支持 32 位

19、ARM 指令集和 16 位 Thumb 指令集。支持 32 位的高速 AMBA 總線接口。全性能的 MMU,支持 Windows CE、Linux、Palm OS 等多種主流MPU 支持實時操作系統。支持數據 Cache 和指令 Cache,具有更高的指令和數據處理能力。操作系統。ARM9 系列微處理器主要應用于無線設備、儀器儀表、安全系統、機頂盒、高端打印機、數字照相機和數字攝像機等。ARM9 系列微處理器包含 ARM920T、ARM922T 和 ARM940T 三種類型,以適用于不同的應用場合。1.3.3ARM9E 微處理器系列ARM9E 系列微處理器為可綜合處理器,使用單一的處理器內核提

20、供了微器、DSP、Java應用系統的解決方案,極大的減少了的面積和系統的復雜程度。ARM9E 系列微處理器提供了增強的 DSP 處理能力,很適合于那些需要同時使用 DSP 和微ARM9E 系列微處理器的主要特點如下:器的應用場合。支持 DSP 指令集,適合于需要高速數字信號處理的場合。5 級整數流水線,指令執行效率更高。支持 32 位 ARM 指令集和 16 位 Thumb 指令集。支持 32 位的高速 AMBA 總線接口。支持 VFP9 浮點處理協處理器。全性能的 MMU,支持 Windows CE、Linux、Palm OS 等多種主流MPU 支持實時操作系統。支持數據 Cache 和指令

21、 Cache,具有更高的指令和數據處理能力。主頻最高可達 300MIPS。操作系統。ARM9 系列微處理器主要應用于下一代無線設備、數字消費品、成像設備、工業備和網絡設備等領域。、設ARM9E 系列微處理器包含 ARM926EJ-S、ARM946E-S 和 ARM966E-S 三種類型,以適用于不同的應用場合。1.3.4ARM10E 微處理器系列ARM10E 系列微處理器具有高性能、低功耗的特點,由于采用了新的體系結構,與同等的 ARM9 器件相比較,在同樣的時鐘頻率下,性能提高了近 50,同時,ARM10E 系列微處理器采用了兩種先進的節能方式,使其功耗極低。ARM10E 系列微處理器的主要

22、特點如下: 支持 DSP 指令集,適合于需要高速數字信號處理的場合。 6 級整數流水線,指令執行效率更高。 支持 32 位 ARM 指令集和 16 位 Thumb 指令集。ARM 應用系統開發詳解基于 S3C4510B 的系統設計8支持 32 位的高速 AMBA 總線接口。支持 VFP10 浮點處理協處理器。全性能的 MMU,支持 Windows CE、Linux、Palm OS 等多種主流支持數據 Cache 和指令 Cache,具有更高的指令和數據處理能力主頻最高可達 400MIPS。內嵌并行讀/寫操作部件。操作系統。ARM10E 系列微處理器主要應用于下一代無線設備、數字消費品、成像設備

23、、工業和信息系統等領域。ARM10E 系列微處理器包含 ARM1020E、ARM1022E 和 ARM1026EJ-S 三種類型,以適用于不同的應用場合。、通信1.3.5SecurCore 微處理器系列SecurCore 系列微處理器專為安全需要而設計,提供了完善的 32 位 RISC 技術的安全解決方案, 因此,SecurCore 系列微處理器除了具有 ARM 體系結構的低功耗、高性能的特點外,還具有其獨特的優勢,即提供了對安全解決方案的支持。SecurCore 系列微處理器除了具有 ARM 體系結構各種主要特點外,還在系統安全方面具有如下的特點:帶有靈活的保護單元,以確保操作系統和應用數據

24、的安全。采用軟內核技術,防止外部對其進行掃描探測。可集成用戶自己的安全特性和其他協處理器。SecurCore 系列微處理器主要應用于一些對安全性要求較高的應用及應用系統,如電子商務、電子政務、電子業務、網絡和認證系統等領域。SecurCore 系列微處理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200 和SecurCoreSC210 四種類型,以適用于不同的應用場合。1.3.6StrongARM 微處理器系列Inter StrongARM SA-1100 處理器是采用 ARM 體系結構高度集成的 32 位 RISC 微處理器。它融合了 Int

25、er 公司的設計和處理技術以及 ARM 體系結構的電源效率,采用在軟件上兼容 ARMv4 體系結構、同時采用具有 Intel 技術優點的體系結構。Intel StrongARM 處理器是便攜式通訊和消費類電子的理想選擇,已應用于多家公司的掌上電腦系列。1.3.7Xscale 處理器Xscale 處理器是基于 ARMv5TE 體系結構的解決方案,是一款全性能、高性價比、低功耗的處理器。它支持 16 位的 Thumb 指令和 DSP 指令集,已使用在數字移動品等場合。Xscale 處理器是 Inter 目前主要推廣的一款 ARM 微處理器。、個人數字助理和網絡產1.4ARM 微處理器結構1.4.1

26、RISC 體系結構傳統的 CISC(Complex Instruction Set Computer,復雜指令集計算機)結構有其固有的缺點,即ARM 應用系統開發詳解基于 S3C4510B 的系統設計9隨著計算機技術的發展而不斷引入新的復雜的指令集,為支持這些新增的指令,計算機的體系結構會越來越復雜,然而,在 CISC 指令集的各種指令中,其使用頻率卻相差懸殊,大約有 20的指令會被反復使用,占整個程序代碼的 80。而余下的 80的指令卻不經常使用,在程序設計中只占 20,顯然,這種結構是不太合理的。基于以上的不合理性,1979 年美國加州大學伯克利分校提出了 RISC(Reduced Ins

27、truction Set Computer,精簡指令集計算機)的概念,RISC 并非只是簡單地去減少指令,而是把著眼點放在了如何使計算機的結構更加簡單合理地提高運算速度上。RISC 結構優先選取使用頻最高的簡單指令,避免復雜指令;將指令長度固定,指令格式和尋地方式種類減少;以等措施來達到上述目的。邏輯為主,不用或少用微碼到目前為止,RISC 體系結構也還沒有嚴格的定義,一般認為,RISC 體系結構應具有如下特點: 采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有 23 種。 使用單周期指令,便于流水線操作執行。 大量使用寄存器,數據處理指令只對寄存器進行操作,只有加載/以提高指令的執行效

28、率。指令可以器,除此以外,ARM 體系結構還采用了一些特別的技術,在保證高性能的前提下盡量縮小積,并降低功耗:的面所有的指令都可根據前面的執行結果決定是否被執行,從而提高指令的執行效率。可用加載/指令批量傳輸數據,以提高數據的傳輸效率。可在一條數據處理指令中同時完成邏輯處理和移位處理。在循環處理中使用地址的自動增減來提高運行效率。當然,和 CISC 架構相比較,盡管 RISC 架構有上述的優點,但決不能認為 RISC 架構就可以取代 CISC 架構,事實上,RISC 和 CISC 各有優勢,而且界限并不那么明顯。現代的 CPU 往往采用CISC 的,內部加入了 RISC 的特性,如超長指令集

29、CPU 就是融合了 RISC 和 CISC 的優勢,成為未來的 CPU 發展方向之一。1.4.2ARM 微處理器的寄存器結構ARM 處理器共有 37 個寄存器,被分為若干個組(BANK),這些寄存器包括: 31 個通用寄存器,包括程序計數器(PC 指針),均為 32 位的寄存器。 6 個狀態寄存器,用以標識 CPU 的工作狀態及程序的運行狀態,均為 32 位,目前只使用了其中的一部分。同時,ARM 處理器又有 7 種不同的處理器模式,在每一種處理器模式下均有一組相應的寄存器與之對應。即在任意一種處理器模式下,可的寄存器包括 15 個通用寄存器(R0R14)、一至二個狀態寄存器和程序計數器。在所

30、有的寄存器中,有些是在 7 種處理器模式下共用的同一個物理寄存器,而有些寄存器則是在不同的處理器模式下有不同的物理寄存器。關于 ARM 處理器的寄存器結構,在后面的相關章節將會詳細描述。1.4.3ARM 微處理器的指令結構ARM 微處理器的在較新的體系結構中支持兩種指令集:ARM 指令集和Thumb 指令集。其中,ARM 指令為 32 位的長度,Thumb 指令為 16 位長度。Thumb 指令集為 ARM 指令集的功能子集,但與等價的 ARM 代碼相比較,可節省 3040以上的點。空間,同時具備 32 位代碼的所有優關于 ARM 處理器的指令結構,在后面的相關章節將會詳細描述。ARM 應用系

31、統開發詳解基于 S3C4510B 的系統設計101.5ARM 微處理器的應用選型鑒于 ARM 微處理器的眾多優點,隨著國內外應用領域的逐步發展,ARM 微處理器必然會獲得廣泛的重視和應用。但是,由于 ARM 微處理器有多達十幾種的內核結構,幾十個生產廠家,以及千變萬化的內部功能配置組合,給開發做一些對比研究是十分必要的。在選擇方案時帶來一定的,所以,對 ARM以下從應用的角度出發,對在選擇 ARM 微處理器時所應考慮的主要問題做一些簡要的探討。ARM 微處理器內核的選擇從前面所介紹的內容可知,ARM 微處理器包含一系列的內核結構,以適應不同的應用領域, 用戶如果希望使用 WinCE 或標準 L

32、inux 等操作系統以減少軟件開發時間,就需要選擇 ARM720T 以上帶有 MMU(Memory Management Unit)功能的 ARM,ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM 都帶有 MMU 功能。而 ARM7TDMI 則沒有 MMU,不支持 Windows CE 和標準 Linux,但目前有 uCLinux 等不需要 MMU 支持的操作系統可運行于 ARM7TDMI 硬件平臺之上。事實上,uCLinux 已經都有上佳表現。移植到多種不帶 MMU 的微處理器平臺上,并在穩定性和其他方面本書所討論的 S3C4510B 即為一款不帶 MMU

33、 的 ARM 微處理器,可在其上運行 uCLinux 操作系統。系統的工作頻率系統的工作頻率在很大程度上決定了 ARM 微處理器的處理能力。ARM7 系列微處理器的典型處理速度為 0.9MIPS/MHz,常見的 ARM7系統主時鐘為 20MHz-133MHz,ARM9 系列微處理器的典型處理速度為 1.1MIPS/MHz,常見的 ARM9 的系統主時鐘頻率為 100MHz-233MHz,ARM10最高可以達到 700MHz。不同對時鐘的處理不同,有的只需要一個主時鐘頻率,有的內部時鐘器可以分別為 ARM 核和 USB、UART、DSP、音頻等功能部件提供不同頻率的時鐘。內器的容量大多數的 AR

34、M 微處理器片內器的容量都不太大,需要用戶在設計系統時外擴器,但也有部分具有相對較大的片內空間,如 ATMEL 的 AT91F40162 就具有高達 2MB 的片內程序空間,用戶在設計時可考慮選用這種類型,以簡化系統的設計。片內電路的選擇除 ARM 微處理器核以外,幾乎所有的 ARM均根據各自不同的應用領域,擴展了相關功之中,我們稱之為片內電路,如 USB 接口、IIS 接口、LCD能模塊,并集成在器、鍵盤接口、RTC、ADC 和 DAC、DSP 協處理器等,設計者應分析系統的需求,盡可能采用片內電路完成所需的功能,這樣既可簡化系統的設計,同時提高系統的可靠性。1.6本章小節本章對 ARM 微

35、處理器、ARM 技術的基本概念做了一些簡單的介紹,希望讀者通過對本章的閱讀,能對 ARM 微處理器、ARM 技術有一個總體上的認識。ARM 應用系統開發詳解基于 S3C4510B 的系統設計11第 2 章 ARM 微處理器的編程模型本章簡介 ARM 微處理器編程模型的一些基本概念,包括工作狀態切換、數據的格式、處理器異常等,通過對本章的閱讀,希望讀者能了解 ARM 微處理器的基本工作原理和一些與程序設計相關的基本技術細節,為以后的程序設計打下基礎。本章的主要內容:ARM 微處理器的工作狀態ARM 體系結構的器格式ARM 微處理器的工作模式ARM 體系結構的寄存器組織ARM 微處理器的異常狀態在

36、開始本章之前,首先對字(Word)、半字(Half-Word)、字節(Byte)的概念作一個說明: 字(Word):在ARM體系結構中,字的長度為32位,而在8位/16位處理器體系結構中,字的長度一般為16位,請讀者在閱讀時注意區分。半字(Half-Word):在ARM體系結構中,半字的長度為16位,與8位/16位處理器體系結構中字的長度一致。字節(Byte):在ARM體系結構和8位/16位處理器體系結構中,字節的長度均為8位。2.1ARM 微處理器的工作狀態從編程的角度看,ARM微處理器的工作狀態一般有兩種,并可在兩種狀態之間切換: 第一種為ARM狀態,此時處理器執行32位的字對齊的ARM指

37、令; 第二種為Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。當ARM微處理器執行32位的ARM指令集時,工作在ARM狀態;當ARM微處理器執行16位的Thumb指令集時,工作在Thumb狀態。在程序的執行過程中,微處理器可以隨時在兩種工作狀態之間切換, 并且,處理器工作狀態的轉變并不影響處理器的工作模式和相應寄存器中的內容。狀態切換方法:ARM指令集和Thumb指令集均有切換處理器狀態的指令,并可在兩種工作狀態之間切換,但ARM 微處理器在開始執行代碼時,應該處于ARM狀態。進入Thumb狀態:當操作數寄存器的狀態位(位0)為1時,可以采用執行BX指令的方法,使微處理器從A

38、RM狀態切換到Thumb狀態。此外,當處理器處于Thumb狀態時發生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時,自動切換到Thumb狀態。進入ARM狀態:當操作數寄存器的狀態位為0時,執行BX指令時可以使微處理器從Thumb狀態切換到ARM狀態。此外,在處理器進行異常處理時,把PC指針放入異常模式向量地址開始執行程序,也可以使處理器切換到ARM狀態。寄存器中,并從異常2.2ARM 體系結構的器格式ARM體系結構將器看作是從零地址開始的字節的線性組合。從零字節到三字節放置第一個的字數據,從第四個字節到第七個字節放置第二個的字數據,依次排列。作為32位的微處理器,

39、ARM體系結構所支持的最大尋址空間為4GB(232字節)。ARM體系結構可以用兩種方法大端格式:字數據,稱之為大端格式和小端格式,具體說明如下:ARM 應用系統開發詳解基于 S3C4510B 的系統設計12在這種格式中,字數據的高字節如圖2.1所示:在低地址中,而字數據的低字節則存放在高地址中,圖 2.1 以大端格式字數據小端格式:與大端格式相反,在小端格式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。如圖2.2所示:圖 2. 2 以小端格式字數據2.3指令長度及數據類型ARM微處理器的指令長度可以是32位(在ARM狀態下),也可以為16位(在Thumb狀態下)。ARM微處

40、理器中支持字節(8位)、半字(16位)、字(32位)三種數據類型,其中,字需要4字節對齊(地址的低兩位為0)、半字需要2字節對齊(地址的最低位為0)。2.4處理器模式ARM微處理器支持7種運行模式,分別為: 保護。用戶模式(usr):快速中斷模式(fiq):外部中斷模式(irq): 管理模式(svc):ARM處理器正常的程序執行狀態用于高速數據傳輸或通道處理用于通用的中斷處理操作系統使用的保護模式數據終止模式(abt): 當數據或指令預取終止時進入該模式,可用于虛擬及系統模式(sys):運行具有的操作系統任務。未定義指令中止模式(und):當未定義的指令執行時進入該模式,可用于支持硬件協處AR

41、M 應用系統開發詳解基于 S3C4510B 的系統設計13理器的軟件。ARM微處理器的運行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大多數的應用程序運行在用戶模式下,當處理器運行在用戶模式下時,某些被保護的系統是不能被的。除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或模式(Privileged Modes);其中除去用戶模式和系統模式以外的5種又稱為異常模式(Exception Modes),常用于處理中斷或異常,以及需要受保護的系統等情況。2.5寄存器組織ARM微處理器共有37個32位寄存器,其中31個為通用寄存器,6個為狀態寄存器。但是這些寄存器不能被同時,具體哪些寄

42、存器是可編程的,取決微處理器的工作狀態及具體的運行模式。但在任何時候,通用寄存器R14R0、程序計數器PC、一個或兩個狀態寄存器都是可的。2.5.1ARM 狀態下的寄存器組織通用寄存器:通用寄存器包括R0R15,可以分為三類:未分組寄存器R0R7;分組寄存器R8R14 程序計數器PC(R15)未分組寄存器R0R7:在所有的運行模式下,未分組寄存器都指向同一個物理寄存器,他們未被系統用作特殊的用途, 因此,在中斷或異常處理進行運行模式轉換時,由于不同的處理器運行模式均使用相同的物理寄存器,可能會造成寄存器中數據的破壞,這一點在進行程序設計時應引起注意。分組寄存器R8R14對于分組寄存器,他們每一

43、次所的物理寄存器與處理器當前的運行模式有關。對于R8R12來說,每個寄存器對應兩個不同的物理寄存器,當使用fiq模式時,寄存器R8_fiqR12_fiq;當使用除fiq模式以外的其他模式時,寄存器R8_usrR12_usr。對于R13、R14來說,每個寄存器對應6個不同的物理寄存器,其中的一個是用戶模式與系統模式共用,另外5個物理寄存器對應于其他5種不同的運行模式。采用以下的記號來區分不同的物理寄存器:R13_<mode> R14_<mode>其中,mode為以下幾種模式之一:usr、fiq、irq、svc、abt、und。寄存器R13在ARM指令中常用作堆棧指針,但這

44、只是一種習慣用法,用戶也可使用其他的寄存器作為堆棧指針。而在Thumb指令集中,某些指令強制性的要求使用R13作為堆棧指針。由于處理器的每種運行模式均有自己的物理寄存器R13,在用戶應用程序的初始化部分,一般都要初始化每種模式下的R13,使其指向該運行模式的棧空間,這樣,當程序的運行進入異常模式時,可以將需要保護的寄存器放入R13所指向的堆棧,而當程序從異常模式返回時,則從對應的堆棧中恢復,采用這種方式可以保證異常發生后程序的正常執行。R14也稱作子程序連接寄存器(Subroutine Link Register)或連接寄存器LR。當執行BL子程序調用指令時,R14中得到R15(程序計數器PC

45、)的備份。其他情況下,R14用作通用寄存器。與之類似,當發生中斷或異常時,對應的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und 用來保存R15的返回值。寄存器R14常用在如下的情況:ARM 應用系統開發詳解基于 S3C4510B 的系統設計14在每一種運行模式下,都可用R14保存子程序的返回地址,當用BL或BLX指令調用子程序時,將PC的當前值拷貝給R14,執行完子程序后,又將R14的值拷貝回PC,即可完成子程序的調用返回。以上的描述可用指令完成:1、執行以下任意一條指令:PC,LR LR處使用以下指令將R14存入堆棧:SP!,<Regs>

46、,LRMOV BX2、在子程序STMFD對應的,使用以下指令可以完成子程序返回:LDMFDSP!,<Regs>,PCR14也可作為通用寄存器。程序計數器PC(R15)寄存器R15用作程序計數器(PC)。在ARM狀態下,位1:0為0,位31:2用于保存PC;在Thumb 狀態下,位0為0,位31:1用于保存PC;雖然可以用作通用寄存器,但是有一些指令在使用R15 時有一些特殊限制,若不注意,執行的結果將是不可預料的。在ARM狀態下,PC的0和1位是0,在Thumb 狀態下,PC的0位是0。R15雖然也可用作通用寄存器,但一般不這么使用,因為對R15的使用有一些特殊的限制,當違反了這些

47、限制時,程序的執行結果是未知的。由于 ARM 體系結構采用了多級流水線技術,對于 ARM 指令集而言,PC 總是指向當前指令的下兩條指令的地址,即 PC 的值為當前指令的地址值加 8 個字節。圖 2.3 ARM 狀態下的寄存器組織在ARM狀態下,任一時刻可以以上所討論的16個通用寄存器和一到兩個狀態寄存器。在非到特定模式分組寄存器,圖2.3說明在每一種運行模式下,哪用戶模式(模式)下,則可一些寄存器是可以寄存器R16:的。寄存器R16用作CPSR(Current Program Status Register,當前程序狀態寄存器),CPSR可在任何運ARM 應用系統開發詳解基于 S3C4510

48、B 的系統設計15行模式下被,它包括條件標志位、中斷位、當前處理器模式標志位,以及其他一些相關的和狀態位。每一種運行模式下又都有一個的物理狀態寄存器,稱為SPSR(Saved Program StatusRegister,備份的程序狀態寄存器),當異常發生時,SPSR用于保存CPSR的當前值,從異常則可由SPSR來恢復CPSR。時由于用戶模式和系統模式不屬于異常模式,他們沒有SPSR,當在這兩種模式下是未知的。SPSR,結果2.5.2Thumb 狀態下的寄存器組織Thumb狀態下的寄存器集是ARM狀態下寄存器集的一個子集,程序可以直接8個通用寄存器(R7R0)、程序計數器(PC)、堆棧指針(S

49、P)、連接寄存器(LR)和CPSR。同時,在每一種特權模式下都有一組SP、LR和SPSR。圖2.4表明Thumb狀態下的寄存器組織。圖 2.4 Thumb 狀態下的寄存器組織Thumb狀態下的寄存器組織與ARM狀態下的寄存器組織的關系:Thumb狀態下和ARM狀態下的R0R7是相同的。 Thumb狀態下和ARM狀態下的CPSR和所有的SPSR是相同的。Thumb狀態下的SP對應于ARM狀態下的R13。 Thumb狀態下的LR對應于ARM狀態下的R14。Thumb狀態下的程序計數器對應于ARM狀態下R15以上的對應關系如圖2.5所示:ARM 應用系統開發詳解基于 S3C4510B 的系統設計16

50、圖 2.5 Thumb 狀態下的寄存器組織THUMB狀態下的寄存器(Hi-registers):在Thumb狀態下,寄存器R8R15并不是標準寄存器集的一部分,但可使用匯編語言程序受限制的存器和這些寄存器,將其用作快速的暫存器。使用帶特殊變量的MOV指令,數據可以在低位寄寄存器之間進行傳送;寄存器的值可以使用CMP和ADD指令進行比較或加上低位寄存器中的值。2.5.3程序狀態寄存器ARM體系結構包含一個當前程序狀態寄存器(CPSR)和五個備份的程序狀態寄存器(SPSRs)。備份的程序狀態寄存器用來進行異常處理,其功能包括:保存ALU中的當前操作信息和中斷設置處理器的運行模式程序狀態寄存器的每一

51、位的安排如圖2.6所示:圖 2.6 程序狀態寄存器格式條件碼標志(Condition Code Flags)ARM 應用系統開發詳解基于 S3C4510B 的系統設計17N、Z、C、V均為條件碼標志位。它們的內容可被算術或邏輯運算的結果所改變,并且可以決定某條指令是否被執行。在ARM狀態下,絕大多數的指令都是有條件執行的。在Thumb狀態下,僅有分支指令是有條件執行的。條件碼標志各位的具體含義如表2-1所示:表 2-1條件碼標志的具體含義位PSR的低8位(包括I、F、T和M4:0)稱為位,當發生異常時這些位可以被改變。如果處理器運行模式,這些位也可以由程序修改。位I、F:IRQ中斷;FIQ中斷

52、。中斷I=1F=1T標志位:該位反映處理器的運行狀態。對于ARM體系結構v5及以上的版本的T系列處理器,當該位為1時,程序運行于Thumb狀態, 否則運行于ARM狀態。對于ARM體系結構v5及以上的版本的非T系列處理器,當該位為1時,執行下一條指令以引起為定義的指令異常;當該位為0時,表示運行于ARM狀態。運行模式位M4:0:M0、M1、M2、M3、M4是模式位。這些位決定了處理器的運行模式。具體含義如表2-2所示:表 2-2運行模式位 M4:0的具體含義由表 2-2 可知,并不是所有的運行模式位的組合都是有效地,其他的組合結果會導致處理器進入一個不可恢復的狀態。保留位M4:0處理器模式可的寄存器0b10000用戶模式PSR,R0-R140b10001FIQ 模式PSR, SPSR_fiq,R14_fiq-R8_fiq, R7R00b100

溫馨提示

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

評論

0/150

提交評論