李毅航,涂強,唐立軍
(1.長沙理工大學 物理與電子科學學院,長沙 410114;2.近地空間電磁環境監測與建模湖南省普通高校重點實驗室)
流程圖化的嵌入式系統開發平臺*
李毅航1,2,涂強1,2,唐立軍1,2
(1.長沙理工大學 物理與電子科學學院,長沙 410114;2.近地空間電磁環境監測與建模湖南省普通高校重點實驗室)
面向嵌入式零代碼基礎使用者和低成本開發者,搭建了一個基于STM32的軟硬件一體化編程的流程圖化的嵌入式系統開發平臺。該平臺采用STM32作為硬件載體,用QT跨平臺C++圖形用戶界面搭建簡單易懂的流程圖操作界面。硬件框圖界面能驅動嵌入式設備,用編譯軟件封裝功能模塊放置功能編輯盒,通過命令行調用編譯器,調用外部燒錄軟件完成下載,代碼查看器可直觀監視編譯全過程。測試結果表明,該平臺可方便、快捷解決編程問題。
流程圖編程;嵌入式系統;界面開發
流程圖編程,即將程序代碼與直觀的圖形相結合,用戶在進行圖形化編程時,無需考慮程序語法、句法的嚴格要求,具有程序結構直觀、易于理解、交互方式簡單等優點,將大量節省軟件開發的人力資源和時間耗費[1-4]。LabVIEW為目前主流的圖形化編程語言,是利用計算機技術解決復雜、繁瑣、費時的編程問題和學習C++的重大突破,與傳統的編程語言相比,可以節省80%的程序開發時間[5]。LabVIEW包含有強大的函數庫,導致其要求有專業基礎,且軟件學習周期長。本文以C51和STM32單片機為研究對象,探索零代碼基礎嵌入式系統流程圖開發平臺,實現集預處理、編譯、匯編、鏈接和硬件操作于一體的圖形化開發平臺。
嵌入式系統開發平臺主要為方便嵌入式系統工作者編程需要,減少編程工作量,省略初學者學習嵌入式系統軟件的程序。因此流程圖式程序編譯平臺應該包括流程圖界面、硬件框圖界面、功能編輯盒、代碼查看器、編譯下載部分,用來完成流程圖的搭建、初始化設置、變量定義、代碼查看、編譯及下載,如圖1所示。首先,設計流程圖軟件界面,以方便在界面上實現功能模塊操作,完成可視化的流程圖設計。硬件框圖界面能實現驅動嵌入式單片機設備功能,其次,功能編輯盒的設計,給每個模塊都封裝有實現常用功能的C語言函數,代碼查看器能夠顯示功能模塊中的代碼,并直觀監視編譯全過程。最后,可通過命令行調用編譯器和外部燒錄軟件來實現程序的編譯和下載,實現流程圖化嵌入式系統開發。

圖1 流程圖化嵌入式系統開發設計方案
設計本平臺,使得用戶無需像傳統編程一樣逐條代碼編寫,直接將平臺提供的功能模塊連接成流程即可實現編程。平臺功能通過4個方面實現:平臺界面的搭建、功能模塊代碼編寫及封裝、硬件結構框圖的構建、圖形化程序的編譯及下載。設計思路如圖2所示。

圖2 平臺設計思路
2.1 平臺界面的搭建
平臺界面搭建是基于QT界面開發庫編寫實現的,主要包含5個部分,分別是菜單操作、功能編輯盒、軟件流程圖、硬件結構圖和代碼查看器。
菜單操作是利用QAction、QMenu搭建的快捷菜單,有新建、打開、保存、編譯、下載、清除等一系列常用功能,同時可以打開或關閉軟件流程圖、硬件結構圖、功能編輯盒、代碼查看器等程序編寫界面。
功能編輯盒由QTreeWidgetItem構成,搭建在QDockWidget建立的可停靠窗口中,包含有每個功能模塊的代碼和模塊圖形等信息,可自由選擇停靠位置打開或關閉。
軟件流程圖是整個界面的核心部分,利用QDrag函數來實現對功能模塊的拖拽,利用重寫EventFilter函數來監控每一個控件事件的發生,并觸發相關功能函數,如左鍵單擊,能移動模塊;左鍵雙擊,能設置輸入參數和輸出參數;右鍵單擊,能連接流程線;右鍵雙擊,能刪除模塊。
代碼查看器是利用QDockWidget建立的可停靠窗口,在嵌入式工作者進行流程圖連線時,利用重寫EventFilter函數可觸發監控事件,把模塊對應的C語言函數顯示在代碼查看器中,進而監視編譯的全過程,并能對代碼進行直接修改。實現原理如圖3所示。

圖3 開發平臺界面實現原理
2.2 功能模塊代碼編寫及封裝
平臺廣泛采集通用的嵌入式系統功能模塊,每個功能模塊在編譯器中完成功能代碼函數的編寫,并在平臺頭文件中聲明,用戶可直接在平臺中實現功能函數調用。平臺封裝有開始、結束、循環、如果、否則等基本語句;LED燈A、LED燈B、按鍵A、按鍵B、蜂鳴器、顯示屏等外界器件封裝;延時、串口、定時器中斷、PWM輸出、ADC輸入、光敏傳感、溫度傳感、紅外遙控等功能模塊封裝。封裝好的模塊可以直接作為圖形添加到流程圖中,應用結構化的設計模式與具體硬件相結合的方式,依靠提供的圖形化環境開發一個完整的程序。同時,也可作為第三方平臺,用戶自行編寫符合自身應用場景的函數來完善封裝庫,實現資源共享。封裝原理如圖4所示。

