日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]關(guān)于異常處理,分為三部分:1. ARM異常和模式:core處理異常時的操作,幾種模式介紹。2. Vector table:3. 異常優(yōu)先級4. lr偏移:幾種異常如何返回

關(guān)于異常處理,分為三部分:1. ARM異常和模式:core處理異常時的操作,幾種模式介紹。2. Vector table:3. 異常優(yōu)先級4. lr偏移:幾種異常如何返回

異常和中斷處理簡介

在嵌入式系統(tǒng)中異常處理是核心之一。高效的處理能夠極大的提升系統(tǒng)的性能。

ARM處理器一共有7種可以暫停指令的執(zhí)行序列的異常。

主要分為三個部分:

1. Exception handling

2. Interrupts

3. Interrupt handling schemes

今天我們主要介紹第一部分

Exception Handling

1.ARM Processor Exceptions And Modes

任何一種中斷模式都可以通過手動的修改cpsr的值來進(jìn)入。但是User和System模式是僅有的2個不能由相應(yīng)中斷進(jìn)入的模式,換句話說,我們必須要通過手動修改cpsr才能進(jìn)入。

當(dāng)一個異常產(chǎn)生的時候,core會自動進(jìn)行如下4步:

1. saves the cpsr to the spsr of the exception mode

2. saves the pc to the lr of the exception mode

3. sets the cpsr to the exception mode

4. sets the pc to the address of the exception handler

需要注意的是,當(dāng)異常產(chǎn)生的時候,ARM處理器總是會切換到ARM狀態(tài)。

2.Vector Table

handler定位在相應(yīng)內(nèi)存位置中,如下圖的IRQ,FIQ

0x00000018: 0xe59ffa38 IRQ ; ldr pc, [pc, #irq]

0x0000001c: 0xe59ffa38 FIQ ; ldr pc, [pc, #fiq]

3.Exception Priorities

4.Link Register Offset

如下三種從IRQ和FIQ異常處理返回的例子

例1:

handler

...

SUBS pc, r14, #4 ;pc = r14 -4

因為SUB后的S和pc作為目標(biāo)寄存器,cpsr的值會自動從spsr中恢復(fù)出來

例2:

handler

SUB r14, r14, #4 ;r14 -= 4

...

...

MOVS pc, r14

r14 = r14 -4, pc = r14 , cpsr =spsr(因為S)

例3:

handler

SUB r14, r14, #4 ; r14 = r14 - 4

STMFD r13!, {r0-r3, r14} ;store context

...

LDMFD r13!, {r0-r3, r14}^ ;return

STMFD,LDMFD 分別提供了pop/push的功能。STMFD sp!, {r0-r3, r14}就是依次將r14, r3, r2, r1放入棧中。LDMFD r13!, {r0-r3, r14}^則依次反向取出。^ 這個符號,則強(qiáng)制cpsr從spsr中恢復(fù)出來。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