TQ2440國(guó)嵌學(xué)院gboot-異常向量表
異常:指中斷,在CPU工作的時(shí)候,有突然的事件需要CPU去處理,此時(shí)CPU停止正在的工作,去處理突然的事情,待處理完畢后重新返回。
異常向量:是指異常事件對(duì)應(yīng)的固定地址,CPU通過(guò)對(duì)應(yīng)的地址去處理事件。
在ARM Architecture Reference Manual手冊(cè)中,搜索關(guān)鍵字Exceptions,找到如下對(duì)應(yīng)的7種異常:
ARM的7種異常
1.Reset(復(fù)位)
2.Undefined insrtuction(未定義的命令)
3.Software interrupt(軟中斷)
4.Prefetch Abort(預(yù)取指令異常)
5.Data Abort(數(shù)據(jù)訪問(wèn)異常)
6.IRQ(中斷)
7.FIQ(快速中斷)
ARM指令解析:
①ARM指令B和BL的差異
B或BL指令引起處理器轉(zhuǎn)移到“子程序名”處開(kāi)始執(zhí)行。兩者的不同之處在于BL指令在轉(zhuǎn)移到子程序執(zhí)行之前,將其下一條指令的地址拷貝到R14(LR,鏈接寄存器)。由于BL指令保存了下條指令的地址,因此使用指令“MOV PC ,LR”即可實(shí)現(xiàn)子程序的返回。而B(niǎo)指令則無(wú)法實(shí)現(xiàn)子程序的返回,只能實(shí)現(xiàn)單純的跳轉(zhuǎn)。用戶(hù)在編程的時(shí)候,可根據(jù)具體應(yīng)用選用合適的子程序調(diào)用語(yǔ)句。
②ARM指令ldr
③
代碼如下:
.text
.global _start
_start:
_undefined_interrupt:
_software_interrupt:
_prefetch_abort:
_data_abort:
_not_used:
_irq:
_fiq:
undefined_interrupt:
software_interrupt:
prefetch_abort:
data_abort:
not_used:
irq:
fiq:
reset:
評(píng)論