ARM嵌入式软件开发课件_第1页
ARM嵌入式软件开发课件_第2页
ARM嵌入式软件开发课件_第3页
ARM嵌入式软件开发课件_第4页
ARM嵌入式软件开发课件_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统教案武汉创维特信息技术有限公司

11/21/2022嵌入式系统教案武汉创维特信息技术有限公司11/21/2提綱

13245ARM技術的應用領域及特點

ARM處理器的暫存器組織

ARM處理器的工作模式

ARM微處理器系列

67第二章

ARM體系結構及編程模型

ARM例外處理

ARM處理器的工作狀態

ARM處理器的記憶體格式

2提綱13245ARM技術的應用領域及特點ARM處理器的ARM-AdvancedRISCMachines

ARM(AdvancedRISCMachines),既可以認爲是一個公司的名字,也可以認爲是對一類微處理器的通稱,還可以認爲是一種技術的名字。

ARM技術的應用領域及特點

1991年ARM公司成立於英國康橋,主要出售晶片設計技術的授權。

3ARM-AdvancedRISCMachinesARMARM公司的Chipless模式世界各大半導體生産商從ARM公司購買其設計的ARM微處理器核,根據各自不同的應用領域,加入適當的週邊電路,從而形成自己的ARM微處理器晶片進入市場。

ARM技術的應用領域及特點

基於ARM技術的微處理器應用約佔據了32位RISC微處

理器75%以上的市場份額,ARM技術正在逐步滲入到我們生活的各個方面。

我國的中興積體電路、大唐電訊、中芯國際和上海華虹,以及國外的一些公司如德州儀器、意法半導體、Philips、Intel、Samsung等都推出了自己設計的基於ARM核的處理器。

4ARM公司的Chipless模式世界各大半導體生産商從AARM微處理器的應用領域

工業控制領域:作爲32的RISC架構,基於ARM核的微控制器晶片不但佔據了高階微控制器市場的大部分市場份額,同時也逐漸向低階微控制器應用領域擴展,ARM微控制器的低功耗、高性價比,向傳統的8位/16位微控制器提出了挑戰。

ARM技術的應用領域及特點

到目前爲止,ARM微處理器及技術的應用已經廣泛深入到國民經濟的各個領域

5ARM微處理器的應用領域工業控制領域:作爲32的RISC架ARM微處理器的應用領域

ARM技術的應用領域及特點

網路應用:隨著寬頻技術的推廣,採用ARM技術的ADSL晶片正逐步獲得競爭優勢。此外,ARM在語音及視頻處理上作最佳化,並獲得廣泛支援,也對DSP的應用領域提出了挑戰。

消費類電子産品:ARM技術在目前流行的數位音頻播放器、數位機上盒(Set-TopBox)和遊戲機中得到廣泛採用。

影像和安全産品:現在流行的數位相機和印表機中絕大部分採用ARM技術。手機中的32位SIM智慧卡也採用了ARM技術。

……6ARM微處理器的應用領域ARM技術的應用領域及特點網路應ARM微處理器的特點—低功耗、低成本、高性能

採用RISC指令集

ARM技術的應用領域及特點

低功耗、低成本、高性能使用大量的暫存器ARM(32Bits)/THUMB(16Bits)指令支持三(ARM7,Fetch->Decode->Execute,沒MMU)/五級管線(ARM9,Fetch->Decode->Execute->MemoryAccess->WriteRegister,有MMU)全靜態操作,省電

7ARM微處理器的特點—低功耗、低成本、高性能採用RISC指ARM微處理器的特點—採用RISC體系結構

ARM技術的應用領域及特點

採用RISC架構的ARM處理器一般具有如下特點:

固定長度的指令格式,指令歸整、簡單、基

本定址方式有2~3種;

使用單周期指令(理想值,平均為1.5CLK),便於管線操作執行;

大量使用暫存器,資料處理指令只對暫存器進行操作,只有載入/儲存指令可以存取記憶體,以提高指令的執行效率。

8ARM微處理器的特點—採用RISC體系結構ARM技術的應用ARM微處理器的特點—大量使用暫存器

ARM技術的應用領域及特點

ARM處理器共有37個暫存器,被分爲若干個組,這些暫存器包括:

31個通用暫存器,包括程式計數器(PC指標),均爲32位的暫存器;

6個狀態暫存器,用以標識CPU的工作狀態及程式的操作狀態,均爲32位元。

9ARM微處理器的特點—大量使用暫存器ARM技術的應用領域及ARM微處理器的特點—高效能的指令系統

ARM技術的應用領域及特點

ARM微處理器支援兩種指令集:ARM指令集和Thumb指令集。

ARM指令爲32位元的長度,Thumb指令爲16位元長度。Thumb指令集爲ARM指令集的功能子集,但與等價的ARM代碼相比較,可節省30%~40%以上的記憶體空間,同時具備32位代碼的所有優點,用於BIOS(省錢)。

10ARM微處理器的特點—高效能的指令系統ARM技術的應用領域ARM微處理器的特點—其他技術

ARM技術的應用領域及特點

除此以外,ARM體系結構還採用了一些特別的技術,在保證高性能的前提下儘量縮小晶片的面積,並降低功耗:

所有的指令都可根據前面的執行結果決定是否被執行,從而提高指令的執行效率。

可用載入/儲存指令(為MemoryMAP特性)做批次傳輸資料,以提高資料的傳輸效率。

可在一條資料處理指令中同時完成邏輯處理和移位元處理。

在迴圈處理中使用地址的自動增減來提高操作效率。

11ARM微處理器的特點—其他技術ARM技術的應用領域及特點ARM微處理器系列

ARM微處理器系列

ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列Intel的Xscale其中,ARM7、ARM9、ARM9E和ARM10爲4個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應用領域的需求。SecurCore系列專門爲安全要求較高的應用而設計,用於ICCard,SmartCard等,有防潙功能)。

12ARM微處理器系列ARM微處理器系列ARM7系列ARM9ARM7微處理器系列ARM7系列是爲低功耗的32位RISC處理器,最適合用於對價位和功耗要求較高的消費性應用。ARM7系列有如下特點:

具有嵌入式ICE-RT邏輯,除錯開發方便;

極低的功耗,適合對功耗要求較高的應用,如攜帶型産品;

能夠提供0.9MIPS/MHz的三級管線結構;

代碼密度高,並相容16位元的Thumb指令集;

對作業系統的支援廣泛,如WindowsCE、Linux、PalmOS等;

指令系統與ARM9系列、ARM9E系列和ARM10E系列相容,便於用戶的産品升級換代;

主頻最高可達130M,高速的運算處理能力能勝任絕大多數的複雜應用。

ARM微處理器系列

13ARM7微處理器系列ARM7系列是爲低功耗的32位RISC處ARM7微處理器系列ARM微處理器系列

主要應用領域:工業控制、Internet設備、網路和數據機設備、行動電話等多種多媒體和嵌入式應用。