圖4 功能模塊封裝原理
2.3 硬件結構框圖的構建
平臺基于STM32的軟硬件一體化開發,通過QPaint函數完成單片機樣圖繪制、QTextEdit函數完成引腳標注、EventFilter監控事件發生,實現功能模塊與單片機引腳的連接,輸入驅動該設備的引腳編號,從而達到通過單片機引腳驅動硬件設備的目的,同時將會在代碼查看器中顯示硬件初始化函數,實現帶有硬件設置的流程圖化嵌入式系統編程。硬件結構框圖構建原理如圖5所示。

圖5 硬件結構圖設計原理
2.4 程序的圖形化鏈接、編譯及下載
平臺開發時包含所有可能會用到的頭文件,開始語句中包含主函數,功能編輯盒中的功能模塊封裝有完整的功能函數代碼,程序自動文本補充返回值語句,故圖形化程序的鏈接就是按照一般流程圖的規則,將模塊進行組合,完成所需程序設計。當流程圖程序設計完成后,可開始編譯,若顯示編譯通過,自動通過命令行調用編譯器,完成對代碼的預處理、編譯、匯編,并以編譯器的鏈接文件格式輸出鏈接文件,完成對多個目標文件的鏈接,生成二進制代碼hex文件,調用外部燒錄軟件實現下載功能。
3.1 測試方案
測試方案是通過平臺自帶的基本語句和功能模塊搭建一個流程圖來實現一個實用案例,通過案例檢測功能模塊是否達到預期的效果,以及連接過程中是否會有異常發生。設計如下案例:用光敏傳感器來讀取光強,當光度值超過50時,LED紅燈亮,蜂鳴器開啟,顯示屏顯示具體光度值以及提示天亮了。當光度值低于50時,LED綠燈亮,蜂鳴器關閉,顯示屏顯示具體光度值以及提示天黑了。搭建流程圖如圖6所示。

圖6 流程圖搭建界面效果圖
3.2 測試結果
當用日光照射時,LED顯示紅燈,顯示屏上顯示light intensity is 83,now the day is breaking,并伴有蜂鳴器的聲音。當遮擋住日光時,LED顯示綠燈,顯示屏上顯示light intensity is 3,now the dark is rising,沒有蜂鳴器的響聲。
測試結果表明:如圖6所示的流程圖可以很好實現案例所要求的功能,測試過程中文件的新建、打開、保存,程序的編譯、下載均能正常響應,控件之間連接正常,平臺界面在使用過程中也并未出現BUG,所有功能正常。

[1] 鐘志超,張志勝,戴敏,等.流程圖與類C語言實時轉換方法[J].東南大學學報,2009,39(3):502-507.
[2] 陳瑞森.基于流程圖編程的單片機軟件系統開發[J].智能計算機與應用,2013(4):95-96,99.
[3] 郭國法,宮瑤,張開生.嵌入式課程遞階教學平臺的設計與實現[J].單片機與嵌入式系統應用,2015(9):159-22,95.
[4] 朱云,曾曉勤,朱寧,等.基于圖文法的程序流程圖與源代碼自動轉換[J].計算機工程與科學,2015(5):937-945.
[5] 黃明,朱群雄.基于流程圖的設備管理系統的設計與實現[J].計算機與應用化學,2009,26(8):1073-1078.
[6] LabVIEW——虛擬儀器系統的理想開發平臺[J].國外電子測量技術,1996(4):52.
[7] 邢維巍,樊尚春.嵌入式圖形用戶界面開發平臺[J].北京航空航天大學學報,2003(9):829-833.
[8] 范效瑋.基于單片機的圖形化編程平臺的設計與實現[D].長沙:中南林業科技大學,2015.
[9] 萬偉.PLC編程語言開發平臺的設計[D].武漢:武漢理工大學,2007.
[10] 姚健東.一種通用圖形化嵌入式開發平臺的設計及應用[D].蘇州:蘇州大學,2010.
李毅航,主要從事嵌入式系統研究;唐立軍(教授),主要從事信號檢測與處理研究。
Flow Chart of Embedded System Development Platform
Li Yihang1,2,Tu Qiang1,2,Tang Lijun1,2
(1.School of Physics and Electronic Science,Changsha University of Science and Technology,Changsha 410114,China;2.Key Laboratory of Electromagnetic Environment Monitoring and Modeling in Hunan Province)
A software and hardware integration programming flow chart like embedded-system development platform based on STM32 is built for the beginners.The platform uses the STM32 as the hardware carrier,adopts QT to build the flow chart which is simple and easy to understand.The hardware block diagram can drive the embedded functional equipment.The function editor is arranged by the compiler software package function module,the download is finished by the command line calling the compiler and external burning software.The code viewer can directly monitor the whole process of compilation.The test results show that the platform can solve programming problems conveniently and quickly.
flow chart programming;embedded system;interface development
國家科技支撐計劃課題(項目編號:2014BAH28F04);湖南省大學生研究性學習和創新性實驗計劃(項目編號:201510536017)。
TP368.2
A
?士然
2016-09-01)