潘承毅+李韋鵬
摘要:該文基于UCOSII嵌入式操作系統基礎上,設計多線程進行定位軟件架構。軟件架構包括MCU對GPS模塊信息的獲取,攝像頭數據的獲取以及通過4G模塊進行數據傳輸、以及系統電源管理。系統測試表明,該文軟件設計能有效地將GPS定位數據、攝像頭數據以及其他監控數據有效的傳輸到監控中心,軟件的設計可靠,運行穩健。
關鍵詞:車載GPS; UCOSII; 定位; 軟件設計
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)26-0246-01
車載GPS系統對車輛的安全及監控及其重要,一方面能及時監控車輛的位置,一方面能提供交通事故發生前的信息。因此,當前的車輛大多數都裝載有GPS監控系統。GPS監控系統一般收集車輛的位置信息、路況信息以及相關的環境信息等,然后通過無線網絡發送到指定的監控中心。
由于車載GPS系統需要提供是信息和工作邏輯不是很復雜,從節約成本和化簡開發難度,采用UCOSII嵌入式操作系統作為軟件開發基礎已經能滿足要求,此外UCOSII的內核代碼量小,需要的內存和flash程序存儲空間不大,同時還很方便移植,基于以上諸多優點,本文采用UCOSII作為操作系統進行軟件設計。
1 硬件設計
系統的硬件基于STM32F103開發板進行,STM32F103芯片內集成3個串口,512KB的flash存儲空間,64KB的RAM,12位的ADC和DAC轉換模塊。本文將其中串口1用于讀取GPS模塊的信息,讀取的頻率為1Hz,串口2是用于對4G通訊模塊的控制和數據的發送。為了簡化代碼和電路圖,攝像頭模塊采用串口攝像頭PTC08,其像素30萬,提供的圖片格式為QVGA(320*240),通過串口3對PTC08進行相關的攝像控制。系統的框架如下:
2 軟件設計
由于STM32F103的片上flash存儲器和RAM存儲器的容量相對一般的8位32位的單片機的存儲器大,比較方便嵌入式OS的移植。本文選用UCOSII作為應用程序開發的基礎,因為UCOSII的內核小,功能相對完整,很適合作為GPS終端的操作系統。
基于UCOSII的軟件架構分為三個層次,上層為應用層,即用戶代碼,用于實現具體的特定的功能。中層的代碼分有三類,第一類為與處理器無關的代碼,其大多數是UCOSII的內核代碼比如任務切換、隊列管理、內存分配與釋放等,第二類為與應該程序相關的配置文件,比如任務的優先級配置,任務數量的配置以及內存池的配置等。第三類代碼為與處理器有關的代碼,其中OS_CPU.H 包含與處理器相關的常量、宏及結構體等的定義,OS_CPU_C.c 是多任務棧初始化等與處理器相關的代碼,OS_CPU_A.asm 是匯編語言編寫的啟動任務、任務切換等函數。下層即為硬件層,主要是設置訪問處理器寄存器、I/O、定時器等相關的代碼。
UCOSII的內核提供事件控制塊、事件標志組、內存區域塊、任務控制塊以及內存區域塊,任務優先級為0到63,每個任務占用一個優先級。最低優先級的任務為系統自動創建的等待空閑任務,該任務只是簡單的執行一個變量自增操作。
任務一般是一個帶無線循環的函數,沒有返回值。任務的創建是通過OSTaskCreat()或者OSTaskCreatExt()來實現。任務創建,內核分配一個空閑的任務控制塊(TCB)給任務,之后對TCB的各個域進行賦值,對任務的堆棧進行初始化,其中,任務的開始代碼地址被壓入堆棧,為該任務的運行做充分準備。就緒表和就緒組做了適當的處理,根據任務的優先級進行了設置。任務執行完成后也可以通過調用OSTaskDel()進行刪除。
任務創建之前先要調用OSInit()初始化內核,任務創建好后,調用OSStart()開始啟動多任務。在ucosii中任務狀態分為睡眠、就緒、等待、運行、中斷五個狀態。
本系統創建了4個任務,第一個任務是基本的初始化,即對溫度傳感器,加速度傳感器以及CPU相應的寄存器進行設置。初始化設置結束后,定時采集溫度數據和加速度的數據,然后上傳到監控中心。
第二個任務是GPS模塊控制任務,任務的初始對GPS進行加電及其初始化設置。設置結束后,對GPS數據進行定時的接收,丟棄其他的格式的數據,只保留GPS 的NMEA-0183協議中的RMC格式。然后將數據已文本的方式保存到發送緩存區。
第三個任務為無線4G模塊控制任務,任務的開始對4G模塊進行初始化設置,等待4G模塊啟動正常后,對4G模塊進行無線連網設置,之后進入無限循環,在無限循環中定時對數據發送緩存區進行數據發送到監控中心。
第四個任務是攝像頭控制任務,任務開始對攝像頭進行初始化,之后的無限循環代碼中,根據監控中心的需要對攝像頭進行拍照操作或錄像操作,然后讀取攝像頭的拍照數據或錄像數據,并將數據放到發送緩存中,然后發送消息通知4G模塊控制任務對發送緩存中的數據進行發送。
3 測試驗證
本系統的測試主要是通過監控中心的數據接收與終端上傳的信息是否相符合,測試表明本終端系統工作的穩定,數據傳輸準確,及時地將GPS信息上傳到監控中心。下面是監控中心收到終端發回來的GPS信息的RMC格式:
4 結論
本文基于嵌入式操作系統ucosII進行車載定位系統的軟件架構進行設計,性能可靠,能很好地滿足車載GPS終端的各種功能要求。當然本文的設計還有一些不足,由于ucosII是開放源代碼,為系統將來進一步提升和代碼優化提供了便利。
參考文獻:
[1] Jean J.Labrosse. uC/OS-II源碼公開的實時嵌入式操作系統[M], 邵貝貝,譯. 中國電力出版社,2001.
[2] 劉承廣, 常宇鍵, 楊衛東,等. uC/OS-II在車載GPS移動終端中的應用.微計算機信息[J], 2005(2):103-104.endprint