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