在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計應(yīng)用 > ARM內(nèi)核的中斷技術(shù)

            ARM內(nèi)核的中斷技術(shù)

            作者: 時間:2012-09-26 來源:網(wǎng)絡(luò) 收藏

            3 中斷處理程序的編寫
            (1)軟件中斷處理程序的編寫
            軟件中斷指令的格式如圖1所示。低24位立即數(shù)為軟件中斷號。在中斷處理程序中,必須首先得到軟件中斷號,然后根據(jù)中斷號執(zhí)行不同代碼。以下的中斷處理程序,在軟件中斷號為1時,將端口A的0號引腳置“1”。

            STMFD sp!,{r0-r12,lr} //保存各工作寄存器
            LDR r0,{lr,#-4} //得到該軟件中斷指令
            BIC r0,r0,#0xff000000 //從中取出中斷號
            ADR r2,SWIJumpTable //r2指向代碼入口表
            LDR pc,[r2,r0,LSL #2] //把r0中的值乘4后加到r2。將//程序計數(shù)器指向中斷號對應(yīng)的代碼入口地址
            SWIJumpTable //代碼入口表
            DCD SWInum0
            DCD SWInum1
            ……
            SWInum0 //中斷號為0時的處理代碼(略)
            SWInum1 //中斷號為1時的處理代碼
            MOV r0,#0x80000000 //r0指向端口A
            STRB r0,#0x01 //A口0腳置“1”
            B EndofSWI //跳轉(zhuǎn)
            EndofSWI
            LDMFD sp! {r0-r12,pc} //恢復各寄存器,返回原程序
            (2)常規(guī)中斷處理程序的編寫
            為快速執(zhí)行,常規(guī)中斷處理程序一般用匯編指令編寫。在編寫可重入常規(guī)中斷處理程序(運行時仍可響應(yīng)常規(guī)中斷)時,必須先把鏈接寄存器和程序用到的工作寄存器入棧,然后才能開放中斷;各寄存器出棧前,必須先關(guān)閉中斷。這樣可防止因寄存器崩潰而無法返回的情況發(fā)生。下文介紹了一個與中控制器相配置的可重入的常規(guī)中斷處理程序。當若干中斷源同時有效時,中斷控制器(基址為IntBase)把16個中斷源中優(yōu)先級最高的一個存入中斷寄存器(偏移地址為IntLevel)中,并發(fā)出硬件中斷信號。
            SUB lr,lr,#4 //得至并保存返回地址
            STMFD sp!,{lr}
            MRS r14,SPSR //把SPSR和sl2入棧
            STMFD sp!,{r12,r14}
            MOV r12,#IntBase
            LDR r12,[r12,#IntLevel] //將最高優(yōu)先級號存入r12
            MRS r14,CPSR. //開中斷
            BIC r14,r14,#0x80
            MSR CPSR_c,r14
            LDR PC,[PC,r12,LSL #2] //將pc指向該優(yōu)先級號對應(yīng)的處理代碼入口
            NOP //補位
            DCD Priority0Handler //代碼入口表
            DCD Priority 1 Handler
            DCD Priority 2 Handler
            ……
            Priority0Handler //0優(yōu)先級中斷處理代碼
            STMFD sp!,{r0-r11} //保存工作寄存器
            ……(略) //具體代碼
            LDMFD sp!,{r0-r11} //恢復工作寄存器
            MRS r12,CPSR //關(guān)中斷
            ORR r12,r12,#0x80
            MSR CPSR_c,r12
            LDMFD sp!,{r12,r14} //恢復r12
            MSR SPSR_csxf,r14 //恢復備用程序狀態(tài)寄存器(SPSR)
            LDMFD sp!,{pc}^ //返回原程序
            Priority 1 Handler //優(yōu)先級中斷處理代碼(略)
            (3)快中斷處理程序的編寫
            為保證高速處理,快中斷處理程序必須要用匯編語言編寫,而且必須是非重入的。一般快中斷處理程序主要是些數(shù)據(jù)存取指令,就不具體介紹了。
            結(jié)束語
            是處理器和系統(tǒng)芯片開發(fā)的重要技術(shù)??焖?、高效的中斷處理程序是實時多任務(wù)系統(tǒng)設(shè)計成功的關(guān)鍵。


            上一頁 1 2 下一頁

            關(guān)鍵詞: ARM內(nèi)核 中斷技術(shù)

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