基于ARM嵌入式系統的通用bootloader的設計與實現_第1頁
基于ARM嵌入式系統的通用bootloader的設計與實現_第2頁
基于ARM嵌入式系統的通用bootloader的設計與實現_第3頁
基于ARM嵌入式系統的通用bootloader的設計與實現_第4頁
基于ARM嵌入式系統的通用bootloader的設計與實現_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、基于ARM嵌入式系統的通用bootloader的設計與實現摘要隨著移動設備的流行和發展,嵌入式系統已經成為一個熱點。它并不是最近出現的新技術,只是隨著微電子技術和計算機技術的發展,微控制芯片功能越來越大,而嵌入微控制芯片的設備和系統越來越多,從而使得這種技術越來越引人注目。它對軟硬件的體積大小、成本、功耗和可靠性都提出了嚴格的要求。嵌入式系統的功能越來越強大,實現也越來越復雜,隨之出現的就是可靠性大大降低。最近的一種趨勢是一個功能強大的嵌入式系統通常需要一種操作系統來給予支持,這種操作系統是已經成熟并且穩定的,可以是嵌入式的Linux,WINCE等等。相應地,這也給處理器提出了要求。當今,眾多

2、的半導體廠商都生產基于ARM體系結構的通用微處理芯片,ARM技術已經在當今的嵌入式微處理器領域中占據了它的領先地位。究其原因,它的精簡指令構架為主又不放棄與復雜指令平衡的設計,使得在獲得高性能的同時又能做到低功耗。本文所要研究的就是基于ARM嵌入式系統通用bootloader的設計與實現。Bootloader是嵌入式系統中執行在內核操作系統前的一段代碼,它的基本作用就是加載內核鏡像。在實踐平臺上,本課題硬件上采用了Intel Xscale系列的PXA255作為處理器,Xscale核心是與ARM V5TE構架兼容的,因此具有一定的代表性,并以此來搭建課題的硬件實踐平臺,軟件上以Linux作為操作

3、系統。而在具體的實現上目標是除了實現bootloader的基本功能外,還將它實現成一個更加復雜的系統,即增加對硬件電路板的支持,以方便開發人員進行調試以及開發。因此,本文重點闡述了實踐上具體的設計,具體的實現以及簡單評估了它的作用。最后,對實現的bootloader進行了擴展:即在闡明ARM嵌入式系統中bootloader的一些共同點之后,介紹了如何對其他ARM系統進行移植,以做到通用性。關鍵詞:嵌入式系統 ARM Bootload目錄摘要IAbstractII目錄III緒言1. 背景2. 主要研究工作3. 主要內容第一章ARM簡介1.1 ARM 簡介 ARM處理器介紹1.2 ARM處理器的優

4、勢特點1.2.1 RISC指令集 低功耗第二章 ARM體系結構介紹2.1 ARM core描述2.2 編程模型介紹2.2.1 ARM處理器模式2.2.2 ARM寄存器組介紹 ARM存儲系統2.2.4 ARM指令集介紹2.2.5 ARM體系的異常中斷2.3 ARM最小系統描述2.4 Intel Xscale系統構架 PXA255介紹第三章 Bootloader的概念3.1 Bootloader的基本概念3.2 Bootloader的操作模式3.3 Bootloader的概念擴展3.4 ARM Bootloader的共性第四章 Bootloader的設計與實現4.1 研究的平臺環境 硬件平臺 軟件

5、環境以及軟件開發工具4.2 Bootloader的總體設計 階段設計 地址規劃設計 模式設計4.3 Bootloader的具體實現 階段1的代碼實現 階段2的代碼實現 代碼的編譯 目標文件的鏈接與轉換4.4 代碼組織結構4.5 使用操作第五章實驗結果與測評5.1 實驗結果 基本功能的實現結果 擴展功能的實現結果5.2 程序性能 擴展功能的功能性測試數據 程序的可移植性第六章 總結與展望緒言1.研究背景隨著人民生活水平提高帶來巨大的消費需求、信息化進程的推進、電信運營業的發展,信息產業市場空間將得到進一步拓展。在這良好的經濟環境下,嵌入式系統領域得到進一步的拓寬與發展。嵌入式系統是以應用為中心、

