反常和中止
1.ARM 處理器復位後,處理器硬體將進行如下操作: (1) 強制進入管理形式; (2) 強制進入到 ARM 狀況; (3) 跳轉到絕對地址 PC=0x00000000 出履行; (4) 制止 IRQ 中止和 FIQ 中止。 復位後 CPSR 中最後 4 位狀況為 0011,而且進入管理形式,履行操作體系程式, 一般用做對體系的初始化,然後切換到使用者形式,開端履行正常的使用者程式,切 換到使用者形式能夠運用如下程式: MRS R0,CPSR ;讀程式狀況暫存器 BIC R0,R0,#03 ;把末兩位清零 MSR CPSR_c ,R0 ;把修改後的值載入給狀況暫存器,切換結束 ADD R1,R2,R3 ;使用者程式
2.未界說反常 . ARM 處理器中有許多沒有界說的程式碼,因為 ARM 運用 32 位程式碼,包含 2 的 31 次冪種。所以 ARM 指令集不能用盡一切的程式碼。 ARM 的未界說反常有兩種狀況: (1) 遇到一條無法履行的指令,此指令沒有界說; (2) 履行一條協處理器的操作指令,在正常狀況下,協處理器應該應對,可是 沒有,可能是因為攪擾等原因。 當 發 生 此 異 常 時 , 處 理 器 硬 件 響 應 中 斷 , 可是一般狀況下是不期望發作反常的,如果是因為攪擾引起的反常,那麼在 反常中止處理中有一段專門的程式,讓程式回來再重新履行該條指令,以判 斷反常是否是由攪擾引起。 當然也要留意哪種微控制器應該運用哪種適宜的指令集版別,因為仍是約 有差異的,不然某些編譯經過的指令也不能履行。
3. 軟體中止反常 軟體中止反常是由指令 SWI 引起的, 程式履行這一條指令後, 進入反常中止。 處理器響應中止,硬體履行圖如下: 軟體中止處理程式完成後,運用下列回來指令回來到原中止處: MOVS PC , R14 軟體中止反常把程式匯入管理形式,而子程式呼叫歸於使用者形式。
4. 預取指中止反常 。。。 。。 預取指中止反常和未界說指令反常都是因為不正常的指令中國產引起,可是也 有差異: (1) 未界說指令反常是內部反常中止,而他是外部訊號引起的反常中止; (2) 他並沒有成功地獲得一條指令。 他中止回來時,應該履行指令:SUBS PC , R14 , #4
5.資料中止反常 . 。。。 。。。
6.中止懇求(IRQ)反常 . 在 ARM 處理器中,有一個輸入邏輯 nIRQ 稱為中止懇求訊號,這個輸入信 號是由 ARM 處理器外圍操控模組(片內)操控,當有滿意中止條件的事情發作 時, 外圍操控模組向 ARM 處理器發錯 IRQ 訊號, ARM 處理器進入反常, 使 IRQ 中止是常用的中止,就像 51 系列微控制器中定時器中止、串列埠中止、外部中止等。 中 斷 可 以 通 過 CPSR[7] 來 屏 蔽 。 IRQ 完成中止處理後, 程式應該履行下列指令回來到原中止處: SUBS PC , R14 , #4
7. 快速中止(FIQ)懇求反常 在 ARM 處理器中,有一個輸入邏輯 nFIQ 稱為中止懇求訊號,這個輸入信 號是由 ARM 處理器外圍操控模組(片內)操控,當有滿意中止條件的事情發作 時, 外圍操控模組向 ARM 處理器發錯 FIQ 訊號, ARM 處理器進入反常。 使 FIQ 中止能夠經過 CPSR[6]來遮蔽。 留意:進入反常會引起處理器形式變換。
反常和中止
1.ARM 處理器復位後,處理器硬體將進行如下操作: (1) 強制進入管理形式; (2) 強制進入到 ARM 狀況; (3) 跳轉到絕對地址 PC=0x00000000 出履行; (4) 制止 IRQ 中止和 FIQ 中止。 復位後 CPSR 中最後 4 位狀況為 0011,而且進入管理形式,履行操作體系程式, 一般用做對體系的初始化,然後切換到使用者形式,開端履行正常的使用者程式,切 換到使用者形式能夠運用如下程式: MRS R0,CPSR ;讀程式狀況暫存器 BIC R0,R0,#03 ;把末兩位清零 MSR CPSR_c ,R0 ;把修改後的值載入給狀況暫存器,切換結束 ADD R1,R2,R3 ;使用者程式
2.未界說反常 . ARM 處理器中有許多沒有界說的程式碼,因為 ARM 運用 32 位程式碼,包含 2 的 31 次冪種。所以 ARM 指令集不能用盡一切的程式碼。 ARM 的未界說反常有兩種狀況: (1) 遇到一條無法履行的指令,此指令沒有界說; (2) 履行一條協處理器的操作指令,在正常狀況下,協處理器應該應對,可是 沒有,可能是因為攪擾等原因。 當 發 生 此 異 常 時 , 處 理 器 硬 件 響 應 中 斷 , 可是一般狀況下是不期望發作反常的,如果是因為攪擾引起的反常,那麼在 反常中止處理中有一段專門的程式,讓程式回來再重新履行該條指令,以判 斷反常是否是由攪擾引起。 當然也要留意哪種微控制器應該運用哪種適宜的指令集版別,因為仍是約 有差異的,不然某些編譯經過的指令也不能履行。
3. 軟體中止反常 軟體中止反常是由指令 SWI 引起的, 程式履行這一條指令後, 進入反常中止。 處理器響應中止,硬體履行圖如下: 軟體中止處理程式完成後,運用下列回來指令回來到原中止處: MOVS PC , R14 軟體中止反常把程式匯入管理形式,而子程式呼叫歸於使用者形式。
4. 預取指中止反常 。。。 。。 預取指中止反常和未界說指令反常都是因為不正常的指令中國產引起,可是也 有差異: (1) 未界說指令反常是內部反常中止,而他是外部訊號引起的反常中止; (2) 他並沒有成功地獲得一條指令。 他中止回來時,應該履行指令:SUBS PC , R14 , #4
5.資料中止反常 . 。。。 。。。
6.中止懇求(IRQ)反常 . 在 ARM 處理器中,有一個輸入邏輯 nIRQ 稱為中止懇求訊號,這個輸入信 號是由 ARM 處理器外圍操控模組(片內)操控,當有滿意中止條件的事情發作 時, 外圍操控模組向 ARM 處理器發錯 IRQ 訊號, ARM 處理器進入反常, 使 IRQ 中止是常用的中止,就像 51 系列微控制器中定時器中止、串列埠中止、外部中止等。 中 斷 可 以 通 過 CPSR[7] 來 屏 蔽 。 IRQ 完成中止處理後, 程式應該履行下列指令回來到原中止處: SUBS PC , R14 , #4
7. 快速中止(FIQ)懇求反常 在 ARM 處理器中,有一個輸入邏輯 nFIQ 稱為中止懇求訊號,這個輸入信 號是由 ARM 處理器外圍操控模組(片內)操控,當有滿意中止條件的事情發作 時, 外圍操控模組向 ARM 處理器發錯 FIQ 訊號, ARM 處理器進入反常。 使 FIQ 中止能夠經過 CPSR[6]來遮蔽。 留意:進入反常會引起處理器形式變換。