陳璇 陳晉瑜

摘? 要:嵌入式軟件的研發需要綜合各方面的因素去考慮和取舍,以達到質量和效益之間的均衡,要充分發揮硬件的性能,提高軟件的質量是嵌入式軟件研究的前提,是企業前期研究必不可少的一個環節。為了實現低成本,開發周期短的嵌入式軟件,研究設計了基于STM32F107VC的嵌入式前后臺控制系統設計,完成與設備的交互。
關鍵詞:STM32;嵌入式;后臺控制系統
中圖分類號:TP273? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)01-0039-03
Abstract:The research and development of embedded software needs to consider and choose from all aspects,in order to achieve the balance between quality and benefit,to give full play to the performance of hardware,to improve the quality of software is the premise of embedded software research,and is an essential part of the enterprises early research. In order to realize the embedded software with low cost and short development cycle,an embedded front and back control system based on STM32F107VC is designed to complete the interaction with the equipment.
Keywords:STM32;embedded;background control system
0? 引? 言
嵌入式軟件廣泛應用于工業控制、智能家居、醫學醫療等各個領域,是現代智能科技發展的重要領域,本研究主要解決低成本,小型嵌入式設備的控制系統設計。研究范圍是基于單片機的輕量級嵌入式軟件開發,為嵌入式初學者及單片機裸機開發者給出一種可行的設計方法,其中一些想法及思路是在具體開發過程總結的一些開發方法,供讀者設計參考使用。
1? 研究的背景及意義
本文研究的是一種兼顧成本和開發周期的快速廉價的控制系統,應用于對系統實時性要求不高,但穩定可靠的小型MCU嵌入式設備中,針對裸機軟件的設計提供了可行的參考設計方案,保證系統能夠穩定運行,從軟件的設計上給出了框架。
2? 系統中的資源
為了滿足設計需求,結合STM32F107的片上資源和外圍接口的資源,合理地使用調配資源,一方面滿足系統的需求,另一方面,其合理化的設計軟件框架顯得尤為重要。本節指出了本研究用到的資源以及用途,本文控制的設備屬于工業上使用的設備,為了方便理解以及一些其他原因,暫用設備1、設備2等表示。在STM32官方庫文件中串口1、串口2、串口3用USARTx表示,而串口4用UARTx表示。
(1)USART1接口。用于程序調試打印的接口。
(2)USART2接口。用于監控設備1的上下行數據。
(3)USART3接口。用于監控設備2的上下行數據。
(4)UART4接口。用于監控設備3的上下行數據。
(5)CAN總線接口。用于監控設備4的上下行數據。
(6)EXTI外部線中斷接口(即GPIO配置成此模式)。用于按鍵控制。
(7)TIM2。用于對屏幕需要更新的參數進行動態刷新和保護OLED屏幕。
(8)TIM3。用于對系統連接的設備進行定時查詢。
(9)TIM4。用于對設備上行數據進行定時解析。
(10)NET。網口用于與上位機的交互。
3? 中斷優先級的考慮
由于是無操作系統的前后嵌入式軟件,處理好系統的中斷優先級,是保證軟件前臺數據能夠準確接收的重要保證,是軟件設計的難點,本文設計的思路是結合實際情況,即系統對數據實時性要求不高的要求,總體思路是采用閉環操作,即同一時間保證只有一個設備在交互,通過快速的輪詢,達到提高設備實時性的要求。本文的全局中斷分組為Group2,即有兩位的搶占優先級和兩位的響應優先級,并且可以設置同樣的優先級,數字越小代表優先級越高[1]。
TIM2定時器的主要功能是實時更新一些設備的狀態參數,并且需要及時響應按鍵的操控,將優先級設置為最高的主要原因為屏幕的顯示是人機交互界面最主要的依托,是用戶體驗的直接表現,所有的操作都應該為用戶的操作讓路。其次是四個連接設備可以按照重要性等級的分類,使設備1優先級大于設備2的優先級大于設備3的優先級,但由于采用的閉環設備操作指令,這幾個優先級可以適當地放松,因為這四個設備不會同時進行查詢,而使得設備的上行數據回復時刻不受控,導致復雜的中斷嵌套的問題,嚴重時還會使某些設備數據丟失。上位機交互的功能依托于本嵌入式軟件與底層設備的交互,故優先級不需要太高。解析設備的定時器的優先級同樣不需要很高,因為在實際的使用過程中,定時器500 ms輪詢一次設備,還是520 ms輪詢一次設備對于本系統沒有嚴格的要求。優先級最低的是用于按鍵的外部線中斷,本來用于人機交互必不可少的按鍵,優先級應該最高,但是由于按鍵需要消抖,加上人的反應時間,按鍵的優先級調到最低,在用戶的使用上沒有明顯的差別,同時不影響應用其他任務的進行,故按鍵中斷的優先級設置為最低。
4? 信號量的處理
信號量是一些實時操作系統的概念,有時也被稱為信號燈,是多線程環境下使用的一種設置,可以用來保證兩個或者多個關鍵代碼不被并發調用。本文使用信號量的概念,主要是為了說明代碼執行的獨立性,因為在前后臺系統中存在著多個中斷,并且各個中斷都在不斷地執行著自己的任務,當在實際的用戶使用過程中,如此時需要對一個設備進行命令下發,但有各個中斷任務進行干擾,從而必須進行代碼段的保護,使代碼能夠獨立地執行,并完成其功能[2]。
這里需要重點說明的是,按照中斷嵌套的使用原理,中斷完畢、恢復現場后會繼續執行后臺任務,不會干擾后臺任務的執行,但是在實際設計中,因為前臺的定時輪詢任務有可能在某一時刻打斷后臺的任務,但是這種打斷不是一定的,需要看定時器的定時時間與后臺下行指令的響應時間相關,也就是說一旦被定時輪詢任務打斷后,此任務可能輪詢的設備正是該下行指令需要設置的設備,這種情況下,很可能導致該下行指令無法響應,并且輪詢的時間越短,該指令無法響應的概率就會直線上升,故引入信號量是一種很好的解決方法。
5? 系統設計思路及框架
本系統設計的是前后控制系統,可以實現對設備的指令控制、實時監控、狀態檢測等,設計程序的整體思想是盡量在同一時間做同一件事情,減少中斷的嵌套,同時最大限度地滿足實時的人機交互功能。
首先從用戶的角度看,系統可通過自身的外圍設備屏幕和按鍵進行與設備交互;還可以連接上位機后,通過上位機完成對設備的控制,通過兩種方式控制設備的本質上都是前后臺系統完成與設備的交互,但從用戶的角度來看兩種方式是相互獨立的,都可以獨自完成控制,同時這兩種方式又是相互聯系的,如,使用上位機打開設備后,可以使用本地的按鍵屏幕關閉設備;再如,上位機改變設備參數后,本地監控的屏幕對應的參數也會更新。
同時在這里要再次說明,前后臺系統的設計,本質上是一個while(1)無限循環和若干個中斷組成,前臺是由若干個中斷組成,及時響應設備的上行信息,或者完成其他任務,后臺是由用戶主動發起的一些命令響應操作,如設備控制、狀態監測、告警查詢等等。
其次,從程序設計的角度看,在中斷優先級設置合理,并且采用命令閉環的方式下,在信號量的機制下,前后臺之間的運行互不干擾,前后臺之間的交互也很清晰,為整個程序的設計提供了框架。
最后,前臺設計中各個任務與后臺任務有交互,同時前臺各個任務之間也會有數據的交互,這其中數據傳遞大多都是由全局消息進行完成的,軟件設計首先要保證用戶交互可以隨時進行,這點由中斷優先級保證,其次要保證設備的下行命令能夠及時響應,保證用戶交互的成功,最后是設備的狀態要能夠全部監測到,并且設置合理的輪詢時間,這就是軟件設計的整體思想。在系統整體框圖中,較大的虛線框表示前臺、后臺的操作和任務組成;用戶框單獨列出;箭頭表示信號或者操作的指向;信號量用圓角虛線框表示,其他操作及任務框都是實線框表示,這是因為在系統初始化和一些系統獨占的任務中不需要等待信號量,系統可以直接下發命令給設備。系統軟件設計的整體框圖如圖1所示。
6? 前后臺設計中的優缺點分析
本文設計的是前后臺控制系統,適用于眾多嵌入式的小型控制系統中,研發成本低,周期短,加上STM32官方庫的支持,很方便程序進行開發。但是開發之前必須搞清楚軟件的設計需求,明白MCU的系統資源,考慮系統對實時性的要求,這樣才能更好地選擇合適的、經濟的軟件方案。
本軟件簡單,易于上手,但是沒有實時系統的加持,一些信號量的機制需要自己完成,前后臺的數據需要閉環處理,還需要合理地調整優先級,這都是需要程序員根據實際情況去調整的。
7? 結? 論
前后臺控制系統的設計,能夠滿足工業上大多數場合的使用,在設備控制,自動化處理過程中有著廣泛的應用前景,如果加上無線模塊,還可以應用在最近興起的智能家居上??傊粋€好的軟件設計必須滿足其應用場合,才能發揮其自身的優勢,定位好自身的應用領域就顯得尤為重要。
參考文獻:
[1] 陳明.基于STM32的嵌入式web服務器的設計 [D].武漢:武漢理工大學,2013.
[2] 任慰.以實時操作系統為中心的嵌入式系統平臺化設計研究 [D].武漢:華中科技大學,2013.
作者簡介:陳璇(1993-),男,漢族,山西臨汾人,助理工程師,本科,研究方向:嵌入式研究;陳晉瑜(1997-),男,漢族,山西臨汾人,本科,研究方向:嵌入式理論等。