arm架構的初始化過程步驟
阿新 • • 發佈:2019-01-27
ARM處理器模式
ARM微處理器支援7種執行模式,分別為:
使用者模式(usr):ARM處理器正常的程式執行狀態。
快速中斷模式(fiq):用於高速資料傳輸或通道處理。
外部中斷模式(irq):用於通用的中斷處理。
管理模式(svc):作業系統使用的保護模式。
資料訪問終止模式(abt):當資料或指令預取終止時進入該模式,可用於虛擬儲存及儲存保護。
系統模式(sys):執行具有特權的作業系統任務。
定義指令中止模式(und):當未定義的指令執行時進入該模式,可用於支援硬體協處理器的軟體模擬。
ARM處理器模式
ARM微處理器的執行模式可以通過軟體改變,也可以通過外部中斷或異常處理改變。大多數的應用程式執行在使用者模式下,當處理器執行在使用者模式下時,某些被保護的系統資源是不能被訪問的。
除使用者模式以外,其餘的所有6種模式稱之為非使用者模式,或特權模式;其中除去使用者模式和系統模式以外的5種又稱為異常模式,常用於處理中斷或異常,以及需要訪問受保護的系統資源等情況。
ARM暫存器
ARM處理器共有37個暫存器。其中包括:31個通用暫存器,包括程式計數器(PC)在內。這些暫存器都是32位暫存器。以及6個32位狀態暫存器。
關於暫存器這裡就不詳細介紹了,有興趣的人可以上網找找,很多這方面的資料。
異常處理
當正常的程式執行流程發生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當前處理器的狀態必須保留,這樣當異常處理完成之後,當前程式可以繼續執行。處理器允許多個異常同時發生,它們將會按固定的優先順序進行處理。當一個異常出現以後,ARM微處理器會執行以下幾步操作:
進入異常處理的基本步驟:
將下一條指令的地址存入相應連線暫存器LR,以便程式在處理異常返回時能從正確的位置重新開始執行。將CPSR複製到相應的SPSR中。根據異常型別,強制設定CPSR的執行模式位。
強制PC從相關的異常向量地址取下一條指令執行,從而跳轉到相應的異常處理程式處。如果異常發生時,處理器處於Thumb狀態,則當異常向量地址載入入PC時,處理器自動切換到ARM狀態。
ARM微處理器對異常的響應過程用偽碼可以描述為:
R14_ = Return Link
SPSR_= CPSR
CPSR[4:0] = Exception Mode Number
CPSR[5] = 0 ;當運行於 ARM 工作狀態時
If == Reset or FIQ then;當響應 FIQ 異常時,禁止新的 FIQ 異常
CPSR[6] = 1
PSR[7] = 1
PC = Exception Vector Address
異常處理完畢之後,ARM微處理器會執行以下幾步操作從異常返回:
將連線暫存器LR的值減去相應的偏移量後送到PC中。
將SPSR複製回CPSR中。
若在進入異常處理時設定了中斷禁止位,要在此清除
ARM微處理器支援7種執行模式,分別為:
使用者模式(usr):ARM處理器正常的程式執行狀態。
快速中斷模式(fiq):用於高速資料傳輸或通道處理。
外部中斷模式(irq):用於通用的中斷處理。
管理模式(svc):作業系統使用的保護模式。
資料訪問終止模式(abt):當資料或指令預取終止時進入該模式,可用於虛擬儲存及儲存保護。
系統模式(sys):執行具有特權的作業系統任務。
定義指令中止模式(und):當未定義的指令執行時進入該模式,可用於支援硬體協處理器的軟體模擬。
ARM處理器模式
ARM微處理器的執行模式可以通過軟體改變,也可以通過外部中斷或異常處理改變。大多數的應用程式執行在使用者模式下,當處理器執行在使用者模式下時,某些被保護的系統資源是不能被訪問的。
除使用者模式以外,其餘的所有6種模式稱之為非使用者模式,或特權模式;其中除去使用者模式和系統模式以外的5種又稱為異常模式,常用於處理中斷或異常,以及需要訪問受保護的系統資源等情況。
ARM暫存器
ARM處理器共有37個暫存器。其中包括:31個通用暫存器,包括程式計數器(PC)在內。這些暫存器都是32位暫存器。以及6個32位狀態暫存器。
關於暫存器這裡就不詳細介紹了,有興趣的人可以上網找找,很多這方面的資料。
異常處理
當正常的程式執行流程發生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當前處理器的狀態必須保留,這樣當異常處理完成之後,當前程式可以繼續執行。處理器允許多個異常同時發生,它們將會按固定的優先順序進行處理。當一個異常出現以後,ARM微處理器會執行以下幾步操作:
進入異常處理的基本步驟:
將下一條指令的地址存入相應連線暫存器LR,以便程式在處理異常返回時能從正確的位置重新開始執行。將CPSR複製到相應的SPSR中。根據異常型別,強制設定CPSR的執行模式位。
強制PC從相關的異常向量地址取下一條指令執行,從而跳轉到相應的異常處理程式處。如果異常發生時,處理器處於Thumb狀態,則當異常向量地址載入入PC時,處理器自動切換到ARM狀態。
ARM微處理器對異常的響應過程用偽碼可以描述為:
R14_ = Return Link
SPSR_= CPSR
CPSR[4:0] = Exception Mode Number
CPSR[5] = 0 ;當運行於 ARM 工作狀態時
If == Reset or FIQ then;當響應 FIQ 異常時,禁止新的 FIQ 異常
CPSR[6] = 1
PSR[7] = 1
PC = Exception Vector Address
異常處理完畢之後,ARM微處理器會執行以下幾步操作從異常返回:
將連線暫存器LR的值減去相應的偏移量後送到PC中。
將SPSR複製回CPSR中。
若在進入異常處理時設定了中斷禁止位,要在此清除