【轉】ARM處理器7種工作模式

轉載自:http://blog.csdn.net/xiaolangyangyang/article/details/51768462

一、ARM處理器7種工作模式(特權模式 特權模式異常模式

  1. 用戶模式(USR):正常程序執行模式,不能直接切換到其他模式
  2. 系統模式SYS):運行操作系統的特權任務,與用戶模式類似,但具有可以直接切換到其他模式等特權
  3. 快中斷模式FIQ):支持高速數據傳輸及通道處理,FIQ異常響應時進入此模式
  4. 中斷模式IRQ):用於通用中斷處理,IRQ異常響應時進入此模式
  5. 管理模式SVC):操作系統保護模式,系統復位和軟件中斷響應時進入此模式(由系統調用執行軟中斷SWI命令觸發)
  6. 中止模式ABT):用於支持虛擬內存和/或存儲器保護,在ARM7TDMI沒有大用處
  7. 未定義模式UND):支持硬件協處理器的軟件仿真,未定義指令異常響應時進入此模式

    除用戶模式外,其餘6種工作模式都屬於特權模式
    特權模式中除了系統模式以外的其餘5種模式稱爲異常模式
    大多數程序運行於用戶模式
    進入特權模式是爲了處理中斷、異常、或者訪問被保護的系統資源

 

    硬件權限級別:系統模式 > 異常模式 > 用戶模式

 

    快中斷與慢中斷區別:快中斷處理時禁止中斷

二、異常的優先級

            

三、存儲器格式

  1. 大端格式:高字節在低地址,低字節在高地址
  2. 小端格式:高字節在高地址,低字節在低地址

四、ARM體系的CPU有兩種工作狀態

  1. ARM狀態
  2. THumb狀態

五、Linux操作系統與ARM工作模式

    首先,ARM開發板在剛上電或復位後都會首先進入SVC即管理模式,此時、程序計數器R15-PC值會被賦爲0x0000 0000;bootloader就是在此模式下,位於0x0000 0000的NOR FLASH或SRAM中裝載的,因此、開機或重啓後bootloader會被首先執行。
    接着,bootloader引導Linux內核,此時、Linux內核一樣運行在ARM的SVC即管理模式下;當內核啓動完畢、準備進入用戶態init進程時,內核將ARM的當前程序狀態CPSR寄存器M[4:0]設置爲10000、進而用戶態程序只能運行在ARM的用戶模式。
    由於ARM用戶模式下對資源的訪問受限,因此、可以達到保護Linux操作系統內核的目的。
    需要強調的是:Linux內核態是從ARM的SVC即管理模式下啓動的,但在某些情況下、如:硬件中斷、程序異常(被動)等情況下進入ARM的其他特權模式,這時仍然可以進入內核態(因爲就是可以操作內核了);同樣,Linux用戶態是從ARM用戶模式啓動的,但當進入ARM系統模式時、仍然可以操作Linux用戶態程序(進入用戶態,如init進程的啓動過程)。
    即:Linux內核從ARM的SVC模式下啓動,但內核態不僅僅指ARM的SVC模式(還包括可以訪問內核空間的所有ARM模式);Linux用戶程序從ARM的用戶模式啓動,但用戶態不僅僅指ARM的用戶模式。

 

參考文獻:

ARM7的工作模式

ARM體系的7種工作模式

Linux操作系統與ARM工作模式

ARM工作模式

uboot初始化中,爲何要設置CPU爲SVC模式而不是設置爲其他模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章