<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式定位系統的實(shí)用設計與軟件算法實(shí)現

嵌入式定位系統的實(shí)用設計與軟件算法實(shí)現

作者: 時(shí)間:2012-02-14 來(lái)源:網(wǎng)絡(luò ) 收藏

自問(wèn)世后便得到了蓬勃發(fā)展,其應用已滲入到各行各業(yè)。個(gè)人消費領(lǐng)域引領(lǐng)移動(dòng)類(lèi)型科技產(chǎn)品集中涌現,其他領(lǐng)域和行業(yè)也有大量技術(shù)更新。目前各領(lǐng)域的主要集中在平臺和地圖的研發(fā)上,平臺配合應用要求選用硬件,地圖根據顯示要求。因而,它們在定位的研究工作中各成體系,兼容性不強。

本文引用地址:http://dyxdggzs.com/article/149692.htm

近年來(lái),在定位系統中,硬件選擇越來(lái)越集中在幾個(gè)品牌的幾個(gè)型號上。而方面比較分散。因而在一個(gè)兼容性強的平臺上的集中研發(fā),將是未來(lái)的研發(fā)方向。

這里提出一種系統構造模式,弱化硬件平臺的影響而力求最大限度的統一軟件。

1 系統整體設計方案

這里提出一種的設計方案,通過(guò)對系統的各方面配置,GPS實(shí)時(shí)導航功能。系統主控器件采用韓國Samsung公司生產(chǎn)的ARM核32位RISC微處理器S3C2410,并在由其組成的開(kāi)發(fā)板上移植Linux操作系統,Linux操作系統負責系統的整體調度和控制。通過(guò)S3C2410的UART接口連接GPS接收機,用以接收NEMA0183格式的GPS定位信息。通過(guò)UART接口和GSM/GPRS模塊MC35進(jìn)行通信。

為了在移動(dòng)LED上實(shí)現電子地圖的繪制顯示,系統的整體層次結構框圖如圖1所示。Linux操作系統負責底層硬件的初始化和管理,并向上層提供應用接口,MiniGUI完成電子地圖在LED上的繪制,并通過(guò)Linux內核提供的應用接口與GPS接收機和GSM/GPRS模塊完成通信等功能。

2 圖形界面支持系統——MiniGUI

MiniGUI是一個(gè)針對系統的輕量級圖形界面支持系統。MiniGUI能夠在各個(gè)不同的平臺上提供最大程度的接口兼容性,可運行于A(yíng)R-M、MIPS等各種主流硬件平臺之上。它能夠提供一個(gè)輕型、資源開(kāi)銷(xiāo)少的圖形接口。

這里利用MiniGUI Ver l.3.3版本,將其編譯為lite版本并移植到基于A(yíng)RM核的32位微處理器S3C2410上。在此基礎上,開(kāi)發(fā)基于MiniG-UI的電子地圖顯示應用程序,配合GPS信號接收機實(shí)現定位導航功能。

2.1 交叉編譯MiniGUI

MiniGUI從結構層次上可以分為3層,最上層是APT層,中間層是MiniGUI核心,負責維護整個(gè)窗口系統的運行,最下層由2部分組成,即圖形抽象層(GAL)和輸人抽象層(IAL)。

為了使MiniGUI能夠在不同的目標平臺上運行,必須有針對相應平臺的交叉編譯環(huán)境。根據本文的設計選用S3C2410器件,則選擇交叉編譯環(huán)境Linux-ARM,選擇Mizi公司針對SAMSung公司32位ARM核RISC微處理器S3C2410設計開(kāi)發(fā)的工具鏈,這樣的配置環(huán)境使軟件和硬件具有更好的兼容性。具體交叉編譯的步驟如下:

1)修改cONfigure文件。設置make環(huán)境變量CC、LD及AR等。

2)GAL(圖形引擎)和IAL(輸入引擎)接口的實(shí)現。在MiniGUI中,GAL和IAL是MinGUI的2個(gè)基礎設施,MiniGUI的高可靠度在很大程度上也是由于這2個(gè)接口提供了獨立于硬件的抽象能力。這2個(gè)接口的抽象類(lèi)似于Linux內核中的虛擬文件系統。

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

Linux系統提供了一種基礎設施——FrameBuffer,通過(guò)這個(gè)設施Linux的圖形輸出有了統一的接口。由于MiniGUI可以通過(guò)FrameBuffer獲得統一的圖形引擎接口。

因此其適應性大大提高,也就很少需要再為MiniGUI編寫(xiě)GAL驅動(dòng)層。

3)依次運行configure、make和make inSTall命令,完成MiniGUl的配置和編譯。

經(jīng)過(guò)上述編譯過(guò)程,會(huì )將編譯好的MiniGUI庫文件安裝在/home/MiniGUI-lite目錄下。為了減小庫文件的大小,根據需要利用config-ure命令去掉MiniGUI中一些不需要的功能,同時(shí)利用交叉編譯工具鏈中的strip命令刪除MiniGUI函數庫中的符號信息和其他一些調試信息。

2.2 MiniGUI向S3C2410上的移植

在嵌入式系統開(kāi)發(fā)過(guò)程中,編譯完MiniGUI和應用程序后,把MiniGUI庫和應用程序拷貝到為目標系統準備的文件系統目錄中,然后使用相關(guān)工具生成文件系統映像,下載到目標板上。

MiniGUI在運行時(shí)需要一個(gè)配置文件,用來(lái)配置MiniGUI運行所需要的環(huán)境參數。本設計中,將配置文件MiniGUI.cfg放到目標板的/etc目錄下。另外,MiniGUI使用framebuffer作為其輸入引擎,因此在編譯Linux內核時(shí),選擇將framebuffer相關(guān)的功能編譯到內核中去。

