概念:正常的程式執行過程中發生暫時的停止稱為異常,如果發現異常情況,將會進行異常處理
作用:快速響應使用者的行為,提高cpu的響應能力
異常型別:
異常處理的三個步驟:
1、保護現場:
工作模式儲存:cpsr-->spsr(自動完成)自能儲存在spsr中,其他暫存器不行
資料的儲存:stmfd sp!,(需手動完成)
3、恢復現場:
sp!-->r0-r12(還原資料)
spsr-->cpsr(還原工作狀態)
pc-->lr-4(pc指向的是正在取指的那條指令,與真正執行的指令相差8位元組,與正在解碼的指令相差4位元組)所以需要減4:參考流水線結構
具體的操作**:
irq_handle:ldr sp,=0xd0037180
//(指明棧irq棧區的起始位址)memory mmap
sub lr,lr,#4
stmfd sp!, //
防止bl 執行後pc指標被覆蓋,將lr放到棧中
bl 真正的中斷處理函式,自動返回,恢復pc
ldmfd sp!,^//
加了『^』表示自動恢復cpsr;
上圖為中斷向量表:程式設計師使用的主要是irq和fiq;
fiq快速響應的原因是:
1、優先順序比irq更高
2、擁有比irq更多的獨立暫存器
ARM異常處理
arm支援7種型別的異常,它們是 復位異常 未定義指令異常 軟中斷指令異常 預取指令異常 資料中止訪問異常 中斷異常 快速中斷異常 arm異常向量表 當異常發生時,arm將做如下事情 1 將異常發生處下條指令位址儲存到相應工作模式下lr暫存器中 2 將cpsr暫存器值複製到相應異常模式下的spsr暫...
ARM異常處理流程
在學習與開發arm處理器的過程中,乙個不能繞開的話題就是異常處理流程。它在arm的體系架構中,佔據著不可動搖的重要地位。此處就以coterx a系列的arm處理器簡單分析一下異常中斷處理流程。說異常處理流程之前,我們先說一下arm處理器的工作模式和異常源。在coterx a系列之前的arm處理器,一...
arm異常處理流程
1.什麼是異常?cpu正常執行的時候,出現一些突發事件,我們的cpu就必須暫停當前程式的執行,去處理這些異常 2.cpu中有哪些異常?1.reset 上電 重啟 2.undef 流水線中某個非法指令到達執行狀態的時候執行 3.swi 軟中斷指令 4.prefetch 當乙個指令被從記憶體中預取時,由...