學習ARM處理器參考的首選資料是ARM Architecture Reference Manual,是最專業權威的學習資料。
ARM處理器共有7種工作模式,如表1-1和1-2所示:
表1-1
處理器工作模式 |
特權模式 |
異常模式 |
說明 |
用戶(user)模式 |
|
|
用戶程序運行模式 |
系統(system)模式 |
該組模式下可以任意訪問系統資源 |
|
運行特權級的操作系統任務 |
一般中斷(IRQ)模式 |
通常由系統異常狀態切換進該組模式 |
普通中斷模式 |
|
快速中斷(FIQ)模式 |
快速中斷模式 |
||
管理(supervisor)模式 |
提供操作系統使用的一種保護模式,swi命令狀態 |
||
中止(abort)模式 |
虛擬內存管理和內存數據訪問保護 |
||
未定義指令終止(undefined)模式 |
支持通過軟件仿真硬件的協處理 |
表1-2 ARM處理器工作模式
ARM處理器工作模式可以簡單的理解為當前CPU的工作狀態。比如:當前操作系統正在執行用戶程序,那么此時CPU工作在用戶模式,假設網卡上有數據到達,產生中斷信號,CPU會自動切換到一般中斷模式下處理網卡數據(普通應用程序沒有權限直接訪問硬件),處理完網卡數據后,再返回到用戶模式下繼續執行用戶程序。
Linux系統用戶程序運行在ARM的Usr模式,Linux內核運行在ARM的svc模式!
除用戶模式外,其它模式均為特權模式(Privileged Modes)。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。
特權模式中除系統(system)模式之外的其他5種模式又統稱為異常模式。它們除了可以通過在特權下的程序切換進入外,也可以由特定的異常進入。比如硬件產生中斷信號進入中斷異常模式,讀取沒有權限數據進入中止異常模式,執行未定義指令時進入未定義指令中止異常模式。其中管理模式也稱為超級用戶模式,是為操作系統提供軟中斷的特有模式,正是由於有了軟中斷,用戶程序才可以通過系統調用切換到管理模式。
1、用戶模式(User):
用戶模式是用戶程序的工作模式,它運行在操作系統的用戶態,它沒有權限去操作其它硬件資源,只能執行處理自己的數據,也不能切換到其它模式下,要想訪問硬件資源或切換到其它模式只能通過軟中斷或產生異常。
2、系統模式(System):
系統模式是特權模式,不受用戶模式的限制。用戶模式和系統模式共用一套寄存器,操作系統在該模式下可以方便的訪問用戶模式的寄存器,而且操作系統的一些特權任務可以使用這個模式訪問一些受控的資源。
3、一般中斷模式(IRQ):
一般中斷模式也叫普通中斷模式,用於處理一般的中斷請求,通常在硬件產生中斷信號之后自動進入該模式,該模式為特權模式,可以自由訪問系統硬件資源。
4、快速中斷模式(FIQ):
快速中斷模式是相對一般中斷模式而言的,它是用來處理對時間要求比較緊急的中斷請求,主要用於高速數據傳輸及通道處理中。
5、管理模式(Supervisor):
管理模式是CPU上電后默認模式,因此在該模式下主要用來做系統的初始化,軟中斷處理也在該模式下,當用戶模式下的用戶程序請求使用硬件資源時通過軟件中斷進入該模式。
6、終止模式(Abort):
中止模式用於支持虛擬內存或存儲器保護,當用戶程序訪問非法地址,沒有權限讀取的內存地址時,會進入該模式,linux下編程時經常出現的segment fault通常都是在該模式下拋出返回的。
7、未定義模式(Undefined):
未定義模式用於支持硬件協處理器的軟件仿真,CPU在指令的譯碼階段不能識別該指令操作時,會進入未定義模式。