uboot-step 1 設(shè)置異常向量表

uboot-step 1 設(shè)置異常向量表

何為異常

異常是指處理器的正常運行被內(nèi)部或者外部事件所打斷導(dǎo)致處理器去處理這個事件的現(xiàn)象,例如一個外部中斷的產(chǎn)生或者是嘗試去執(zhí)行一個未定義的指令等都會產(chǎn)生異常,ARM處理器的異常主要有以下幾種:

ARM exception

產(chǎn)生異常做什么

處理器一旦產(chǎn)生了異常,便會去處理這個異常,但是它去哪里去處理這個異常呢,這就是異常向量表的作用了,ARM 公司規(guī)定了這些異常的入口地址,如上表所示,當(dāng)產(chǎn)生異常后,處理器就會去對應(yīng)的異常地址來執(zhí)行相關(guān)代碼去處理異常
由于這些異常地址間隔為4個字節(jié),根本放不下異常的處理代碼,因此在每個 地址處放置了一個32位的跳轉(zhuǎn)指令,就形成了異常向量表,ldr指令是將操作數(shù)2地址處的值賦給操作數(shù)1 , .word 表示占用一個32位的存儲區(qū),來存儲真正的跳轉(zhuǎn)地址(標(biāo)號)

.globl _start     @定義全局標(biāo)號
_start: b   reset @ 相對跳轉(zhuǎn) 
ldr pc, _undefined_instruction @將_undefined_insttuction 地址(標(biāo)號)處存儲的值(也是一個地址,真正的異常處理代碼所在)賦給pc指針
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq

_undefined_instruction:
    .word undefined_instruction
_software_interrupt:
    .word software_interrupt
_prefetch_abort:
    .word prefetch_abort
_data_abort:
    .word data_abort
_not_used:
    .word not_used
_irq:
    .word irq
_fiq:
    .word fiq

underfined_instruction: xxxx
software_interrupt: xxx
prefetch_abort : xxxx
data_abort : xxxx
not_used: xxx
irq: xxx
fiq: xxx

此去經(jīng)年
zhaiyk@sina.cn
August 1, 2016

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容