<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM中斷處理及狀態(tài)機嵌套實(shí)現

ARM中斷處理及狀態(tài)機嵌套實(shí)現

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏
1.ARM7提供兩種級別的中斷, FIQ(Fast Interrupt Request快中斷) 一般中斷低速反應中斷IRQ。

所有的中斷請求一旦產(chǎn)生則中斷反應會(huì )經(jīng)過(guò)三個(gè)步驟
a.輸入階段這個(gè)邏輯可以根據中斷源被實(shí)現,需要0-2個(gè)時(shí)鐘周期
b.EIC自身處理 2個(gè)時(shí)鐘周期
c.ARM7的邏輯處理
2.EIC Enhanced Interrupt Controller增強型中斷控制器
EIC硬件處理多路中斷,中斷優(yōu)先運算和矢能。
a.32路可屏蔽的中斷,映射到ARM 的CPU中斷請求總線(xiàn)
b.每路16級可編程優(yōu)先級映射IRQ
c.硬件支持最大16個(gè)中斷嵌套
d.2路可屏蔽的中斷通過(guò)FIQ中斷請求總線(xiàn)
e.在0x18處的寄存器裝載的是最高優(yōu)先及中斷用戶(hù)自定義的中斷處理地址
f.16個(gè)XTI塊外部中斷
3.中斷處理過(guò)程
1.檢查相關(guān)中斷的請求屏蔽位
2.比較所有中斷請求的優(yōu)先級,IRQ當前中斷是否優(yōu)先級高于當前存儲的中斷。
3.自動(dòng)裝載EIC_SIRn[31:16]位用戶(hù)自定義地址進(jìn)入EIC_IVR[15:0]中
4.手動(dòng)裝載用戶(hù)中斷處理高16位地址進(jìn)入EIC_IVR[31:16]
5.當新產(chǎn)生一個(gè)中斷則保存先前的中斷優(yōu)先級進(jìn)入優(yōu)先棧中。
6.當新的中斷被接受則用新的優(yōu)先級更新當前中斷優(yōu)先級寄存器

EIC_ICR 中斷控制寄存器
31-2保留
1. FIQ_EN:RW是FIQ允許的標志位置1開(kāi)啟置0關(guān)閉
0.IRQ_EN:RW是IRQ允許的標志位置1開(kāi)啟置0關(guān)閉

本文引用地址:http://dyxdggzs.com/article/201611/318429.htm

EIC_CICR 中斷頻道控制寄存器
31-5保留
4-0.CIC[4:0]:R是當前中斷的序號,是第幾號中斷由中斷請求發(fā)生時(shí)硬件寫(xiě)入

EIC_CIPR當前中斷優(yōu)先級寄存器
31-4保留
3-0 CIP[3:0]:rw是當前中斷的優(yōu)先級,在IRQ總線(xiàn)上會(huì )自動(dòng)探測進(jìn)入的中斷請求優(yōu)先級
和當前的優(yōu)先級的高低。

EIC_IVR 中斷矢量寄存器
IVR[31-16]:IRQ用戶(hù)寫(xiě)入的在程序初始化時(shí),是中斷服務(wù)的高16位地址
IVR[15-0]:I在中斷請求接受后,從EIC_SIRn[31-16]的自定義服務(wù)程序地址拷貝過(guò)來(lái)

EIC_FIR
3-2FIP[3:2] 是FIQ的中斷頻道
1-0FIE[1:0] 是FIQ的中斷允許標志位

EIC_IER0中斷啟動(dòng)寄存器
32為對應配置32路中斷的運行位


EIC_IEP0中斷啟動(dòng)寄存器
32對應配置32路中斷的中斷掛靠位根據IER0中設置同步。
note:只讀/寫(xiě)零的寄存器,在退出中斷服務(wù)后ISR,軟件要清除相應的掛靠位,
才能保證下次不繼續進(jìn)入這個(gè)中斷,這個(gè)清除操作帶來(lái)一個(gè)中斷結束中斷
并且保證有已經(jīng)嵌套的中斷正常彈出,順利執行新的中斷。
這個(gè)中斷位要注意不能隨便清除如果清除了不是期望的中斷位的話(huà),導致
嵌套堆棧永不恢復。

EIC_SIRn源中斷寄存器
SIV[31-16]是自定義服務(wù)地址偏移
15-4保留
3-0優(yōu)先級

FSM: 有限狀態(tài)機制
FSM分為兩種狀態(tài)READY和WAIT,這兩種狀態(tài)根據ARM7TDMI的nIRQ總線(xiàn)探測出來(lái)
如果全局中斷允許位IRQ_EN標志被清除,nIRQ無(wú)條件的的檢測為高.在reset的
時(shí)候FSM=READY也就是nIRQ=HIGH,當優(yōu)先解碼確定了一個(gè)新的中斷,FSM=WAIT
并且nIRQ=LOW。如果要轉到就緒狀態(tài)必須強制讀EIC_IVR寄存器內容即處理中
斷服務(wù)或者rest EIC單元。讀EIC_IVR寄存器改變狀態(tài)機狀態(tài)同時(shí)釋放EIC的
nIRQ總線(xiàn)。

STACK:堆棧
ARM支持15個(gè)事件嵌套,嵌套的事件信息均在需要的時(shí)候被壓入彈出堆棧。
事件的信息包括 中斷頻道EIC_CICR interrupt channel,中斷優(yōu)先級EIC_CIPR
interrupt priority.
當FSM=WAIT即狀態(tài)機在等待狀態(tài)也就是解碼出一個(gè)最高優(yōu)先中斷源時(shí),直接來(lái)讀取
EIC_IVR寄存器會(huì )產(chǎn)生內部標志,需要把EIC_CICR EIC_CIPR入棧,當做完入棧工作
后才在第二時(shí)鐘周期讀取EIC_IVR進(jìn)行中斷服務(wù),讀完后內部標志清除即需要把當前
的EIC_CICR EIC_CIPR給出棧。 然后更新當前中斷源和當前中斷優(yōu)先寄存器。
當FSM=READY的時(shí)候EIC_IVR的訪(fǎng)問(wèn)時(shí)候是不產(chǎn)生內部標志來(lái)進(jìn)行嵌套的。
在嵌套時(shí)當前中斷服務(wù)完成后必須清除相應標志位(具體看EIC_IEP0介紹)
然后處理上一個(gè)被壓棧的中斷。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>