張健 李躍鵬 劉威鵬 曾麗麗
摘要:針對廣泛使用的DSP處理器,分析TI公司實時操作系統(tǒng)DSP/BIOS的特點,論述DSP多任務實時操作系統(tǒng)架構?;贒SP/BIOS完成任務創(chuàng)建與堆棧檢測、中斷管理、時鐘管理、多任務調度策略及任務間通訊等內核關鍵部分的設計,實現(xiàn)一個具有基本功能的DSP多任務實時操作系統(tǒng)內核。并給出所設計的內核軟件在TI的 DSP TMS320C6655上的應用實例,通過實驗驗證內核的一些關鍵功能(定時器、任務調度策略)。所設計的多任務操作系統(tǒng)內核,架構簡潔,實時性強,便于進行二次開發(fā)。
關鍵詞:實時操作系統(tǒng);DSP/BIOS;多任務;操作系統(tǒng)內核
中圖分類號:TP316 文獻標識碼:A 文章編號:1009-3044(2016)02-0077-03
Abstract: In view of the widespread use of DSP processor, Analysis of the characteristics of TI company real-time operating system DSP/BIOS,DSP real-time multitasking operating system architecture is also discussed. The key part of the kernel design is based on DSP/BIOS to complete the task to create and stack detection, interrupt management, clock management, task scheduling strategy and intertask communication.All of the implement a basic function of DSP real-time multitasking operating system kernel. the design of kernel software is used on DSP TMS320C6655 application and through the experiment verify the kernel' s some key function (timer, task scheduling strategy). The designed multitasking operating system kernel architecture is simple, it has strong real-time performance,and is convenient for secondary develop-ment.
Key words: real-time operating system; DSP/BIOS; multitasking; OS kernel
如今,DSP芯片的片上資源的不斷增加,DSP芯片的軟件設計也開始更多的關注如何更好地進行控制資源和任務管理[1]。同時,DSP 處理器以運算速度高效著稱,在 “實時性”和“并行性”具有優(yōu)勢。DSP 芯片在系統(tǒng)結構和指令算法方面進行了特殊設計(如采用哈弗結構體系[2],集成的硬件加速器,功能單元并行操作,匯編指令軟件流水等),具有很高的編譯效率和指令執(zhí)行速度。這些特點為其在嵌入式操作系統(tǒng)領域的應用提供了基礎。
1 DSP實時操作系統(tǒng)內核
DSP/BIOS是德州儀器基于TMS320系列DSP平臺提供的一個實時操作系統(tǒng)內核[3]。DSP/BIOS是一個可升級的實時內核,它提供的底層應用函數(shù)接口,可用于支持系統(tǒng)實時分析、線程管理、調度軟件中斷、周期函數(shù)、外部硬件中斷及各種外設管理。DSP/BIOS 支持4種不同優(yōu)先級的線程:硬件中斷(HWI)、軟件中斷(SWI)、任務(TSK )、后臺線程(IDL )[4]。
如圖1 所示,DSP操作系統(tǒng)內核界于BOOT區(qū)和應用程序接口層之間, 它主要實現(xiàn)任務管理;系統(tǒng)時鐘管理;任務間通信與同步和中斷管理。并利用信號、定時器、優(yōu)先級、中斷、任務調度等機制為應用層提供支撐[5]。向下主要與BIOS初始化接續(xù)。
接口1中,當BIOS初始化完成后,調用系統(tǒng)main()函數(shù)后,操作系統(tǒng)先執(zhí)行初始化操作,信號量和任務創(chuàng)建,應用程序上電自啟動等。接口2中,內核通過DSP系統(tǒng)提供的API函數(shù)與應用層間實現(xiàn)交互,實現(xiàn)定時器、任務、優(yōu)先級等功能的使用。
2 DSP實時操作系統(tǒng)內核設計
本方案設計的DSP實時操作系統(tǒng)內核將應用程序分為若干任務進行管理,并且負責任務間的通信,可以極大地簡化應用系統(tǒng)的設計。任務調度采用基于優(yōu)先級的搶占式調度策略,該策略中賦予每個任務一個優(yōu)先級,任務越重要,賦予的優(yōu)先級就越高[6],內核總是將CPU分配給處于就緒態(tài)的優(yōu)先級最高的任務運行,保證重要的突發(fā)事件及時得到處理[7]。
2.1 任務堆棧檢測與狀態(tài)轉換
采用動態(tài)方法向內核創(chuàng)建任務,首先由Task_Params_init(&taskParamsTemp)函數(shù)初始化任務控制塊結構體Task_Params,配置任務優(yōu)先級、堆棧大小、任務狀態(tài)字等參數(shù),然后,調用函數(shù)Task_create創(chuàng)建任務。
2.2 中斷管理
系統(tǒng)內核采用中斷服務和任務切換結合的機制:每當中斷發(fā)生后,系統(tǒng)及時進行中斷響應, 將全部CPU 寄存器推入當前任務棧,執(zhí)行中斷服務程序,再恢復現(xiàn)場, 調用脫離中斷函數(shù),執(zhí)行中斷返回。如果中斷服務子程序使一個高優(yōu)先級的任務進入了就緒態(tài),則在中斷恢復過程中完成新任務的寄存器內容恢復,中斷返回后,通過任務切換函數(shù)完成任務切換。為減少任務響應時間,中斷服務程序中要做的事應盡可能少。其大部分工作由中斷服務程序中就緒的高優(yōu)先級任務完成。中斷任務調度流程圖如圖3所示:
由于任務切換需要把目標寄存器文件以及控制寄存器文件(CSR、IER、IRP 和 AMR)這些斷點數(shù)據(jù)入棧保護,因此,任務切換所需要的時間取決于CPU 中入棧寄存器的數(shù)量。CPU的寄存器越多,任務切換時間越久。由于C編譯器不能從C語言中直接處理CPU寄存器,任務切換需要由匯編語言編寫,現(xiàn)給出任務切換示意性代碼:
為確保T0任務的調度函數(shù)執(zhí)行的完整性,當T0任務通過信號量調度獲取CPU使用權后,由函數(shù)Task_disable()禁止任務切換,等調度函數(shù)執(zhí)行結束后,再由Task_restore(key)重新使能任務切換,繼續(xù)等待下一個定時器信號量的到來。
2.4 任務間通訊
對于簡單的共享變量,系統(tǒng)通過關中斷、開中斷來處理,以提高效率。當數(shù)據(jù)量比較耗費時間時,引入信號量進行任務間通訊,并設計緩沖區(qū)機制,保證任務間傳輸數(shù)據(jù)的一致性。緩沖區(qū)的基本設計思路是:為每一個任務設置多個輸出緩沖區(qū),用以支持與其他任務的數(shù)據(jù)交互。本輸出任務總能確保找到一個空閑的緩沖區(qū)寫入數(shù)據(jù),同時其他任務可以從其他的緩沖區(qū)中讀取數(shù)據(jù)。每個任務的輸出緩沖區(qū)的個數(shù)為:N = T + 1,T指比當前輸出任務優(yōu)先級低的任務數(shù)量。由于最低優(yōu)先級任務最后執(zhí)行,數(shù)據(jù)不會被其他任務讀取,故其輸出緩沖區(qū)個數(shù)只需要1個。
3 應用實例驗證
本設計的內核是一個通用的DSP多任務實時操作系統(tǒng)內核,在 TI 的 DSP TMS320C6655上由CCS5.1調試。并通過實驗測試該內核的一些關鍵功能。
在系統(tǒng)main函數(shù)中除T0定時器任務之外,再創(chuàng)建4個時鐘周期任務taskT1、taskT2、taskT3和taskT4,各任務的優(yōu)先級為:
T0>taskT1>taskT2>taskT3>taskT4。
首先,驗證定時器中斷間隔:設定產生1ms的時鐘中斷任務。通過許繼自主研發(fā)的VIGET圖形化工程軟件編寫測試例程,同時,創(chuàng)建以太網任務,建立系統(tǒng)以太網通信,實現(xiàn)與圖形化工程軟件的通信。如圖5所示,TSTART 和 TSTOP模塊根據(jù)式(1)算出中斷間隔,并由TSTOP模塊輸出實時中斷間隔:
中斷間隔 = 中斷任務內時鐘滴答數(shù)(N)* 時間因子(u) (1)
XSUM模塊的輸出管腳AVG即為中斷間隔的平均值(999.7894us),證明定時器中斷正常。
4個周期任務的滴答間隔為1,2,4,8。在某些周期(如時鐘周期4,8,12...4n)超過2個任務會同時就緒。不滿足多任務調度算法原則。因此,需要設計調度算法,使各周期的任務數(shù)均衡分布。任務調度策略基本設計思路是:延遲一個周期釋放task3任務信號量,提前一個周期釋放task4任務信號量。
任務的調度信息通過串口實時輸出,圖6為依據(jù)串口輸出信息繪出的任務分布對比圖形。可以證實:執(zhí)行任務調度函數(shù)后,任務的執(zhí)行周期進行延遲和提前,但是各任務執(zhí)行間隔不變,在同一時鐘周期最多有2個任務進入就緒態(tài),各個任務分布均勻,系統(tǒng)負荷均衡。
4 結束語
本文所介紹的僅是DSP實時多任務操作系統(tǒng)內核中一部分的實現(xiàn)方法,所設計的可縮減內核簡化了程序設計,程序模塊清晰,易于移植,適用于DSP系統(tǒng)??梢愿鶕?jù)實際需要添加串口通信、TCP /IP協(xié)議棧、動態(tài)內存管理、故障診斷等功能,使得完整的嵌入式操作系統(tǒng)在該內核的基礎上實現(xiàn)。許繼自主研發(fā)的電力系統(tǒng)控制保護平臺的主處理器中,使用了該內核,實際運行狀況良好,滿足了強實時性要求。最小任務周期為0.1ms,滿足復雜多任務的需求。
參考文獻:
[1] 易克非, 胡慶鋒. 基于 DSP 的實時多任務調度內核設計[J]. 通信技術, 2011, 44(6): 135.
[2] 鄔可軍, 朱銘鋯, 曹建樹. DSP實時多任務操作系統(tǒng)設計與實現(xiàn)[M]. 北京: 電子工業(yè)出版社, 2005: 11-12.
[3] Instruments T. TI SYS/BIOS Real-time Operating System Users Guide[R]. USA: Texas, 2012.
[4] 王軍寧, 何迪. TIDSP/BIOS用戶手冊與驅動開發(fā)[M]. 北京: 清華大學出版社, 2007.
[5] Texas Instruments Incorporated TMS320C6000系列DSP的CPU與外設[M]. 北京: 清華大學出版社, 2007: 15-17.
[6] 徐亮, 徐中偉. μC/OS-II 實時系統(tǒng)任務調度優(yōu)化[J]. 計算機工程, 2007, 33(19): 57-59.
[7] 李巖, 王顯山. 實時操作系統(tǒng)任務調度算法的硬件實現(xiàn)[J]. 計算機工程與應用, 2010, 46(35): 53.