石文佳,孫宏軍,張亞洲
(天津大學 電氣與自動化工程學院,天津 300072)
?
MCU平臺的嵌入式系統軟件設計研究
石文佳,孫宏軍,張亞洲
(天津大學 電氣與自動化工程學院,天津 300072)
嵌入式系統的運行需要可靠性和實時性的保證,因此良好的可靠性和實時性是嵌入式系統軟件設計的重要標準。同時為了使軟件系統的魯棒性更強,嵌入式系統的設計需要一個非常好的軟件架構。這里介紹了一種基于MCU平臺的嵌入式系統軟件架構方法。在這個方法中,事件驅動機制的引入滿足了對軟件架構的要求,主程序中不僅采用了優先調度機制,同時也加入了軟件抗干擾措施,這些都使系統的實時性和可靠性得到了明顯的提高。設計實驗比較由該方法得到的軟件架構與原始軟件架構的實時性,得出由該方法優化后的軟件架構確實具有更好的性能。
MCU;MSP430F1611;嵌入式系統;可靠性;實時性;渦街流量計
嵌入式系統通常由嵌入式處理器、外圍設備、嵌入式軟件等部分組成,其中微處理器(MCU)在嵌入式系統中占據著相當重要的位置。由于MCU大多是8位或16位機,內部資源和運算能力都受到限制,無法與高性能處理器相比較,不能運用比較成熟的嵌入式實時操作系統,系統軟件又與硬件平臺有較大關聯,故而需要開發人員自己進行軟件體系的構建[1]。嵌入式系統對于實時性要求很高,如何處理各個任務的運行和調度,也會直接影響到嵌入式系統的可靠性乃至整體性能。因此好的軟件體系架構,對開發優秀而可靠的嵌入式應用系統極其重要。
天津大學流量實驗室研發了一款測量精度高、系統功耗低、功能完善、可靠性高的數字渦街流量計。考慮到低功耗和實時響應是流量計設計的重點,在設計中選用了MSP430F1611單片機為控制器。基于單片機的數字渦街流量計,往往由于工作頻率低而導致系統實時性比較差(優化前系統的執行周期時間是2.5 s)。由于溫度、壓力的變化容易對氣體密度造成明顯的影響,因此在測量質量流量時進行了密度補償。同時針對水蒸汽密度測量困難的問題,采用基于IAPWS-IF97公式的密度補償方案[2]。
在原有設計中,硬件電路和外圍器件布局的設計是比較合理的,但是系統軟件部分的設計差強人意。主要表現為:程序沒有對功能模塊和層次進行細致的劃分,主程序中含有大量與硬件平臺相關的代碼,不利于閱讀和修改維護;按鍵與LCD顯示存在明顯延遲,極端情況下甚至會出現按鍵無響應的情況。以上這些說明該系統軟件在實時性和可靠性方面都存在缺陷,即軟件體系架構在一定程度上是不合理的。圖1為未進行優化前的系統軟件體系結構。可以看出,每隔2.5 s整個系統會循環執行一次。這種結構的缺點在于:①按鍵和屏幕顯示不能獲得及時的響應;②按鍵處理過程中使用軟件延時消除抖動,會降低系統的實時性;③串口通信結束后,系統長時間處于等待狀態,無法及時處理其他任務。本文在優化該數字渦街流量計的原有軟件架構的同時,給出了如何設計出合理的嵌入式軟件體系的方法,系統的實時性和可靠性得到了改進。

圖1 原始程序流程圖
嵌入式系統設計中普遍使用16位MCU,而這些MCU的功能和資源都非常有限,運行嵌入式實時操作系統往往存在很大的負擔,因此要自行設計該嵌入式系統的軟件體系結構。這里引入了程序模塊化的思想。模塊化是軟件架構和程序設計重要的方法和手段。在模塊化的程序結構中,主程序僅僅是執行調度功能,負責及時調用功能模塊程序。
2.1 程序模塊化
C語言作為一種結構化的程序設計語言,主要依據程序的功能進行模塊劃分[7]。
程序設計的過程中,將各個功能模塊的程序都放到一個.c文件中,同時在.h文件中進行模塊接口的聲明,以方便其他文件的調用和管理。對于底層與硬件設備緊密相關的代碼用精煉的語言編寫,執行效率高。其他與硬件平臺無關的代碼運用模塊化編程思想編寫,以便于代碼的移植與重用。按照這種思想,改進后的數字渦街流量計的程序劃分為如下幾個模塊:按鍵處理模塊、LCD顯示模塊、溫壓補償模塊、脈沖捕獲方法測頻率模塊、FFT方法測頻率模塊、通信模塊、脈沖輸出/PWM波輸出模塊等[6]。
2.2 系統任務調度機制
嵌入式系統要獲得很高的實時性和可靠性,就要有合理的軟件架構。基于MCU的嵌入式系統程序典型執行順序為:首先對硬件設備進行初始化;然后對軟件模塊進行初始化;最后程序進入無限循環,繼續調用模塊的處理函數。首選的循環實現方案是while(1){}。
在while(1){}模式中,通過使用事件驅動機制和前后臺程序結構來對各個模塊進行調度。事件驅動機制的原理就是給每個功能模塊設置變量作為“使能標志”,通過使能該標志來觸發模塊所代表的事件。而前后臺程序結構是由主循環加中斷構成的。在while(1){}循環體系中,主程序按照順序來查詢各個模塊的使能標志變量,當發現標志被使能時則執行相應任務,否則放棄。在這種方式下常見的有如下兩種調度機制。
(1) 順序調度機制
順序調度機制示意圖如圖2所示。

