一種基于ARM處理器的異常處理設(shè)計與實現(xiàn)
嵌入式時鐘常用于向操作系統(tǒng)通過調(diào)度單位,因此中斷狀態(tài)會持續(xù)直至完成調(diào)度處理,處理完成后由時鐘源進行中斷清除,以開始下一周期計時。根據(jù)應(yīng)用需求,時鐘中斷應(yīng)設(shè)置為電平觸發(fā)方式,通過APR和ATR寄存器,設(shè)置該時鐘為高電平觸發(fā)模式。通過ITR寄存器,設(shè)置該時鐘為FIQ中斷方式。
本文引用地址:http://www.ex-cimer.com/article/201609/304718.htmLPC3250處理器可配置多路時鐘源,以μs級時鐘(Millisecond Timer)為例,根據(jù)應(yīng)用需求,在中斷控制器中對該中斷源進行以下主要設(shè)置:
Write(VIC_APR,0x3FF0EFF8);//通過APR寄存器MSTIMER_INT位置1,設(shè)置Millisecond Timer中斷為高電位有效
write(VIC_ATR,0xFEFFFFFF);//通過ATR寄存器MSTIMER_INT位置0,設(shè)置Millisecond Timer為電平觸發(fā)
write(VIC_ITR,0x08000000);//通過ITR寄存器MSTIMER_INT位置1,設(shè)置Millisecond Timer為FIQ中斷方式
中斷控制器中設(shè)置完成后,當(dāng)發(fā)生時鐘中斷時,PC指向FIQ的異常向量入口0x1C處,由于FIQ的向量入口為ARM處理器7種異常向量的尾地址,因此無需通過跳轉(zhuǎn)指令進行處理例程的跳轉(zhuǎn)。在該入口處對中斷進行以下主要處理:
sub lr,lr,#4計算返回地址
stmfd sp!,{ri-rm,lr}保存使用到的寄存器
…
mov lr,pc
ldr pc,=IntHandler
…
Ldmfd sp!,{ri-rm,pc}中斷返回,表示將SPSR的值賦給CPSR
其中IntHandler為中斷處理接口,主要完成為嵌入式操作系統(tǒng)提供基本的調(diào)度周期以及時鐘中斷源中斷狀態(tài)的清除。
完成時鐘中斷源的清除,需設(shè)置定時器中ISR(Millisecond Timer Interrupt Status register)寄存器,具體設(shè)置如下:
write(MSTIMER_ISR,0x1);//通過時鐘中ISR寄存器MATCH0_INT位置1,清除時鐘中斷源
5 功能及性能測試
在完成設(shè)計、編碼及交叉編譯后,對該異常機制在LPC3250目標(biāo)機上的運行的情況進行功能和性能測試。
5.1 功能測試
采用FIQ模式進行定時器中斷處理,操作系統(tǒng)可正確獲取調(diào)度周期,表明該中斷處理功能正確。
5.2 性能測試
由于采用FIQ中斷模式進行時鐘中斷處理,在異常入口處無需額外的跳轉(zhuǎn)操作,直接進行時鐘中斷處理。且設(shè)計中FIQ只用于時鐘中斷,因此無需從中斷控制器獲取中斷號的獲取,減少了中斷處理指令,進而降低了處理時間。LPC3250平臺處理器主頻為266MHz,處理器時鐘周期為1/266μs,以1/1 000 s為單位向操作系統(tǒng)提供調(diào)度周期為例,總線周期誤差累計實驗數(shù)據(jù)如圖4所示。
實驗中,隨著采樣調(diào)度周期數(shù)的不斷增加,IRQ模式下時鐘計時與理論值的處理器時鐘周期偏差數(shù)較FIQ模式明顯偏多,F(xiàn)IQ模式計時比IRQ模式更接近實際計時。結(jié)果表明,通過FIQ模式進行的時鐘中斷較IRQ方式更精確。
6 結(jié)束語
本文提出一種高效的異常處理方案,并以時鐘為例進行了驗證。通過實現(xiàn)驗證,采用上述FIQ中斷模式所設(shè)計的時鐘中斷控制程序,較IRQ模式的時鐘中斷方式更為高效,能為嵌入式系統(tǒng)提供更為精確的調(diào)度周期,實驗效果與預(yù)期相符。
評論