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