夏鑫
摘要: 隨著電子技術、信息技術和通訊技術的快速發展以及互聯網的廣泛應用,計算機產品開始逐漸轉移到信息產品,而硬件技術的發展促進了計算機往微型化和專業化的趨勢發展,人們對于信息產品的功能要求越來越高,嵌入式系統開始逐漸走入人們的視線,實時操作系統的移植也成為計算機這個行業的熱點。本文選用能夠管理多任務的嵌入式實時操作系統uC/OS-II,以及嵌入式網絡協議Lwip,該協議能夠實現嵌入式設備與互聯網之間的連接,分析了以微處理器LPC2365、閃存FLASH、LED、蜂鳴器和PC為硬件平臺嵌入移植了uC/OS-II嵌入式實時操作系統的相關設計方法,以實現在此嵌入式系統上進行主從結構幀結構傳輸的串口通信。
Abstract: With the rapid development of electronic technology, information and communication technology, and the wide application of Internet, computer products gradually transferred to information products, with the development of hardware technology and requirements of people to the improvement of information product functional, embedded system has become hotspot in this field, at the same time in the field of computer itself, miniaturization and specialization is a new trend of development. This paper expounds on the ARM7 microprocessor LPC2365 transplant uC/OS-II main content and the realization of the related function of design method. Choose embedded real-time operating system uC/OS-II that manage multiple tasks, and used embedded network protocol called Lwip to implement the connection between embedded devices and the Internet. With microprocessor LPC2365, FLASH, LED, buzzer and PC as the hardware platform, transplant the embedded real-time operating system uC/OS-II, and on the embedded system realize the master-slave structure frame structure transmission and serial communication function.
關鍵詞: 嵌入式系統;uC/OS-II實時操作系統;Lwip協議;LPC2365
Key words: embedded system;uC/OS-II real-time operating system;Lwip protocol;LPC2365
中圖分類號:TP316.8 文獻標識碼:A 文章編號:1006-4311(2017)19-0090-04
0 引言
近年來,隨著計算機技術中、網絡通信技術及微電子技術的快速發展,嵌入式技術這門新興學科開始進入研究人員的視線并且在其相應的技術支持下所衍生的信息產品逐漸向微型化和智能化發展。在人們的日常生活中隨處可見嵌入式設備,比如手機、MP3,單片機的提出對于用于交通、科技、生活、工業生產和通信等的各種各樣的產品通過內嵌集成電路芯片來優化其性能,基于此提出了嵌入式系統的概念,而這些內置芯片的產品初步具備嵌入式的應用特點。而“嵌入式系統“這個概念源于80年代初的微型機時代,主要適用于某些對應用系統成本、功能、功耗和體積要求很苛刻的專業計算機系統,基于計算機技術、圍繞應用并且能夠實現軟硬件裁剪而提出。憑借成本低廉、設備體積小、可靠性高等特點,嵌入式系統已經滲透到我們生活中的各個領域。
隨著人們日益增長的物質文化需要,對嵌入式系統功能的要求也越來越高。這就意味著嵌入式操作系統單一任務傳統模式己經遠遠不能滿足需求,嵌入式必然的發展趨勢是對操作系統的引入。移植了實時操作系統的嵌入式系統具有的實時任務管理、合理的內存分配、操作系統內核的時鐘管理和完善的任務進程間的任務同步通信機制等優點推動其進一步發展。計算機網絡的快速發展使得網絡技術在各個領域都有所應用,包括航空、工業、農業、教育、醫學等。在這些領域中網絡成為重要的主導因素,全球網絡化時代是必然趨勢,嵌入式系統也逐步朝著網絡化方向發展。
實時操作系統uC/OS-II作為一個微內核,具有代碼量小、實時性強、支持的處理器多等優點,使得其在國內外嵌入式領域得到了廣泛的應用[1]。在嵌入式系統資源受限的前提下,開發的輕量級的網絡協議Lwip能夠很好地適用于該系統,能夠很好地減少系統的RAM運行、支持TCP/IP協議、操作系統模擬層、網絡接口和API接口等。
1 設計的基本原理
ARM7處理器LPC2365芯片具有多個串口資源,這些串口資源用于實時接收數據,這些數據包括數據采集板數據、普通性能GPS接收機數據和高性能GPS接收機數據,按要求對采集板數據與普通性能GPS數據進行組幀,根據所收到的互斥型信號量,存入發送數據隊列中,這個隊列屬于FIFO類型;接收的高性能GPS接收機數據存入同一隊列;當已經有數據存入該發送數據隊列時,為進行數據的發送,需要通過一個二值信號量來啟動串口發送任務,在發送完一幀數據后結束發送過程[2],如圖1所示為數據流向示意圖。
針對串口接收任務、串口發送任務、組幀任務等不同功能創建不同的任務,這里應用程序是基于嵌入式實時操作系統uC/OS-II編寫完成的。
2 設計完成的工作
2.1 數據以幀結構傳輸
對于固定長度的短字節幀數據,通過設置合適的字節觸發深度,一次中斷完成數據接收任務;對于變長的長字節幀數據,則通過多次中斷和等待延時的方法判斷數據穩定并完成幀數據的接收;對于大量數據的接收和發送采用建立FIFO數據隊列的方法。通過這些措施較好地完成了多串口較大數據量的通信任務。
2.2 uC/OS-II的串口通信
通過數據信號線、控制線和地線等在計算機和外設間進行按位傳輸數據的通信方式稱為串口通信,這種通信方式具有使用數據線少節約成本的優點,但相對于并行傳輸其傳輸速度低[3]。
串口是計算機上一種非常通用的設備通信協議同時也是儀器儀表設備通用的通信協議,除了筆記本電腦以外,大多數計算機以及很多GPIB兼容的設備包含基于RS-232的串口,同時,在獲取遠程采集設備的數據方面,串口通信協議也起到非常重要的作用。
2.3 主從結構
主從式結構是一種多用戶結構,其特點是單主機帶有多終端、數據易于管理與維護,但是當終端用戶數目增加到一定程度后,主機會因為任務過分繁重使系統性能大幅度下降[4],而且當主機出現故障時,整個系統都會處于癱瘓狀態,所以系統的可靠性不高。
在主從式結構中,主機完成所有的處理任務,連接主機的終端各個用戶共享數據資源,并發地存取數據,這得益于主機上存放的數據庫系統,該系統主要包括數據、應用程序和DBMS。
3 硬件設計
主控CPU是ARM7處理器LPC2365,在嵌入式實時操作系統uC/OS-II中F1ash存儲器和SRAM用于運行和存儲相關的應用程序,全雙工UART串口用于與數據采集板、GPS接收機等進行通信[5]。
高性能GPS接收機的數據量占空比高達85%,輸出數據時其數據量為305字節/幀、比特率為57600 bps、速率為20Hz,為完成數據的傳輸任務,考慮到還需要下傳其他參數信息,應選用波特率更高的數傳模塊。
EL806數傳模塊擁有先進的調頻擴頻技術,這款由美國GE MDS公司生產的數傳模塊在無線數據通信上具有較好的可靠性、完整性和較強的糾錯能力,硬件系統框圖如圖2所示。
4 軟件設計
4.1 實時操作系統 uC/OS-II的移植
uC/OS-II作為一種完整的占先式實時多任務內核,具有可移植、可固化、可裁剪和源代碼公開等特點,它可移植到包括8位、16位、32位單片機、DSP以及64位的微處理器等多種不同架構的微處理器上[6]。
為了將該操作系統移植到相應CPU體系結構中以確保該系統能在原先準備的硬件環境中運行,進行源代碼的編寫和修改,按照相應的移植步驟就可以得到移植的操作系統[7]。
4.2 應用程序的編寫
編寫應用程序時嚴格遵守其編程規范才能成功使用uC/OS-II嵌入式實時操作系統,任務間的數據交換主要使用二值信號量和互斥型信號量,重點在于編寫串口中斷服務程序和數據收發任務。
通信幀數據是否為固定長度是在編寫串口中斷服務程序需要關注的問題。本應用程序的中斷服務程序以及任務編程所需的數據全部通過串口1進行傳輸。該串口的接收和發送的數據幀長度固定且較短,傳輸過程比較簡單;而串口0和2接收到的數據幀需要考慮是否為觸發深度的整數倍,故其長度較長且不固定。
當通信幀的長度正好為中斷觸發深度的整數倍時,數據傳輸時數據幀全部發送完畢后,這個時候只能觸發正常的接收中斷。由于通信幀的長度不定,此時可在等待信號量函數設置超時參數,當數據接收完畢時,所接收的數據是穩定不變的狀態。具體可通過以下代碼來識別中斷服務程序和接收數據任務程序片段[8]:
在一個全局數組中存放串口0和串口1接收到的數據,結合硬件系統框圖和所要完成的任務分別創建串口0和串口1接收任務,在全局數組的相應位置上放置兩個接收任務接收到的數據。這兩個串口接收到的數據組幀發送出去的速率是每秒一幀,而普通性能GPS接收機與串口0相連且每秒發送一幀數據(即串口0的接收速率是每秒一幀),則可以由串口0接收任務中的信號量來控制啟動發送幀數據的組裝和寫入隊列任務,這樣下傳的GPS幀數據因計時誤差而產生的跳變或重復就可以避免。
前面我們提到在同一發送數據隊列中需要存入串口0及串口1接收到的數據組幀和串口2接收到的高性能GPS接收機數據,這里涉及到發送隊列的共享資源分配問題。通過互斥信號量存入發送數據隊列中,這里主要利用了互斥信號量能夠處理優先級反轉,實現互斥訪問發送隊列的共享資源,此時所有需要訪問這個共享資源的任務的優先級低于互斥訪問發送隊列的優先級繼承值,從而完成數據的存入。當這兩個串口任務將接收到的數據寫入數據隊列時,需要獲取互斥型信號量以完成對數據隊列進行互斥訪問,為了不影響其他任務對該隊列的共享資源的使用,在串口寫完數據后應立即釋放信號量。
針對接收的關鍵指令或低優先級任務進行響應,在主函數main()中建立串口3接收并優先執行的數據任務。在其它任務被創建的過程中,系統會始終等待串口3接收數據,判斷接收到的數據并執行指令。以下是該部分的程序代碼[9]:
5 總結
因為筆者對于嵌入式非常感興趣,研一時候主要學習ARM和STM32,為了對自己的研究方向有所幫助,所以筆者選擇了這門實時操作系統課程,在這門課程上學習到很多有意思的知識,不同于本科學的單片機或者DSP那么簡單易懂,比如消息郵箱和消息隊列的知識,然后就是實時操作系統強調實時控制需要定時,重難點主要是對于優先級的理解然后調度算法和調度方式,總的來說,學習實時操作系統這門課程給予筆者今后的研究很大的啟發。
最后實驗結果顯示,在ARM7處理器LPC2365芯片移植實時操作系統uC/OS-II后再進行多串口通信可以減化硬件設計,通過在該嵌入式系統中編寫相應的多串口通信應用程序,提高系統的實時性要求并且運行穩定可靠。
參考文獻:
[1]陶德桂,王成軍,劉關心.LPC2365的μC/OS-Ⅱ下多串口通信編程[J].單片機與嵌入式系統應用,2012(08):26-29.
[2]余曉光.基于實時操作系統FreeRTOS的Lwip協議的移植研究[D].昆明理工大學,2013.
[3]洪偉.基于ARM的GPS接收機導航解算模塊設計[D].哈爾濱工程大學,2010.
[4]Jean J Labrosse. 嵌入式實時操作系統uC/OS-II[M].邵貝貝等譯.二版.北京:北京航天航空大學出版社,2006.
[5]周立功.ARM嵌入式系統基礎教程[M].北京:北京航天航空大學出版社,2006.
[6]周立功.ARM嵌入式系統實驗教程(一)[M].北京:北京航天航空大學出版社,2005.
[7]趙娟,曾強,李改利,等.基于ARM的遠距離便攜式無線傳輸系統[J].單片機與嵌入式系統應用,2011,11(8):25-27.
[8]胡宏燦,喻濤.uC/OS-II下的ARM7中斷過程分析及優化方法[J].單片機與嵌入式系統應用,2010,10(9):77-78.
[9]周航慈.基于嵌入式實時操作系統的程序設計技術[M].二版.北京:北京航天航空大學出版社,2011.
[10]李寧.ARM開發工具Realview MDK使用入門[M]. 北京:北京航天航空大學出版社,2008.
[11]莊嚴,王曉,湯建敏.嵌入式C/C++系統工程師實訓教程 [M].北京:清華大學出版社,2011.
[12]周立功.ARM微控制器基礎與實戰[M].二版.北京:北京航天航空大學出版社,2005.