劉淵,黃若,張天宏,田彥云
(南京航空航天大學 江蘇省航空動力系統重點實驗室,南京210016)
近年來,圖形化的編程方式已成為嵌入式系統開發領域的焦點之一。圖形化編程平臺對底層語言進行了高度集成,大大降低了嵌入式編程的復雜度,使軟件開發更為簡單高效[1]。但是,一些圖形化嵌入式軟件開發環境(如SCADE、Ardublock等),存在軟件授權使用費用過高或開發對象單一等問題,不能滿足普遍的嵌入式軟件開發需求。
Lab VIEW是美國NI(National Instruments)公司開發的一種軟件開發平臺,圖形化的軟件開發方式是其最大特點。在嵌入式系統開發方面,NI公司與ARM公司聯合開發了一種針對ARM微控制器的圖形化嵌入式開發組件[2],其在Lab VIEW的圖形化開發環境與ARM微處理器之間搭建了一座橋梁,通過它來對ARM對象進行軟件開發,可以縮短開發時間、提高編程效率。但是該組件同樣存在開發對象較為單一的問題,目前其僅支持ARM Cortex-M3 的 LM3S8962[3]、ARM7 的 MCB2300 以 及ARM9的MCB2400三款芯片,硬件平臺選擇有限,而國內外鮮有針對此問題的研究報道。
本文基于Lab VIEW的嵌入式軟件開發環境,研究其開發機理與流程,探究代碼復用技術,并針對Cortex-M4內核的ARM處理器對Lab VIEW嵌入式組件進行拓展,解決了Lab VIEW嵌入式軟件開發模塊在開發對象上的限制問題。在此基礎上,利用Lab VIEW開發基于Cortex-M4內核的TM4C123芯片的微型渦噴發動機電子控制器,并通過臺架試驗對其進行驗證。
Lab VIEW嵌入式軟件開發的本質是代碼復用,而在Lab VIEW環境下實現對ARM的嵌入式開發,主要依托于Keil MDK工具鏈。Lab VIEW嵌入式軟件開發機理如圖1所示,基于Lab VIEW編寫的圖形化嵌入式軟件程序通過Lab VIEW C Generator生成對應的C代碼,并按照一定規則添加到RTX操作系統的框架中,此時Lab VIEW通過調用Keil MDK的RVCT編譯工具將程序代碼編譯并下載到ARM芯片中。當這一流程完成之后,便可在Lab VIEW環境中對ARM芯片中的程序進行調試。

圖1 LabVIEW嵌入式軟件開發機理圖
Lab VIEW代碼自動生成流程圖如圖2所示。首先通過Lab VIEW編寫嵌入式程序,程序中主要包含兩個部分:一個是外設驅動部分;另一個是常規的Lab VIEW程序部分,一般用于完成算法、參數配置等功能。這兩部分組成的嵌入式程序通過C Generator模塊,按照一定的規則,生成對應的C代碼,與嵌入式程序中的模塊對應。所生成的C代碼會被載入到已經準備好的RTX嵌入式操作系統的模板中,形成RTX操作系統工程,其中工程項目的設置環境在操作系統移植時確定。完成上述工作后,獲得可使用的目標嵌入式程序工程。

