arm異常處理流程

2021-08-20 12:09:47 字數 1175 閱讀 3640

1. 什麼是異常?

cpu正常執行的時候,出現一些突發事件,我們的cpu就必須暫停當前程式的執行,去處理這些異常

2. cpu中有哪些異常?

1.reset       上電 重啟

2.undef      流水線中某個非法指令到達執行狀態的時候執行

3. swi         軟中斷指令

4.prefetch  當乙個指令被從記憶體中預取時,由於某種原因而失敗,如果它能到達執行狀態這個異常才會產生

5.data       如果乙個預取指令試圖訪問乙個非法的記憶體單元,這是異常產生

6.irq       通常的中斷

7 fiq          快速中斷

3. 異常會讓cpu進入什麼模式?

1.reset    -----》svc

2.undef  ------》undef模式

3. swi    -------》svc

4. prefetch----》abort

5. data    ----》abort

6. irq     ----》irq

7. fiq      ----》fiq

4. arm cpu異常處理流程

1)  拷貝 cpsr 到 spsr_:

2)  設定適當的 cpsr 位:                                

a)改變處理器狀態進入 arm 態  

b)改變處理器模式進入相應的異常模式

c)設定中斷禁止位禁止相應中斷 (如果需要)

3)  儲存返回位址到 lr_處理完異常,要能回去,繼續執行原來的**。

4)  設定 pc 為相應的異常向量表,異常的程式的入口,異常的入口位址,是固定的。      

返回時, 異常處理需要:【軟體操作】

一從 spsr_恢復cpsr

二 從lr_恢復pc

注1:這些操作只能在 arm 態執行.

注2:linux核心的異常向量表

d:\linux-3.14-fs4412\arch\arm\kernel\entry-armv.s

注3:  進入異常入口之後,:要儲存現場【r0-r12】,壓棧還原現場,【r0-r12】需要退棧。

ARM異常處理流程

在學習與開發arm處理器的過程中,乙個不能繞開的話題就是異常處理流程。它在arm的體系架構中,佔據著不可動搖的重要地位。此處就以coterx a系列的arm處理器簡單分析一下異常中斷處理流程。說異常處理流程之前,我們先說一下arm處理器的工作模式和異常源。在coterx a系列之前的arm處理器,一...

ARM異常處理

arm支援7種型別的異常,它們是 復位異常 未定義指令異常 軟中斷指令異常 預取指令異常 資料中止訪問異常 中斷異常 快速中斷異常 arm異常向量表 當異常發生時,arm將做如下事情 1 將異常發生處下條指令位址儲存到相應工作模式下lr暫存器中 2 將cpsr暫存器值複製到相應異常模式下的spsr暫...

arm 異常處理結構

概念 正常的程式執行過程中發生暫時的停止稱為異常,如果發現異常情況,將會進行異常處理 作用 快速響應使用者的行為,提高cpu的響應能力 異常型別 異常處理的三個步驟 1 保護現場 工作模式儲存 cpsr spsr 自動完成 自能儲存在spsr中,其他暫存器不行 資料的儲存 stmfd sp 需手動完...