ARM7系列微處理器包括如下幾種類型的核心:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低階ARM處理器核心。TDMI的基本含義爲:T:支援16爲壓縮指令集Thumb;D:支援晶片上Debug;M:內嵌硬體乘法器(Multiplier,32X32=64Bits)I:嵌入式ICE,支援晶片上中斷點和除錯點;

14ARM7微處理器系列ARM微處理器系列主要應用領域:工業控ARM9微處理器系列ARM微處理器系列

ARM9系列微處理器在高性能和低功耗特性方面提供最佳的表現。具有以下特點:

5級整數管線,指令執行效率更高。

提供1.1MIPS/MHz的哈佛結構。

支持32位ARM指令集和16位Thumb指令集。支援32位元的高速AMBA匯流排界面。

全性能的MMU,支援WindowsCE、Linux、PalmOS等多種主流嵌入式作業系統。

MPU支援即時作業系統。

內含16K資料Cache和16K指令Cache,具有更高的指令和資料處理能力。15ARM9微處理器系列ARM微處理器系列ARM9系列微處理器ARM9微處理器系列ARM9系列微處理器主要應用於無線設備、儀器儀錶、安全系統、機上盒、高階印表機、數位照相機和數位攝影機等。

ARM微處理器系列

ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應用場合。

16ARM9微處理器系列ARM9系列微處理器主要應用於無線設備、ARM9E微處理器系列ARM微處理器系列

ARM9E系列微處理器的主要特點如下:

支援DSP指令集,適合於需要高速數位信號處理的場合。

5級整數管線,指令執行效率更高。

支援32位元ARM指令集和16位元Thumb指令集。

支援32位元的高速AMBA匯流排界面(AMBA=AHB[高速元件]+APB[高速元件])。

支援VFP9浮點處理輔助運算器。

全性能的MMU,支援衆多主流嵌入式作業系統。

支援資料Cache和指令Cache,具有更高的處理能力。

主頻最高可達300M。

17ARM9E微處理器系列ARM微處理器系列ARM9E系列微處ARM9E微處理器系列ARM9E系列微處理器主要應用於下一代無線設備、數位消費品、影像設備、工業控制、儲存設備和網路設備等領域。

ARM微處理器系列

ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應用場合。

18ARM9E微處理器系列ARM9E系列微處理器主要應用於下一代ARM10E微處理器系列ARM微處理器系列

ARM10E系列微處理器的主要特點如下:

支援DSP指令集,適合於需要高速數位信號處理的場合。

6級整數管線,指令執行效率更高。

支持32位ARM指令集和16位Thumb指令集。支援32位元的高速AMBA匯流排界面。

支援VFP10浮點處理輔助運算器。

全性能的MMU,支援衆多主流嵌入式作業系統。

內含資料Cache和指令Cache,具有更高的處理能力

主頻最高可達400M。

內嵌並行讀/寫操作物件。

19ARM10E微處理器系列ARM微處理器系列ARM10E系列ARM10E微處理器系列ARM10E系列微處理器主要應用於下一代無線設備、數位消費品、影像設備、工業控制、通信和資訊系統等領域。

ARM微處理器系列

ARM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應用場合。20ARM10E微處理器系列ARM10E系列微處理器主要應用於下SecurCore微處理器系列ARM微處理器系列

SecurCore系列微處理器除了具有ARM體系結構各種主要特點外,還在系統安全方面具有如下的特點:

帶有靈活的保護單元,確保作業系統和應用資料的安全。

採用軟內核技術,防止外部對其進行掃描探測。

可整合用戶自己的安全特性和其他輔助運算器。

21SecurCore微處理器系列ARM微處理器系列SecurSecurCore微處理器系列SecurCore系列微處理器主要應用於一些對安全性要求較高的應用産品及應用系統,如電子商務、電子政務、電子銀行業務、網路和認證系統等領域。

ARM微處理器系列

SecurCore系列微處理器包含SecurCoreSC100、SecurCoreSC110、SecurCoreSC200和SecurCoreSC210四種類型,以適用于不同的應用場合。

22SecurCore微處理器系列SecurCore系列微處理器StrongARM微處理器系列ARM微處理器系列

IntelStrongARM處理器是攜帶型通訊産品和消費類電子産品的理想選擇,已成功應用於多家公司的掌上電腦系列產品。

IntelStrongARMSA-1100處理器是採用ARM體系結構高度整合的32位元RISC微處理器。它融合了Intel公司的設計和處理技術以及ARM體系結構的電源效率,採用在軟體上相容ARMv4體系結構、同時採用具有Intel技術優點的體系結構。

23StrongARM微處理器系列ARM微處理器系列IntelXscale處理器ARM微處理器系列

Xscale處理器是基於ARMv5TE體系結構的解決方案,是一款全功能、高性能價格比、低功耗的處理器。它支援16位元的Thumb指令和DSP指令集,已使用在數位行動電話、個人數位助理和網路産品等場合。

Xscale處理器是Intel目前主要推廣的一款ARM微處理器。

24Xscale處理器ARM微處理器系列Xscale處理器是ARM微處理器的工作狀態

ARM微處理器的工作狀態

從程式執行的角度看,ARM微處理器的工作狀態一般有兩種,並可在兩種狀態之間切換:

ARM狀態,此時處理器執行32位的字對齊的ARM指令;

Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。

25ARM微處理器的工作狀態ARM微處理器的工作狀態從程式執ARM與THUMB

THUMB指令是ARM指令的子集ARM微處理器的工作狀態

可以相互調用,只要遵循一定的調用規則

Thumb指令與ARM指令的時間效率和空間效率關係爲:

記憶體空間約爲ARM代碼的60%~70%

指令數比ARM代碼多約30%~40%

記憶體爲32位時ARM代碼比Thumb代碼快約40%

記憶體爲16位時Thumb比ARM代碼快約40~50%

使用Thumb代碼,記憶體的功耗會降低約30%

26ARM與THUMBTHUMB指令是ARM指令的子集ARM微狀態切換方法

ARM指令集和Thumb指令集均有切換處理器狀態的指令,並可在兩種工作狀態之間切換

ARM微處理器的工作狀態

在開始執行代碼時,應該處於ARM狀態。

27狀態切換方法ARM指令集和Thumb指令集均有切換處理器狀進入Thumb狀態

當運算元暫存器的狀態位元(位元0)爲1時,可以採用執行BX指令的方法,使微處理器從ARM狀態切換到Thumb狀態。如下LDR R0,=label+1BX R0當處理器處於Thumb狀態時發生例外(如IRQ、FIQ、Undef、Abort、SWI等),則例外處理返回時,自動切換到Thumb狀態。ARM微處理器的工作狀態

28進入Thumb狀態當運算元暫存器的狀態位元(位元0)爲1時切換到ARM狀態

當運算元暫存器的狀態位元爲0時,執行BX指令時可以使微處理器從Thumb狀態切換到ARM狀態。如下LDR R0,=labelBX R0

