arm是 advanced risc machines ( 高階精簡指令系統處理器) 的縮寫,是arm公司提供的一種微處理器智財權( ip) 核
arm既可以認為是乙個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字
arm微處理器的特點
1、體積小、低功耗、低成本、高效能
2、支援thumb (16位) / arm (32位) 雙指令集,能很好的相容8位/16位器件
3、大量使用暫存器,指令執行速度更快
4、大多數資料操作都在暫存器中完成
5、定址方式靈活簡單、執行效率高
6、指令長度固定
arm7系列:
屬低端arm處理器核,最適合用於對價位和功能消耗要求較高的消費類應用
主要應用領域為:工業控制、網路和數據機裝置、移動**等多種多**和嵌入式應用
dsp: digital signal processor
命名解釋:
arm7dmi:t表示支援16位壓縮指令集 (thumb),d表示支援片上除錯 (debug),m表示內嵌硬體乘法器 (multiplier),i 表示嵌入式ice(**器),支援片上斷點和調試點 ( in - circuit emulater )
arm7系列處理器特點:
1、具有嵌入式ice邏輯,除錯開發方便
2、功耗極低,適合可攜式產品開發
3、3級流水線結構
4、支援thumb
5、支援多種作業系統
6、指令與arm9、arm10系列相容,便於公升級
3級流水線 (pipeline) 的執行過程
取指: 從儲存器裝載指令
解碼:對剛裝載的指令進行識別
執行:處理指令並把結果寫回相應的暫存器
arm9系列處理器特點:
在高效能和低功耗特性方面提供最佳的效能
主要應用於無線裝置、儀器儀表、安全系統、機頂盒、高階印表機、數位相機和數字攝像機
arm9有5級流水線:fetch、decode、execute、memory、write
arm 與 thumb
1、thumb指令是arm指令的自給
2、可以相互呼叫,只要遵循一定的呼叫規則
3、thumb指令與arm指令時間效率和空間效率關係:儲存空間是arm**的60% ~ 70%,指令數比arm**多約30% ~ 40%,儲存器為32位時arm**比thumb**快約 40%,儲存器為16位時thumb比arm**快約40 ~ 50%,使用thumb**,儲存器的功耗會降低約30%
狀態切換:
arm 與 thumb之間的狀態的切換不影響處理器模式或暫存器的內容
arm指令集和thumb都有相應的切換命令
切換方法:
進入thumb狀態:運算元暫存器rm的狀態位 bit [0] 為1,執行 bx rm
進入arm狀態:運算元暫存器rm的狀態位 bit [0] 為0,執行 bx rm
在開始執行開罵時,應該處於arm狀態
arm微處理器的儲存器格式:
1、支援最大定址空間為4gb
2、arm體系結構將儲存器看作是從零位址開始的位元組的線性組合
3、arm體系結構可以用兩種方法儲存字資料:大端和小端格式
大端(big-endian): 低位元組存放在高位址中
小端(little-endian): 高位元組存放在高位址中
arm處理器工作模式
1、usr模式:正常使用者模式、程式正常執行模式
2、fiq模式(fast interrupt request ):處理快速中斷,支援高速資料傳送或通道處理
3、iru模式:處理普通中斷
4、svc模式:( supervisor) :作業系統保護模式,處理軟體中斷
5、abt 中止:(abort mode) :處理儲存器故障,實現虛擬儲存器和儲存器保護
6、und未定義:(undefined):處理未定義的指令陷阱,支援硬體協處理器的軟體**
7、sys系統模式(基本上=usr)
arm暫存器組成:
31個通用暫存器:r0 ~ r15 (pc)、 r13_svc,r14_svc,r13_abt,r14_abt,r13_und,r14_und,r13_irq,r14_irq,r8_frq ~ r14_frq,
6個狀態暫存器:cpsr、spsr_svc、spsr_abt、spsr_und、spsr_irq、spsr_frq
arm狀態下的暫存器組織
r0 ~ r7 是普通工作暫存器
r8 ~ r12用於對場景資訊的保留
r13常用作堆疊指標
r14作為子程式連線暫存器
r15是程式計數器
cpsr (當前程式狀態暫存器)
spsr (備份的程式狀態暫存器)
程式狀態暫存器圖如下:
n、z、c、v為標誌位
n標誌位:當用兩個補碼表示的帶符號數進行運算時,n=1代表運算的結果為負數,n=0表示的結果是正數或0
z標誌位:z=1表示運算的結果為0,z=0表示運算的結果為非0
v標誌位:加 / 減法運算指令,v=1表示符號位的溢位,對於其它非加 / 減運算指令,v的值通常不變
c標誌位:加法運算結果進製時,c=1,減法運算借位時,c=0,移位操作的非加 / 減法運算指令,c為移出的最後一位,其它的非加 / 減運算指令,c的值通常不變
i、f、t 和 m [4:0] 稱為控制位,發生異常時這些位可以被改變
中斷禁止位 i、f:i=1,禁止irq中斷,f=1,禁止fiq中斷
t標誌位反映處理器的執行狀態,t=1,執行 thumb狀態, t=0,執行 arm狀態
arm體系結構所支援的異常型別:
1、復位:復位電平有效時,產生復位異常,程式跳轉到復位處理程式處執行
2、未定義指令:遇到不能處理的指令,定義未定義指令異常
3、軟體中斷:執行swi指令產生,用於使用者模式下的程式呼叫特權操作指令(使用者模式 -> 特權模式)
4、指令預取中止:處理器預取指令的位址不存在,或該位址不允許當前指令訪問,產生指令預取中止異常
5、資料中止:處理器資料訪問指令的位址不存在,或該位址不允許當前指令訪問,產生資料中止異常
6、irq:外部中斷請求有效,且cpsr中的 i 位為0時,產生 irq 異常
7、fiq:快速中斷請求引腳有效,且cpsr中的 f位為0時,產生 fiq異常
arm體系中的中斷如下圖:
0x00000014作為預留使用
異常執行的一段**通常為
sub lr,lr,#4 ; fiq、irq的中斷處理
stmfd sp!,
......
ldmfd sp!,^
對異常的相應:
1、將下一條指令的位址存入相應連線暫存器 lr,以便程式在處理異常返回時能從正確的位置重新開始執行,若是從arm狀態進入,lr暫存器中儲存的是下一條指令的位址(當前 pc+4或 pc+8),與異常的型別有關
2、將cpsr複製到相應的 spsr中
3、根據異常型別,強制設定cpsr的執行模式位
4、強制pc從相關的異常向量位址取下一條指令執行,從而跳轉到相應的異常處理程式處
還可以設定中斷禁止位,以禁止中斷發生,如果異常發生時,處理器處於thumb狀態,則從異常向量加載入pc時,處理器自動切換到arm狀態
異常處理完畢後,arm微處理器會執行以下幾步從異常返回:
1、將連線暫存器 lr的值減去相應的偏移量後送到pc中
2、將spsr複製回cpsr中
3、若在進入異常處理時設定了中斷禁止位,要在此清除
可以認為應用程式總是從復位異常處理程式開始執行的,因為復位異常處理程式不需要返回
應用程式中的異常處理:
當系統執行時,異常可能隨時發生,進行異常處理,採用的方式是異常向量表中的特定位置放置一條跳轉指令,跳轉到異常處理程式,當arm處理器發生異常時,程式計數器pc會強制設定為對應的異常向量,從而跳轉到處理程式,當異常處理完成後,返回到主程式繼續執行
ARM體系結構
一 arm公司簡介 arm公司成立於1990年11月,主要設計arm系列risc處理器核心 arm公司主要做授權,不生產任何一款具體的晶元。二 arm公司產業鏈 arm 將技術授權給合作廠商 廠商 生產各具特色的具體晶元,廠商就包括飛利浦 英特爾 三星等 三 arm微處理器的應用領域 工業控制 無線...
ARM體系結構
arm 核心採用精簡指令集結構 risc,reduced instruction set computer 體系結構。其目標是設計出一套能在高時鐘頻率下單週期執行 簡單而有效的指令集,risc 的設計重點在於降低硬體執行指令的複雜度,這是因為軟體比硬體容易提供更大的靈活性和更高的智慧型。與其相對的傳...
ARM體系結構 一
一 arm暫存器的作用 1 r0 r3 用作傳入函式引數 傳出函式返回值。2 r4 r11 被用來 存放函式的區域性變數。3 r12 是內部呼叫暫時暫存器 ip,目前沒搞懂。4 r13 sp作為 棧暫存器。5 r14 lr儲存函式呼叫或者中斷程式返回時要執行的 指令位址。6 r15 pc程式 取值位...