ARM處理器的2種工作狀態(tài)和7種工作模式及37個寄存器介紹
出處:電子發(fā)燒友網(wǎng) 發(fā)布于:2018-04-24 15:15:31
在安卓支持三類處理器ARM、Intel和MIPS里面,ARM無疑被使用得為廣泛。那么ARM處理器到底是怎樣工作的呢?本文主要跟大家來詳細的介紹ARM處理器的兩種工作狀態(tài)和七種工作模式,奉上ARM處理器37個寄存器的詳細介紹。

ARM處理器的兩種工作狀態(tài)
1、ARM狀態(tài):32位,ARM狀態(tài)執(zhí)行字對齊的32位ARM指令。
2、Thumb狀態(tài),16位,執(zhí)行半字對齊的16位指令。
3、用Bx Rn指令來進行兩種狀態(tài)的切換:
其中Bx是跳轉(zhuǎn)指令,而Rn是寄存器(1個字,32位),如果Rn的位0為1,則進入Thumb狀態(tài);如果Rn的位為0,這進入ARM狀態(tài)。(原 因:ARM指令的后兩位始終為0,沒有用,而Thumb指令的后一位始終為0,沒有用,因此采用位0來表示ARM指令與Thumb指令的切換標志位。)
注:1、ARM和Thumb兩種狀態(tài)之間的切換不影響處理器的工作模式和寄存器的內(nèi)容。
2、ARM處理器在處理異常時,不管處理器處于什么狀態(tài),則都將切換到ARM狀態(tài)。
另外:ARM的M系列主要用Thumb指令,ARM9和A系列主要用ARM指令
S3C2440.S啟動代碼中根本就沒用Thumb指令
ARM處理器的7種工作模式

CPU的模式可以簡單的理解為當前CPU的工作狀態(tài),比如:當前操作系統(tǒng)正在執(zhí)行用戶程序,那么當前CPU工作在用戶模式,這時網(wǎng)卡上有數(shù)據(jù)到達,產(chǎn)生中斷信號,CPU自動切換到一般中斷模式下處理網(wǎng)卡數(shù)據(jù)(普通應用程序沒有權(quán)限直接訪問硬件),處理完網(wǎng)卡數(shù)據(jù),返回到用戶模式下繼續(xù)執(zhí)行用戶程序。
特權(quán)模式
除用戶模式外,其它模式均為特權(quán)模式(Privileged Modes)。ARM 內(nèi)部寄存器 和一些 片內(nèi)外設 在硬件設計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。
異常模式
特權(quán)模式中除系統(tǒng)(system)模式之外的其他5種模式又統(tǒng)稱為異常模式。它們除了可以通過在特權(quán)下的程序切換進入外,也可以由特定的異常進入。比如硬件產(chǎn)生中斷信號進入中斷異常模式,讀取沒有權(quán)限數(shù)據(jù)進入中止異常模式,執(zhí)行未定義指令時進入未定義指令中止異常模式。其中管理模式也稱為超級用戶模式,是為操作系統(tǒng)提供軟中斷的特有模式,正是由于有了軟中斷,用戶程序才可以通過系統(tǒng)調(diào)用切換到管理模式。
7種工作模式介紹
?。?)用戶模式:
用戶模式是用戶程序的工作模式,它運行在操作系統(tǒng)的用戶態(tài),它沒有權(quán)限去操作其它硬件資源,只能執(zhí)行處理自己的數(shù)據(jù),也不能切換到其它模式下,要想訪問硬件資源或切換到其它模式只能通過軟中斷或產(chǎn)生異常。
(2)系統(tǒng)模式:
系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。用戶模式和系統(tǒng)模式共用一套寄存器,操作系統(tǒng)在該模式下可以方便的訪問用戶模式的寄存器,而且操作系統(tǒng)的一些特權(quán)任務可以使用這個模式訪問一些受控的資源。
說明:用戶模式與系統(tǒng)模式兩者使用相同的寄存器,都沒有SPSR(Saved Program Statement Register,已保存程序狀態(tài)寄存器),但系統(tǒng)模式比用戶模式有更高的權(quán)限,可以訪問所有系統(tǒng)資源。
?。?)一般中斷模式:
一般中斷模式也叫普通中斷模式,用于處理一般的中斷請求,通常在硬件產(chǎn)生中斷信號之后自動進入該模式,該模式為特權(quán)模式,可以自由訪問系統(tǒng)硬件資源。
(4)快速中斷模式:
快速中斷模式是相對一般中斷模式而言的,它是用來處理對時間要求比較緊急的中斷請求,主要用于高速數(shù)據(jù)傳輸及通道處理中。
?。?)管理模式(Supervisor,SVC) :
管理模式是CPU上電后默認模式,因此在該模式下主要用來做系統(tǒng)的初始化,軟中斷處理也在該模式下。當用戶模式下的用戶程序請求使用硬件資源時,通過軟件中斷進入該模式。
說明:系統(tǒng)復位或開機、軟中斷時進入到SVC模式下。
?。?)終止模式:
中止模式用于支持虛擬內(nèi)存或存儲器保護,當用戶程序訪問非法地址,沒有權(quán)限讀取的內(nèi)存地址時,會進入該模式,linux下編程時經(jīng)常出現(xiàn)的segment fault通常都是在該模式下拋出返回的。
(7)未定義模式:
未定義模式用于支持硬件協(xié)處理器的軟件仿真,CPU在指令的譯碼階段不能識別該指令操作時,會進入未定義模式。

ARM處理器37個寄存器介紹
ARM微處理器共有37個32位寄存器,其中31個為通用寄存器,6個為狀態(tài)寄存器。但是這些寄存器不能被同時訪問,具體哪些寄存器是可以訪問的,取決ARM處理器的工作狀態(tài)及具體的運行模式。但在任何時候,通用寄存器R14~R0、程序計數(shù)器PC、一個狀態(tài)寄存器都是可訪問的。

下面這幅圖就是ARM中的37 個寄存器

下面這幅圖是 7種工作模式下每個模式下的寄存器列表:

ARM狀態(tài)下的通用寄存器與程序計數(shù)器

ARM狀態(tài)下的程序寄存器

通用寄存器

通用寄存器
1、不分組寄存器(R0-R7)
2、分組寄存器(R8-R14)
程序計數(shù)器R15(PC)
不分組通用寄存器
R0-R7是不分組寄存器。這意味著在所有處理器模式下,訪問的都是同一個物理寄存器。不分組寄存器沒有被系統(tǒng)用于特別的用途,任何可采用通用寄存器的應用場合都可以使用未分組寄存器。
分組寄存器R8-R12
1、FIQ模式分組寄存器R8-R12
2、FIQ以外的分組寄存器R8-R12
分組寄存器R13、R14
1、寄存器R13通常做堆棧指針SP
2、寄存器R14用作子程序鏈接寄存器(Link Register-LR),也稱為LR,指向函數(shù)的返回地址。
程序計數(shù)器
寄存器R15被用作程序計數(shù)器,也稱為PC。其值等于當前正在執(zhí)行的指令的地址+8(因為在取地址和執(zhí)行之間多了一個譯碼的階段)。
狀態(tài)寄存器

版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權(quán)利。
- ARM技術架構(gòu)與應用開發(fā)實踐指南2026/1/6 10:40:19
- 嵌入式實時操作系統(tǒng)(RTOS)選型與移植技術指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術選型與抗干擾設計實踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎知識2025/7/14 16:59:04









