嵌入式操作系統(tǒng)在高速實時信號處理系統(tǒng)中的應(yīng)用
任務(wù)劃分需要遵循以下原則:
本文引用地址:http://butianyuan.cn/article/84776.htm(1)功能內(nèi)聚性。對于功能聯(lián)系比較緊密的各工作可以用一個任務(wù)來運行。如果用多個任務(wù)進(jìn)行相互之間的消息通信,將會影響系統(tǒng)效率。
(2)時間緊迫性。對于實時性要求比較高的任務(wù),以高優(yōu)先級運行,以保證事件的實時響應(yīng)。
(3)周期執(zhí)行原則。對于一個需要周期性執(zhí)行的工作,應(yīng)作為一個獨立的模塊完成。
3.1 操作系統(tǒng)的配置
在嵌入式操作系統(tǒng)上進(jìn)行開發(fā)要滿足實時性和資源有限性的要求,因此與通用操作系統(tǒng)存在差異。在生成操作系統(tǒng)時剪裁不需要的組件,添加需要的組件,使系統(tǒng)盡量精簡。操作系統(tǒng)及其應(yīng)用程序主要運行在內(nèi)存中,操作系統(tǒng)太大會占用很多的內(nèi)存空間。應(yīng)用程序運行時要對每個任務(wù)分配合適的內(nèi)存。為了滿足實時性,內(nèi)存分配要盡可能快,因此不采用通用操作系統(tǒng)中復(fù)雜而完善的內(nèi)存分配策略,而采用簡單、快速的內(nèi)存分配方案。如果系統(tǒng)對于實時性和可靠性的要求極高,不能容忍一點延時或者一次分配失敗,最好采用靜態(tài)分配方案,也就是在程序編譯時所需要的內(nèi)存都已經(jīng)分配好了。例如,火星探測器上的嵌入式系統(tǒng)就必須采用靜態(tài)分配方案。
雷達(dá)系統(tǒng)對實時性要求很高,所以本系統(tǒng)盡量采用靜態(tài)分配方案。但是VG4內(nèi)存有限,在一些子任務(wù)中也采用動態(tài)分配方案。這里VxWorks采用First Fit的內(nèi)存動態(tài)分配方式,當(dāng)系統(tǒng)需要動態(tài)分配內(nèi)存時,可以保證在很短的時間內(nèi)分配。但是采用這種方式容易產(chǎn)生大量的內(nèi)存碎片,而VxWorks沒有清除碎片的功能,因此對系統(tǒng)動態(tài)分配內(nèi)存要非常小心。
根據(jù)本系統(tǒng)的實際情況,接口板傳給VG4的信處檢測結(jié)果數(shù)據(jù)量基本不變,對于這批數(shù)據(jù)可以以另一種方式存儲。通過修改BSP的配置,從RAM中分配一塊用戶保留的存儲區(qū)域。這塊存儲區(qū)是用戶專用的,不會被系統(tǒng)覆蓋。用戶可以通過絕對地址對其進(jìn)行讀寫。具體方法是設(shè)置RAM布局中User reserved區(qū)域,系統(tǒng)默認(rèn)為0,設(shè)置這塊RAM使之滿足原始數(shù)據(jù)的大小。
3.2 應(yīng)用程序的設(shè)計
應(yīng)用程序運行在VxWorks操作系統(tǒng)上,其功能包括對系統(tǒng)初始化、根據(jù)輸入命令對各模塊進(jìn)行控制及實時顯示信號處理結(jié)果。存在著如下幾類數(shù)據(jù)通信:VG4向定時接口板傳送控制參數(shù),讀取定時接口板中存儲的信處檢測結(jié)果數(shù)據(jù),響應(yīng)外部中斷,顯示目標(biāo)信息以及獲得外部輸入的控制信息??紤]到C語言的平臺無關(guān)性和代碼簡介高效性,應(yīng)用程序采用C語言編寫。
系統(tǒng)劃分為6個任務(wù):(1)系統(tǒng)監(jiān)控:啟動和監(jiān)控其他任務(wù)。(2)數(shù)據(jù)傳輸:響應(yīng)VME中斷,與定時接口板進(jìn)行數(shù)據(jù)通信。(3)數(shù)據(jù)處理:對信處檢測結(jié)果數(shù)據(jù)進(jìn)行處理,扣除虛假目標(biāo)并轉(zhuǎn)換格式以方便顯示。(4)終端顯示:顯示檢測目標(biāo)結(jié)果和系統(tǒng)狀態(tài)信息到屏幕。(5)指令控制:響應(yīng)控制開關(guān)的命令和獲取慣導(dǎo)數(shù)據(jù)。(6)錯誤處理:對出現(xiàn)錯誤的任務(wù)做出響應(yīng)的處理,并在終端顯示。
中斷服務(wù)程序響應(yīng)定時VME7號中斷,程序如下:
圖4顯示了各任務(wù)的優(yōu)先級。從中可以看到中斷服務(wù)程序的優(yōu)先級最高,因為實時系統(tǒng)要及時響應(yīng)外部中斷信號。
指令控制任務(wù)首先獲取外部開關(guān)命令和慣導(dǎo)數(shù)據(jù),以消息的形式發(fā)送給數(shù)據(jù)傳輸任務(wù)。當(dāng)中斷來臨時,中斷服務(wù)程序馬上釋放同步信號量syncSemId。數(shù)據(jù)傳輸任務(wù)一直等待這個信號量,當(dāng)獲取到這個信號量時,立即把從指令控制任務(wù)收到的消息轉(zhuǎn)換成模式字寫到接口板的雙口RAM中,接著讀取信處檢測結(jié)果數(shù)據(jù)。數(shù)據(jù)處理子任務(wù)獲取同步信號量syncSemId2后對收到的信處檢測結(jié)果數(shù)據(jù)進(jìn)行處理,這一任務(wù)最耗時。終端顯示任務(wù)以消息的形式接收上一任務(wù)的處理結(jié)果,并顯示處理結(jié)果及系統(tǒng)目前的運行狀態(tài)信息。信號量廣泛應(yīng)用于同步和對臨界資源的保護(hù),信號量的建立如下:
系統(tǒng)監(jiān)控任務(wù)包括初始化各任務(wù)及實時監(jiān)控各任務(wù)運行是否正常。當(dāng)檢測到某任務(wù)運行不正常時,啟動錯誤處理任務(wù)。錯誤處理任務(wù)根據(jù)情況給予相應(yīng)處理,并在終端顯示。當(dāng)系統(tǒng)發(fā)生嚴(yán)重錯誤時,系統(tǒng)會自動重啟。
本文設(shè)計的信號處理機主要應(yīng)用于直升機火控系統(tǒng),現(xiàn)已經(jīng)過驗收,各項指標(biāo)符合要求。隨著設(shè)計的改進(jìn),系統(tǒng)功能將進(jìn)一步完善,結(jié)構(gòu)會更加通用模塊化,從而實現(xiàn)不改變整個硬件系統(tǒng)平臺,只對程序進(jìn)行相應(yīng)的修改,便可應(yīng)用于其他領(lǐng)域的信號處理系統(tǒng)中。
參考文獻(xiàn)
1 趙樹杰,史 林.數(shù)字信號處理.西安:西安電子科技大學(xué)出版社,1997
2 WindRiver.VxWorks Programmer′s Guide 5.5.2002
3 WindRiver.VxWorks API Reference.2002
4 WindRiver.Tornado User′s Guide(Windows Version).2002
5 蘇 濤,蔡建隆,何學(xué)輝.DSP接口電路設(shè)計與編程.西安:西安電子科技大學(xué)出版社,2003
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論