圖2 LabVIEW代碼自動生成流程圖
本文針對Cortex-M4內核的TM4C123芯片,建立基于Lab VIEW的圖形化嵌入式軟件開發平臺。為了圖形化嵌入式開發平臺的搭建,結合Lab VIEW嵌入式開發機理的研究,從開發環境、操作系統、復用模版以及驅動代碼這幾個方面搭建Lab VIEW環境下的嵌入式開發平臺。
Lab VIEW的嵌入式軟件開發模塊采用ARM公司的Keil MDK嵌入式軟件工具鏈。要實現Lab VIEW的嵌入式軟件開發,首先需要解決的就是開發工具鏈問題。由于現有的Lab VIEW嵌入式軟件開發模塊只能調用舊版本Keil MDK(V4.01),不具備開發Cortex-M4的能力,需要對開發環境進行整合。首先需要將新版本Keil MDK中針對Cortex-M4的DLL文件進行整合,其中包括lmidkagdi.dll、SARMCM3.dll、DCM.dll 等,然 后 添 加TM4C123芯片對應的芯片信息與相關文件。整合后的開發環境可以被Lab VIEW嵌入式軟件開發模塊正確調用,用于TM4C123芯片的相關開發。
Lab VIEW是利用RTX操作系統實現嵌入式軟件開發的。由于舊版本的Keil MDK中的RTX并不支持ARM Cortex-M4系列處理器,需要將新版本中的RTX操作系統相關文件整合到舊版本中。完成相關移植工作后,針對TM4C123的Lab VIEW嵌入式軟件開發可以在此RTX操作系統上展開。
Lab VIEW嵌入式軟件開發復用模板是Lab VIEW嵌入式開發的基礎,它給嵌入式程序提供了框架,所有的程序代碼都會根據一定的規范嵌套于模板中。在創建復用模板時,需要完成兩部分內容:首先要創建模板的原型,其中包括RTX操作系統文件和Lab VIEW生成代碼所涉及的相關文件,其次需要對模板進行適用TM4C123的相關修改。針對實際情況,可以以Lab VIEW自帶的LM3S8962芯片代碼復用模板為基礎,對TargetConfig.ini等文件進行相應的修改,以創建適用于TM4C123的代碼復用模板。
代碼復用模板創建完畢之后,還需要對芯片各個接口的驅動代碼進行編寫。驅動代碼可以通過Lab VIEW自帶的Elemental I/O Device Wizard進行編寫,這種方式在實際編程中,接口資源調用較為方便,但是存在很多弊端,如所能編寫的接口種類較少、編寫驅動過程復雜。本文提出一種腳本式的驅動代碼編寫辦法,以嵌入式C腳本為核心,免去了Lab VIEW中繁瑣的設置過程,并且可以實現各種接口驅動代碼需求。以PWM驅動為例,驅動程序示意圖略——編者注。在嵌入式C腳本中主要為PWM驅動代碼,其中 GPIO_PIN、PWM_OUT_BIT、PWM_GEN、GPIO_PWM、PWM_OUT與PWM_BASE作為輸入變量,供外部的條件循環根據端口進行不同的賦值。通過這樣函數接口設置,驅動程序中的參數可以根據所選的端口自行配置,不需要每次都進行修改,顯著提高了開發效率。
為了驗證上述平臺的可行性,利用Lab VIEW開發了基于TM4C123芯片的微型渦噴發動機控制器軟件,其功能需求主要包括信號采集、串口通信、轉速控制等[3]。
以電子控制器信號采集與輸出程序為例說明程序的開發方法。微型渦噴發動機信號采集與輸出程序的Lab-VIEW程序框圖如圖3所示。程序主要功能:將實際溫度、油門桿位置等參數通過串口發送至監控計算機,采集當前發動機轉速,并根據控制需求改變輸出PWM的占空比來控制氣閥、油閥、油泵等執行機構。其中串口驅動、ECAP驅動、PWM驅動功能均基于腳本式驅動開發方法,在封裝后可以在程序中直接進行調用。

圖3 信號采集與輸出程序框圖
控制器軟件編寫完畢后,點擊LabVIEW中的運行按鈕,LabVIEW將自動生成相關程序代碼并編譯,最后將目標代碼下載到嵌入式芯片中。LabVIEW為嵌入式調試提供了一個交互性極強的人機界面,可以將想要調試的功能設置成相應的輸入控件,在設計初期,即使沒有上位機程序,也可以通過LabVIEW實現在線調試,極大地提高了開發效率。
在微型渦噴發動機電子控制器軟件設計完成后,需通過相關試驗對其功能進行驗證。本文通過臺架試車試驗檢驗所開發的電子控制器的實際控制效果。臺架試驗中,主要進行了開環控制與閉環控制試驗。臺架試驗轉速開環控制過程曲線圖如圖4所示,轉速及溫度值響應正常。

圖4 臺架試驗轉速開環控制過程曲線圖
圖5為臺架試驗轉速閉環控制曲線圖,可以看到,實際轉速響應速度快,并且沒有明顯超調,達到了微型渦噴發動機的控制要求。臺架試車試驗結果表明,通過Lab-VIEW嵌入式軟件開發平臺設計的基于ARM Cortex-M4內核的電子控制器,能夠實現微型渦噴發動機開環轉速和閉環轉速控制功能,有效性得到了實際工程驗證。

圖5 臺架試驗轉速閉環控制曲線圖
本文以搭建基于Lab VIEW的ARM Cortex-M4嵌入式軟件開發平臺為目標,對Lab VIEW圖形化嵌入式軟件開發技術展開研究。首先對Lab VIEW嵌入式軟件開發機理進行了研究,并分別從開發工具鏈、操作系統、復用模板以及驅動代碼幾個方面簡要闡述了相關移植工作,然后在此基礎上為微型渦噴發動機設計了以TM4C123為目標處理器的控制器軟硬件,并通過臺架試驗驗證其代碼的有效性。綜上所述,在Lab VIEW嵌入式軟件開發平臺上進行嵌入式軟件開發,不僅能夠實現傳統代碼開發方式的功能,而且縮短了開發周期,提供了直觀便利的人機交互平臺,從而顯著提高嵌入式軟件的開發效率,具有較高的工程應用價值。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1]Jha H R,Priyadarshi A,Kumari A.Electronic Module of Hydraulic Damper Test Bench using ARM Microcontroller Interfacing in Lab VIEW[J].International Journal of Scientific&Engineering Research,2013,4(1),22-29.
[2]宮厚良,陳曾漢.基于RTX和Lab VIEW的多任務實時測控系統[J].計算機應用,2007,27(6):1551-1552,1555.
[3]孫環宇,蘇三買.微型渦輪發動機電動供油流量控制系統設計[J].測控技術,2008,27(8):53-55,58.
[4]高瑾,黃洋,宋石陽,等.車用電機硬件在環實時仿真與測試平臺[J].電工技術學報,2014(11):99-106.