ARM微處理器的工作狀態

在處理器進行例外處理時,把PC指標放入例外模式鏈結暫存器中,並從例外向量位址開始執行程式,也可以使處理器切換到ARM狀態。

29切換到ARM狀態當運算元暫存器的狀態位元爲0時,執行BX指處理器模式

ARM微處理器的工作模式

usr:ARM處理器正常的程式執行狀態

fiq:於高速資料傳輸或通道處理

irq:用於通用的中斷處理

svc:作業系統使用的保護模式

abt:用於虛擬儲存及儲存保護

sys:執行具有特權的作業系統任務

und:當出現未定義指令終止時進入該模式

30處理器模式ARM微處理器的工作模式usr:ARM處理器正用戶模式和特權模式

ARM微處理器的工作模式除了用戶模式之外的其他6種處理器模式稱爲特權模式

特權模式下,程式可以存取所有的系統資源,也可以任意地進行處理器模式的切換。

特權模式中,除系統模式外,其他5種模式又稱爲例外模式

大多數的用戶程式操作在用戶模式下,此時,應用程式不能夠存取一些受作業系統保護的系統資源,應用程式也不能直接進行處理器模式的切換。

用戶模式下,當需要進行處理器模式切換時,應用程式可以産生例外處理,在例外處理中進行處理器模式的切換。

31用戶模式和特權模式ARM微處理器的工作模式除了用戶模式之外模式切换ARM微處理器的工作模式處理器模式可以通過軟體進行切換,也可以通過外部中斷或者例外處理過程進行切換。

當應用程式發生例外中斷時,處理器進入相應的例外模式。在每一種例外模式下都有一組暫存器,供相應的例外處理程式使用,這樣就可以保證在進入例外模式時,用戶模式下的暫存器不被破壞。

系統模式並不是通過例外進入的,它和用戶模式具有完全一樣的暫存器。但是系統模式屬於特權模式,可以存取所有的系統資源,也可以直接進行處理器模式切換。它主要供作業系統任務使用。通常作業系統的任務需要存取所有的系統資源,同時該任務仍然使用用戶模式的暫存器組,而不是使用例外模式下相應的暫存器組,這樣可以保證當例外中斷發生時任務狀態不被破壞。

32模式切换ARM微處理器的工作模式處理器模式可以通過軟體進行切ARM微處理器的記憶體格式

ARM體系結構所支援的最大定址空間爲4GB(232位元組)

ARM微處理器的記憶體格式

ARM體系結構將記憶體看作是從零位址開始的位元組的線性組合。從零位元組到三位元組放置第一個儲存的字資料,從第四個位元組到第七個位元組放置第二個儲存的字資料,依次排列。

ARM體系結構可以用兩種方法儲存字資料,稱之爲大端格式(Big-Endian,Intel)和小端格式(little-Endian,Motorola)33ARM微處理器的記憶體格式ARM體系結構所支援的最大定址空ARM體系結構的記憶體格式—大端格式

ARM微處理器的記憶體格式

在這種格式中,字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中

34ARM體系結構的記憶體格式—大端格式ARM微處理器的記憶體ARM體系結構的記憶體格式—小端格式

ARM微處理器的記憶體格式

與大端儲存格式相反,在小端儲存格式中,低位址中存放的是字資料的低位元組,高位址存放的是字資料的高位元組

35ARM體系結構的記憶體格式—小端格式ARM微處理器的記憶體指令長度及資料類型

ARM微處理器的指令長度可以是32位元(在ARM狀態下),也可以爲16位元(在Thumb狀態下)。

ARM微處理器的記憶體格式

ARM微處理器中支援位元組(8位元)、半字(16位)、字(32位)三種資料類型,其中,字需要4位元組對齊(位址的低兩位爲0)、半字需要2位元組對齊(位址的最低位爲0)

