?

DSP多任務實時操作系統內核設計

2016-03-22 14:20張健李躍鵬劉威鵬曾麗麗
電腦知識與技術 2016年2期
關鍵詞:多任務

張健 李躍鵬 劉威鵬 曾麗麗

摘要:針對廣泛使用的DSP處理器,分析TI公司實時操作系統DSP/BIOS的特點,論述DSP多任務實時操作系統架構?;贒SP/BIOS完成任務創建與堆棧檢測、中斷管理、時鐘管理、多任務調度策略及任務間通訊等內核關鍵部分的設計,實現一個具有基本功能的DSP多任務實時操作系統內核。并給出所設計的內核軟件在TI的 DSP TMS320C6655上的應用實例,通過實驗驗證內核的一些關鍵功能(定時器、任務調度策略)。所設計的多任務操作系統內核,架構簡潔,實時性強,便于進行二次開發。

關鍵詞:實時操作系統;DSP/BIOS;多任務;操作系統內核

中圖分類號: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 處理器以運算速度高效著稱,在 “實時性”和“并行性”具有優勢。DSP 芯片在系統結構和指令算法方面進行了特殊設計(如采用哈弗結構體系[2],集成的硬件加速器,功能單元并行操作,匯編指令軟件流水等),具有很高的編譯效率和指令執行速度。這些特點為其在嵌入式操作系統領域的應用提供了基礎。

1 DSP實時操作系統內核

DSP/BIOS是德州儀器基于TMS320系列DSP平臺提供的一個實時操作系統內核[3]。DSP/BIOS是一個可升級的實時內核,它提供的底層應用函數接口,可用于支持系統實時分析、線程管理、調度軟件中斷、周期函數、外部硬件中斷及各種外設管理。DSP/BIOS 支持4種不同優先級的線程:硬件中斷(HWI)、軟件中斷(SWI)、任務(TSK )、后臺線程(IDL )[4]。

如圖1 所示,DSP操作系統內核界于BOOT區和應用程序接口層之間, 它主要實現任務管理;系統時鐘管理;任務間通信與同步和中斷管理。并利用信號、定時器、優先級、中斷、任務調度等機制為應用層提供支撐[5]。向下主要與BIOS初始化接續。

接口1中,當BIOS初始化完成后,調用系統main()函數后,操作系統先執行初始化操作,信號量和任務創建,應用程序上電自啟動等。接口2中,內核通過DSP系統提供的API函數與應用層間實現交互,實現定時器、任務、優先級等功能的使用。

2 DSP實時操作系統內核設計

本方案設計的DSP實時操作系統內核將應用程序分為若干任務進行管理,并且負責任務間的通信,可以極大地簡化應用系統的設計。任務調度采用基于優先級的搶占式調度策略,該策略中賦予每個任務一個優先級,任務越重要,賦予的優先級就越高[6],內核總是將CPU分配給處于就緒態的優先級最高的任務運行,保證重要的突發事件及時得到處理[7]。

2.1 任務堆棧檢測與狀態轉換

采用動態方法向內核創建任務,首先由Task_Params_init(&taskParamsTemp)函數初始化任務控制塊結構體Task_Params,配置任務優先級、堆棧大小、任務狀態字等參數,然后,調用函數Task_create創建任務。

2.2 中斷管理

系統內核采用中斷服務和任務切換結合的機制:每當中斷發生后,系統及時進行中斷響應, 將全部CPU 寄存器推入當前任務棧,執行中斷服務程序,再恢復現場, 調用脫離中斷函數,執行中斷返回。如果中斷服務子程序使一個高優先級的任務進入了就緒態,則在中斷恢復過程中完成新任務的寄存器內容恢復,中斷返回后,通過任務切換函數完成任務切換。為減少任務響應時間,中斷服務程序中要做的事應盡可能少。其大部分工作由中斷服務程序中就緒的高優先級任務完成。中斷任務調度流程圖如圖3所示:

由于任務切換需要把目標寄存器文件以及控制寄存器文件(CSR、IER、IRP 和 AMR)這些斷點數據入棧保護,因此,任務切換所需要的時間取決于CPU 中入棧寄存器的數量。CPU的寄存器越多,任務切換時間越久。由于C編譯器不能從C語言中直接處理CPU寄存器,任務切換需要由匯編語言編寫,現給出任務切換示意性代碼:

為確保T0任務的調度函數執行的完整性,當T0任務通過信號量調度獲取CPU使用權后,由函數Task_disable()禁止任務切換,等調度函數執行結束后,再由Task_restore(key)重新使能任務切換,繼續等待下一個定時器信號量的到來。

