基于μC/OS-II的便攜式飛行參數(shù)數(shù)據(jù)卸載器
摘要 飛行參數(shù)數(shù)據(jù)卸載器作為民用和軍用飛機普遍配置的設備,在地勤維護、飛行事故預防和調(diào)查分析以及飛行質(zhì)量評估等方面起著重要作用。隨著飛行參數(shù)數(shù)據(jù)量的加大以及對飛行參數(shù)使用要求的提高,逐漸暴露出一些影響飛行參數(shù)正常使用的問題,其中誤碼率高、數(shù)據(jù)卸載速度慢、飛行參數(shù)卸載設備型號多等是影響其工作的關鍵。因此,文中介紹了一種新型的便攜式飛行參數(shù)數(shù)據(jù)卸載器,利用嵌入式技術實現(xiàn)其小型化、模塊化、可視化,提高了飛行參數(shù)使用效率,有效地降低誤碼率以及實現(xiàn)數(shù)據(jù)高速轉(zhuǎn)錄。
關鍵詞 STM32;飛行參數(shù)卸載;μC/OS-II;μC/GUI;USB存儲
隨著嵌入式系統(tǒng)的廣泛應用和功能的不斷強大,對系統(tǒng)中人機界面的要求也越來越高,因此在嵌入式系統(tǒng)中加入圖形用戶界面得以廣泛運用。為充分發(fā)揮32位處理器的功能和性能優(yōu)勢,提高系統(tǒng)的可靠性,使操作更加人性化,更多的工程師在其項目開發(fā)中選擇移植嵌入式實時操作系統(tǒng)(RTOS)和圖形用戶界面(GUI)?;贏RM Cortex-M3內(nèi)核的STM32系列處理器具有性能優(yōu)異、功耗超低、接口方便、集成度好、開
發(fā)容易等優(yōu)點,針對國內(nèi)某型號飛機飛行參數(shù)檢測設備體積大、結(jié)構(gòu)復雜、數(shù)據(jù)卸載速度慢、誤碼率高等間題,設計出基于嵌入式實時操作系統(tǒng)μC/OS-II的便攜式飛行參數(shù)數(shù)據(jù)卸載器,可解決以上問題。
μC/OS-II是一個可裁剪的實時操作系統(tǒng)多任務內(nèi)核,可根據(jù)實際需求量身定做地加載一些模塊,如圖形界面、文件系統(tǒng)、TCP/IP等,使μC/OS-II成為一個面向問題的實用嵌入式操作系統(tǒng)。文中首先介紹飛行參數(shù)記錄系統(tǒng),然后介紹如何在STM32系列處理器上移植μC/OS-II和圖形界面μC/GUI以及飛行參數(shù)數(shù)據(jù)卸載器的功能實現(xiàn)。
1 飛行參數(shù)記錄系統(tǒng)
飛行參數(shù)記錄系統(tǒng)測試對象為國內(nèi)某型戰(zhàn)斗機所裝備的飛行參數(shù)記錄儀,其用于記錄飛機的各種飛行參數(shù)和機載設備的工作狀態(tài)信息,為在地面對飛機的飛行狀態(tài)和機載設備工作狀態(tài)進行分析提供原始數(shù)據(jù)。飛行參數(shù)記錄系統(tǒng)主要由信號轉(zhuǎn)換器、磁帶記錄器、電源3部分組成,其結(jié)構(gòu)框圖如圖1所示。
信號轉(zhuǎn)換器的主要功能是將來自飛機的各種傳感器參數(shù)處理和轉(zhuǎn)換成9位二進制并行數(shù)字信號,同時產(chǎn)生循環(huán)脈沖和地址同步脈沖,并產(chǎn)生相應邏輯控制信號,控制磁帶記錄器正、反轉(zhuǎn)等工作狀態(tài)。
電源部分的主要功能是為信號轉(zhuǎn)換器、磁帶記錄器和電源故障指示等部件可靠地提供所需的直流穩(wěn)壓電源,同時輸出設置時間和飛行架次兩個輔助參數(shù)的信號到信號轉(zhuǎn)換器。
磁帶記錄器的主要功能是完成對經(jīng)信號轉(zhuǎn)換器轉(zhuǎn)換后輸出的不同工作狀態(tài)下原始信息的記錄和輸出。磁帶記錄器在寫入數(shù)據(jù)時,寫入的是信號轉(zhuǎn)換器輸出的12位并行碼。讀出時,將記錄數(shù)據(jù)以12位并行碼形式輸出,輸出數(shù)據(jù)的速度是寫入數(shù)據(jù)速度的10倍,當檢測到有循環(huán)脈沖時,通過D觸發(fā)器鎖存上升沿信號,可有效克服因黑匣子中磁帶偏離導致的數(shù)據(jù)丟失現(xiàn)象,使采樣數(shù)據(jù)合格率達到99.9%以上,有效地降低飛行參數(shù)誤碼率。
2 飛行參數(shù)數(shù)據(jù)卸載器
文中設計的飛行參數(shù)數(shù)據(jù)卸載器主要由Flash存儲模塊、矩陣鍵盤模塊、LCD驅(qū)動模塊及USB傳輸模塊等組成,其硬件連接圖如圖2所示。
2.1 Flash存儲器模塊
STM32處理器通過SPI接口連接Flash存儲器并與其進行串行通信,當配置SPI為主設備時,STM32為Flash存儲器提供連接時鐘SCK。當GP IO口開始讀取12位并行碼數(shù)據(jù)時,定義雙緩沖數(shù)組,將每2 Byte數(shù)據(jù)分別存入待寫Flash的地址,在寫入內(nèi)容前,必須保證將要寫入的地址處于被擦除狀態(tài)。選用64 MbitFlash芯片,與STM32實現(xiàn)數(shù)據(jù)傳輸時,具有快速時鐘周期、高可靠性、低功耗等優(yōu)點,在技術上成功解決高速轉(zhuǎn)錄問題,轉(zhuǎn)錄速度最快可達5 120 bit/s,即下載速度為20:1。
2.2 矩陣鍵盤模塊
鍵盤控制器ZLG7289與STM32處理器之間的通信采用SPI接口方式,但由于JTAG和Flash都需要用到SPI接口通信,考慮到鍵盤讀取對實時性要求不高,所以使用IO口模擬SPI來讀取鍵盤數(shù)據(jù)。時鐘、片選、數(shù)據(jù)信號這3根線完成與ZLG7289之間的相關通信。
當鍵盤中有鍵按下時,ZLG7289的中斷信號線由高電平變?yōu)榈碗娖剑ㄖ猄TM32已有按鍵按下,STM32此時通過數(shù)據(jù)線得到鍵盤控制器輸出的按鍵碼值,從而得知具體的按鍵,并作出響應。
2.3 LCD驅(qū)動模塊
LCD驅(qū)動模塊接口有總線式和模擬IO式兩種,總線式有較快的數(shù)據(jù)傳輸速度,由于STM32有大量IO口,為配合μC/GUI底層驅(qū)動,文中采用IO口模擬8080總線接口連接STM32和由CPLD+SDRAM組成的LCD驅(qū)動板。驅(qū)動板的原理是:SDRAM相當于顯示緩存,CPLD產(chǎn)生SDRAM和LCD的控制時序,一方面配合STM32將數(shù)據(jù)寫入SDRAM,另一方面是將SDRAM中的數(shù)據(jù)不斷地刷新到屏上。每次點亮LCD時對其進行復位,通過命令數(shù)據(jù)選擇線來控制從STM32中寫入的是命令還是數(shù)據(jù),從而完成相應的顯示功能。
2.4 USB傳輸模塊
便攜式飛行參數(shù)數(shù)據(jù)卸載器要求有U盤卸載數(shù)據(jù)功能,因此采用CH376芯片實現(xiàn)U盤的讀寫。CH376是文件管理控制芯片,用于STM32讀寫U盤中的文件。CH376支持USB設備方式和USB主機方式,支持常用的USB存儲設備。文中設計STM32通過SPI通信接口控制CH376芯片,將卸載的數(shù)據(jù)存入U盤。
3 嵌入式系統(tǒng)移植及實現(xiàn)功能
嵌入式實時操作系統(tǒng)μC/OS-II是一個可移植、固化、裁剪的占先式實時多任務內(nèi)核,要想在μC/OS-II內(nèi)核上進行應用程序的開發(fā),就要在μC/OS-II的基礎上建立完整的實時操作系統(tǒng)。一個相對完整的嵌入式實時多任務操作系統(tǒng),需要進行較多擴展工作。為外部設備建立相應的API函數(shù),創(chuàng)建圖形用戶界面函數(shù)和建立文件系統(tǒng)等。
μC/OS-II的工作流程為首先進行操作系統(tǒng)初始化OSInit(),主要完成任務控制塊初始化。隨后就可以開始創(chuàng)建新任務OSTaskCreate()、初始化任務堆棧區(qū)。最后調(diào)用OSStait()函數(shù),啟動多任務調(diào)度。在多任務調(diào)度開始后,啟動時鐘節(jié)拍源開始計時。當中斷時,系統(tǒng)把當前正在執(zhí)行的任務掛起,保護現(xiàn)場,進行中斷處理。
μC/GUI是μC/OS-II設計者所開發(fā)的一種用于嵌入式應用的圖形支持軟件。μC/GUI的主要特點有:通過可選組件可以實現(xiàn)個性定制。具有豐富的開發(fā)工具和小封裝的特點??蛇m用各種內(nèi)存容量的系統(tǒng)。相比較其它常用的GUI而言,μC/GUI具有其獨特的優(yōu)勢,并且可以方便地移植到μC/OS-II系統(tǒng)上。
3.1 系統(tǒng)軟件移植
文中基于μC/OS-II內(nèi)核系統(tǒng)軟件結(jié)構(gòu)的整體框圖如圖3所示。
(1)系統(tǒng)外圍設備的硬件部分。系統(tǒng)外圍設備的硬件部分是保證系統(tǒng)能夠?qū)崿F(xiàn)指定功能的最底層的部分。系統(tǒng)外圍設備硬件部分包括:液晶屏LCD、Flash存儲器、文件管理控制芯片、鍵盤驅(qū)動芯片、JTAG調(diào)試接口等。
(2)驅(qū)動程序模塊。驅(qū)動程序是連接底層的硬件和上層的應用程序接口API函數(shù)的紐帶,每個器件的開發(fā)都有一個通用API驅(qū)動,API對該驅(qū)動程序的結(jié)構(gòu),函數(shù)和參數(shù)名稱都進行了標準化。如stm32f10x固件庫里提供了各種資源的接口,可方便地利用庫函數(shù)對GPIO、SPI等外設接口進行編程。
(3)操作系統(tǒng)的API函數(shù)。在操作系統(tǒng)中提供標準的API函數(shù),可以加速用戶應用程序的開發(fā),在API函數(shù)中,提供了大量的常用模塊簡化應用程序的編寫,如任務管理函數(shù)、時間管理函數(shù)、信號量管理函數(shù)等。
(4)實時操作系統(tǒng)的多任務管理。μC/OS-II作為操作系統(tǒng)內(nèi)核,主要任務是完成多任務間的調(diào)度和同步。在建立多任務時指定優(yōu)先級,對μC/OS-II這個可剝奪內(nèi)核而言,讓進入就緒態(tài)的優(yōu)先級最高的任務開始運行。
(5)用戶應用程序。用戶的應用程序建立在系統(tǒng)的主任務基礎之上。用戶應用程序主要通過調(diào)用系統(tǒng)的API函數(shù)對系統(tǒng)進行操作,完成用戶的要求。在用戶的應用程序中也可以創(chuàng)建自己的任務。任務之間的協(xié)調(diào)主要依賴于系統(tǒng)對任務的調(diào)度以及任務優(yōu)先級的分配。
(6)通用圖形界面。用戶將配置好LCD驅(qū)動的μC/GUI加入μC/OS-II實時操作系統(tǒng)之中,利用一個任務對GUI進行初始化,隨后進行相應的功能顯示。
3.2 飛行參數(shù)數(shù)據(jù)卸載器實現(xiàn)功能
飛行參數(shù)數(shù)據(jù)卸載器的軟件設計目前分為波形顯示、鍵盤中斷、Flash讀寫和USB存儲數(shù)據(jù)4個部分。以加入優(yōu)先級低于主任務的低功耗任務,可以保證在外場長時間操作。程序開始時初始化μC/OS-II,然后創(chuàng)建新任務,啟動多任務調(diào)度后,系統(tǒng)就進入了多任務操作系統(tǒng)狀態(tài)。系統(tǒng)根據(jù)優(yōu)先級,開始Mytask任務,μC/GUI初始化,顯示波形和其他飛行參數(shù)信息。在多任務環(huán)境中,處理器會響應中斷,當有按鍵按下時,會進入按鍵中斷服務子程序,從而進入不同的工作狀態(tài)和界面。系統(tǒng)主任務流程如圖4所示。
在數(shù)據(jù)卸載時能夠顯示工作狀態(tài)、卸載方式和查看方式,在顯示波形時可以同時顯示時間、日期、架次等信息及誤碼率,顯示界面可根據(jù)需要同時顯示多個波形,在波形動態(tài)移動時,若使用簡單的Draw函數(shù),波形閃爍強烈,是因為直接將數(shù)據(jù)顯示在波形上而造成的圖像閃爍。解決辦法為利用GUI_MEMDEV_Draw()進行繪圖,其在執(zhí)行時會調(diào)用回調(diào)函數(shù),基本可以消除顯示屏上的閃爍。
4 結(jié)束語
嵌入式實時操作系統(tǒng)μC/OS-II和圖形用戶界面μC/GUI為便攜式飛行參數(shù)數(shù)據(jù)卸載器提供了新的思路,STM32系列微處理器較以往的8位單片機或工控機而言,豐富的外設接口及高性能提供了更多的功能,加入大尺寸液晶屏顯示創(chuàng)造了良好的人機界面,在STM32上移植μC/OS-II和μC/CUI,其實時性、多任務、可視化及小型化的特點,以及該設計中D觸發(fā)器鎖存信號降低誤碼率及最高5 120 bit/s高速數(shù)據(jù)轉(zhuǎn)錄的實現(xiàn),可提高飛行參數(shù)數(shù)據(jù)卸載器的功能應用和使用效率。