6、以計算機技術為基礎、軟件硬件可剪裁來適應系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。嵌入式系統是將先進的計算機技術、半導體技術、電子技術和各行業的具體應用相結合后的產物,它是一個技術密集、資金密集、高度分散、不斷創新的知識集成系統。嵌入式系統廣泛地應用在信息終端、工業控制和信息家電等領域。在嵌入式系統的開發中,嵌入式軟件是實現各種系統功能的關鍵,也是計算機技術最活躍的研究方向之一。不同應用對嵌入式軟件系統有不同的要求,并且隨著計算機技術的發展,這些要求也在不斷變化。通常,應用系統對嵌入式軟件的基本要求是體積小、執行速度快、具有較好的可剪裁性和可移植性。特別地,現在對嵌入式軟件

7、來說,都需要操作系統的支持。簡單的嵌入式系統根本沒有操作系統,而只是一個控制循環。但是,當系統變得越來越復雜時,就需要一個嵌入式操作系統來支持,否則應用軟件就會變得過于復雜,使開發難度過大,安全性和可靠性都難以保證。嵌入式軟件,特別是操作系統的支持,使得對硬件的要求越來越高。針對嵌入式系統的各種微處理器遍布各個角落。特別是采用ARM技術IP核的各種微處理器遍及各類產品市場。ARM技術以其較高的性能和功效,使得在嵌入式系統中得到廣泛應用。世界上幾乎所有的主要半導體廠商都生產基于ARM體系結構的通用芯片,如TI,Motorola,Intel,NS,Ateml,Philips,SAMSUNG等。目前

8、,ARM芯片廣泛應用于無線產品、PDA、GPS、網絡、消費電子產品、STB及智能卡。應該說,ARM無處不在。隨著嵌入式產品中高端微處理器ARM的加入以及軟件上操作系統的支持,使得整個嵌入式系統擁有了完整的構架。現在,專門為嵌入式產品開發的各個操作系統層出不窮,WINDOW CE,POCKET PC,Linux等等,各界關注地也特別多。然而,如何進行加載操作系統這個問題卻很少有人提出。這就產生了另一個相關主題bootloader。Bootloader本身的功能就是引導與加載內核鏡像。如何實現bootloader的基本功能,如何針對基于ARM體系的微處理器來實現bootloader,就成為本課題的

9、一個基本論題。,除了基本功能,bootloader還能有什么更加具體的擴展功能來方便各個系統開發者,都屬于本課題討論的范疇。2.主要研究工作本文的題目盡管涉及到ARM系統,但是,由于bootloader的特殊性以及個別性,即bootloader與具體的處理器以及具體的硬件系統緊密聯系在一起,需要實際的完整硬件系統支持,而基于ARM體系的芯片實在太多,每款芯片除了具有基本的ARM體系結構的通性外,通常還具有各自獨特的特性,還需分別處理。因此,在真正的開發環節上,本課題主要基于Intel Xscale體系構架的PXA255處理器,Xscale本身是與ARM V5TE構架兼容的,因此很具有代表性,并

10、由此在理論上擴展到整個ARM系統。在實現過程中具體研究開發如下:l 選擇基于Intel Xscale構架的PXA255芯片作為處理器,并以此構建一套硬件開發系統l 與實際項目接軌,選擇GNU的linux作為系統的操作系統l 在上述軟硬件開發系統上實現基于PXA255的bootloader的基本功能,即引導加載內核鏡像的功能l 在實現bootloader基本功能的基礎上,增加bootloader的擴展功能,包括:通過串口打印調試信息、通過串口更新鏡像、通過USB接口更新鏡像、實現bootloader加載模式與下載模式的轉換以及實現對FLASH的擦寫操作支持l 在Xscale的構架基礎上在理論上擴

11、展到ARM系統,分析對于ARM系統,bootloader實現的一些共性以及一些限制l 分析對于實現bootloader,移植到其他ARM平臺的相關處理3.主要內容根據所涉及的主要研究工作,本文的內容主要包括一下幾個部分:第一章簡要敘述ARM世界的一些主流處理器以及其優勢特點;緊接著第二章則詳細描述了ARM的體系結構,指令系統并在此基礎上簡單的描述了一下PXA255的相關結構;第三章的內容是介紹bootloader的概念,并專門針對ARM bootloader進行了詳細說明;第四章在首先介紹軟硬件平臺之后詳細介紹了bootloadr的實現,包括基本功能,擴展功能等,以及軟件上的編譯連接的實現,代

