當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]MiniGUI在車載導(dǎo)航終端中的應(yīng)用

摘要:提出一種GPS車載導(dǎo)航終端的設(shè)計方案,并針對電子地圖導(dǎo)航所需的圖形界面支持系統(tǒng)進(jìn)行詳細(xì)論述。MiniGUI作為一種主要運(yùn)行于嵌入式Linux下的圖形用戶界面支持系統(tǒng),在本文中將其應(yīng)用到車載導(dǎo)航儀中,并提出一種基于MiniGUI的電子地圖的設(shè)計方法,配合GPS信號接收機(jī),實現(xiàn)定位導(dǎo)航功能。

關(guān)鍵詞:GPS MiniGUI 電子地圖 車載導(dǎo)航


引 言

  隨著社會信息化的日益發(fā)展,車載終端的主要發(fā)展方向應(yīng)該是監(jiān)控跟蹤及導(dǎo)航相結(jié)合,即所謂的車載信息系統(tǒng),長遠(yuǎn)發(fā)展則是通信、導(dǎo)航、娛樂、安防、辦公和上網(wǎng)為一體的車輛信息系統(tǒng)。

1 系統(tǒng)整體設(shè)計方案

  本文中提出的車載導(dǎo)航終端設(shè)計方案,可實現(xiàn)GPS導(dǎo)航、電子地圖實時定位、GSM/GPRS通信等功能,通過實驗已取得良好的效果。系統(tǒng)整體設(shè)計方案如圖1所示。
   
               圖1車載導(dǎo)航終端整體設(shè)計方案

  系統(tǒng)主控芯片采用了由韓國Samsung公司生產(chǎn)的ARM核32位RISC微處理器S3C2410,并在由其組成的開發(fā)板上移植Linux操作系統(tǒng),由Linux操作系統(tǒng)負(fù)責(zé)系統(tǒng)的整體調(diào)度和控制。通過S3C2410的UART接口連接GPS接收機(jī)JUPITER 021/031,用以接收NEMA0183格式的GPS定位信息。通過UART接口和GSM/GPRS模塊MC35進(jìn)行通信,通過發(fā)送AT命令控制MC35,來完成語音呼叫、GSM SMS及GPRS等功能。
為在車載LCD上實現(xiàn)電子地圖的繪制顯示,系統(tǒng)的整體層次框圖如圖2所示,由Linux操作系統(tǒng)負(fù)責(zé)底層硬件的初始化和管理,并向上層提供應(yīng)用接口,MiniGUI來完成電子地圖在LCD上的繪制,并通過Linux內(nèi)核提供的應(yīng)用接口與GPS接收機(jī)和GSM/GPRS模塊完成通信等功能。
                  
                 圖2系統(tǒng)層次結(jié)構(gòu)框圖

2 圖形界面支持系統(tǒng)——MiniGUI

2.1MiniGUI介紹

  MiniGUI是由許多自由軟件開發(fā)人員共同開發(fā)的一個自由軟件項目,遵循LGPL條款發(fā)布,其目標(biāo)是為基于Linux的實時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。MiniGUI能夠在各個不同平臺上提供最大程度的接口兼容性,已運(yùn)行于ARM、MIPS等各種主流嵌入式硬件平臺之上。目前,在包括手持信息終端產(chǎn)品、金融終端、KTV點(diǎn)播系統(tǒng)、POS機(jī)等許多項目和產(chǎn)品中得到廣泛的應(yīng)用。

  本文利用MiniGUI 1.30版本,將其編譯為lite版本并移植到基于ARM核的32位微處理器S3C2410上。在此基礎(chǔ)上,又開發(fā)了基于MiniGUI的電子地圖顯示應(yīng)用程序,配合GPS信號接收機(jī)實現(xiàn)定位導(dǎo)航功能。