3 繪制基于MiniGUI的電子地圖的

3.1 提取電子地圖數據的實(shí)現

由于GUI的程序和傳統單一流程的程序不太相同,因此通過(guò)簡(jiǎn)單的循環(huán)獲取GPS數據的方式是不可取的。該系統通過(guò)多線(xiàn)程的循環(huán)提取數據,每組數據的提取與處理是在一個(gè)單線(xiàn)程中完成的,從而避免了數據和處理的復雜交互,能更好地體現實(shí)時(shí)性。

首先,對所采用的坐標系進(jìn)行說(shuō)明:假定有一個(gè)形狀為嚴格矩形的地圖,其像素坐標原點(diǎn)為(O,0),地圖X軸方向上的寬度為W個(gè)像素點(diǎn),Y軸方向上的高度為H個(gè)像素點(diǎn),地圖上某點(diǎn)的坐標為(X,Y),則定義該像素點(diǎn)的歸一化坐標為(x/W,y/H)。對于終端而言,其覆蓋的地理范圍相對于地球半徑來(lái)說(shuō)幾乎可以看作無(wú)窮小,故可以認為電子地圖所對應的經(jīng)緯度坐標在其覆蓋的區域內是線(xiàn)性變化的。有了這2個(gè)點(diǎn)的坐標數據后,當從GPS接收機讀取到經(jīng)緯度坐標時(shí),根據近似的線(xiàn)性映射關(guān)系,就可以算出該坐標在電子地圖上的歸一化坐標。這種映射關(guān)系,根據歐式幾何原理即式(1)和式(2),由已知的2個(gè)點(diǎn)可以算出點(diǎn)A和點(diǎn)B的未知參數。


要得到地圖的左上角和右下角的經(jīng)緯度坐標,只需知道地圖邊界范圍內任取的2個(gè)參考點(diǎn)的4個(gè)參數即可。通過(guò)在某地實(shí)地采集的3個(gè)參考點(diǎn),得到表l所列的坐標數據。

根據公式,上面的3個(gè)參考點(diǎn)共有3種組合方式,分別得出3組經(jīng)緯度值,對這3組取平均值,以減少誤差,提高精度。最終求得左上角和右下角的坐標數據,如表2所示。

從而得到基準點(diǎn),并將其坐標數據保存到坐標數據文件taiyuan_gps.dat中。

為了提高靈活性,這里為坐標源數據定義如下數據結構:

3.2 GPS線(xiàn)程

采用單線(xiàn)程對采集的一組數據進(jìn)行讀取、解析和計算。在程序中定義一個(gè)pthread_t類(lèi)型變量,代表采集并解析GPS數據的后端線(xiàn)程。由于GUI的前端和后端GPS線(xiàn)程都要訪(fǎng)問(wèn)某些GPS數據,因此需要在線(xiàn)程間采用同步策略。這里利用線(xiàn)程鎖來(lái)實(shí)現,將其定義為GPSL0CK。它是一個(gè)pthread_mutex_t類(lèi)型的變量。

對應于Point型、Pline型和Region型3種類(lèi)型的地理信息,分別定義數據結構_POINT、_PLINE和_REGION。以道路為例,在程序中定義對應的_PLINE結構來(lái)描述相關(guān)信息,該結構定義如下:

3.3 MiniGUI下電子地圖的繪制

MiniGUI程序的入口點(diǎn)為MiniGUIMain.main函數已在MiniGUl的函數庫中定義,該函數在進(jìn)行一些MiniGUI的初始化工作后調用MiniGUI-Main函數。先調用SetDesktopRect函數來(lái)設置程序的顯示區域,然后調用CreateMainWindow函數創(chuàng )建并顯示程序的主窗口,最終進(jìn)入消息循環(huán)。

MiniGUI是消息驅動(dòng)的系統,一切運作都圍繞消息進(jìn)行,MiniGUI應用程序通過(guò)接收消息來(lái)與外界交互。在電子地圖的繪制過(guò)程中,主要用到MiniGUI的窗口繪制消息MSG_PAINT。該消息在需要進(jìn)行窗口重繪時(shí)發(fā)送到窗口過(guò)程。MiniGUI通過(guò)判斷窗口是否含有無(wú)效區域來(lái)確定是否需要重繪,在需要進(jìn)行重繪時(shí),MiniGUI會(huì )向相應的窗口過(guò)程發(fā)送MSG_PAINT消息。MSG_TIMER則主要負責從后端GPS線(xiàn)程中取得當前的經(jīng)緯度信息,格式化之后輸出到文本框中。

當MiniGUI主程序接收到其GPS通信子進(jìn)程發(fā)送的SIGUSRl信號時(shí),就會(huì )調用相應的信號處理函數。為了實(shí)時(shí)更新定位點(diǎn)在電子地圖中的位置,必須在該函數中讀取共享內存中的最新位置信息;同時(shí)根據定位點(diǎn)位置的變化確定需要重繪的區域,調用MiniGUI中的lnvalidateRect函數使該區域無(wú)效。通過(guò)這種方式使得最新的位置信息實(shí)時(shí)地顯示在電子地圖上。

4 結束語(yǔ)

隨著(zhù)社會(huì )信息化的發(fā)展,GPS導航終端的使用已成燎原之勢,越來(lái)越多的設備配備定位或導航功能。本設計利用MiniGUI來(lái)實(shí)現GPS的基本功能,使地圖的繪制工作脫離繁瑣的底層硬件,大大簡(jiǎn)化了此項工作,再配合GPS信號接收機實(shí)現實(shí)時(shí)定位導航功能。同時(shí),本設計還有許多地方值得改進(jìn),例如通訊反饋精度和矢量化地理信息的優(yōu)化顯示等。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>