12、碼組織結構等;第五章針對第四章的實現,對結果進行分析以及擴展功能的一些數據測試,以及如何在實現的bootloader基礎上進行移植;最后一章進行一下總結與展望。第一章, 簡單闡述ARM的發展,基于ARM體系的各類主流處理器以及ARM的優勢特點。第二章, 詳細描述了ARM的體系結構,包括ARM編程模型方面的內容,簡單介紹了ARM core,ARM最小系統的組成以及硬件系統相關的PXA255處理器的介紹。第三章, 闡述bootloader的一些基本概念以及ARM bootloader的一些共性。第四章, 簡單介紹了其實現的軟硬件平臺,詳細介紹了基于PXA255處理器的bootloader基本功能的

13、實現以及擴展功能的實現以及軟件上編譯連接的處理。第五章, 實驗結果的一些分析與測評,包括一些測試數據以及程序的穩定性與可移植性、剪裁性的分析。第六章, 總結與展望。第一章 ARM簡介嵌入式系統的核心部件是各種類型的嵌入式處理器。目前據不完全統計,全世界嵌入式處理器的品種總量已經超過1000多種,流行體系結構有30多個系列。嵌入式微處理目前主要有Am186/88、386EX、SC-400、Power PC、MIPS、ARM系列等。其中,ARM是一種今年來在嵌入式系統中有著強大影響力的微處理器設計商和制造商,ARM的設計非常適合與小的電源供電系統。特別是,隨著近年來,微處理器結構由RISC(精簡指

14、令集)全面取代傳統的CISC(復雜指令集),因為ARM是著名的RISC的擁護者。1.1 ARM 簡介 ARM(Advanced RISC Machines),既可以認為是一個公司的名字,也可以是對一類微處理器的通稱,還可以認為是一種技術的名字。1991年ARM公司成立于英國劍橋,主要出售芯片設計技術的授權。目前,采用ARM技術只是產權(IP)核的微處理器,即通常我們所說的ARM微處理器,已經遍及工業控制、消費類電子產品、通信系統、無線系統等各類產品市場,基于ARM技術的微處理應用約占據了32位RISC微處理器75以上的市場份額,ARM技術正在逐步滲入我們生活的各個方面。ARM公司是專門從事基于

15、RISC技術芯片設計開發的公司,作為知識產權供應商,本身不直接從事芯片生產,靠轉讓設計許可由合作公司生長各具特色的芯片。世界各大半導體生產商從ARM公司購買其設計的ARM微處理器核,根據各自不同的應用領域,加入適當的外圍電路,從而形成自己的ARM微處理器芯片進入市場。目前,全世界有幾十家大的半導體公司都使用ARM公司的授權,因此既使得ARM技術獲得更多的第三方工具、制造、軟件的支持,又使得整個系統成本降低,使產品更容易進入市場被消費者所接受,更具有競爭力。ARM處理器介紹ARM處理器目前包括下面幾個系列的處理器產品以及其他廠商實現的基于ARM體系結構的處理器:ARM7系列、ARM9系列、ARM

16、9E系列、 ARM10E系列、SecurCore系列、Intel的Xscale系列、Intel的StrongARM系列。ARM體系有變種,也就是說有些版本具備特定功能,在各個版本的版本號上可以體現出來,說明如下5:T: 支持16位壓縮指令集Thumb;D: 支持片上Debug;M:內嵌硬件乘法器(Multiplier),增加用于長乘法操作的指令;I: 嵌入式ICE,支持片上斷點和調試點;E:增強型DSP指令;ARM構架誕生至今,已經產生了多次變革,每一次都帶來性能上的極大飛躍,其過程包括: V1構架(ARM1)基本的數據處理指令(無乘法)字節、半字和字的Load/Store指令轉移指令,包括子

17、程序的調用和鏈接指令軟件中斷指令尋址空間64MB V2構架(ARM2,ARM3)增加乘法和乘法指令增加支持協處理器的操作增加快速中斷模式增加SWP/SWPB的存儲器和寄存器交換指令 V3構架(ARM6)增加了MRS/MSR指令,訪問新增的CPSR/SPSR寄存器增加了異常處理返回尋址空間4GB V4構架(ARM7, ARM9)增加符號化和非符號化半字及符號化字節的存取指令增加16位的Thumb指令完善軟件中斷SWI指令 V5構架(ARM10)帶有鏈接和交換的轉移BLX指令計數前導零CLZ指令BRK中斷指令增加了一些信號處理的指令 V6構架增加了SIMD功能擴展,為包括音頻/視頻處理在內的應用系