2.2MiniGUI的交叉編譯

  為了使MiniGUI能夠在不同的目標(biāo)平臺上運(yùn)行,必須有針對相應(yīng)平臺的交叉編譯工具。在本文的設(shè)計中,選用了由韓國Mizi公司開發(fā)和維護(hù)的armv41交叉編譯工具鏈,該工具鏈?zhǔn)荕izi公司針對Samsung公司32位ARM核RISC微處理器S3C2410設(shè)計開發(fā)的,因此與選用的硬件具有更好的兼容性。
MiniGUI使用自由軟件常用的automake和autoconf接口,因此MiniGUI的配置和編譯相對比較容易。首先進(jìn)入MiniGUI源代碼的目錄中,下面是具體交叉編譯的步驟。

 ?、?為了達(dá)到交叉編譯的目的,首先要修改configure文件。設(shè)置make環(huán)境變量CC、LD及AR等,將其設(shè)置為選用的armv41交叉編譯工具,以達(dá)到交叉編譯的目的。

 ?、?IAL(Input Abstract Layer,輸入抽象層)接口的實現(xiàn)。在MiniGUI中,引入了輸入抽象層的概念,抽象層類似于Linux內(nèi)核中的虛擬文件系統(tǒng),定義了一組不依賴于任何硬件的抽象接口。(具體請參見MiniGUI源代碼src/include/ial.h及src/ial/ial.c)。

  在具體實現(xiàn)一個輸入引擎的時候,其中最為關(guān)鍵的是事件處理函數(shù)wait_event()的實現(xiàn),MiniGUI會不斷的調(diào)用該函數(shù),來確定在輸入引擎上是否有輸入事件發(fā)生。這里需要特別注意的是,因為MiniGUI是通過select系統(tǒng)調(diào)用來實現(xiàn)進(jìn)程間通信機(jī)制的,因此在實現(xiàn)lite版本輸入引擎的wait_event函數(shù)時,一定要通過select函數(shù)或與其等價的poll函數(shù)來實現(xiàn)。與此同時,在實現(xiàn)目標(biāo)板的觸摸屏驅(qū)動時,必須要實現(xiàn)相對應(yīng)file_operations結(jié)構(gòu)中的poll函數(shù)指針。即使觸摸屏驅(qū)動沒有提供poll函數(shù),也要在wait_event返回之前調(diào)用select,并傳遞相關(guān)參數(shù)。

 ?、?依次運(yùn)行configure、make和make install命令,完成MiniGUI的配置和編譯。關(guān)于configure命令的詳細(xì)參數(shù)及含義可以通過運(yùn)行./configure –help命令獲得。

  經(jīng)過上述編譯過程,會將編譯好的MiniGUI庫文件安裝在/home/MiniGUI-lite目錄下。為了減小庫文件的大小,可根據(jù)需要利用configure命令將MiniGUI中一些不需要的功能去掉,同時可以用交叉編譯工具鏈中的strip命令刪除MiniGUI函數(shù)庫中的符號信息和其他一些調(diào)試信息。關(guān)于MiniGUI自帶的范例程序mde及MiniGUI資源文件的編譯和安裝可參照上述庫文件的編譯過程及MiniGUI用戶指南進(jìn)行。

2.3MiniGUI向S3C2410上的移植

  一般而言,在嵌入式系統(tǒng)開發(fā)過程中,編譯完MiniGUI和應(yīng)用程序后,需要把MiniGUI庫、資源和應(yīng)用程序拷貝到為目標(biāo)系統(tǒng)準(zhǔn)備的文件系統(tǒng)(目標(biāo)文件系統(tǒng))目錄中,然后使用相關(guān)的工具生成文件系統(tǒng)映像,再下載到目標(biāo)板上。

  本文中Linux使用initrd技術(shù)來mount一個ramdisk作為目標(biāo)板的根文件系統(tǒng),因此需要將編譯好的MiniGUI的庫文件拷貝到ramdisk的/user/lib目錄下,同時將MiniGUI的資源文件也拷貝到該目錄下。

  MiniGUI在運(yùn)行的時候需要一個配置文件,用來配置MiniGUI運(yùn)行所需要的環(huán)境參數(shù)。在本文的設(shè)計中,將配置文件MiniGUI.cfg放到了目標(biāo)板的/etc目錄下。mginit初始化時必讀的配置文件包括:系統(tǒng)使用的圖形引擎、輸入引擎、鼠標(biāo)、屏幕設(shè)備的指定、參數(shù)設(shè)置以及字體庫等信息。

  另外還有一個問題需要注意,因為MiniGUI使用framebuffer作為其輸入引擎,因此在編譯Linux內(nèi)核的時候,一定要將framebuffer相關(guān)的功能編譯到內(nèi)核中去。

