新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > s3c2410中斷異常處理流程

        s3c2410中斷異常處理流程

        作者: 時間:2011-12-05 來源:網絡 收藏

        模塊總共由以下寄存器構成

        SRCPND(SOURCE

        PENDING REGISTER)

        INTMOD(INTERRUPT MODE REGISTER)

        INTMSK(INTERRUPT MASK

        REGISTER)

        PRIORITY( PRIORITY REGISTER)

        INTPND(INTERRUPT PENDING

        REGISTER)

        INTOFFSET(INTERRUPT OFFSET REGISTER)

        SUBSRCPND (INTERRUPT SUB

        SOURCE PENDING)

        INTSUBMSK (INTERRUPT SUB MASK REGISTER)

        下面我將講解每個寄存器在一個中所扮演的角色

        SRCPND/

        SUBSRCPND這兩個寄存器在功能上是相同的,它們是源引腳寄存器,在一個中斷中,中斷信號傳進中斷處理模塊后首先遇到的就是SRCPND/

        SUBSRCPND,這兩個寄存器的作用是用于標示出哪個中斷請求被觸發。SRCPND的有效位為32,SUBSRCPND

        的有效位為11,它們中的每一位分別代表一個中斷源。SRCPND為主中斷源引腳寄存器,SUBSRCPND為副中斷源引腳寄存器。

        這里列舉出SRCPND的各個位信息:

        每個位的初始值皆為0。假設現在系統觸發了TIMER0中斷,則第10bit將被置1,代表TIMER0中斷被觸發,該中斷請求即將被處理(若該中斷沒有被屏蔽的話)。SUBSRCPND情況與SRCPND相同,這里就不多講了。

        INTMOD寄存器有效位為32位,每一位與SRCPND中各位相對應,它的作用是指定該位相應的中斷源處理模式(IRQ還是FIQ)。若某位為0,則該位相對應的中斷按IRQ模式處理,為1則以FIQ模式進行處理,該寄存器初始化值為0x00000000,即所有中斷皆以IRQ模式進行處理。(詳細請參考操作手冊)。

        INTMSK/ INTSUBMSK

        寄存器為中斷屏蔽寄存器

        ,INTMSK為主中斷屏蔽寄存器,INTSUBMSK為副中斷屏蔽寄存器。INTMSK有效位為32,INTSUBMSK有效位為11,這兩個寄存器各個位與SRCPND和SUBSRCPND分別對應。它們的作用是決定該位相應的中斷請求是否被處理。若某位被設置為1,則該位相對應的中斷產生后將被忽略(CPU不處理該中斷請求),設置為0則對其進行處理。這兩個寄存器初始化后的值是0xFFFFFFFF和0x7FF,既默認情況下所有的中斷都是被屏蔽的。

        到目前為止我們總共講解了SRCPND,INTMOD,INTMSK,SUBSRCPND,INTSUBMSK

        五個寄存器,在繼續講解PRIORITY寄存器之前我們先來看一張圖。

        先弄清楚一點,現在要討論的是一個中斷優先級的判斷問題。為什么會有中斷有先級的問題呢?我們知道CPU某個時刻只能對一個中斷源進行中斷處理,如果現在有3個中斷同時發生了,那CPU要按什么順序處理這個3個中斷呢?這正是引入優先級判斷的原因所在,通過優先級判斷,CPU可以按某種順序逐個處理中斷請求。3sc2410的優先級判斷分為兩級。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平远县| 桓台县| 江津市| 留坝县| 嫩江县| 郧西县| 佛坪县| 永德县| 通海县| 北海市| 五大连池市| 西乡县| 凭祥市| 西乌珠穆沁旗| 金门县| 东港市| 水城县| 沛县| 武定县| 赣榆县| 津市市| 莎车县| 临西县| 三明市| 茶陵县| 称多县| 宝坻区| 东台市| 义乌市| 罗江县| 凤冈县| 云南省| 柞水县| 赤水市| 阳江市| 内黄县| 化德县| 日土县| 亳州市| 镇雄县| 沭阳县|