18、統提供優化功能接下來就簡要介紹一下各主要系列處理器的特點。(1)ARM7微處理器系列5ARM7系列微處理器為低功耗的32位RISC處理器,最適合用于對價位和功耗要求較高的消費類應用。ARM7微處理器系列具有如下特點: 具有嵌入式ICERT邏輯,調試開發方便。 極低的功耗,適合對功耗要求較高的應用,如便攜式產品。 能夠提供0.9MIPS/MHz的三級流水線結構。 代碼密度高并兼容16位的Thumb指令集。 對操作系統的支持廣泛,包括Windows CE、Linux、Palm OS等。 指令系統與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產品升級。 主頻最高可達130MIPS,

19、高速的運算處理能力能勝任絕大多數的復雜應用。ARM7系列微處理器的主要應用領域為:工業控制、Internet設備、網絡和調制解調器設備、移動電話等多種多媒體和嵌入式應用。ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。(2)ARM9微處理器系列5ARM9系列微處理器在高性能和低功耗特性方面提供最佳的性能。具有以下特點: 5級整數流水線,指令執行效率更高。 提供1.1MIPS/MHz的哈佛結構。 支持32位ARM指令集和16位Thumb指令集。

20、 支持32位的高速AMBA總線接口。 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統。 MPU支持實時操作系統。 支持數據Cache和指令Cache,具有更高的指令和數據處理能力。ARM9系列微處理器主要應用于無線設備、儀器儀表、安全系統、機頂盒、高端打印機、數字照相機和數字攝像機等。ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應用場合。 (3)ARM9E微處理器系列5ARM9E系列微處理器為可綜合處理器,使用單一的處理器內核提供了微控制器、DSP、Java應用系統的解決方案,極大的減少了芯片的面積

21、和系統的復雜程度。ARM9E系列微處理器提供了增強的DSP處理能力,很適合于那些需要同時使用DSP和微控制器的應用場合。ARM9E系列微處理器的主要特點如下: 支持DSP指令集,適合于需要高速數字信號處理的場合。 5級整數流水線,指令執行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 支持VFP9浮點處理協處理器。 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統。 MPU支持實時操作系統。 支持數據Cache和指令Cache,具有更高的指令和數據處理能力。 主頻最高可達300MIPS。ARM9系列微

22、處理器主要應用于下一代無線設備、數字消費品、成像設備、工業控制、存儲設備和網絡設備等領域。ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應用場合。(4)ARM10E微處理器系列5ARM10E系列微處理器具有高性能、低功耗的特點,由于采用了新的體系結構,與同等的ARM9器件相比較,在同樣的時鐘頻率下,性能提高了近50,同時,ARM10E系列微處理器采用了兩種先進的節能方式,使其功耗極低。ARM10E系列微處理器的主要特點如下: 支持DSP指令集,適合于需要高速數字信號處理的場合。 6級整數流水線,指令執行效率更高。 支持32位ARM

23、指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 支持VFP10浮點處理協處理器。 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統。 支持數據Cache和指令Cache,具有更高的指令和數據處理能力 主頻最高可達400MIPS。 內嵌并行讀/寫操作部件。ARM10E系列微處理器主要應用于下一代無線設備、數字消費品、成像設備、工業控制、通信和信息系統等領域。ARM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應用場合。(5)StrongArm微處理器系列Intel Stro

