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 需手動完...