3 繪制基于MiniGUI的電子地圖

3.1電子地圖數(shù)據(jù)的提取

  MapInfo格式的電子地圖是目前使用最為廣泛的地圖格式之一。由于商用原因,截止至現(xiàn)在為止,MapInfo公司一直沒有向外界公布它原始的以矢量形式存儲的文件格式,即TAB格式,這就加大了直接利用MapInfo原始數(shù)據(jù)的難度。但MapInfo公司提供了與外界交換數(shù)據(jù)的機(jī)制,即MIF(MapInfo Interchange Format)格式地圖。

  在本文的設(shè)計中,利用MapInfo MIF格式的地圖數(shù)據(jù)來完成地圖的繪制工作,通過選取合適的數(shù)學(xué)模型和建立合適的數(shù)據(jù)結(jié)構(gòu),來實現(xiàn)電子地圖的繪制。地圖中的地理信息可以將其歸為3類:

Point型——用于市區(qū)單位名等圖層的繪制和顯示;
Pline型——用于一級道路、二級道路、三級道路、單線河和橋等圖層的繪制和顯示;
Region型——用于邊框、居民地、綠地、市界、縣界和雙線河等圖層的繪制和顯示。

  對應(yīng)于Point型、Pline型和Region型三種類型的地理信息,分別定義數(shù)據(jù)結(jié)構(gòu)_POINT、_PLINE和_REGION。以道路為例,在程序中定義對應(yīng)的_PLINE結(jié)構(gòu)來描述相關(guān)信息,該結(jié)構(gòu)定義如下:
struct _PLINE{
double* B;//描述各節(jié)點(diǎn)經(jīng)度坐標(biāo)的數(shù)組指針;
double* L;//描述各節(jié)點(diǎn)緯度坐標(biāo)的數(shù)組指針;
int m_node;//節(jié)點(diǎn)數(shù);
char *m_name;//名稱標(biāo)識;
}

  _PLINE和_REGION等數(shù)據(jù)結(jié)構(gòu)的定義與_PLINE類似,在這里不再詳細(xì)介紹。有了上述結(jié)構(gòu)的定義,就可以將MIF和MID文件中的信息讀取到為對應(yīng)信息定義的結(jié)構(gòu)變量中,然后在具體繪制電子地圖的時候只需對這些結(jié)構(gòu)變量進(jìn)行相應(yīng)的操作即可。