24、ngARM SA-1100處理器是采用ARM體系結構高度集成的32位RISC微處理器。它融合了Intel公司的設計和處理技術以及ARM體系結構的電源效率,采用在軟件上兼容ARMv4體系結構、同時采用具有Intel技術優點的體系結構。Intel StrongARM處理器是便攜式通訊產品和消費類電子產品的理想選擇,已成功應用于多家公司的掌上電腦系列產品(6)Intel Xscale微處理器系列有關Intel Xscale微處理器系列,會在后面相關篇幅中進行介紹。1.2ARM處理器的優勢特點采用RISC結構的ARM微處理器一般具有如下特點:1 體積小、低功耗、低成本、高性能;2 支持Thumb(16

25、位)/ARM(32位)雙指令集,能很好地兼容8/16位器件;3 大量使用寄存器,指令執行速度更快;4 大多數數據操作都在寄存器中完成;5 尋址方式靈活簡單,執行效率高;6 指令長度固定;ARM處理器之所以能夠廣泛應用于各個領域,與以上所列的各個特點密切相關,綜合起來,主要包括以下幾點。1.2.1 RISC指令集傳統的CISC(Complex Instruction Set Computer,復雜指令集計算機)結構有其固有的缺點,即隨著計算機技術的發展而不斷引入新的復雜的指令集,為支持這些新增的指令,計算機的體系結構會越來越復雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有2

26、0的指令會被反復使用,占整個程序代碼的80。而余下的80的指令卻不經常使用,在程序設計中只占20,顯然,這種結構是不太合理的。基于以上的不合理性,1979年美國加州大學伯克利分校提出了RISC(Reduced Instruction Set Computer,精簡指令集計算機)的概念,RISC并非只是簡單地去減少指令,而是把著眼點放在了如何使計算機的結構更加簡單合理地提高運算速度上。RISC結構優先選取使用頻率最高的簡單指令,避免復雜指令;將指令長度固定,指令格式和尋址方式種類減少;以控制邏輯為主,不用或少用微碼控制等措施來達到上述目的。到目前為止,RISC體系結構也還沒有嚴格的定義,一般認為

27、,RISC體系結構應具有如下特點: 采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有23種。 使用單周期指令,便于流水線操作執行。 大量使用寄存器,數據處理指令只對寄存器進行操作,只有加載/ 存儲指令可以訪問存儲器,以提高指令的執行效率。ARM主要使用32位的RISC指令,但是指令代碼利用率低,ARM為了彌補此不足,在新型ARM構架(V4T版本以上)定義了16位的Thumb指令集。Thumb指令集比通常的8位和16位RISC/CISC處理器具有更好的代碼密度,而芯片面積只增加6,可使程序存儲器更小。另外,為了加速通信和多媒體中有關數字信號的處理,ARM處理器在RISC的基礎上增加了許多原

28、屬DSP核中的關鍵部件。雙核協同工作,各用所長,有效地提高了數據處理能力核傳輸速度,但是RISC+DSP分立的雙核結構存在兩核之間互相通信的困難和分別編程的麻煩,為此發展了兩核融合在一起的單核結構,同時將指令集也合二為一,簡化編程提高效率,將CPU提升到可快速運算多媒體的算法,實現許多音視頻的解碼功能。低功耗由于ARM架構的處理器主要用于手持式嵌入式系統之中,因此ARM構架在設計中十分注意低電壓、低功耗這一點,因而在手持式嵌入式系統得到廣泛的應用。ARM架構的設計采用了以下一些措施: 降低電源電壓 減少門的翻轉次數,當某個功能電路不需要時,禁止門翻轉 減少門的數目,即降低芯片的集成度 降低時鐘

29、頻率ARM還其他采用了一些特別的技術,在保證高性能的前提下盡量縮小芯片的面積: 所有的指令都可以根據前面的執行結果決定是否被執行,從而提高指令的執行效率; 可用加載/存儲指令批量傳輸數據,以提高數據的傳輸效率; 可在一條數據處理指令中同時完成邏輯處理和移位處理; 在循環處理中使用地址的自動增減來提高運行效率;ARM的低功耗,使得ARM在專門針對嵌入式系統的處理器市場中始終處于有利的地位。一組典型數據是:對于ARM7系列處理器,當核電壓是3.3V時,每MHz,其功耗只為1.1mW。第二章 ARM體系結構介紹在介紹具體的ARM Bootloader的實現之前,首先介紹一下ARM的體系結構,因為Bo

30、otloader是與處理器芯片緊密相連的。為了更好的在后面篇幅中介紹實現,先簡單介紹相關的體系結構以及相關指令集。2.1ARM core描述盡管本本文實現主要涉及軟件上的開發,但是軟件上代碼的實現更多的都涉及芯片構架,因此在這里簡要介紹一下一般ARM core構架。下圖所示的是ARM構架圖。它由32位ALU、若干個32位通用寄存器以及狀態寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令譯碼以及控制邏輯、指令流水線和數據/地址寄存器組成。1 ALU:它有兩個操作數鎖存器、加法器、邏輯功能、結果以及零檢測邏輯構成。2 桶形移位寄存器:ARM采用了32×32位

