新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM S3C4510B系統中的異常中斷技術

        ARM S3C4510B系統中的異常中斷技術

        作者: 時間:2012-03-29 來源:網絡 收藏

        3.2 SWI的調用與返回

        對于SWI的調用要根據現場所處的處理器模式進行調用。通常用戶模式下調用SWI功能只需將處理器所需要的參數存放于寄存器中,然后調用相應功能號的功能。

        Mov r0,#80
        假設參數為#80
        swi 0X1
        SWI中斷立即數1

        由于SWI中斷功能調用在特權模式下執行,故而當在特權模式下調用SWI功能時,必須對當前模式下的SPSR和寄存器LR進行保存。
        stmfd sp!,{r0-r12,lr}
        保存寄存器
        mov r1,sp
        mov r0, spsr_svc
        stmfd sp!,{r0} ;保存SPSR
        ……
        讀取立即數,調用SWI中斷處理程序
        ldmfd sp!,{r0}  ;恢復SPSR
        msr spsr_svc, r0
        ldmdf sp!,{r0-r12,lr}^ ;恢復其他寄存器

        4 中的IRQ中斷實例

        4.1 IRQ異常中斷的產生

        處理器常用于進行外部異常的響應和操作系統進程的控制。CPSR寄存器的I控制位置0時,處理器在指令邊界查詢是否有IRQ請求,系統的外部中斷管理器或者外設通過使能處理器的IRQ輸入管腳產生IRQ異常中斷。

        4.2 IRQ異常中斷的處理程序

        IRQ異常中斷產生后,根據中斷向量的指令跳入相應的中斷處理程序。系統的外圍中斷管理硬件會將所用的IRQ中斷請求按照優先級進行排列,把最高優先級的IRQ中斷的信息放入寄存器中。通常的IRQ中斷處理程序也需要保存返回地址、寄存器,而且需要屏蔽IRQ中斷,以保證優先級較高的中斷完全處理。
        sub lr,lr,#4
        stmfd sp!,{lr}
        保存返回地址
        mrs r14,spsr_irq
        stmfd sp!,[r12,r14]
        保存r12,spsr
        mov r12,#IntBase
        讀取中斷管理接口的基址

        ldr r12,[r12,#IntLevel]
        計算當前中斷的物理地址
        mrs r14,cpsr
        bic r14,r14,#0X80
        清零IRQ中斷禁止位
        msr cpsr_irq,r14
        開IRQ中斷
        ldr pc,[ pc,r12,lsr #2]
        跳轉到相應的中斷處理程序
        dcd PirQ0Handler
        dcd PirQ1Handler

        dcd PirQnHandler
        優先級為n的中斷處理程序地址
        PirQ0Handler
        stmfd sp!,{r0-r11}
        ……
        優先級為1的中斷處理程序
        ldmfd sp!,{r0-r11}
        msr spsr_irq,r14
        恢復r12和spsr
        ldmfd sp!,{pc}^ ;中段返回
        ……
        dcd PirQnHandler
        中斷優先級為N的中斷處理程序
        ……

        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 贵南县| 井冈山市| 巩留县| 漳浦县| 镇宁| 白玉县| 靖宇县| 深水埗区| 乃东县| 霍州市| 云浮市| 江源县| 高台县| 漳平市| 许昌县| 华池县| 佛坪县| 宁陕县| 南华县| 安塞县| 茂名市| 隆子县| 秦安县| 富源县| 武隆县| 成武县| 景洪市| 青阳县| 瓦房店市| 舟曲县| 濮阳县| 长春市| 梁河县| 海门市| 轮台县| 临汾市| 永定县| 保靖县| 张家口市| 长葛市| 当阳市|