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

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]在學習與開發(fā)ARM處理器的過程中,一個不能繞開的話題就是異常處理流程。它在ARM的體系架構中,占據(jù)著不可動搖的重要地位。此處就以Coterx-A系列的ARM處理器簡單分析一下異常中斷處理流程。說異常處


在學習與開發(fā)ARM處理器的過程中,一個不能繞開的話題就是異常處理流程。它在ARM的體系架構中,占據(jù)著不可動搖的重要地位。此處就以Coterx-A系列的ARM處理器簡單分析一下異常中斷處理流程。

說異常處理流程之前,我們先說一下ARM處理器的工作模式和異常源。

在Coterx-A系列之前的ARM處理器,一共有個基本工作模式:

User : 非特權模式,大部分任務執(zhí)行在這種模式;

FIQ : 當一個高優(yōu)先級(fast) 中斷產(chǎn)生時將會進入這種模式;

IRQ : 當一個低優(yōu)先級(normal) 中斷產(chǎn)生時將會進入這種模式;

Supervisor :當復位或軟中斷指令執(zhí)行時將會進入這種模式;

Abort : 當存取異常時將會進入這種模式;

Undef : 當執(zhí)行未定義指令時會進入這種模式;

System : 使用和User模式相同寄存器集的特權模式;

而Coterx-A系列處理器則多了一種工作模式:

Monitor : 是為了安全而擴展出的用于執(zhí)行安全監(jiān)控代碼的模式;

在Coterx-A處理器的8 種基本工作模式中,有6種異常處理模式:FIQ、IRQ、SVC、Abort、Undef、Monitor。ARM Core中定義了七種異常源,和其中的五種異常處理模式相對應。

簡單介紹完異常源和工作模式后,就分析一下異常處理流程。

我們先想一下現(xiàn)實生活中遇到的類似情況,看看我們是怎么處理的。假如我們現(xiàn)在正在聽歌,突然門鈴響了,我們怎么辦呢?首先把歌暫停一下,也就是保存當前正在播放的狀態(tài)。然后去開門看看是誰,忙完了,繼續(xù)回來聽歌??偨Y一下:突然情況發(fā)生時,保存當前狀態(tài),去處理突發(fā)事件,完成后,恢復保存的狀態(tài),繼續(xù)進行。

而在ARM內(nèi)核規(guī)定的異常處理流程也采用了類似的流程。

當異常產(chǎn)生時, ARM core:

拷貝 CPSR 到 SPSR_

設置適當?shù)?CPSR 位:

改變處理器狀態(tài)進入ARM態(tài)

改變處理器模式進入相應的異常模式

設置中斷禁止位禁止相應中斷 (如果需要)

保存返回地址到 LR_

設置 PC 為相應的異常向量

返回時, 異常處理需要:

從 SPSR_恢復CPSR

從LR_恢復PC

以上所有的操作都是在ARM態(tài)下進行的。大家看看這個流程是否符合我們從實際生活中所總結的流程。

異常發(fā)生時,ARM Core自動保存CPSR->SPSR(對應的異常模式下的SPSR寄存器)、保存返回地址->LR(對應的異常模式下的LR寄存器),這些操作都是為了保存現(xiàn)場,以便將來返回。而設置CPSR則是為了處理異常。保存的返回地址則是異常發(fā)生前正在執(zhí)行指令的下一條指令的地址,即此時的(pc-4)。

處理完成時,我們自己需要恢復CPSR、PC則是為了繼續(xù)執(zhí)行異常發(fā)生前的指令。

而ARM匯編中的跳轉(zhuǎn)指令的執(zhí)行也才用了同樣的流程。大家有興趣的話,可以自己編寫代碼調(diào)試,觀察現(xiàn)象。


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