圖2 順序調度機制示意圖
在這種調度機制情況下,各功能模塊在主程序中沒有優先級的區別,主程序會依次輪詢各個模塊的使能標志變量,通過判斷該使能標志的情況,進行模塊調度的決定。
順序調度機制的程序結構優點是,這一模式可以保證所有的功能模塊得到同等的調度的機會。但是它的缺點也很明顯:可能不能及時響應對于實時性要求較高的任務。
(2) 優先調度機制
圖3為優先調度機制的示意圖。優先調度機制的特點是主程序按照一定的優先級次序,查詢各個功能模塊的使能標志變量。在完成模塊任務后跳出本次循環,開始新一輪的查詢和執行。

圖3 優先調度機制示意圖
優先調度機制的程序結構的優點在于,這一模式可以讓排在前面的優先級較高的功能模塊獲得及時迅速的響應。
未修改前的系統軟件程序使用順序調度機制,輪詢調度的周期是2.5 s,這樣能夠確保每個模塊都能夠被同等調用,但對于某些實時性要求較高的功能模塊得不到及時響應。而優化改進后的程序使用優先調度機制,能夠使具有較高實時性的模塊靠前調用。對于突發事件的及時響應,可以使用設置中斷方式,例如按鍵響應等任務都采用中斷方式進行響應。得到的修改后的主程序圖如圖4所示。

圖4 優化后的程序流程圖
2.3 具體程序的模塊化
在程序的設計中,除了按功能劃分的模塊之外,通常還包括兩類基本的模塊:硬件驅動模塊和軟件驅動模塊。同時,軟件功能模塊要滿足低耦合和高內聚的要求。
2.3.1 硬件驅動模塊
硬件驅動模塊一般包括函數有:硬件設備初始化、設置CPU為對應硬件的控制線、對外圍設備提供操作接口函數。
直接作用于硬件的驅動程序應該放到單獨的模塊中,同時封裝成具有標準接口的API函數。例如LCD液晶顯示的控制,應當把寫數據、寫命令、顯示字符等函數封裝成API函數,以方便調用,使調用函數不必再對硬件寄存器直接進行操作。也可以將針對外圍設備的底層操作做成程序驅動庫,相當于各個外設的API函數,這樣方便上層程序的調用和管理[6]。
2.3.2 軟件功能模塊
軟件模塊的程序設計中,選擇簡潔合理的算法是非常重要的。例如FFT算法具有高復雜性,對處理器的運算速度和RAM大小都有一定要求,所以FFT算法及采樣點個數的選擇對于提高軟件系統實時性非常重要。
FFT算法有基2、基4、以及分裂基FFT算法和MFFT算法,考慮到MCU的性能和C語言實現的復雜度,選擇了基2的FFT算法。基2的FFT算法的主要步驟是同時將兩個數從內存中取出逆序排列,運行蝶形運算,將結果放回到內存中去。設計中對采樣的1 024個點進行FFT運算,如果直接進行DFT復數乘法,次數為1 048 576 次,而FFT算法只需要5 120次,大幅度降低了運算量,節省了計算時間。這種實現方法占用RAM較小,運算次數也較少。同時為提高運算速度,運行FFT算法前打開4 MHz時鐘,FFT算法完成后關閉4 MHz時鐘,打開DCO降低系統功耗[5]。
2.3.3 中斷服務程序
中斷的設置也是嵌入式系統實時性的重要手段。在實際應用中,主程序通過標志變量的值來判斷發生的中斷并調用對應的中斷處理程序。在優化后的程序中對按鍵的處理設置為中斷方式,一旦有按鍵按下,CPU進行響應,將按鍵中斷標志位置1,退出中斷,主程序調用按鍵功能模塊。這樣縮短了中斷執行時間,以便能夠響應其他中斷,提高了系統的實時性。同樣在溫度和壓力的采樣過程中也運用中斷方式進行響應,中斷服務子程序只進行數據存儲,在主函數中才對數據進行處理[5]。
針對優化改進前后的軟件體系架構的實時性,設計了對比實驗。按鍵后液晶屏幕顯示切換,屏幕的及時響應就能夠反應系統的實時性。通過使用秒表記錄數字渦街流量計的屏幕切換的時間,來對優化前后的軟件體系結構的實時性進行對比。實驗的具體過程是給該數字渦街流量計上電,然后通過按鍵進行畫面的調節,多次驗證,得到軟件優化前后的屏幕切換時間。實驗的屏幕畫面切換過程如圖5所示。測得的系統軟件優化前后屏幕切換時間如表1所列。實驗結果表明:在多次的重復實驗中,優化后的系統軟件在實時性方面表現較好。

