T-Kernel在Blackfin處理器上的移植分析
1 概述
在嵌入式RTOS(Real Time Operating System)領(lǐng)域,日本T-Engine組織推出的T-Kernel以其開源免費(fèi),小體積強(qiáng)實(shí)時性內(nèi)核,統(tǒng)一的接口規(guī)范等特點(diǎn)顯出了優(yōu)勢;ADI. Blackfin系列處理器在嵌入式控制和數(shù)字信號處理領(lǐng)域應(yīng)用非常廣泛,同時結(jié)合了MCU(Micro Controller Unit)和DSP特點(diǎn),非常適合于運(yùn)行RTOS系統(tǒng)。
本文分析T-Kernel內(nèi)核調(diào)度原理和Blackfin處理器內(nèi)核結(jié)構(gòu),歸納了T-Kernel在Blackfin處理器BF533系統(tǒng)移植過程中的三個主要問題:中斷管理,任務(wù)切換和系統(tǒng)調(diào)用入口三個模塊的實(shí)現(xiàn)方法,并討論了系統(tǒng)穩(wěn)定性和實(shí)時性的測試以保證系統(tǒng)的穩(wěn)定性和實(shí)時性。
2 T-Kernel概述
2.1 T-Kernel的系統(tǒng)結(jié)構(gòu)
圖1 T-Kernel的位置
T-Kernel的系統(tǒng)結(jié)構(gòu)如圖1所示,各功能模塊是以子系統(tǒng)(subsystem)的形式存在的,如設(shè)備管理模塊。
T-Kernel的內(nèi)核是系統(tǒng)默認(rèn)的子系統(tǒng),它為應(yīng)用層提供系統(tǒng)服務(wù)(SVC)接口,同時管理著其他子系統(tǒng)。子系統(tǒng)為應(yīng)用層提供擴(kuò)展服務(wù)(Extended SVC)調(diào)用接口。系統(tǒng)中各子系統(tǒng)運(yùn)行在相互獨(dú)立的地址空間中,保證了系統(tǒng)的模塊化,易于擴(kuò)充和裁減。
2.2 T-Kernel的系統(tǒng)狀態(tài)和任務(wù)調(diào)度
T-Kernel規(guī)范[1]中對系統(tǒng)狀態(tài)做了明確的劃分和定義,移植相關(guān)的狀態(tài)有:(1)任務(wù)態(tài) (Task Portion),指系統(tǒng)運(yùn)行在應(yīng)用層最高優(yōu)先級的就緒任務(wù)中;(2)任務(wù)無關(guān)態(tài) (Task Independent Portion),指系統(tǒng)的中斷和異常處理過程。任務(wù)無關(guān)態(tài)具有最高的執(zhí)行優(yōu)先權(quán),可以中斷其它狀態(tài)的執(zhí)行。
T-Kernel內(nèi)核采用了基于優(yōu)先級的可搶先調(diào)度策略,優(yōu)先級相同的任務(wù)采用先進(jìn)先出的時間片輪轉(zhuǎn)調(diào)度,允許任務(wù)動態(tài)更改優(yōu)先級。
T-Kernel的任務(wù)調(diào)度和切換是分離的過程。內(nèi)核中維護(hù)著按照優(yōu)先級排列的就緒任務(wù)TCB(Task Control Block)指針鏈表隊列。全局指針ctxtsk指向當(dāng)前運(yùn)行任務(wù)的TCB。有更高優(yōu)先級任務(wù)就緒時,全局指針schedtsk指向其TCB,此為任務(wù)調(diào)度過程;任務(wù)調(diào)度發(fā)生后,必須在條件滿足時,系統(tǒng)觸發(fā)軟中斷異常進(jìn)行任務(wù)切換,將ctxtsk更新為schedtsk,程序轉(zhuǎn)入新任務(wù)運(yùn)行。
3 Blackfin處理器概述
Blakcfin處理器內(nèi)核包含雙算術(shù)處理單元的DSP引擎,執(zhí)行RISK指令集,結(jié)合了優(yōu)異的數(shù)字信號處理功能和完善的控制功能。.
Blackfin內(nèi)核相關(guān)的寄存器除了堆棧和返回地址寄存器:SP(Stack Pointer),F(xiàn)P(Frame Pointer),RETS(Subroutine Return Address Register),RETI(Interrupt Return Address Register),通用數(shù)據(jù)寄存器R0~R7,通用地址寄存器P0~P7,還包含數(shù)字信號處理相關(guān)寄存器 L0~L3,LB0~LB1,LC0~LC1,LT0~LT1,ASTAT,A0~A1,I0~I3, B0~B3,M0~M3. 在任務(wù)切換和中斷前后處理中,需要進(jìn)行寄存器保存恢復(fù)及相應(yīng)的設(shè)置[2]。
Blackfin處理器內(nèi)核支持15個優(yōu)先級的中斷。ILAT寄存器顯示當(dāng)前觸發(fā)的中斷;IMASK寄存器控制各優(yōu)先級中斷的使能和禁止;IPEND寄存器顯示當(dāng)前執(zhí)行的中斷,其第4位IPEND[4]是全局中斷的使能和禁止位。T-Kernel運(yùn)行在第15級(最低)中斷處理程序中,這樣系統(tǒng)運(yùn)行于Supervisor Mode,可以獲得對處理器操作的最大權(quán)限[2]。
T-Kernel系統(tǒng)運(yùn)行在ADSP-BF533 EZ-KIT LITE開發(fā)板,開發(fā)環(huán)境是ADI VisualDSP++4.5 Environment.
評論