3.2MiniGUI下電子地圖的繪制

  MiniGUI程序的入口點(diǎn)為MiniGUIMain,main函數(shù)已經(jīng)在MiniGUI的函數(shù)庫中定義,該函數(shù)在進(jìn)行一些MiniGUI的初始化工作后調(diào)用MiniGUIMain函數(shù)。如果應(yīng)用程序為lite版本MiniGUI下的應(yīng)用程序,則應(yīng)首先調(diào)用SetDesktopRect函數(shù)來設(shè)置程序的顯示區(qū)域,然后調(diào)用CreateMainWindow函數(shù)創(chuàng)建并顯示程序的主窗口,最終進(jìn)入消息循環(huán)。

  MiniGUI是消息驅(qū)動的系統(tǒng),一切運(yùn)作都圍繞著消息進(jìn)行,MiniGUI應(yīng)用程序通過接收消息來與外界交互。在電子地圖的繪制過程中,主要用到了MiniGUI的窗口繪制消息MSG_PAINT。該消息在需要進(jìn)行窗口重繪時發(fā)送到窗口過程。MiniGUI通過判斷窗口是否含有無效區(qū)域來確定是否需要重繪,在需要進(jìn)行重繪時,MiniGUI會向相應(yīng)的窗口過程發(fā)送MSG_PAINT消息。

  基于MiniGUI的主程序框架圖如圖3所示,為了與JUPITER 021/031通信,接收GPS定位信息,同時還要與MC35通信實現(xiàn)無線通信相關(guān)功能,因此在主程序中啟動兩個子進(jìn)程來實現(xiàn)與子系統(tǒng)的串口通信。另外,使用Linux下的共享內(nèi)存(shared memory)和信號(signals)機(jī)制來實現(xiàn)進(jìn)程間的通信,用以傳遞定位數(shù)據(jù)等信息。GPS信息接收的子進(jìn)程功能框架如圖4所示。
           
               圖3MiniGUI主程序框架

            
              圖4定位信息接收子進(jìn)程框圖

           
               圖5地圖繪制函數(shù)流程圖

  當(dāng)MiniGUI主程序接收到其GPS通信子進(jìn)程發(fā)送的SIGUSR1信號時,就會調(diào)用相應(yīng)的信號處理函數(shù)。為了實時更新定位點(diǎn)在電子地圖中的位置,必須在該函數(shù)中讀取共享內(nèi)存中的最新位置信息;同時根據(jù)定位點(diǎn)位置的變化確定需要重繪的區(qū)域,調(diào)用MiniGUI中的InvalidateRect函數(shù)使該區(qū)域無效。通過這種方式,使得最新的位置信息實時的在電子地圖上顯示出來。

  為了把底層圖形設(shè)備和上層圖形接口分離開來,提高M(jìn)iniGUI圖形系統(tǒng)的可移植性,MiniGUI中引入了圖形抽象層(GAL, graphics abstract layer)的概念。在一定的GAL基礎(chǔ)上,實現(xiàn)了圖形設(shè)備接口(GDI,Graph Device Interface)。在程序中定義mpadraw函數(shù)為電子地圖繪制函數(shù),在主程序的MSG_PAINT消息處理時調(diào)用該函數(shù),來完成電子地圖的具體繪制工作。mpadraw函數(shù)流程圖如圖5所示。在具體繪制的過程中,要用到MiniGUI提供的GDI函數(shù)來完成道路、道路名、居民區(qū)等地理信息的顯示。圖6即為筆者實現(xiàn)的電子地圖。
       
               圖6利用MiniGUI繪制的電子地圖

結(jié)語

  隨著社會信息化的發(fā)展,GPS導(dǎo)航終端在我國有著光明的應(yīng)用前景。本文中利用MiniGUI來實現(xiàn)車載終端的電子地圖在LCD上地繪制,使地圖的繪制工作脫離煩瑣的底層硬件,大大的簡化了此項工作,再配合GPS信號接收機(jī)實現(xiàn)實時定位導(dǎo)航的功能。同時也應(yīng)該看到,本方案仍有很多方面需要改進(jìn),例如矢量化地理信息的顯示及地圖顯示的進(jìn)一步優(yōu)化等。

                  參考文獻(xiàn)
1 北京飛漫軟件技術(shù)有限公司. MiniGUI用戶手冊, 2003
2 吳信才. 地理信息系統(tǒng)原理與方法. 北京:北京電子工業(yè)出版社, 2002
3 宋立新. 面向嵌入式操作系統(tǒng)的圖形用戶界面: [學(xué)位論文]. 杭州:浙江大學(xué),2001
4 黑新宏,崔杜武,常斌. 基于MiniGUI的客戶端PDA的研究及開發(fā). 計算機(jī)應(yīng)用, 2003, 23(4):75~77

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