在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM中斷處理及狀態(tài)機嵌套實現(xiàn)

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

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

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

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

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

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

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

            EIC_IVR 中斷矢量寄存器
            IVR[31-16]:IRQ用戶寫入的在程序初始化時,是中斷服務的高16位地址
            IVR[15-0]:I在中斷請求接受后,從EIC_SIRn[31-16]的自定義服務程序地址拷貝過來

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

            EIC_IER0中斷啟動寄存器
            32為對應配置32路中斷的運行位


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

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

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

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



            評論


            技術專區(qū)

            關閉