36指令長度及資料類型ARM微處理器的指令長度可以是32位元(非對齊的儲存存取操作

在ARM種,如果儲存單元的位址沒有遵守對齊規則,則稱爲非對齊的儲存存取操作。

ARM微處理器的記憶體格式

非對齊的指令預取操作

非對齊的資料存取操作

37非對齊的儲存存取操作在ARM種,如果儲存單元的位址沒有遵守非對齊的指令預取操作

當處理器處於ARM狀態期間,如果寫入到暫存器PC中的值是非字對齊的,則指令執行的結果不可預知,該位址值中最低兩位被忽略。

ARM微處理器的記憶體格式

當處理器處於THUMB狀態期間,如果寫入到暫存器PC中的值是非半字對齊的,則指令執行的結果不可預知,該位址值中最低位被忽略。

38非對齊的指令預取操作當處理器處於ARM狀態期間,如果寫入到非對齊的資料存取操作

對於Load/Store操作,如果是非對齊的資料存取操作,系統定義了三種可能的結果:

ARM微處理器的記憶體格式

執行的結果不可預知

忽略字單元地址的低兩位元的值,即存取地址爲(addressAND0XFFFFFFFC)的字單元;忽略半字單元地址的最低位元的值,即存取地址爲(addressAND0XFFFFFFFE)的半字單元。

忽略字單元地址的低兩位元的值;忽略半字單元地址的最低位元的值;由儲存系統實現這種忽略。也就是說,這時該位址值原封不動地送到儲存系統。

當發生非對齊地資料存取時,到底採用上述三種方法中的哪一種,是由各指令指定的。

39非對齊的資料存取操作對於Load/Store操作,如果是非暫存器組織

ARM微處理器共有37個32位元暫存器,其中31個爲通用暫存器,6個爲狀態暫存器。但是這些暫存器不能被同時存取,具體哪些暫存器是可被程式存取的,取決微處理器的工作狀態及具體的操作模式。但在任何時候,通用暫存器R14~R0、程式計數器PC、一個或兩個狀態暫存器都是可存取的。

ARM微處理器的記憶體格式

40暫存器組織ARM微處理器共有37個32位元暫存器,其中31ARM狀態下的暫存器組織

通用暫存器:通用暫存器包括R0~R15,可以分爲三類:

未分組暫存器R0~R7分組暫存器R8~R14程式計數器PC(R15)ARM微處理器的記憶體格式

41ARM狀態下的暫存器組織通用暫存器:通用暫存器包括R0~RARM狀態下的暫存器組織

ARM微處理器的記憶體格式

42ARM狀態下的暫存器組織ARM微處理器的記憶體格式42未分組暫存器R0~R7ARM微處理器的記憶體格式

在所有的操作模式下,未分組暫存器都指向同一個真正(物理)暫存器,他們未被系統用作特殊的用途。因此,在中斷或例外處理進行操作模式轉換時,由於不同的處理器操作模式均使用相同的物理暫存器,可能會造成暫存器中資料的破壞,這一點在進行程式設計時應注意。

43未分組暫存器R0~R7ARM微處理器的記憶體格式在所有的分組暫存器R8~R12ARM微處理器的記憶體格式

每次所存取的物理暫存器與處理器當前的操作模式有關R8~R12:每個暫存器對應兩個不同的物理暫存器

當使用fiq模式時,存取暫存器R8_fiq~R12_fiq;

當使用除fiq模式以外的其他模式時,存取暫存器R8_usr~R12_usr。

44分組暫存器R8~R12ARM微處理器的記憶體格式每次所存分組暫存器R13~R14ARM微處理器的記憶體格式

R13、R14:每個暫存器對應6個不同的物理暫存器

其中的一個是用戶模式與系統模式共用,另外5個物理暫存器對應於其他5種不同的操作模式

採用以下的記號來區分不同的物理暫存器:

R13_<mode>R14_<mode>mode爲以下幾種之一:usr、fiq、irq、svc、abt、und。45分組暫存器R13~R14ARM微處理器的記憶體格式R13堆疊指標—R13

ARM微處理器的記憶體格式

R13在ARM指令中常用作堆疊指標,但這只是一種習慣用法,用戶也可使用其他的暫存器作爲堆疊指標。

在Thumb指令集中,某些指令強制性的要求使用R13作爲堆疊指標。

由於處理器的每種操作模式均有自己獨立的物理暫存器R13,在初始化部分,都要初始化每種模式下的R13,這樣,當程式的操作進入例外模式時,可以將需要保護的暫存器放入R13所指向的堆疊,而當程式從例外模式返回時,則從對應的堆疊中恢復。

46堆疊指標—R13ARM微處理器的記憶體格式R13在ARM副程式連接暫存器—R14

ARM微處理器的記憶體格式

R14也稱作副程式連接暫存器或連接暫存器LR。當執行BL指令時,可以從R14中得到R15(程式計數器PC)的備份。其他情況下,R14用作通用暫存器。

在每一種操作模式下,都可用R14保存副程式的返回位址,當使用BL或BLX指令時,將PC的當前值拷貝給R14,執行完副程式後,又將R14的值拷貝回PC,即可完成副程式的返回。

BL SUB1 …… SUB1: STMFD SP!,{<regs>,LR}/*將R14存入堆疊*/ …… LDMFD SP!,{<regs>,PC} /*完成副程式返回*/47副程式連接暫存器—R14ARM微處理器的記憶體格式R14程式計數器PC(R15)ARM微處理器的記憶體格式

ARM狀態下,位元[1:0]爲0,位[31:2]用於保存PC;

Thumb狀態下,位元[0]爲0,位[31:1]用於保存PC;

R15雖然也可用作通用暫存器,但一般不這麽使用,因爲對R15的使用有一些特殊的限制,當違反了這些限制時,程式的執行結果是未知的。

由於ARM體系結構採用了多級管線技術,對於ARM指令集而言,PC總是指向當前指令的下兩條指令的位址,即PC的值爲當前指令的位址值加8個位元組。

48程式計數器PC(R15)ARM微處理器的記憶體格式ARM程式狀態暫存器(CPSR/SPSR)暫存器R16用作CPSR(當前程式狀態暫存器),CPSR可在任何操作模式下被存取,它包括條件標誌位元、中斷禁止位元、當前處理器模式標誌位元,以及其他一些相關的控制和狀態位元。

ARM微處理器的記憶體格式

每一種操作模式下又都有一個專用的物理狀態暫存器,稱爲SPSR(備份的程式狀態暫存器),例外發生時,SPSR用於保存CPSR的值,從例外返回時則可由SPSR來恢復CPSR。

由於用戶模式和系統模式不屬於例外模式,他們沒有SPSR,當在這兩種模式下存取SPSR,結果是未知的。

49程式狀態暫存器(CPSR/SPSR)暫存器R16用作CPSThumb狀態下的暫存器組織

Thumb狀態下的暫存器集是ARM狀態下暫存器集的一個子集

ARM微處理器的記憶體格式

程式可以直接存取8個通用暫存器(R7~R0)、程式計數器(PC)、堆疊指標(SP)、連接暫存器(LR)和CPSR。

同樣,每一種特權模式下都有一組SP、LR和SPSR。

50Thumb狀態下的暫存器組織Thumb狀態下的暫存器集是AThumb狀態下的暫存器組織圖

ARM微處理器的記憶體格式

51Thumb狀態下的暫存器組織圖ARM微處理器的記憶體格式Thumb狀態下的暫存器與ARM狀態下的暫存器關係

ARM微處理器的記憶體格式

Thumb狀態下和ARM狀態下的R0~R7是相同的。Thumb狀態下和ARM狀態下的CPSR和所有的SPSR是相同的。

Thumb狀態下的SP對應於ARM狀態下的R13。

Thumb狀態下的LR對應於ARM狀態下的R14。

Thumb狀態下的程式計數器對應於ARM狀態下R15。

52Thumb狀態下的暫存器與ARM狀態下的暫存器關係ARM微Thumb狀態下的暫存器與ARM狀態下的暫存器關係圖ARM微處理器的記憶體格式

53Thumb狀態下的暫存器與ARM狀態下的暫存器關係圖ARM微存取THUMB狀態下的高位暫存器(Hi-registers)

在Thumb狀態下,高位暫存器R8~R15並不是標準暫存器集的一部分,但可使用組合語言程式受限制的存取這些暫存器,將其用做快速的暫存器。

ARM微處理器的記憶體格式

使用帶有特殊變數的MOV指令,資料可以在低位元暫存器和高位暫存器之間進行傳送;高位暫存器的值可以使用CMP和ADD指令進行比較或加上低位暫存器中的值。

54存取THUMB狀態下的高位暫存器(Hi-registers程式狀態暫存器

ARM微處理器的記憶體格式

ARM體系結構包含一個當前程式狀態暫存器(CPSR)和五個備份的程式狀態暫存器(SPSRs)。備份的程式狀態暫存器用來進行例外處理,其功能包括:

保存ALU中的當前操作資訊

控制允許和禁止中斷

設置處理器的操作模式

55程式狀態暫存器ARM微處理器的記憶體格式ARM體系結構包程式狀態暫存器的每一位元的安排

ARM微處理器的記憶體格式

56程式狀態暫存器的每一位元的安排ARM微處理器的記憶體格式程式狀態暫存器的條件碼標誌

N、Z、C、V均爲條件碼標誌位元。它們的內容可被算術或邏輯運算的結果所改變,並且可以決定某條指令是否被執行

ARM微處理器的記憶體格式

在ARM狀態下,絕大多數的指令都是有條件執行的。

在Thumb狀態下,僅有分支指令是有條件執行的。

57程式狀態暫存器的條件碼標誌N、Z、C、V均爲條件碼標誌位元影響標誌位元的指令

標誌位元

N當帶符號的兩個補數進行運算時,N=1表示運算的結果爲負數;N=0表示運算的結果爲正數或零;

ZZ=1表示運算的結果爲零;Z=0表示運算的結果爲非零;

C加法運算結果進位時,C=1,減法運算借位時,C=0;移位元操作的非加/減運算指令,C爲移出的最後一位;其他的非加/減運算指令,C的值通常不改變。

V加/減法運算指令,V=1表示符號位元溢出。對於其他的非加/減運算指令,C的值通常不改變。

Q在ARMv5及以上版本的E系列處理器中,Q標誌指示DSP運算指令是否溢出。在其他版本中,Q標誌位元無定義。ARM微處理器的記憶體格式

58影響標誌位元的指令標誌位元含義N當帶符號的兩個程式狀態暫存器的控制位元

狀態暫存器的低8位元(I、F、T和M[4:0])稱爲控制位元,發生例外時,這些位元可以被改變。如果處理器操作於特權模式,這些位元也可以由程式修改。ARM微處理器的記憶體格式

中斷禁止位I、F:I=1禁止IRQ中斷;F=1禁止FIQ中斷。T標誌位元:該位元反映處理器的操作狀態

ARM體系結構v5及以上的版本的T系列處理器,當該位元爲1時,程式操作於Thumb狀態,否則操作於ARM狀態。ARM體系結構v5及以上的版本的非T系列處理器,當該位爲1時,執行下一條指令以引起爲定義的指令例外;當該位元爲0時,表示操作於ARM狀態。操作模式位元M[4:0]是模式位元,決定處理器的操作模式

59程式狀態暫存器的控制位元狀態暫存器的低8位元(I、F、T和處理器操作模式及可以存取的暫存器

M[4:0]處理器模式

可存取的暫存器

0b10000用户模式PC,CPSR,R0-R140b10001FIQ模式PC,CPSR,SPSR_fiq,R14_fiq-R8_fiq,R7~R00b10010IRQ模式PC,CPSR,SPSR_irq,R14_irq,R13_irq,R12~R00b10011管理模式PC,CPSR,SPSR_svc,R14_svc,R13_svc,R12~R0,0b10111中止模式PC,CPSR,SPSR_abt,R14_abt,R13_abt,R12~R0,0b11011未定義模式

PC,CPSR,SPSR_und,R14_und,R13_und,R12~R0,0b11111系统模式PC,CPSR(ARMv4及以上版本),R14~R0ARM微處理器的記憶體格式

60處理器操作模式及可以存取的暫存器M[4:0]處理器模式可例外(Exceptions)

當正常的程式執行流程發生暫時的停止時,稱之爲例外,例如處理一個外部的中斷請求。在處理例外之前,當前處理器的狀態必須保留,這樣當例外處理完成之後,當前程式可以繼續執行。處理器允許多個例外同時發生,它們將會按固定的優先順序進行處理。

ARM例外處理

ARM體系結構中的例外,與8位元/16位元體系結構的中斷有很大的相似之處,但例外與中斷的概念並不完全等同。

61例外(Exceptions)當正常的程式執行流程發生暫時ARM體系結構所支援的例外類型

例外類型

具體含義

ResetReset有效時,産生Reset例外,程式跳到Reset處理程式處執行。未定義指令

遇到不能處理的指令時,産生未定義指令例外。軟體中斷

執行SWI指令産生,用於用戶模式下的程式調用特權操作指令

。指令預取中止

處理器預取指令的位址不存在,或該位址不允許當前指令存取,産生指令預取中止例外。資料中止

處理器資料存取指令的位址不存在,或該位址不允許當前指令存取時,産生資料中止例外。IRQ外部中斷請求有效,且CPSR中的I位爲0時,産生IRQ例外

。FIQ快速中斷請求引腳有效,且CPSR中的F位爲0時,産生FIQ例外。ARM例外處理

62ARM體系結構所支援的例外類型例外類型具體含義Rese對例外的回應

ARM例外處理

當一個例外出現以後,ARM微處理器會執行以下幾個步驟

將下一條指令的位址存入相應連接暫存器LR,以便程式在處理例外返回時能從正確的位置重新開始執行。將CPSR複製到相應的SPSR中。根據例外類型,強制設置CPSR的操作模式位元。強制PC從相關的例外向量位址取下一條指令執行,從而跳躍到相應的例外處理程式處。63對例外的回應ARM例外處理當一個例外出現以後,ARM微處 R14_<Exception_Mode>=ReturnLink SPSR_<Exception_Mode>=CPSR CPSR[4:0]=ExceptionModeNumber CPSR[5]=0 If<Exception_Mode>==ResetorFIQthen CPSR[6]=1 CPSR[7]=1 PC=ExceptionVectorAddress例外回應虛擬碼(PseudoCode)ARM例外處理

處理器處於Thumb狀態,則當例外向量位址載入入PC時,處理器自動切換到ARM狀態。ARM微處理器對例外的回應過程用虛擬碼可以描述爲:在ARM狀態下執行

禁止快速中断禁止正常中断轉入例外入口地址

64 R14_<Exception_Mode>=Return從例外返回

ARM例外處理

例外處理完畢之後,ARM微處理器會執行以下幾步驟,從例外返回:將連接暫存器LR的值減去相應的偏移量後送到PC中。將SPSR複製回CPSR中。若在進入例外處理時設置了中斷禁止位元,要在此清除。可以認爲應用程式總是從Reset例外處理程式開始執行的,因此Reset例外處理程式不需要返回。65從例外返回ARM例外處理例外處理完畢之後,ARM微處理器FIQ(FastInterruptRequest)FIQ例外是爲了支援資料傳輸或者通道處理而設計的。ARM例外處理

若將CPSR的F位置爲1,則會禁止FIQ中斷,若將CPSR的F位元清為零,處理器會在指令執行時檢查FIQ的輸入。注意只有在特權模式下才能改變F位元的狀態。

可由外部通過對處理器上的nFIQ接腳輸入低電位産生FIQ。不管是在ARM狀態還是在Thumb狀態下進入FIQ模式,FIQ處理程式均可以執行以下指令從FIQ模式返回: SUBSPC,R14_fiq,#466FIQ(FastInterruptRequest)FIQIRQ(InterruptRequest)

IRQ例外屬於正常的中斷請求,可通過對處理器的nIRQ引腳輸入低電位産生,IRQ的優先順序低於FIQ,當程式執行進入FIQ例外時,IRQ可能被遮罩。ARM例外處理

若將CPSR的I位置爲1,則會禁止IRQ中斷,若將CPSR的I位清零,處理器會在指令執行完之前檢查IRQ的輸入。注意只有在特權模式下才能改變I位元的狀態。不管是在ARM狀態還是在Thumb狀態下進入IRQ模式,IRQ處理程式均可以執行以下指令從IRQ模式返回: SUBSPC,R14_irq,#467IRQ(InterruptRequest)IRQ例外屬於ABORT(中止)

産生中止例外意味著對記憶體的存取失敗。ARM微處理器在記憶體存取周期內檢查是否發生中止例外。

ARM例外處理

中止例外包括兩種類型:指令預取中止:發生在指令預取時

。資料中止:發生在資料存取時。當指令預取存取記憶體失敗時,記憶體系統向ARM處理器發出記憶體中止(Abort)信號,預取的指令被記爲無效,但只有當處理器試圖執行無效指令時,指令預取中止例外才會發生,如果指令未被執行,例如在指令管線中發生了跳躍,則預取指令中止不會發生。若資料中止發生,系統的回應與指令的類型有關。當確定了中止的原因後,Abort處理程式均可以執行以下指令從中止模式返回,無論是在ARM狀態還是Thumb狀態: SUBSPC,R14_abt,#4 ;指令預取中止

SUBSPC,R14_abt,#8 ;資料中止

68ABORT(中止)産生中止例外意味著對記憶體的存取失敗。ASoftwareInterrupt(軟體中斷)

軟體中斷指令(SWI)用於進入管理模式,常用於請求執行特定的管理功能。無論是在ARM狀態還是Thumb狀態,下一行指令可以從SWI模式返回:

MOVSPC,R14_svc以上指令恢復PC(從R14_svc)和CPSR(從SPSR_svc)

的值,並返回到SWI的下一條指令。ARM例外處理

69SoftwareInterrupt(軟體中斷)軟體中斷指UndefinedInstruction(未定義指令)ARM例外處理

當ARM處理器遇到不能處理的指令時,會産生未定義指令例外。採用這種機制,可以通過軟體模擬擴展ARM或Thumb指令集。。處理器執行以下指令回返,無論是在ARM狀態還是Thumb狀態:

MOVSPC,R14_und

以上指令恢復PC(從R14_und)和CPSR(從SPSR_und)的值,並返回到未定義指令後的下一條指令。

70UndefinedInstruction(未定義指令)A例外向量表(ExceptionVectors)

地址異

進入模式

0x00,0000Reset管理模式0x00,0004未定義指令

未定義模式

0x00,0008軟體中斷

管理模式0x00,000C中止(預取指令)中止模式0x00,0010中止(資料)

中止模式0x00,0014保留保留0x00,0018IRQIRQ0x00,001CFIQFIQARM例外處理

71例外向量表(ExceptionVectors)地址異例外優先順序(ExceptionPriorities)

優先順序

1(最高)Reset2資料中止

3FIQ4IRQ5預取指令中止

6(最低)未定義指令、SWIARM例外處理

72例外優先順序(ExceptionPriorities)應用程式中的例外處理

當系統操作時,例外可能會隨時發生,爲保證在ARM處理器發生例外時不至於處於未知狀態,在應用程式的設計中,首先要進行例外處理,採用的方式是在例外向量表中的特定位置放置一條跳躍指令,跳躍到例外處理程式,當ARM處理器發生例外時,程式計數器PC會被強制設置爲對應的例外向量,從而跳躍到例外處理程式,當例外處理完成以後,返回到主程序繼續執行。

ARM例外處理

73應用程式中的例外處理當系統操作時,例外可能會隨時發生,爲保嵌入式系统教案武汉创维特信息技术有限公司

11/21/2022嵌入式系统教案武汉创维特信息技术有限公司11/21/2提綱

13245ARM技術的應用領域及特點

ARM處理器的暫存器組織

ARM處理器的工作模式

ARM微處理器系列

67第二章

ARM體系結構及編程模型

ARM例外處理

ARM處理器的工作狀態

ARM處理器的記憶體格式

75提綱13245ARM技術的應用領域及特點ARM處理器的ARM-AdvancedRISCMachines

ARM(AdvancedRISCMachines),既可以認爲是一個公司的名字,也可以認爲是對一類微處理器的通稱,還可以認爲是一種技術的名字。

ARM技術的應用領域及特點

1991年ARM公司成立於英國康橋,主要出售晶片設計技術的授權。

76ARM-AdvancedRISCMachinesARMARM公司的Chipless模式世界各大半導體生産商從ARM公司購買其設計的ARM微處理器核,根據各自不同的應用領域,加入適當的週邊電路,從而形成自己的ARM微處理器晶片進入市場。

ARM技術的應用領域及特點

基於ARM技術的微處理器應用約佔據了32位RISC微處

理器75%以上的市場份額,ARM技術正在逐步滲入到我們生活的各個方面。

我國的中興積體電路、大唐電訊、中芯國際和上海華虹,以及國外的一些公司如德州儀器、意法半導體、Philips、Intel、Samsung等都推出了自己設計的基於ARM核的處理器。

77ARM公司的Chipless模式世界各大半導體生産商從AARM微處理器的應用領域

工業控制領域:作爲32的RISC架構,基於ARM核的微控制器晶片不但佔據了高階微控制器市場的大部分市場份額,同時也逐漸向低階微控制器應用領域擴展,ARM微控制器的低功耗、高性價比,向傳統的8位/16位微控制器提出了挑戰。

ARM技術的應用領域及特點

到目前爲止,ARM微處理器及技術的應用已經廣泛深入到國民經濟的各個領域

78ARM微處理器的應用領域工業控制領域:作爲32的RISC架ARM微處理器的應用領域

ARM技術的應用領域及特點

網路應用:隨著寬頻技術的推廣,採用ARM技術的ADSL晶片正逐步獲得競爭優勢。此外,ARM在語音及視頻處理上作最佳化,並獲得廣泛支援,也對DSP的應用領域提出了挑戰。

消費類電子産品:ARM技術在目前流行的數位音頻播放器、數位機上盒(Set-TopBox)和遊戲機中得到廣泛採用。

影像和安全産品:現在流行的數位相機和印表機中絕大部分採用ARM技術。手機中的32位SIM智慧卡也採用了ARM技術。

……79ARM微處理器的應用領域ARM技術的應用領域及特點網路應ARM微處理器的特點—低功耗、低成本、高性能

採用RISC指令集

ARM技術的應用領域及特點

低功耗、低成本、高性能使用大量的暫存器ARM(32Bits)/THUMB(16Bits)指令支持三(ARM7,Fetch->Decode->Execute,沒MMU)/五級管線(ARM9,Fetch->Decode->Execute->MemoryAccess->WriteRegister,有MMU)全靜態操作,省電

80ARM微處理器的特點—低功耗、低成本、高性能採用RISC指ARM微處理器的特點—採用RISC體系結構

ARM技術的應用領域及特點

採用RISC架構的ARM處理器一般具有如下特點:

固定長度的指令格式,指令歸整、簡單、基

本定址方式有2~3種;

使用單周期指令(理想值,平均為1.5CLK),便於管線操作執行;

大量使用暫存器,資料處理指令只對暫存器進行操作,只有載入/儲存指令可以存取記憶體,以提高指令的執行效率。

81ARM微處理器的特點—採用RISC體系結構ARM技術的應用ARM微處理器的特點—大量使用暫存器

ARM技術的應用領域及特點

ARM處理器共有37個暫存器,被分爲若干個組,這些暫存器包括:

31個通用暫存器,包括程式計數器(PC指標),均爲32位的暫存器;

6個狀態暫存器,用以標識CPU的工作狀態及程式的操作狀態,均爲32位元。

82ARM微處理器的特點—大量使用暫存器ARM技術的應用領域及ARM微處理器的特點—高效能的指令系統

ARM技術的應用領域及特點

ARM微處理器支援兩種指令集:ARM指令集和Thumb指令集。

ARM指令爲32位元的長度,Thumb指令爲16位元長度。Thumb指令集爲ARM指令集的功能子集,但與等價的ARM代碼相比較,可節省30%~40%以上的記憶體空間,同時具備32位代碼的所有優點,用於BIOS(省錢)。

83ARM微處理器的特點—高效能的指令系統ARM技術的應用領域ARM微處理器的特點—其他技術

ARM技術的應用領域及特點

除此以外,ARM體系結構還採用了一些特別的技術,在保證高性能的前提下儘量縮小晶片的面積,並降低功耗:

所有的指令都可根據前面的執行結果決定是否被執行,從而提高指令的執行效率。

可用載入/儲存指令(為MemoryMAP特性)做批次傳輸資料,以提高資料的傳輸效率。

可在一條資料處理指令中同時完成邏輯處理和移位元處理。

在迴圈處理中使用地址的自動增減來提高操作效率。

84ARM微處理器的特點—其他技術ARM技術的應用領域及特點ARM微處理器系列

ARM微處理器系列

ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列Intel的Xscale其中,ARM7、ARM9、ARM9E和ARM10爲4個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應用領域的需求。SecurCore系列專門爲安全要求較高的應用而設計,用於ICCard,SmartCard等,有防潙功能)。

85ARM微處理器系列ARM微處理器系列ARM7系列ARM9ARM7微處理器系列ARM7系列是爲低功耗的32位RISC處理器,最適合用於對價位和功耗要求較高的消費性應用。ARM7系列有如下特點:

具有嵌入式ICE-RT邏輯,除錯開發方便;

極低的功耗,適合對功耗要求較高的應用,如攜帶型産品;

能夠提供0.9MIPS/MHz的三級管線結構;

代碼密度高,並相容16位元的Thumb指令集;

對作業系統的支援廣泛,如WindowsCE、Linux、PalmOS等;

指令系統與ARM9系列、ARM9E系列和ARM10E系列相容,便於用戶的産品升級換代;

主頻最高可達130M,高速的運算處理能力能勝任絕大多數的複雜應用。

ARM微處理器系列

86ARM7微處理器系列ARM7系列是爲低功耗的32位RISC處ARM7微處理器系列ARM微處理器系列

主要應用領域:工業控制、Internet設備、網路和數據機設備、行動電話等多種多媒體和嵌入式應用。

ARM7系列微處理器包括如下幾種類型的核心:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低階ARM處理器核心。TDMI的基本含義爲:T:支援16爲壓縮指令集Thumb;D:支援晶片上Debug;M:內嵌硬體乘法器(Multiplier,32X32=64Bits)I:嵌入式ICE,支援晶片上中斷點和除錯點;

87ARM7微處理器系列ARM微處理器系列主要應用領域:工業控ARM9微處理器系列ARM微處理器系列

ARM9系列微處理器在高性能和低功耗特性方面提供最佳的表現。具有以下特點:

5級整數管線,指令執行效率更高。

提供1.1MIPS/MHz的哈佛結構。

支持32位ARM指令集和16位Thumb指令集。支援32位元的高速AMBA匯流排界面。

全性能的MMU,支援WindowsCE、Linux、PalmOS等多種主流嵌入式作業系統。

MPU支援即時作業系統。

內含16K資料Cache和16K指令Cache,具有更高的指令和資料處理能力。88ARM9微處理器系列ARM微處理器系列ARM9系列微處理器ARM9微處理器系列ARM9系列微處理器主要應用於無線設備、儀器儀錶、安全系統、機上盒、高階印表機、數位照相機和數位攝影機等。

ARM微處理器系列

ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應用場合。

89ARM9微處理器系列ARM9系列微處理器主要應用於無線設備、ARM9E微處理器系列ARM微處理器系列

ARM9E系列微處理器的主要特點如下:

支援DSP指令集,適合於需要高速數位信號處理的場合。

5級整數管線,指令執行效率更高。

支援32位元ARM指令集和16位元Thumb指令集。

支援32位元的高速AMBA匯流排界面(AMBA=AHB[高速元件]+APB[高速元件])。

支援VFP9浮點處理輔助運算器。

全性能的MMU,支援衆多主流嵌入式作業系統。

支援資料Cache和指令Cache,具有更高的處理能力。

主頻最高可達300M。

90ARM9E微處理器系列ARM微處理器系列ARM9E系列微處ARM9E微處理器系列ARM9E系列微處理器主要應用於下一代無線設備、數位消費品、影像設備、工業控制、儲存設備和網路設備等領域。

ARM微處理器系列

ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應用場合。

91ARM9E微處理器系列ARM9E系列微處理器主要應用於下一代ARM10E微處理器系列ARM微處理器系列

ARM10E系列微處理器的主要特點如下:

支援DSP指令集,適合於需要高速數位信號處理的場合。

6級整數管線,指令執行效率更高。

支持32位ARM指令集和16位Thumb指令集。支援32位元的高速AMBA匯流排界面。

支援VFP10浮點處理輔助運算器。

全性能的MMU,支援衆多主流嵌入式作業系統。

內含資料Cache和指令Cache,具有更高的處理能力

主頻最高可達400M。

內嵌並行讀/寫操作物件。

92ARM10E微處理器系列ARM微處理器系列ARM10E系列ARM10E微處理器系列ARM10E系列微處理器主要應用於下一代無線設備、數位消費品、影像設備、工業控制、通信和資訊系統等領域。

ARM微處理器系列

ARM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應用場合。93ARM10E微處理器系列ARM10E系列微處理器主要應用於下SecurCore微處理器系列ARM微處理器系列

SecurCore系列微處理器除了具有ARM體系結構各種主要特點外,還在系統安全方面具有如下的特點:

帶有靈活的保護單元,確保作業系統和應用資料的安全。

採用軟內核技術,防止外部對其進行掃描探測。

可整合用戶自己的安全特性和其他輔助運算器。

94SecurCore微處理器系列ARM微處理器系列SecurSecurCore微處理器系列SecurCore系列微處理器主要應用於一些對安全性要求較高的應用産品及應用系統,如電子商務、電子政務、電子銀行業務、網路和認證系統等領域。

ARM微處理器系列

SecurCore系列微處理器包含SecurCoreSC100、SecurCoreSC110、SecurCoreSC200和SecurCoreSC210四種類型,以適用于不同的應用場合。

95SecurCore微處理器系列SecurCore系列微處理器StrongARM微處理器系列ARM微處理器系列

IntelStrongARM處理器是攜帶型通訊産品和消費類電子産品的理想選擇,已成功應用於多家公司的掌上電腦系列產品。

IntelStrongARMSA-1100處理器是採用ARM體系結構高度整合的32位元RISC微處理器。它融合了Intel公司的設計和處理技術以及ARM體系結構的電源效率,採用在軟體上相容ARMv4體系結構、同時採用具有Intel技術優點的體系結構。

96StrongARM微處理器系列ARM微處理器系列IntelXscale處理器ARM微處理器系列

Xscale處理器是基於ARMv5TE體系結構的解決方案,是一款全功能、高性能價格比、低功耗的處理器。它支援16位元的Thumb指令和DSP指令集,已使用在數位行動電話、個人數位助理和網路産品等場合。

Xscale處理器是Intel目前主要推廣的一款ARM微處理器。

97Xscale處理器ARM微處理器系列Xscale處理器是ARM微處理器的工作狀態

ARM微處理器的工作狀態

從程式執行的角度看,ARM微處理器的工作狀態一般有兩種,並可在兩種狀態之間切換:

ARM狀態,此時處理器執行32位的字對齊的ARM指令;

Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。

98ARM微處理器的工作狀態ARM微處理器的工作狀態從程式執ARM與THUMB

THUMB指令是ARM指令的子集ARM微處理器的工作狀態

可以相互調用,只要遵循一定的調用規則

Thumb指令與ARM指令的時間效率和空間效率關係爲:

記憶體空間約爲ARM代碼的60%~70%

指令數比ARM代碼多約30%~40%

記憶體爲32位時ARM代碼比Thumb代碼快約40%

記憶體爲16位時Thumb比ARM代碼快約40~50%

使用Thumb代碼,記憶體的功耗會降低約30%

99ARM與THUMBTHUMB指令是ARM指令的子集ARM微狀態切換方法

ARM指令集和Thumb指令集均有切換處理器狀態的指令,並可在兩種工作狀態之間切換

ARM微處理器的工作狀態

在開始執行代碼時,應該處於ARM狀態。

100狀態切換方法ARM指令集和Thumb指令集均有切換處理器狀進入Thumb狀態

當運算元暫存器的狀態位元(位元0)爲1時,可以採用執行BX指令的方法,使微處理器從ARM狀態切換到Thumb狀態。如下LDR R0,=label+1BX R0當處理器處於Thumb狀態時發生例外(如IRQ、FIQ、Undef、Abort、SWI等),則例外處理返回時,自動切換到Thumb狀態。ARM微處理器的工作狀態

101進入Thumb狀態當運算元暫存器的狀態位元(位元0)爲1時切換到ARM狀態

當運算元暫存器的狀態位元爲0時,執行BX指令時可以使微處理器從Thumb狀態切換到ARM狀態。如下LDR R0,=labelBX R0

ARM微處理器的工作狀態

在處理器進行例外處理時,把PC指標放入例外模式鏈結暫存器中,並從例外向量位址開始執行程式,也可以使處理器切換到ARM狀態。

102切換到ARM狀態當運算元暫存器的狀態位元爲0時,執行BX指處理器模式

ARM微處理器的工作模式

usr:ARM處理器正常的程式執行狀態

fiq:於高速資料傳輸或通道處理

irq:用於通用的中斷處理

svc:作業系統使用的保護模式

abt:用於虛擬儲存及儲存保護

sys:執行具有特權的作業系統任務

und:當出現未定義指令終止時進入該模式

103處理器模式ARM微處理器的工作模式usr:ARM處理器正用戶模式和特權模式

ARM微處理器的工作模式除了用戶模式之外的其他6種處理器模式稱爲特權模式

特權模式下,程式可以存取所有的系統資源,也可以任意地進行處理器模式的切換。

特權模式中,除系統模式外,其他5種模式又稱爲例外模式

大多數的用戶程式操作在用戶模式下,此時,應用程式不能夠存取一些受作業系統保護的系統資源,應用程式也不能直接進行處理器模式的切換。

用戶模式下,當需要進行處理器模式切換時,應用程式可以産生例外處理,在例外處理中進行處理器模式的切換。

104用戶模式和特權模式ARM微處理器的工作模式除了用戶模式之外模式切换ARM微處理器的工作模式處理器模式可以通過軟體進行切換,也可以通過外部中斷或者例外處理過程進行切換。

當應用程式發生例外中斷時,處理器進入相應的例外模式。在每一種例外模式下都有一組暫存器,供相應的例外處理程式使用,這樣就可以保證在進入例外模式時,用戶模式下的暫存器不被破壞。

系統模式並不是通過例外進入的,它和用戶模式具有完全一樣的暫存器。但是系統模式屬於特權模式,可以存取所有的系統資源,也可以直接進行處理器模式切換。它主要供作業系統任務使用。通常作業系統的任務需要存取所有的系統資源,同時該任務仍然使用用戶模式的暫存器組,而不是使用例外模式下相應的暫存器組,這樣可以保證當例外中斷發生時任務狀態不被破壞。

105模式切换ARM微處理器的工作模式處理器模式可以通過軟體進行切ARM微處理器的記憶體格式

ARM體系結構所支援的最大定址空間爲4GB(232位元組)

ARM微處理器的記憶體格式

ARM體系結構將記憶體看作是從零位址開始的位元組的線性組合。從零位元組到三位元組放置第一個儲存的字資料,從第四個位元組到第七個位元組放置第二個儲存的字資料,依次排列。

ARM體系結構可以用兩種方法儲存字資料,稱之爲大端格式(Big-Endian,Intel)和小端格式(little-Endian,Motorola)106ARM微處理器的記憶體格式ARM體系結構所支援的最大定址空ARM體系結構的記憶體格式—大端格式

ARM微處理器的記憶體格式

在這種格式中,字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中

107ARM體系結構的記憶體格式—大端格式ARM微處理器的記憶體ARM體系結構的記憶體格式—小端格式

ARM微處理器的記憶體格式

與大端儲存格式相反,在小端儲存格式中,低位址中存放的是字資料的低位元組,高位址存放的是字資料的高位元組

108ARM體系結構的記憶體格式—小端格式ARM微處理器的記憶體指令長度及資料類型

ARM微處理器的指令長度可以是32位元(在ARM狀態下),也可以爲16位元(在Thumb狀態下)。

ARM微處理器的記憶體格式

ARM微處理器中支援位元組(8位元)、半字(16位)、字(32位)三種資料類型,其中,字需要4位元組對齊(位址的低兩位爲0)、半字需要2位元組對齊(位址的最低位爲0)

109指令長度及資料類型ARM微處理器的指令長度可以是32位元(非對齊的儲存存取操作

在ARM種,如果儲存單元的位址沒有遵守對齊規則,則稱爲非對齊的儲存存取操作。

ARM微處理器的記憶體格式

非對齊的指令預取操作

非對齊的資料存取操作

110非對齊的儲存存取操作在ARM種,如果儲存單元的位址沒有遵守非對齊的指令預取操作

當處理器處於ARM狀態期間,如果寫入到暫存器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论