什麼是異常?程序員
(1)正常工做以外的流程都叫異常架構
(2)異常會打斷正在執行的工做,而且通常咱們但願異常處理完成後繼續回來執行原 來的工做異步
(3)中斷是異常的一種fetch
知識點回顧:設計
ARM 有7個基本工做模式:orm
User : 非特權模式,大部分任務執行在這種模式內存
-----------------------------------------------------------------------------------------------同步
FIQ : 當一個高優先級(fast) 中斷產生時將會進入這種模式it
IRQ : 當一個低優先級(normal) 中斷產生時將會進入這種模式ast
Supervisor :當復位或軟中斷指令執行時將會進入這種模式
Abort : 當存取異常時將會進入這種模式
Undef : 當執行未定義指令時會進入這種模式
------------------------------------------------------------------------------------------------
System : 使用和User模式相同寄存器集的特權模式
小結:
(1)FIQ,IRQ,Supervisor,Abort ,Undef 五種都爲異常模式。
(2)同步 同步時鐘 ,異步 靠中斷(一種特殊的中斷)來實現
1.異常向量表
1.1特色:
(1)全部的CPU都有異常向量表,這是CPU設計時就設定好的,是硬件決定 的。
(2)當異常發生時,CPU會自動動做(PC跳轉到異常向量到處理異常,有時 伴有一些輔助動做)
(3)異常向量表是硬件向軟件提供的處理異常的支持。
1.2ARM的異常處理機制
1.21向量表:
(1)復位異常 0X00
(2)未定義異常 0X04
(3)軟中斷 0X08
(4)Prefetch Abort (預取指異常) 0X0C
(5)Data abort(數據訪問異常) 0X10
(6)Reserved(空) 0X14
(7)IRQ (外部中斷模式) 0X18
(8) FRQ (快速中斷模式) 0X1C
筆記:內存地址規劃
1.22處理機制
1.23當異常產生時:ARM core:
(1)拷貝 CPSR 到 SPSR_<mode>
(2)設置適當的 CPSR 位:
1.改變處理器狀態進入 ARM 態
2.改變處理器模式進入相應的異常模式
3.設置中斷禁止位禁止相應中斷 (若是須要)
(3)保存返回地址到 LR_<mode>
(4)設置 PC 爲相應的異常向量
1.24返回時, 異常處理須要:
(1)從 SPSR_<mode>恢復CPSR
(2)從LR_<mode>恢復PC
(3)Note:這些操做只能在 ARM 態執行.
1.25知識小結:
1.改變處理器狀態進入 ARM 態
T Bit
僅ARM xT架構支持
T = 0: 處理器處於 ARM 狀態
T = 1: 處理器處於 Th
2..改變處理器模式進入相應的異常模式
Mode位:
處理器模式位
3.設置中斷禁止位禁止相應中斷 (若是須要)
中斷禁止位:
I = 1: 禁止 IRQ.
F = 1: 禁止 FIQ.
總結:
(1)異常處理中有一些是硬件自動作的,有一些是程序員須要本身作的。須要搞清楚 哪些是須要本身作的,才知道如何寫代碼。
(2)以上說的是CPU設計時提供的異常向量表,通常成爲一級向量表。有些CPU爲 了支持多箇中斷,還會提供二級中斷向量表,處理思路相似於這裏說的一級中斷 向量表。