蔣 韜,劉文波
(南京航空航天大學(xué)自動化學(xué)院,江蘇南京 210016)
基于μC/OS-II的便攜式飛行參數(shù)數(shù)據(jù)卸載器
蔣 韜,劉文波
(南京航空航天大學(xué)自動化學(xué)院,江蘇南京 210016)
飛行參數(shù)數(shù)據(jù)卸載器作為民用和軍用飛機(jī)普遍配置的設(shè)備,在地勤維護(hù)、飛行事故預(yù)防和調(diào)查分析以及飛行質(zhì)量評估等方面起著重要作用。隨著飛行參數(shù)數(shù)據(jù)量的加大以及對飛行參數(shù)使用要求的提高,逐漸暴露出一些影響飛行參數(shù)正常使用的問題,其中誤碼率高、數(shù)據(jù)卸載速度慢、飛行參數(shù)卸載設(shè)備型號多等是影響其工作的關(guān)鍵。因此,文中介紹了一種新型的便攜式飛行參數(shù)數(shù)據(jù)卸載器,利用嵌入式技術(shù)實(shí)現(xiàn)其小型化、模塊化、可視化,提高了飛行參數(shù)使用效率,有效地降低誤碼率以及實(shí)現(xiàn)數(shù)據(jù)高速轉(zhuǎn)錄。
STM32;飛行參數(shù)卸載;μC/OS-II;μC/GUI;USB存儲
隨著嵌入式系統(tǒng)的廣泛應(yīng)用和功能的不斷強(qiáng)大,對系統(tǒng)中人機(jī)界面的要求也越來越高,因此在嵌入式系統(tǒng)中加入圖形用戶界面得以廣泛運(yùn)用。為充分發(fā)揮32位處理器的功能和性能優(yōu)勢,提高系統(tǒng)的可靠性,使操作更加人性化,更多的工程師在其項目開發(fā)中選擇移植嵌入式實(shí)時操作系統(tǒng)(RTOS)和圖形用戶界面(GUI)?;贏RM Cortex-M3內(nèi)核的STM32系列處理器具有性能優(yōu)異、功耗超低、接口方便、集成度好、開發(fā)容易等優(yōu)點(diǎn),針對國內(nèi)某型號飛機(jī)飛行參數(shù)檢測設(shè)備體積大、結(jié)構(gòu)復(fù)雜、數(shù)據(jù)卸載速度慢、誤碼率高等問題,設(shè)計出基于嵌入式實(shí)時操作系統(tǒng)μC/OS-II的便攜式飛行參數(shù)數(shù)據(jù)卸載器,可解決以上問題。
μC/OS-II是一個可裁剪的實(shí)時操作系統(tǒng)多任務(wù)內(nèi)核,可根據(jù)實(shí)際需求量身定做地加載一些模塊,如圖形界面、文件系統(tǒng)、TCP/IP等,使μC/OS-II成為一個面向問題的實(shí)用嵌入式操作系統(tǒng)[1]。文中首先介紹飛行參數(shù)記錄系統(tǒng),然后介紹如何在STM32系列處理器上移植μC/OS-II和圖形界面μC/GUI以及飛行參數(shù)數(shù)據(jù)卸載器的功能實(shí)現(xiàn)。
飛行參數(shù)記錄系統(tǒng)測試對象為國內(nèi)某型戰(zhàn)斗機(jī)所裝備的飛行參數(shù)記錄儀,其用于記錄飛機(jī)的各種飛行參數(shù)和機(jī)載設(shè)備的工作狀態(tài)信息,為在地面對飛機(jī)的飛行狀態(tài)和機(jī)載設(shè)備工作狀態(tài)進(jìn)行分析提供原始數(shù)據(jù)。飛行參數(shù)記錄系統(tǒng)主要由信號轉(zhuǎn)換器、磁帶記錄器、電源3部分組成,其結(jié)構(gòu)框圖如圖1所示。
圖1 飛行參數(shù)記錄系統(tǒng)的組成
信號轉(zhuǎn)換器的主要功能是將來自飛機(jī)的各種傳感器參數(shù)處理和轉(zhuǎn)換成9位二進(jìn)制并行數(shù)字信號,同時產(chǎn)生循環(huán)脈沖和地址同步脈沖,并產(chǎn)生相應(yīng)邏輯控制信號,控制磁帶記錄器正、反轉(zhuǎn)等工作狀態(tài)。
電源部分的主要功能是為信號轉(zhuǎn)換器、磁帶記錄器和電源故障指示等部件可靠地提供所需的直流穩(wěn)壓電源,同時輸出設(shè)置時間和飛行架次兩個輔助參數(shù)的信號到信號轉(zhuǎn)換器。
磁帶記錄器的主要功能是完成對經(jīng)信號轉(zhuǎn)換器轉(zhuǎn)換后輸出的不同工作狀態(tài)下原始信息的記錄和輸出。磁帶記錄器在寫入數(shù)據(jù)時,寫入的是信號轉(zhuǎn)換器輸出的12位并行碼。讀出時,將記錄數(shù)據(jù)以12位并行碼形式輸出,輸出數(shù)據(jù)的速度是寫入數(shù)據(jù)速度的10倍,當(dāng)檢測到有循環(huán)脈沖時,通過D觸發(fā)器鎖存上升沿信號,可有效克服因黑匣子中磁帶偏離導(dǎo)致的數(shù)據(jù)丟失現(xiàn)象,使采樣數(shù)據(jù)合格率達(dá)到99.9%以上,有效地降低飛行參數(shù)誤碼率[2]。
文中設(shè)計的飛行參數(shù)數(shù)據(jù)卸載器主要由Flash存儲模塊、矩陣鍵盤模塊、LCD驅(qū)動模塊及USB傳輸模塊等組成,其硬件連接圖如圖2所示。
圖2 飛行參數(shù)數(shù)據(jù)卸載器硬件連接圖
STM32處理器通過SPI接口連接Flash存儲器并與其進(jìn)行串行通信,當(dāng)配置SPI為主設(shè)備時,STM32為Flash存儲器提供連接時鐘SCK[3]。當(dāng)GPIO口開始讀取12位并行碼數(shù)據(jù)時,定義雙緩沖數(shù)組,將每2 Byte數(shù)據(jù)分別存入待寫Flash的地址,在寫入內(nèi)容前,必須保證將要寫入的地址處于被擦除狀態(tài)。選用64 Mbit Flash芯片,與STM32實(shí)現(xiàn)數(shù)據(jù)傳輸時,具有快速時鐘周期、高可靠性、低功耗等優(yōu)點(diǎn),在技術(shù)上成功解決高速轉(zhuǎn)錄問題,轉(zhuǎn)錄速度最快可達(dá)5 120 bit/s,即下載速度為 20∶1。
鍵盤控制器ZLG7289與STM32處理器之間的通信采用SPI接口方式,但由于JTAG和Flash都需要用到SPI接口通信,考慮到鍵盤讀取對實(shí)時性要求不高,所以使用IO口模擬SPI來讀取鍵盤數(shù)據(jù)。時鐘、片選、數(shù)據(jù)信號這3根線完成與ZLG7289之間的相關(guān)通信。
當(dāng)鍵盤中有鍵按下時,ZLG7289的中斷信號線由高電平變?yōu)榈碗娖?,通知STM32已有按鍵按下,STM32此時通過數(shù)據(jù)線得到鍵盤控制器輸出的按鍵碼值,從而得知具體的按鍵,并作出響應(yīng)。
LCD驅(qū)動模塊接口有總線式和模擬IO式兩種,總線式有較快的數(shù)據(jù)傳輸速度,由于STM32有大量IO口,為配合μC/GUI底層驅(qū)動,文中采用IO口模擬8080總線接口連接STM32和由CPLD+SDRAM組成的LCD驅(qū)動板。驅(qū)動板的原理是:SDRAM相當(dāng)于顯示緩存,CPLD產(chǎn)生SDRAM和LCD的控制時序,一方面配合STM32將數(shù)據(jù)寫入SDRAM,另一方面是將SDRAM中的數(shù)據(jù)不斷地刷新到屏上。每次點(diǎn)亮LCD時對其進(jìn)行復(fù)位,通過命令數(shù)據(jù)選擇線來控制從STM32中寫入的是命令還是數(shù)據(jù),從而完成相應(yīng)的顯示功能。
便攜式飛行參數(shù)數(shù)據(jù)卸載器要求有U盤卸載數(shù)據(jù)功能,因此采用 CH376芯片實(shí)現(xiàn) U盤的讀寫。CH376是文件管理控制芯片,用于STM32讀寫U盤中的文件。CH376支持USB設(shè)備方式和USB主機(jī)方式,支持常用的USB存儲設(shè)備。文中設(shè)計STM32通過SPI通信接口控制CH376芯片,將卸載的數(shù)據(jù)存入U盤。
嵌入式實(shí)時操作系統(tǒng)μC/OS-II是一個可移植、固化、裁剪的占先式實(shí)時多任務(wù)內(nèi)核,要想在μC/OSII內(nèi)核上進(jìn)行應(yīng)用程序的開發(fā),就要在μC/OS-II的基礎(chǔ)上建立完整的實(shí)時操作系統(tǒng)。一個相對完整的嵌入式實(shí)時多任務(wù)操作系統(tǒng),需要進(jìn)行較多擴(kuò)展工作。為外部設(shè)備建立相應(yīng)的API函數(shù),創(chuàng)建圖形用戶界面函數(shù)和建立文件系統(tǒng)等。
μC/OS-II的工作流程為首先進(jìn)行操作系統(tǒng)初始化OSInit(),主要完成任務(wù)控制塊初始化。隨后就可以開始創(chuàng)建新任務(wù)OSTaskCreate()、初始化任務(wù)堆棧區(qū)。最后調(diào)用0SStart()函數(shù),啟動多任務(wù)調(diào)度。在多任務(wù)調(diào)度開始后,啟動時鐘節(jié)拍源開始計時。當(dāng)中斷時,系統(tǒng)把當(dāng)前正在執(zhí)行的任務(wù)掛起,保護(hù)現(xiàn)場,進(jìn)行中斷處理。
μC/GUI是μC/OS-II設(shè)計者所開發(fā)的一種用于嵌入式應(yīng)用的圖形支持軟件。μC/GUI的主要特點(diǎn)有:通過可選組件可以實(shí)現(xiàn)個性定制。具有豐富的開發(fā)工具和小封裝的特點(diǎn)。可適用各種內(nèi)存容量的系統(tǒng)。相比較其它常用的GUI而言,μC/GUI具有其獨(dú)特的優(yōu)勢,并且可以方便地移植到 μC/OS-II系統(tǒng)上[4]。
文中基于μC/OS-II內(nèi)核系統(tǒng)軟件結(jié)構(gòu)的整體框圖如圖3所示。
圖3 系統(tǒng)軟件結(jié)構(gòu)整體框圖
(1)系統(tǒng)外圍設(shè)備的硬件部分。系統(tǒng)外圍設(shè)備的硬件部分是保證系統(tǒng)能夠?qū)崿F(xiàn)指定功能的最底層的部分。系統(tǒng)外圍設(shè)備硬件部分包括:液晶屏LCD、Flash存儲器、文件管理控制芯片、鍵盤驅(qū)動芯片、JTAG調(diào)試接口等。
(2)驅(qū)動程序模塊。驅(qū)動程序是連接底層的硬件和上層的應(yīng)用程序接口API函數(shù)的紐帶,每個器件的開發(fā)都有一個通用API驅(qū)動,API對該驅(qū)動程序的結(jié)構(gòu),函數(shù)和參數(shù)名稱都進(jìn)行了標(biāo)準(zhǔn)化。如stm32f10x固件庫里提供了各種資源的接口,可方便地利用庫函數(shù)對GPIO、SPI等外設(shè)接口進(jìn)行編程。
(3)操作系統(tǒng)的API函數(shù)。在操作系統(tǒng)中提供標(biāo)準(zhǔn)的API函數(shù),可以加速用戶應(yīng)用程序的開發(fā),在API函數(shù)中,提供了大量的常用模塊簡化應(yīng)用程序的編寫,如任務(wù)管理函數(shù)、時間管理函數(shù)、信號量管理函數(shù)等。
(4)實(shí)時操作系統(tǒng)的多任務(wù)管理。μC/OS-II作為操作系統(tǒng)內(nèi)核,主要任務(wù)是完成多任務(wù)間的調(diào)度和同步。在建立多任務(wù)時指定優(yōu)先級,對μC/OS-II這個可剝奪內(nèi)核而言,讓進(jìn)入就緒態(tài)的優(yōu)先級最高的任務(wù)開始運(yùn)行。
(5)用戶應(yīng)用程序。用戶的應(yīng)用程序建立在系統(tǒng)的主任務(wù)基礎(chǔ)之上。用戶應(yīng)用程序主要通過調(diào)用系統(tǒng)的API函數(shù)對系統(tǒng)進(jìn)行操作,完成用戶的要求。在用戶的應(yīng)用程序中也可以創(chuàng)建自己的任務(wù)。任務(wù)之間的協(xié)調(diào)主要依賴于系統(tǒng)對任務(wù)的調(diào)度以及任務(wù)優(yōu)先級的分配。
(6)通用圖形界面。用戶將配置好LCD驅(qū)動的μC/GUI加入μC/OS-II實(shí)時操作系統(tǒng)之中,利用一個任務(wù)對 GUI進(jìn)行初始化,隨后進(jìn)行相應(yīng)的功能顯示。
飛行參數(shù)數(shù)據(jù)卸載器的軟件設(shè)計目前分為波形顯示、鍵盤中斷、Flash讀寫和USB存儲數(shù)據(jù)4個部分。以加入優(yōu)先級低于主任務(wù)的低功耗任務(wù),可以保證在外場長時間操作。程序開始時初始化μC/OS-II,然后創(chuàng)建新任務(wù),啟動多任務(wù)調(diào)度后,系統(tǒng)就進(jìn)入了多任務(wù)操作系統(tǒng)狀態(tài)。系統(tǒng)根據(jù)優(yōu)先級,開始Mytask任務(wù),μC/GUI初始化,顯示波形和其他飛行參數(shù)信息。在多任務(wù)環(huán)境中,處理器會響應(yīng)中斷,當(dāng)有按鍵按下時,會進(jìn)入按鍵中斷服務(wù)子程序,從而進(jìn)入不同的工作狀態(tài)和界面。系統(tǒng)主任務(wù)流程如圖4所示。
圖4 系統(tǒng)主任務(wù)流程圖
在數(shù)據(jù)卸載時能夠顯示工作狀態(tài)、卸載方式和查看方式,在顯示波形時可以同時顯示時間、日期、架次等信息及誤碼率,顯示界面可根據(jù)需要同時顯示多個波形,在波形動態(tài)移動時,若使用簡單的Draw函數(shù),波形閃爍強(qiáng)烈,是因為直接將數(shù)據(jù)顯示在波形上而造成的圖像閃爍。解決辦法為利用GUI_MEMDEV_Draw()進(jìn)行繪圖,其在執(zhí)行時會調(diào)用回調(diào)函數(shù)[5],基本可以消除顯示屏上的閃爍。
嵌入式實(shí)時操作系統(tǒng)μC/OS-II和圖形用戶界面μC/GUI為便攜式飛行參數(shù)數(shù)據(jù)卸載器提供了新的思路,STM32系列微處理器較以往的8位單片機(jī)或工控機(jī)而言,豐富的外設(shè)接口及高性能提供了更多的功能,加入大尺寸液晶屏顯示創(chuàng)造了良好的人機(jī)界面,在STM32上移植 μC/OS-II和 μC/GUI,其實(shí)時性、多任務(wù)、可視化及小型化的特點(diǎn),以及該設(shè)計中D觸發(fā)器鎖存信號降低誤碼率及最高5 120 bit/s高速數(shù)據(jù)轉(zhuǎn)錄的實(shí)現(xiàn),可提高飛行參數(shù)數(shù)據(jù)卸載器的功能應(yīng)用和使用效率。
[1]LABROSSE J J.嵌入式實(shí)時操作系統(tǒng) μC/OS-II[M].邵貝貝,譯.北京:北京航空航天大學(xué)出版社,2003.
[2]王文杰.便攜式飛行參數(shù)記錄儀測試系統(tǒng)的設(shè)計[D].南京:南京航空航天大學(xué),2009.
[3]王永虹,徐煒,郝立平,等.STM32系列 ARM Cortex-M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[4]王同剛.基于S3C44B0X的服務(wù)機(jī)器人嵌入式控制系統(tǒng)的研制[D].哈爾濱:哈爾濱工業(yè)大學(xué),2006.
[5]Micriμm Inc.Graphical user interface with graphic library[M].USA:Micriμm Inc,2002.
[6]邸興,陳見,韓俊.基于STM32的便攜式人機(jī)界面系統(tǒng)[J].電子設(shè)計工程,2011(5):100 -103.
Portable Unloader for Data of Flight Parameters Based on the μC/OS-II
JIANG Tao,LIU Wenbo
(College of Automation Engineering,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China)
The portable unloader for the data of flight parameters is generally used in civil and military aircraft.It also plays an important role in ground maintenance,prevention and investigation of flight accidents and flight quality evaluation.With higher requirements and larger data of flight parameters,some problems are exposed and have had many negative effects.Both high error rates and slow data unloading are the key elements that affect its work.A new portable unloader for the data of flight parameters is therefore introduced in this paper.By the embedded technology,we achieve a small,modularized and visual unloader which realizes high flight efficiency,low error rates and a high-speed data transcription.
STM32;flight parameters unloading;μC/OS-II;μC/GUI;USB storage
TP316.2
A
1007-7820(2012)06-041-04
2011-12-22
蔣韜(1987—),男,碩士研究生。研究方向:嵌入式系統(tǒng)。劉文波(1968—),女,教授,博士生導(dǎo)師。研究方向:數(shù)字信號處理,非線性動力系統(tǒng)分析,計算機(jī)測試與控制。