2.4 任務間通訊

對于簡單的共享變量,系統通過關中斷、開中斷來處理,以提高效率。當數據量比較耗費時間時,引入信號量進行任務間通訊,并設計緩沖區機制,保證任務間傳輸數據的一致性。緩沖區的基本設計思路是:為每一個任務設置多個輸出緩沖區,用以支持與其他任務的數據交互。本輸出任務總能確保找到一個空閑的緩沖區寫入數據,同時其他任務可以從其他的緩沖區中讀取數據。每個任務的輸出緩沖區的個數為:N = T + 1,T指比當前輸出任務優先級低的任務數量。由于最低優先級任務最后執行,數據不會被其他任務讀取,故其輸出緩沖區個數只需要1個。

3 應用實例驗證

本設計的內核是一個通用的DSP多任務實時操作系統內核,在 TI 的 DSP TMS320C6655上由CCS5.1調試。并通過實驗測試該內核的一些關鍵功能。

在系統main函數中除T0定時器任務之外,再創建4個時鐘周期任務taskT1、taskT2、taskT3和taskT4,各任務的優先級為:

T0>taskT1>taskT2>taskT3>taskT4。

首先,驗證定時器中斷間隔:設定產生1ms的時鐘中斷任務。通過許繼自主研發的VIGET圖形化工程軟件編寫測試例程,同時,創建以太網任務,建立系統以太網通信,實現與圖形化工程軟件的通信。如圖5所示,TSTART 和 TSTOP模塊根據式(1)算出中斷間隔,并由TSTOP模塊輸出實時中斷間隔:

中斷間隔 = 中斷任務內時鐘滴答數(N)* 時間因子(u) (1)

XSUM模塊的輸出管腳AVG即為中斷間隔的平均值(999.7894us),證明定時器中斷正常。

4個周期任務的滴答間隔為1,2,4,8。在某些周期(如時鐘周期4,8,12...4n)超過2個任務會同時就緒。不滿足多任務調度算法原則。因此,需要設計調度算法,使各周期的任務數均衡分布。任務調度策略基本設計思路是:延遲一個周期釋放task3任務信號量,提前一個周期釋放task4任務信號量。

任務的調度信息通過串口實時輸出,圖6為依據串口輸出信息繪出的任務分布對比圖形??梢宰C實:執行任務調度函數后,任務的執行周期進行延遲和提前,但是各任務執行間隔不變,在同一時鐘周期最多有2個任務進入就緒態,各個任務分布均勻,系統負荷均衡。

4 結束語

本文所介紹的僅是DSP實時多任務操作系統內核中一部分的實現方法,所設計的可縮減內核簡化了程序設計,程序模塊清晰,易于移植,適用于DSP系統??梢愿鶕嶋H需要添加串口通信、TCP /IP協議棧、動態內存管理、故障診斷等功能,使得完整的嵌入式操作系統在該內核的基礎上實現。許繼自主研發的電力系統控制保護平臺的主處理器中,使用了該內核,實際運行狀況良好,滿足了強實時性要求。最小任務周期為0.1ms,滿足復雜多任務的需求。

參考文獻:

[1] 易克非, 胡慶鋒. 基于 DSP 的實時多任務調度內核設計[J]. 通信技術, 2011, 44(6): 135.

[2] 鄔可軍, 朱銘鋯, 曹建樹. DSP實時多任務操作系統設計與實現[M]. 北京: 電子工業出版社, 2005: 11-12.

[3] Instruments T. TI SYS/BIOS Real-time Operating System Users Guide[R]. USA: Texas, 2012.

[4] 王軍寧, 何迪. TIDSP/BIOS用戶手冊與驅動開發[M]. 北京: 清華大學出版社, 2007.

[5] Texas Instruments Incorporated TMS320C6000系列DSP的CPU與外設[M]. 北京: 清華大學出版社, 2007: 15-17.

[6] 徐亮, 徐中偉. μC/OS-II 實時系統任務調度優化[J]. 計算機工程, 2007, 33(19): 57-59.

[7] 李巖, 王顯山. 實時操作系統任務調度算法的硬件實現[J]. 計算機工程與應用, 2010, 46(35): 53.

猜你喜歡
多任務
基于中心化自動加權多任務學習的早期輕度認知障礙診斷
基于判別性局部聯合稀疏模型的多任務跟蹤
基于多任務異步處理的電力系統序網絡拓撲分析
一類完全由內積構造的多任務核的幾個性質
基于單片機應用系統的多任務程序結構設計
未知環境下基于粒子群優化的多任務聯盟生成
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合