新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TQ2440國(guó)嵌學(xué)院gboot-異常向量表

TQ2440國(guó)嵌學(xué)院gboot-異常向量表

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
國(guó)嵌學(xué)院TQ2440開發(fā)板gboot設(shè)計(jì)-基本框架設(shè)計(jì)

本文引用地址:http://2s4d.com/article/201611/321976.htm

異常:指中斷,在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)移到“子程序名”處開始執(zhí)行。兩者的不同之處在于BL指令在轉(zhuǎn)移到子程序執(zhí)行之前,將其下一條指令的地址拷貝到R14(LR,鏈接寄存器)。由于BL指令保存了下條指令的地址,因此使用指令“MOV PC ,LR”即可實(shí)現(xiàn)子程序的返回。而B指令則無(wú)法實(shí)現(xiàn)子程序的返回,只能實(shí)現(xiàn)單純的跳轉(zhuǎn)。用戶在編程的時(shí)候,可根據(jù)具體應(yīng)用選用合適的子程序調(diào)用語(yǔ)句。

②ARM指令ldr

代碼如下:

.text//宏指明代碼段

.global _start//global偽指令聲明_start是全局符號(hào)

_start:

b reset//對(duì)應(yīng)地址0x00000000

ldr pc,_undefined_interrupt//對(duì)應(yīng)地址0x00000004

ldr pc,_software_interrupt//對(duì)應(yīng)地址0x00000008

ldr pc,_prefetch_abort//對(duì)應(yīng)地址0x0000000C

ldr pc,_data_abort//對(duì)應(yīng)地址0x00000010

ldr pc,_not_used//對(duì)應(yīng)地址0x00000014

ldr pc,_irq//對(duì)應(yīng)地址0x00000018

ldr pc,_fiq//對(duì)應(yīng)地址0x0000001C

_undefined_interrupt:.word undefined_interrupt

_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

undefined_interrupt:

nop

software_interrupt:

nop

prefetch_abort:

nop

data_abort:

nop

not_used:

nop

irq:

nop

fiq:

nop
reset:

nop



評(píng)論


技術(shù)專區(qū)

關(guān)閉