730 likes | 941 Views
嵌入式系统教案. 武汉创维特信息技术有限公司. 2014/8/16. 第二章 ARM 體系結構及編程模型. 提綱. 1. ARM 技術的應用領域及特點. 2. ARM 微處理器系列. ARM 處理器的工作狀態. 3. ARM 處理器的工作模式. 4. 5. ARM 處理器的記憶體格式. 6. ARM 處理器的暫存器組織. 7. ARM 例外處理. ARM 技術的應用領域及特點. ARM - Advanced RISC Machines.
E N D
嵌入式系统教案 武汉创维特信息技术有限公司 2014/8/16
第二章ARM體系結構及編程模型 提綱 1 ARM技術的應用領域及特點 2 ARM微處理器系列 ARM處理器的工作狀態 3 ARM處理器的工作模式 4 5 ARM處理器的記憶體格式 6 ARM 處理器的暫存器組織 7 ARM 例外處理
ARM技術的應用領域及特點 ARM-Advanced RISC Machines • ARM(Advanced RISC Machines),既可以認爲是一個公司的名字,也可以認爲是對一類微處理器的通稱,還可以認爲是一種技術的名字。 • 1991年ARM公司成立於英國康橋,主要出售晶片設計技術的授權。
ARM技術的應用領域及特點 ARM 公司的Chip less模式 • 世界各大半導體生産商從ARM公司購買其設計的ARM微處理器核,根據各自不同的應用領域,加入適當的週邊電路,從而形成自己的ARM微處理器晶片進入市場。 • 基於ARM技術的微處理器應用約佔據了32位RISC微處理器75%以上的市場份額,ARM技術正在逐步滲入到我們生活的各個方面。 • 我國的中興積體電路、大唐電訊、中芯國際和上海華虹,以及國外的一些公司如德州儀器、意法半導體、Philips、Intel、Samsung等都推出了自己設計的基於ARM核的處理器。
ARM技術的應用領域及特點 ARM微處理器的應用領域 • 到目前爲止,ARM微處理器及技術的應用已經廣泛深入到國民經濟的各個領域 • 工業控制領域:作爲32的RISC架構,基於ARM核的微控制器晶片不但佔據了高階微控制器市場的大部分市場份額,同時也逐漸向低階微控制器應用領域擴展,ARM微控制器的低功耗、高性價比,向傳統的8位/16位微控制器提出了挑戰。
ARM技術的應用領域及特點 ARM微處理器的應用領域 • 網路應用:隨著寬頻技術的推廣,採用ARM技術的ADSL晶片正逐步獲得競爭優勢。此外,ARM在語音及視頻處理上作最佳化,並獲得廣泛支援,也對DSP的應用領域提出了挑戰。 • 消費類電子産品:ARM技術在目前流行的數位音頻播放器、數位機上盒(Set-Top Box)和遊戲機中得到廣泛採用。 • 影像和安全産品:現在流行的數位相機和印表機中絕大部分採用ARM技術。手機中的32位SIM智慧卡也採用了ARM技術。 • ……
ARM技術的應用領域及特點 ARM微處理器的特點—低功耗、低成本、高性能 • 低功耗、低成本、高性能 • 採用RISC指令集 • 全靜態操作,省電 • 使用大量的暫存器 • ARM(32 Bits)/THUMB(16 Bits)指令支持 • 三(ARM7, Fetch->Decode->Execute,沒MMU)/五級管線(ARM9, Fetch->Decode->Execute->Memory Access->Write Register, 有MMU)
ARM技術的應用領域及特點 ARM微處理器的特點—採用RISC體系結構 • 採用RISC架構的ARM處理器一般具有如下特點: • 固定長度的指令格式,指令歸整、簡單、基本定址方式有2~3種; • 使用單周期指令(理想值,平均為1.5 CLK),便於管線操作執行; • 大量使用暫存器,資料處理指令只對暫存器進行操作,只有載入/儲存指令可以存取記憶體,以提高指令的執行效率。
ARM技術的應用領域及特點 ARM微處理器的特點—大量使用暫存器 • ARM 處理器共有37個暫存器,被分爲若干個組,這些暫存器包括: • 31個通用暫存器,包括程式計數器(PC 指標),均爲32位的暫存器; • 6個狀態暫存器,用以標識CPU的工作狀態及程式的操作狀態,均爲32位元。
ARM技術的應用領域及特點 ARM微處理器的特點—高效能的指令系統 • ARM微處理器支援兩種指令集:ARM指令集和Thumb指令集。 • ARM指令爲32位元的長度,Thumb指令爲16位元長度。Thumb指令集爲ARM指令集的功能子集,但與等價的ARM代碼相比較,可節省30%~40%以上的記憶體空間,同時具備32位代碼的所有優點,用於BIOS(省錢)。
ARM技術的應用領域及特點 ARM微處理器的特點—其他技術 • 除此以外,ARM體系結構還採用了一些特別的技術,在保證高性能的前提下儘量縮小晶片的面積,並降低功耗: • 所有的指令都可根據前面的執行結果決定是否被執行,從而提高指令的執行效率。 • 可用載入/儲存指令(為Memory MAP 特性)做批次傳輸資料,以提高資料的傳輸效率。 • 可在一條資料處理指令中同時完成邏輯處理和移位元處理。 • 在迴圈處理中使用地址的自動增減來提高操作效率。
ARM微處理器系列 ARM微處理器系列 • ARM7系列 • ARM9系列 • ARM9E系列 • ARM10E系列 • SecurCore系列 • Intel的Xscale • 其中,ARM7、ARM9、ARM9E和ARM10爲4個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應用領域的需求。SecurCore系列專門爲安全要求較高的應用而設計,用於IC Card, Smart Card等,有防潙功能)。
ARM微處理器系列 ARM7微處理器系列 • ARM7系列是爲低功耗的32位RISC處理器,最適合用於對價位和功耗要求較高的消費性應用。ARM7系列有如下特點: • 具有嵌入式ICE-RT邏輯,除錯開發方便; • 極低的功耗,適合對功耗要求較高的應用,如攜帶型産品; • 能夠提供0.9MIPS/MHz的三級管線結構; • 代碼密度高,並相容16位元的Thumb指令集; • 對作業系統的支援廣泛,如Windows CE、Linux、Palm OS等; • 指令系統與ARM9系列、ARM9E系列和ARM10E系列相容,便於用戶的産品升級換代; • 主頻最高可達130M,高速的運算處理能力能勝任絕大多數的複雜應用。
ARM微處理器系列 ARM7微處理器系列 • 主要應用領域:工業控制、Internet設備、網路和數據機設備、行動電話等多種多媒體和嵌入式應用。 • ARM7系列微處理器包括如下幾種類型的核心:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低階ARM處理器核心。TDMI的基本含義爲: • T:支援16爲壓縮指令集Thumb; • D:支援晶片上Debug; • M:內嵌硬體乘法器(Multiplier, 32X32=64Bits) • I:嵌入式ICE,支援晶片上中斷點和除錯點;
ARM微處理器系列 ARM9微處理器系列 • ARM9系列微處理器在高性能和低功耗特性方面提供最佳的表現。具有以下特點: • 5級整數管線,指令執行效率更高。 • 提供1.1MIPS/MHz的哈佛結構。 • 支持32位ARM指令集和16位Thumb指令集。 • 支援32位元的高速AMBA匯流排界面。 • 全性能的MMU,支援Windows CE、Linux、Palm OS等多種主流嵌入式作業系統。 • MPU支援即時作業系統。 • 內含16K資料Cache和16K指令Cache,具有更高的指令和資料處理能力。
ARM微處理器系列 ARM9微處理器系列 • ARM9系列微處理器主要應用於無線設備、儀器儀錶、安全系統、機上盒、高階印表機、數位照相機和數位攝影機等。 • ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應用場合。
ARM微處理器系列 ARM9E微處理器系列 • ARM9E系列微處理器的主要特點如下: • 支援DSP指令集,適合於需要高速數位信號處理的場合。 • 5級整數管線,指令執行效率更高。 • 支援32位元ARM指令集和16位元Thumb指令集。 • 支援32位元的高速AMBA匯流排界面(AMBA=AHB[高速元件]+APB [高速元件])。 • 支援VFP9浮點處理輔助運算器。 • 全性能的MMU,支援衆多主流嵌入式作業系統。 • 支援資料Cache和指令Cache,具有更高的處理能力。 • 主頻最高可達300M。
ARM微處理器系列 ARM9E微處理器系列 • ARM9E系列微處理器主要應用於下一代無線設備、數位消費品、影像設備、工業控制、儲存設備和網路設備等領域。 • ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應用場合。
ARM微處理器系列 ARM10E微處理器系列 • ARM10E系列微處理器的主要特點如下: • 支援DSP指令集,適合於需要高速數位信號處理的場合。 • 6級整數管線,指令執行效率更高。 • 支持32位ARM指令集和16位Thumb指令集。 • 支援32位元的高速AMBA匯流排界面。 • 支援VFP10浮點處理輔助運算器。 • 全性能的MMU,支援衆多主流嵌入式作業系統。 • 內含資料Cache和指令Cache,具有更高的處理能力 • 主頻最高可達400M。 • 內嵌並行讀/寫操作物件。
ARM微處理器系列 ARM10E微處理器系列 • ARM10E系列微處理器主要應用於下一代無線設備、數位消費品、影像設備、工業控制、通信和資訊系統等領域。 • ARM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應用場合。
ARM微處理器系列 SecurCore微處理器系列 • SecurCore系列微處理器除了具有ARM體系結構各種主要特點外,還在系統安全方面具有如下的特點: • 帶有靈活的保護單元,確保作業系統和應用資料的安全。 • 採用軟內核技術,防止外部對其進行掃描探測。 • 可整合用戶自己的安全特性和其他輔助運算器。
ARM微處理器系列 SecurCore微處理器系列 • SecurCore系列微處理器主要應用於一些對安全性要求較高的應用産品及應用系統,如電子商務、電子政務、電子銀行業務、網路和認證系統等領域。 • SecurCore系列微處理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四種類型,以適用于不同的應用場合。
ARM微處理器系列 StrongARM微處理器系列 • Intel StrongARM SA-1100處理器是採用ARM體系結構高度整合的32位元RISC微處理器。它融合了Intel公司的設計和處理技術以及ARM體系結構的電源效率,採用在軟體上相容ARMv4體系結構、同時採用具有Intel技術優點的體系結構。 • Intel StrongARM處理器是攜帶型通訊産品和消費類電子産品的理想選擇,已成功應用於多家公司的掌上電腦系列產品。
ARM微處理器系列 Xscale處理器 • Xscale 處理器是基於ARMv5TE體系結構的解決方案,是一款全功能、高性能價格比、低功耗的處理器。它支援16位元的Thumb指令和DSP指令集,已使用在數位行動電話、個人數位助理和網路産品等場合。 • Xscale 處理器是Intel目前主要推廣的一款ARM微處理器。
ARM微處理器的工作狀態 ARM微處理器的工作狀態 • 從程式執行的角度看,ARM微處理器的工作狀態一般有兩種,並可在兩種狀態之間切換: • ARM狀態,此時處理器執行32位的字對齊的ARM指令; • Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。
ARM微處理器的工作狀態 ARM與THUMB • THUMB指令是ARM指令的子集 • 可以相互調用,只要遵循一定的調用規則 • Thumb指令與ARM指令的時間效率和空間效率關係爲: • 記憶體空間約爲ARM代碼的60%~70% • 指令數比ARM代碼多約30%~40% • 記憶體爲32位時ARM代碼比Thumb代碼快約40% • 記憶體爲16位時Thumb比ARM代碼快約40~50% • 使用Thumb代碼,記憶體的功耗會降低約30%
ARM微處理器的工作狀態 狀態切換方法 • ARM指令集和Thumb指令集均有切換處理器狀態的指令,並可在兩種工作狀態之間切換 • 在開始執行代碼時,應該處於ARM狀態。
ARM微處理器的工作狀態 進入Thumb狀態 • 當運算元暫存器的狀態位元(位元0)爲1時,可以採用執行BX指令的方法,使微處理器從ARM狀態切換到Thumb狀態。如下 LDR R0,=label+1 BX R0 • 當處理器處於Thumb狀態時發生例外(如IRQ、FIQ、Undef、Abort、SWI等),則例外處理返回時,自動切換到Thumb狀態。
ARM微處理器的工作狀態 切換到ARM狀態 • 當運算元暫存器的狀態位元爲0時,執行BX指令時可以使微處理器從Thumb狀態切換到ARM狀態。如下 LDR R0,=label BX R0 • 在處理器進行例外處理時,把PC指標放入例外模式鏈結暫存器中,並從例外向量位址開始執行程式,也可以使處理器切換到ARM狀態。
ARM微處理器的工作模式 處理器模式 • usr:ARM處理器正常的程式執行狀態 • fiq:於高速資料傳輸或通道處理 • irq:用於通用的中斷處理 • svc:作業系統使用的保護模式 • abt:用於虛擬儲存及儲存保護 • und:當出現未定義指令終止時進入該模式 • sys:執行具有特權的作業系統任務
ARM微處理器的工作模式 用戶模式和特權模式 • 除了用戶模式之外的其他6種處理器模式稱爲特權模式 • 特權模式下,程式可以存取所有的系統資源,也可以任意地進行處理器模式的切換。 • 特權模式中,除系統模式外,其他5種模式又稱爲例外模式 • 大多數的用戶程式操作在用戶模式下,此時,應用程式不能夠存取一些受作業系統保護的系統資源,應用程式也不能直接進行處理器模式的切換。 • 用戶模式下,當需要進行處理器模式切換時,應用程式可以産生例外處理,在例外處理中進行處理器模式的切換。
ARM微處理器的工作模式 模式切换 • 處理器模式可以通過軟體進行切換,也可以通過外部中斷或者例外處理過程進行切換。 • 當應用程式發生例外中斷時,處理器進入相應的例外模式。在每一種例外模式下都有一組暫存器,供相應的例外處理程式使用,這樣就可以保證在進入例外模式時,用戶模式下的暫存器不被破壞。 • 系統模式並不是通過例外進入的,它和用戶模式具有完全一樣的暫存器。但是系統模式屬於特權模式,可以存取所有的系統資源,也可以直接進行處理器模式切換。它主要供作業系統任務使用。通常作業系統的任務需要存取所有的系統資源,同時該任務仍然使用用戶模式的暫存器組,而不是使用例外模式下相應的暫存器組,這樣可以保證當例外中斷發生時任務狀態不被破壞。
ARM微處理器的記憶體格式 ARM微處理器的記憶體格式 • ARM體系結構所支援的最大定址空間爲4GB(232位元組) • ARM體系結構將記憶體看作是從零位址開始的位元組的線性組合。從零位元組到三位元組放置第一個儲存的字資料,從第四個位元組到第七個位元組放置第二個儲存的字資料,依次排列。 • ARM體系結構可以用兩種方法儲存字資料,稱之爲大端格式(Big-Endian, Intel)和小端格式(little-Endian,Motorola)
ARM微處理器的記憶體格式 ARM體系結構的記憶體格式—大端格式 • 在這種格式中,字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中
ARM微處理器的記憶體格式 ARM體系結構的記憶體格式—小端格式 • 與大端儲存格式相反,在小端儲存格式中,低位址中存放的是字資料的低位元組,高位址存放的是字資料的高位元組
ARM微處理器的記憶體格式 指令長度及資料類型 • ARM微處理器的指令長度可以是32位元(在ARM狀態下),也可以爲16位元(在Thumb狀態下)。 • ARM微處理器中支援位元組(8位元)、半字(16位)、字(32位)三種資料類型,其中,字需要4位元組對齊(位址的低兩位爲0)、半字需要2位元組對齊(位址的最低位爲0)
ARM微處理器的記憶體格式 非對齊的儲存存取操作 • 在ARM種,如果儲存單元的位址沒有遵守對齊規則,則稱爲非對齊的儲存存取操作。 • 非對齊的指令預取操作 • 非對齊的資料存取操作
ARM微處理器的記憶體格式 非對齊的指令預取操作 • 當處理器處於ARM狀態期間,如果寫入到暫存器PC中的值是非字對齊的,則指令執行的結果不可預知,該位址值中最低兩位被忽略。 • 當處理器處於THUMB狀態期間,如果寫入到暫存器PC中的值是非半字對齊的,則指令執行的結果不可預知,該位址值中最低位被忽略。
ARM微處理器的記憶體格式 非對齊的資料存取操作 • 對於Load/Store操作,如果是非對齊的資料存取操作,系統定義了三種可能的結果: • 執行的結果不可預知 • 忽略字單元地址的低兩位元的值,即存取地址爲(address AND 0XFFFFFFFC)的字單元;忽略半字單元地址的最低位元的值,即存取地址爲(address AND 0XFFFFFFFE)的半字單元。 • 忽略字單元地址的低兩位元的值;忽略半字單元地址的最低位元的值;由儲存系統實現這種忽略。也就是說,這時該位址值原封不動地送到儲存系統。 • 當發生非對齊地資料存取時,到底採用上述三種方法中的哪一種,是由各指令指定的。
ARM微處理器的記憶體格式 暫存器組織 • ARM微處理器共有37個32位元暫存器,其中31個爲通用暫存器,6個爲狀態暫存器。但是這些暫存器不能被同時存取,具體哪些暫存器是可被程式存取的,取決微處理器的工作狀態及具體的操作模式。但在任何時候,通用暫存器R14~R0、程式計數器PC、一個或兩個狀態暫存器都是可存取的。
ARM微處理器的記憶體格式 ARM狀態下的暫存器組織 • 通用暫存器:通用暫存器包括R0~R15,可以分爲三類: • 未分組暫存器R0~R7 • 分組暫存器R8~R14 • 程式計數器PC(R15)
ARM微處理器的記憶體格式 ARM狀態下的暫存器組織
ARM微處理器的記憶體格式 未分組暫存器R0~R7 • 在所有的操作模式下,未分組暫存器都指向同一個真正(物理)暫存器,他們未被系統用作特殊的用途。因此,在中斷或例外處理進行操作模式轉換時,由於不同的處理器操作模式均使用相同的物理暫存器,可能會造成暫存器中資料的破壞,這一點在進行程式設計時應注意。
ARM微處理器的記憶體格式 分組暫存器R8~R12 • 每次所存取的物理暫存器與處理器當前的操作模式有關 • R8~R12:每個暫存器對應兩個不同的物理暫存器 • 當使用fiq模式時,存取暫存器R8_fiq~R12_fiq; • 當使用除fiq模式以外的其他模式時,存取暫存器R8_usr~R12_usr。
ARM微處理器的記憶體格式 分組暫存器R13~R14 • R13、R14:每個暫存器對應6個不同的物理暫存器 • 其中的一個是用戶模式與系統模式共用,另外5個物理暫存器對應於其他5種不同的操作模式 • 採用以下的記號來區分不同的物理暫存器: • R13_<mode> • R14_<mode> • mode爲以下幾種之一:usr、fiq、irq、svc、abt、und。
ARM微處理器的記憶體格式 堆疊指標—R13 • R13在ARM指令中常用作堆疊指標,但這只是一種習慣用法,用戶也可使用其他的暫存器作爲堆疊指標。 • 在Thumb指令集中,某些指令強制性的要求使用R13作爲堆疊指標。 • 由於處理器的每種操作模式均有自己獨立的物理暫存器R13,在初始化部分,都要初始化每種模式下的R13,這樣,當程式的操作進入例外模式時,可以將需要保護的暫存器放入R13所指向的堆疊,而當程式從例外模式返回時,則從對應的堆疊中恢復。
ARM微處理器的記憶體格式 副程式連接暫存器—R14 • 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} /*完成副程式返回*/
ARM微處理器的記憶體格式 程式計數器PC(R15) • ARM狀態下,位元[1:0]爲0,位[31:2]用於保存PC; • Thumb狀態下,位元[0]爲0,位[31:1]用於保存PC; • R15雖然也可用作通用暫存器,但一般不這麽使用,因爲對R15的使用有一些特殊的限制,當違反了這些限制時,程式的執行結果是未知的。 • 由於ARM體系結構採用了多級管線技術,對於ARM指令集而言,PC總是指向當前指令的下兩條指令的位址,即PC的值爲當前指令的位址值加8個位元組。
ARM微處理器的記憶體格式 程式狀態暫存器(CPSR/SPSR) • 暫存器R16用作CPSR(當前程式狀態暫存器),CPSR可在任何操作模式下被存取,它包括條件標誌位元、中斷禁止位元、當前處理器模式標誌位元,以及其他一些相關的控制和狀態位元。 • 每一種操作模式下又都有一個專用的物理狀態暫存器,稱爲SPSR(備份的程式狀態暫存器),例外發生時,SPSR用於保存CPSR的值,從例外返回時則可由SPSR來恢復CPSR。 • 由於用戶模式和系統模式不屬於例外模式,他們沒有SPSR,當在這兩種模式下存取SPSR,結果是未知的。
ARM微處理器的記憶體格式 Thumb狀態下的暫存器組織 • Thumb狀態下的暫存器集是ARM狀態下暫存器集的一個子集 • 程式可以直接存取8個通用暫存器(R7~R0)、程式計數器(PC)、堆疊指標(SP)、連接暫存器(LR)和CPSR。 • 同樣,每一種特權模式下都有一組SP、LR和SPSR。