31、的桶形移位寄存器,這樣可以使在左移/右移n位、環移n位和算術右移n位等都可以一次完成。3 高速乘法器:乘法器一般采用“加一移位”的方法來實現乘法。ARM為了提高運算速度,則采用兩位乘法的方法,根據乘數的2位來實現“加一移位”運算 ;ARM高速乘法器采用32×8位的結構,這樣,可以降低集成度(其相應芯片面積不到并行乘法器的1/3)。4 浮點部件:浮點部件是作為選件供ARM構架使用。FPA10浮點加速器是作為協處理方式與ARM相連,并通過協處理指令的解釋來執行。5 控制器:ARM的控制器采用的是硬接線的可編程邏輯陣列PLA。6 寄存器:具體的介紹參考下節的相關介紹。 不同的ARM cor

32、e可能還有所不同。因此,圖2.17描述的僅僅針對一般而言。 A31:0 控制地址寄存器 指令譯碼及控制 增值器 寄存器堆 A L U 總 乘法器 線 線 總 A 桶式 B 移位器 總 線 ALU 數據輸出寄存器 數據輸入寄存器 D31:0 圖 2.1 ARM構架圖2.2編程模型介紹對于ARM編程,需要了解的一下幾個方面: 2.2.1 ARM處理器模式ARM處理器共有7種運行模式,如表2.16所示:處理器模式處理器模式描述用戶模式(User,usr)正常程序執行的模式快速中斷模式(FIQ,fiq)用于高速數據傳輸和通道處理普通中斷模式(IRQ,irq)用于通常的中斷處理監管模式(Supervis

33、or,svc)供操作系統使用的一種保護模式數據訪問中止模式(Abort,abt)用于虛擬存儲及存儲保護未定義指令中止模式(Undefined,und)用于支持通過軟件方針硬件的協處理器系統模式(System,sys)用于運行特權級的操作系統任務表格 2.1除了用戶模式之外的其他6種處理器模式稱為特權模式(Privileged Modes)。在這些模式下,程序可以訪問所有的系統資源,也可以任意地進行處理器模式的切換。其中,除系統模式外,其他5種特權模式又稱為異常模式。處理器模式可以通過軟件控制進行切換,也可以通過外部中斷或異常處理過程進行切換。大多數的用戶程序運行在用戶模式下,這時,應用程序不能

34、夠訪問一些受操作系統保護的系統資源,應用程序也不能直接進行處理器模式的切換。當需要進行處理器模式的切換時,應用程序可以產生異常處理,在異常處理過程中進行模式的切換。這種體系結構可以使操作系統控制整個系統的資源。當應用程序發生異常中斷時,處理器進入相應的異常模式。在每一種異常模式中都有一組寄存器,供相應的異常處理程序使用,這樣就可以保證在進入異常模式時,用戶模式下的寄存器(保證了程序運行狀態)不被破壞。系統模式并不是通過異常過程進入的,它和用戶模式具有完全一樣的寄存器。但是系統模式屬于特權模式,可以訪問所有的系統資源,也可以直接進行處理器模式的切換。它主要供操作系統任務使用。通常操作系統的任務需

35、要訪問所有的系統資源,同時該任務仍然使用用戶模式下的寄存器組,而不是使用異常模式下相應的寄存器組,這樣可以保證當異常中斷發生時任務狀態不被破壞6。2.2.2 ARM寄存器組介紹ARM處理器一般共有37個寄存器,其中包括5:l 31個通用寄存器,包括程序計數器(PC)在內,這些寄存器都是32位寄存器;l 6個狀態寄存器,這些寄存器也是32位寄存器; 上一節已經說過,ARM處理器共有7種不同的處理器模式,在每一種處理器模式中有一組相應的寄存器。任意時刻(也就是任意的處理器模式下),可見的寄存器包括15個通用寄存器(R0R14)、一個或者兩個狀態寄存器以及程序計數器(PC)。在所有的寄存器中,有些是

