Android Python java wordpress 开源 Firefox 云计算 微软 centos php google apache 编程 linux Ubuntu shell nginx 程序员 Windows mysql

ARM处理器的工作模式

 ARM微處理器可以在工作中隨時切換狀態,切換工作狀態不會影響工作模式和寄存器的內容。但是ARM體系要求在處理器啟動的時候應該處理ARM狀態。ARM處理器使用操作寄存器的0位表示工作狀態,取值是1時代表thumb狀態。取值是0時代表ARM狀態。可以使用BX指令切換狀態。當處理器啟動的時候操作寄存器取值為0.保證了默認進入ARM狀態。

 ARM處理器支持7中工作狀態,這對一些通用的處理器來說確實有點多,不過,通過分析發現,ARM的工作模式大多都是處理外部中斷和異常的。只不過是對異常和終端的分類比較詳細。

 系統軟件和外部中斷都可以改變ARM處理器的工作模式,應用程序運行在用戶模式下,此時,一些被保護的資源是不能被用戶訪問的。除用戶模式外,ARM處理器會進入ING工作狀態。ARM處理器允許用時產生多個異常,處理器會按照優先順序來處理。處理器受到新的異常後,會根據異常的情況把下一條指令的地址存入LR寄存器。把CPSR寄存器內容復制到SPSR寄存器中,然後根據異常類型設置CPSR的運行模式。處理器進入對應的異常模式。如果異常處理程序設置了終端的屏蔽。則需要清除,經過這些步驟,處理器返回異常處理前的工作模式。

(1)用戶模式:

用戶模式是用戶程序的工作模式,它運行在操作系統的用戶態,它沒有權限去操作其它硬件資源,只能執行處理自己的數據,也不能切換到其它模式下,要想訪問硬件資源或切換到其它模式只能通過軟中斷或產生異常。

(2)系統模式:

系統模式是特權模式,不受用戶模式的限制。用戶模式和系統模式共用一套寄存器,操作系統在該模式下可以方便的訪問用戶模式的寄存器,而且操作系統的一些特權任務可以使用這個模式訪問一些受控的資源。

 說明:用戶模式與系統模式兩者使用相同的寄存器,都沒有SPSR(Saved Program Statement Register,已保存程序狀態寄存器),但系統模式比用戶模式有更高的權限,可以訪問所有系統資源。

(3)一般中斷模式:

一般中斷模式也叫普通中斷模式,用於處理一般的中斷請求,通常在硬件產生中斷信號之後自動進入該模式,該模式為特權模式,可以自由訪問系統硬件資源。

(4)快速中斷模式:

快速中斷模式是相對一般中斷模式而言的,它是用來處理對時間要求比較緊急的中斷請求,主要用於高速數據傳輸及通道處理中。

(5)管理模式(Supervisor,SVC) :

管理模式是CPU上電後默認模式,因此在該模式下主要用來做系統的初始化,軟中斷處理也在該模式下。當用戶模式下的用戶程序請求使用硬件資源時,通過軟件中斷進入該模式。

說明:系統復位或開機、軟中斷時進入到SVC模式下。

(6)終止模式:

中止模式用於支持虛擬內存或存儲器保護,當用戶程序訪問非法地址,沒有權限讀取的內存地址時,會進入該模式,Linux下編程時經常出現的segment fault通常都是在該模式下拋出返回的。

(7)未定義模式:

未定義模式用於支持硬件協處理器的軟件仿真,CPU在指令的譯碼階段不能識別該指令操作時,會進入未定義模式。

延伸阅读

  • 抱歉,暂无相关内容!

评论