ARM學習筆記 一 處理器模式

2021-08-25 09:25:56 字數 2360 閱讀 2479

處理器模式

cpsr暫存器

arm v4的cpsr暫存器(和儲存它的spsr暫存器)中的位分配如下圖所示。

處理器模式 描

述使用者模式(

user,usr

)正常程式執行的模式

快速中斷模式(

fiq,fiq

)用於高速資料傳輸和通道處理

外部中斷模式(

irq,irq

)使用者通常的中斷使用

特權模式(

supervisor,sve

)供作業系統使用的一種保護模式

資料訪問中止模式(

abort,abt

)用於虛擬儲存及儲存保護

未定義指令中止模式(

undefin- ed,und

)用於支援通過軟體**硬體的協處理器

系統模式(

system,sys

)用於執行特權級的作業系統任務

處理器模式

體系結構

模式編號 使用者

全部0b10000

fiq - 快速中斷請求 全部

0b10001

irq - 中斷請求 全部

0b10010

超級使用者 全部

0b10011 中止

全部0b10111

未定義 全部

0b11011 系統

armv4 及更高版本

0b11111 監控

僅限安全擴充套件

0b10110

1.除了使用者模式以外,其他6種處理器模式可以稱為特權模式

(前5種也稱為異常處理模式,即除了系統模式)

2.特權模式允許對cpsr的完全讀/寫訪問;與些相反,非特權模式只允許對cpsr的控制域進行讀訪問,但允許對條件標誌的讀/寫訪問。

3.通過修改

cpsr

可以進入異常

msr cpsr_c,#(noint | svc32mode) //

從系統模式切換到管理模式

也可以在核心對異常或者中斷響應時由硬體切換到異常模式

使用者模式和系統模式不能由異常進入,也就是說要想進入系統模式,必須通過修改

cpsr

才能實現

msr cpsr_c,#(noint | sys32mode) //

從管理模式切換到系統模式 4.

當乙個異常發生時處理器總是切換到

arm狀態而黑

thumb

狀態5.

每一種異常與處理器的一種模式相對應,應用程式發生特定中斷時,處理器核心立即跳轉到向量表中的某個入口位址,執行相應的程式。每一種模式都有相對應的暫存器,保證引入引入異常時使用者模式下的暫存器不被破壞

當處理器訪問儲存器失敗時,進入資料訪問中止模式(abort);

中斷模式和快速中斷模式分別對arm處理器兩種不同級別的中斷作出響應;

處理器復位以後,進入管理模式,作業系統核心也通常處於這種模式;

系統模式是一種特殊的使用者模式主要供作業系統的任務使用,允許對cpsr的完全讀/寫訪問;

當處理器遇到沒有定義的指令或處理器不支援該指令時,進入未定義模式;

使用者模式執行應用程式。

6.特權模式可以訪問系統的所有資源,也可以在各個模式之間進行切換

7.各種異常模式有自己的暫存器組,使用者模式和系統模式的暫存器組是一樣的

,所以系統模式可以使用者狀態下相應的暫存器了,而不是使用異常模式下相應的暫存器,這樣就可以保證當異常中斷發生時任務的狀態不被破壞

。使用者模式通過異常可以進入異常模式,但是由使用者模式進入系統模式並不是通過異常實現的。 8.

需要任務保護的應用程式通常在使用者模式下執行。 有些嵌入式應用程式可能完全執行在超級使用者模式或系統模式下。進入除使用者模式之外的模式是為了處理異常或訪問特許資源。

在這些模式下,程式可以訪問所有的系統資源,也可以任意地進行處理器模式的切換。其中除了系統模式外的其他5種特權模式又稱為異常模式。處理器模式可以通過軟體來切換,在arm linux作業系統中,只有執行在核心態的程式才有可能更改處理器模式,使用者態的程式是不能訪問受作業系統保護的系統資源的,更不能直接進行處理器模式的切換。當需要處理器模式切換的時候,使用者態的程式可以中斷,核心態的中斷處理程式開始響應並做出處理。

以上7種模式對應了系統中的中斷向量表,這在移植作業系統的時候很重要。系統中所有的排程都是圍繞著中斷向量表展開的,在不用作業系統的系統中也就是通常所謂的裸機系統程式中,對於中斷向量表的處理也很關鍵。這個向量表一般載入在cpu復位執行的開始位址的一段空間。在arm linux作業系統中,boot loader程式的移植中需要考慮這些問題,而一旦boot loader移植成功,執行起來以後,開發人員就不需要再考慮這個問題了。

作業系統實驗一 處理器管理

作業系統實驗一 處理器管理 實驗報告 一 實驗目的 1 加深對處理機排程的作用和工作原理的理解。2 進一步認識併發執行的實質。二 實驗要求 本實驗要求用高階語言,模擬在單處理器情況下,採用多個排程演算法,對n個程序進行程序排程。語言自選。並完成實驗報告。三 實驗內容 在採用多道程式設計的系統中,往往...

作業系統實驗一 處理器管理

一 實驗目的 1 加深對處理機排程的作用和工作原理的理解。2 進一步認識併發執行的實質。二 實驗要求 本實驗要求用高階語言,模擬在單處理器情況下,採用多個排程演算法,對n個程序進行程序排程。語言自選。並完成實驗報告。三 實驗內容 在採用多道程式設計的系統中,往往有若干個程序同時處於就緒狀態。當就緒狀...

統一處理異常

1.controlleradvice 註解定義全域性異常處理類 controlleradvice public class globalexceptionhandler 2.exceptionhandler 註解宣告異常處理方法,註解的方法的引數列表裡,還可以宣告很多種型別的引數 controlle...