36、各模式共用的同一個物理寄存器;有些寄存器是各模式自己擁有的獨立的物理寄存器。圖3.1表示了各處理器模式下的可見寄存器: R0R1R2R3R4R5R6R7R8R9R10R11R12R13R14R15(PC) 用戶模式和系統模式寄存器組 異常模式下的寄存器組R8_fiqR9_fiqR10_fiqR11_fiqR12_fiq R13_fiqR14_fiq R13_irqR14_irqR13_abtR14_abtR13_undR14_undR13_svcR14_svcR13_abtR14_abtR13_undR14_undR13_irqR14_irqSPSR_undSPSR_abtSPSR_irqSP

37、SR_fiqSPSR_fiqSPSR_svcCPSR 圖2.2從表3.1中可以看出,通用寄存器R0R7在所有的處理器模式下指的都是同一個物理寄存器。而對于R8R12寄存器組,除了在快速中斷模式下有自己專有的物理寄存器,其它模式下也共有統一物理寄存器。R13寄存器對應6個不同的物理寄存器,即除了前面提過的用戶模式與系統模式共用一個寄存器外,其它模式都有相應的物理寄存器;一般地,R13寄存器在ARM中通常用作棧指針,在ARM指令中這只是一種習慣的用法,并沒有任何指令強制性的使用R13作為棧指針。R14寄存器又被稱為連接寄存器(Link Register,LR),在ARM體系中有下面兩種特殊的作用6

38、:l 每一種處理器模式自己的物理R14中存放當前子程序的返回地址。當通過跳轉指令調用子程序時,R14被設置為該子程序的返回地址;在子程序中,把R14的指賦值到程序計數器PC中時,子程序返回;l 當異常中斷發生時,該異常模式特定的物理R14被設置成該異常模式將要返回的地址,對于有些異常模式,R14的值可能與將返回的地址有個常數的偏移量。 程序計數器R15又被記作PC。由于ARM采用了流水線機制,當正確讀取了PC的值時,該值為當前指令地址加8個字節。也就是說,對于ARM指令集來說,PC指向當前指令的下兩條指令的地址。由于ARM指令是字對齊的,PC值的第0位和第1位總為0。CPSR(當前程序狀態寄存

39、器)可以在任何處理器模式下被訪問。它包含了標志位、中斷禁止位、當前處理器模式標志以及其它的一些控制和狀態位。每一種處理器異常模式下都有一個專用的物理狀態寄存器,稱為SPSR(備份程序狀態寄存器)。當特定的異常中斷發生時,這個寄存器用于存放當前程序狀態寄存器的內容。在異常中斷返回退出時,可以用SPSR種保存的值來恢復CPSR。由于用戶模式和系統模式不是異常中斷模式,所以它們沒有SPSR。當用戶模式或者系統模式中訪問SPSR,將會產生不可預知的結果。SPSR與CPSR的格式相同。CPSR的格式如圖2.36所示: 31 30 29 28 27 8 7 6 5 4 0NZCQUnused IFTMod

40、es圖2.3N(Negative)、Z(Zero)、C(Carry)、V(Overflow)統稱為標志位。大部分的ARM指令可以根據CPSR中的這些條件標志位來選擇性地執行。各條件標志位的具體含義如下:N:當兩個補碼表示的有符號整數運算時,N1表示運算的結果為負數;N0表示運算結果為正數或零;Z:Z1表示運算結果為零;Z0表示運算的結果不為零;C:在加法指令中,當結果產生了進位,則C1;其他情況下C0; 在減法指令中,當運算中發生借位,則C0;其他情況下C0;V:對于加/減法運算指令,當操作數和運算結果為二進制的補碼表示的帶符號數時,V1表示符號位溢出CPSR的低8位稱為控制位,當異常中斷發生

41、時這些位發生改變。在特權模式下,軟件可以修改這些控制位:I:普通中斷禁止位;I1時禁止IRQ中斷。F:快速中斷禁止位;F1時禁止FIQ中斷。T:對于ARMv4以及更高的版本的T系列的ARM處理器l T0表示執行ARM指令l T1表示執行Thumb指令對于ARMv5以及更高版本的非T系列的ARM處理器l T=0表示執行ARM指令l T1表示強制下一條執行的指令產生為定義指令中斷 Modes位控制處理器模式,在這不再贅述。ARM存儲系統這里僅僅介紹ARM編程模型中與存儲系統相關的一些概念。ARM體系中的存儲空間ARM體系中使用單一的平板地址空間。該地址空間的大小232個8位字節。這些字節單元的地址