圖5 屏幕切換畫面

原嵌入式系統軟件/s優化后的軟件/s優化時間/s2.11.60.52.01.70.32.11.50.62.11.60.5

[1] 王斌.基于MSP430的低功耗數字渦街流量計研究[D]. 天津:天津大學,2008: 6-7.
[2] 王肖芬,徐科軍.基于DSP的低成本渦街流量計信號處理系統[J].儀器儀表學報,2006(11): 1427-1431.
[3] Tammy Noergaard. Embedded Systems Architecture[M]. Oxford: Newnes,2005:309-379.
[4] Texas Insruments: MSP430x1xx Family User’s Guide, 2006.
[5] John G Proakis, Dimitris G Manolakis. Digital Sinnal Processing:Principles, Algorithms,and Applications, Fourth Edition[M]. Beijing:Publishing House of Electrics Industry,2007:379-399.
[6] 張亞洲.渦街流量傳感器周期振動影響研究[D].天津:天津大學,2013: 49-55.
[7] 張俊.匠人手記[M]. 北京: 北京航空航天大學出版社, 2008: 40-53.
石文佳(碩士研究生),主要研究方向為渦街流量計的優化改進;孫宏軍(副教授),主要研究方向為過程參數檢測與信息處理、傳感技術與信息處理、嵌入式系統設計等。
參考文獻
[1] 周宇博,劉杰. 基于模型的無刷電機控制代碼快速生成[J]. 單片機與嵌入式系統應用,2012(3):1-4.
[2] 邱寶梅,左文英,王鳳娟. 基于Simulink/RTW的汽車電子控制系統的研究[J]. 計算機測量與控制,2011(5):1086- 1088.
[3] 劉杰,翁公羽,周宇博.基于模型的設計——MCU篇[M]. 北京:北京航空航天大學出版社, 2011.
[4] 徐超坤,朱婷,李威宣. 基于模型的嵌入式C代碼的實現與驗證[J]. 單片機與嵌入式系統應用,2011(12):15- 18.
[5] MathWork Inc. Production Code Generation Technology,2009.
[6] 任佳麗. 基于模型的嵌入式軟件開發方法研究[D].太原:山西大學,2009.
[7] MathWork Inc. Developing Embedded Targets using Real- Time Workshop Embedded Coder,2010.
楊潤澤(助教),主要研究方向為內燃機性能與電控技術。
(責任編輯:高珍 收稿日期:2013-12-06)
Design and Research of Embedded System Software Based on MCU Platform
Shi Wenjia, Sun Hongjun, Zhang Yazhou
(School of Electrical Engineering and Automation, Tianjin University, Tianjin 300072, China)
The operation of embedded system needs the guarantee of reliability and real-time performance, so the fairly good reliability and real-time performance are the important standards in embedded system design. In order to make software system more robust,the good software architecture is required in the design of embedded system. This paper introduces a kind of design method of embedded system software structure based on MCU platform. In this method, the introduction of event-driven mechanism can meet the demand of software architecture. The main program not only adopts the priority scheduling mechanism, but also addes the software anti-interference measures, which all improve the real-time performance and reliability of software system. The real-time performance is verified through designed experiment to compare the before and after embedded system software, which can conclude that the optimized embedded system software has better performance.
MCU; MSP430F1611; embedded system software; reliability; real-time performance; vortex flowmeter
TP212.9
A
珍
2013-11-12)