42、是一個無符號的32位數值,其取值范圍為0到2321。ARM的地址空間也可以看作是230個32位的字單元。這些字單元的地址可以被4整除,也就是說該地址的低兩位為0b00。地址為A的字數包括地址A、A+1、A+2、A+3這4個字節單元的內容。ARM的存儲器格式在ARM體系中,每個字單元中包含4個字節單元或者兩個半字單元,其中1個半字單元中包含兩個字節單元。但是在字單元中,4個字節哪一個是高位字節,哪一個是低位字節,則有兩種不同的格式:big-endian格式和little-endian格式。在big-endian格式中,對于地址為A的字單元包括字節單元A、A+1、A+2、A+3,其中字節單元由高位

43、到低位字節順序為A、A+1、A+2、A+3;地址為A的字單元包括半字單元A、A+2,其中半字單元由高位到地位字節順序為A、A+2;地址為A的半字單元包括字節單元A、A+1,其中字節單元由高位到低位字節順序為A、A+1。這種存儲器格式如下圖所示: 31 24 23 16 15 8 7 0字單元A半字單元A半字單元A2字節單元A字節單元A1字節單元A2字節單元A3 圖2.4 big-endian格式的存儲系統在little-endian格式中,地址為A的字單元包括字節單元A、A+1、A+2、A+3,其中字節單元由高位到低位字節順序為A3、A+2、A+1、A;地址為A的字單元包括半字單元A、A+2,

44、其中半字單元由高位到地位字節順序為A2、A;地址為A的半字單元包括字節單元A、A+1,其中字節單元由高位到低位字節順序為A1、A。這種存儲器格式如下圖所示: 31 24 23 16 15 8 7 0字單元A半字單元A2半字單元A字節單元A3字節單元A2字節單元A1字節單元A 圖2.5 little-endian格式的存儲系統2.2.4 ARM指令集介紹ARM指令系統屬于RISC指令系統。標準的ARM指令每條都是32位,有些ARM核還可以執行16位的Thumb指令集。一般地,ARM指令具有以下特點9:l 指令的條件執行ARM指令都是條件執行,條件標志位位于程序代碼字節的cond位(位2831,下

45、文會介紹)。根據cond的不同編碼,可以選擇根據條件碼標志決定指令的執行。l 靈活的第二操作數ARM指令的另一個重要的特點是數據處理類指令有靈活的第二操作數operand2(位與程序代碼的位011)。它既可以是立即數,也可以是邏輯運算數,使得ARM指令可以在讀取數值的同時進行算術和移位操作。l 協處理器的作用ARM內核可提供協處理接口,通過擴展協處理器完成更加復雜的功能。因此ARM指令中還包括了多條協處理器指令,使用多達16個協處理器,允許將其他處理器通過協處理器接口進行緊耦合;ARM還包括幾種內存管理單元的變種,包括簡單的內存保護到復雜的頁面層次。l Thumb指令ARM在有的版本支持16位

46、Thumb指令。Thumb指令集的整體執行速度比ARM32位指令集快,而且提高了代碼密度。l 具有RISC指令的特點由于ARM指令屬于RISC指令,所以多具有RISC指令的特點,指令少,且等長, 便于充分利用流水線技術,使用多寄存器,且為簡單的Load和Store指令。ARM指令按功能大致可以分為跳轉指令、數據處理指令、乘法類指令、數據傳送指令、協處理器類指令以及雜項指令(包括狀態寄存器傳送指令、乘法類指令、軟件中斷指令和斷點指令)。ARM指令字長為固定的32位,一條典型的ARM指令編碼格式如下9: 31 28 27 26 2524 21 20 19 16 15 12 11 0Cond 00 Iopcode S RnRdoperand2圖2.6其中:l cond位2831,執行指令的條件編碼。l I位25,決定operand2的格式。l opcode 位2124,操作碼。l S位20,表示結果是否影響狀態寄存器標志位:1影響,0不影響。l Rn位1619,第一操作數的寄存器編碼。l Rd位1215,目標寄存器編碼。l operand2位011,表示第二操作數編碼。ARM指令包括60多個指令,并且支持多種尋址方式:寄存器尋址、立即數尋址、寄存器間接尋址、寄存器變址尋址、多寄存器尋址、

溫馨提示

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

評論

0/150

提交評論