當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式定位系統(tǒng)的實(shí)用設(shè)計(jì)與軟件算法實(shí)現(xiàn)

定位系統(tǒng)自問(wèn)世后便得到了蓬勃發(fā)展,其應(yīng)用已滲入到各行各業(yè)。個(gè)人消費(fèi)領(lǐng)域引領(lǐng)移動(dòng)定位類型科技產(chǎn)品集中涌現(xiàn),其他領(lǐng)域和行業(yè)也有大量技術(shù)更新。目前各領(lǐng)域的定位系統(tǒng)主要集中在平臺(tái)和地圖的研發(fā)上,平臺(tái)配合應(yīng)用要求選用硬件,地圖根據(jù)顯示要求實(shí)現(xiàn)軟件算法。因而,它們?cè)诙ㄎ幌到y(tǒng)的研究工作中各成體系,兼容性不強(qiáng)。
    近年來(lái),在定位系統(tǒng)設(shè)計(jì)中,硬件選擇越來(lái)越集中在幾個(gè)品牌的幾個(gè)型號(hào)上。而軟件設(shè)計(jì)方面比較分散。因而在一個(gè)兼容性強(qiáng)的平臺(tái)上實(shí)現(xiàn)軟件的集中研發(fā),將是未來(lái)的研發(fā)方向。
    這里提出一種系統(tǒng)構(gòu)造模式,弱化硬件平臺(tái)的影響而力求最大限度的統(tǒng)一軟件設(shè)計(jì)。
1 系統(tǒng)整體設(shè)計(jì)方案
    這里提出一種實(shí)用的設(shè)計(jì)方案,通過(guò)對(duì)系統(tǒng)的各方面配置,實(shí)現(xiàn)GPS實(shí)時(shí)導(dǎo)航功能。系統(tǒng)主控器件采用韓國(guó)Samsung公司生產(chǎn)的ARM核32位RISC微處理器S3C2410,并在由其組成的開(kāi)發(fā)板上移植Linux操作系統(tǒng),Linux操作系統(tǒng)負(fù)責(zé)系統(tǒng)的整體調(diào)度和控制。通過(guò)S3C2410的UART接口連接GPS接收機(jī),用以接收NEMA0183格式的GPS定位信息。通過(guò)UART接口和GSM/GPRS模塊MC35進(jìn)行通信。


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

2 圖形界面支持系統(tǒng)——MiniGUI
    MiniGUI是一個(gè)針對(duì)嵌入式系統(tǒng)的輕量級(jí)圖形界面支持系統(tǒng)。MiniGUI能夠在各個(gè)不同的平臺(tái)上提供最大程度的接口兼容性,可運(yùn)行于AR-M、MIPS等各種主流嵌入式硬件平臺(tái)之上。它能夠提供一個(gè)輕型、資源開(kāi)銷少的嵌入式圖形接口。
    這里利用MiniGUI Ver l.3.3版本,將其編譯為lite版本并移植到基于ARM核的32位微處理器S3C2410上。在此基礎(chǔ)上,開(kāi)發(fā)基于MiniG-UI的電子地圖顯示應(yīng)用程序,配合GPS信號(hào)接收機(jī)實(shí)現(xiàn)定位導(dǎo)航功能。
2.1 交叉編譯MiniGUI
    MiniGUI從結(jié)構(gòu)層次上可以分為3層,最上層是APT層,中間層是MiniGUI核心,負(fù)責(zé)維護(hù)整個(gè)窗口系統(tǒng)的運(yùn)行,最下層由2部分組成,即圖形抽象層(GAL)和輸人抽象層(IAL)。
    為了使MiniGUI能夠在不同的目標(biāo)平臺(tái)上運(yùn)行,必須有針對(duì)相應(yīng)平臺(tái)的交叉編譯環(huán)境。根據(jù)本文的設(shè)計(jì)選用S3C2410器件,則選擇交叉編譯環(huán)境Linux-ARM,選擇Mizi公司針對(duì)Samsung公司32位ARM核RISC微處理器S3C2410設(shè)計(jì)開(kāi)發(fā)的工具鏈,這樣的配置環(huán)境使軟件和硬件具有更好的兼容性。具體交叉編譯的步驟如下:
    1)修改configure文件。設(shè)置make環(huán)境變量CC、LD及AR等。
    2)GAL(圖形引擎)和IAL(輸入引擎)接口的實(shí)現(xiàn)。在MiniGUI中,GAL和IAL是MinGUI的2個(gè)基礎(chǔ)設(shè)施,MiniGUI的高可靠度在很大程度上也是由于這2個(gè)接口提供了獨(dú)立于硬件的抽象能力。這2個(gè)接口的抽象類似于Linux內(nèi)核中的虛擬文件系統(tǒng)。
    在具體實(shí)現(xiàn)一個(gè)輸入引擎(IAL)時(shí),其中最為關(guān)鍵的是事件處理函數(shù)wait_event()的實(shí)現(xiàn),MiniGUl會(huì)不斷的調(diào)用該函數(shù),來(lái)確定在輸入引擎上是否有輸入事件發(fā)生。這里需要特別注意的是,因?yàn)镸iniGUI是通過(guò)select系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)進(jìn)程間通信機(jī)制的,因此在實(shí)現(xiàn)lite版本輸入引擎的wait_event函數(shù)時(shí),一定要通過(guò)select函數(shù)或與其等價(jià)的poll函數(shù)實(shí)現(xiàn)。與此同時(shí),在實(shí)現(xiàn)目標(biāo)板的觸摸屏驅(qū)動(dòng)時(shí),必須要實(shí)現(xiàn)對(duì)應(yīng)file_operations結(jié)構(gòu)中的poll函數(shù)指針。即使觸摸屏驅(qū)動(dòng)未提供poll函數(shù),也要在wait_event返回之前調(diào)用select,并傳遞相關(guān)參數(shù)。
    Linux系統(tǒng)提供了一種基礎(chǔ)設(shè)施——FrameBuffer,通過(guò)這個(gè)設(shè)施Linux的圖形輸出有了統(tǒng)一的接口。由于MiniGUI可以通過(guò)FrameBuffer獲得統(tǒng)一的圖形引擎接口。
    因此其適應(yīng)性大大提高,也就很少需要再為MiniGUI編寫GAL驅(qū)動(dòng)層。
    3)依次運(yùn)行configure、make和make install命令,完成MiniGUl的配置和編譯。
    經(jīng)過(guò)上述編譯過(guò)程,會(huì)將編譯好的MiniGUI庫(kù)文件安裝在/home/MiniGUI-lite目錄下。為了減小庫(kù)文件的大小,根據(jù)需要利用config-ure命令去掉MiniGUI中一些不需要的功能,同時(shí)利用交叉編譯工具鏈中的strip命令刪除MiniGUI函數(shù)庫(kù)中的符號(hào)信息和其他一些調(diào)試信息。[!--empirenews.page--]
2.2 MiniGUI向S3C2410上的移植
    在嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中,編譯完MiniGUI和應(yīng)用程序后,把MiniGUI庫(kù)和應(yīng)用程序拷貝到為目標(biāo)系統(tǒng)準(zhǔn)備的文件系統(tǒng)目錄中,然后使用相關(guān)工具生成文件系統(tǒng)映像,下載到目標(biāo)板上。
    MiniGUI在運(yùn)行時(shí)需要一個(gè)配置文件,用來(lái)配置MiniGUI運(yùn)行所需要的環(huán)境參數(shù)。本設(shè)計(jì)中,將配置文件MiniGUI.cfg放到目標(biāo)板的/etc目錄下。另外,MiniGUI使用framebuffer作為其輸入引擎,因此在編譯Linux內(nèi)核時(shí),選擇將framebuffer相關(guān)的功能編譯到內(nèi)核中去。

3 繪制基于MiniGUI的電子地圖的算法
3.1 提取電子地圖數(shù)據(jù)的算法實(shí)現(xiàn)

    由于GUI的程序和傳統(tǒng)單一流程的程序不太相同,因此通過(guò)簡(jiǎn)單的循環(huán)獲取GPS數(shù)據(jù)的方式是不可取的。該系統(tǒng)通過(guò)多線程的循環(huán)提取數(shù)據(jù),每組數(shù)據(jù)的提取與處理是在一個(gè)單線程中完成的,從而避免了數(shù)據(jù)和處理的復(fù)雜交互,能更好地體現(xiàn)實(shí)時(shí)性。
    首先,對(duì)所采用的坐標(biāo)系進(jìn)行說(shuō)明:假定有一個(gè)形狀為嚴(yán)格矩形的地圖,其像素坐標(biāo)原點(diǎn)為(O,0),地圖X軸方向上的寬度為W個(gè)像素點(diǎn),Y軸方向上的高度為H個(gè)像素點(diǎn),地圖上某點(diǎn)的坐標(biāo)為(X,Y),則定義該像素點(diǎn)的歸一化坐標(biāo)為(x/W,y/H)。對(duì)于終端而言,其覆蓋的地理范圍相對(duì)于地球半徑來(lái)說(shuō)幾乎可以看作無(wú)窮小,故可以認(rèn)為電子地圖所對(duì)應(yīng)的經(jīng)緯度坐標(biāo)在其覆蓋的區(qū)域內(nèi)是線性變化的。有了這2個(gè)點(diǎn)的坐標(biāo)數(shù)據(jù)后,當(dāng)從GPS接收機(jī)讀取到經(jīng)緯度坐標(biāo)時(shí),根據(jù)近似的線性映射關(guān)系,就可以算出該坐標(biāo)在電子地圖上的歸一化坐標(biāo)。這種映射關(guān)系,根據(jù)歐式幾何原理即式(1)和式(2),由已知的2個(gè)點(diǎn)可以算出點(diǎn)A和點(diǎn)B的未知參數(shù)。
   
    要得到地圖的左上角和右下角的經(jīng)緯度坐標(biāo),只需知道地圖邊界范圍內(nèi)任取的2個(gè)參考點(diǎn)的4個(gè)參數(shù)即可。通過(guò)在某地實(shí)地采集的3個(gè)參考點(diǎn),得到表l所列的坐標(biāo)數(shù)據(jù)。


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


    從而得到基準(zhǔn)點(diǎn),并將其坐標(biāo)數(shù)據(jù)保存到坐標(biāo)數(shù)據(jù)文件taiyuan_gps.dat中。
    為了提高靈活性,這里為坐標(biāo)源數(shù)據(jù)定義如下數(shù)據(jù)結(jié)構(gòu):
   
[!--empirenews.page--]3.2 GPS線程
    采用單線程對(duì)采集的一組數(shù)據(jù)進(jìn)行讀取、解析和計(jì)算。在程序中定義一個(gè)pthread_t類型變量,代表采集并解析GPS數(shù)據(jù)的后端線程。由于GUI的前端和后端GPS線程都要訪問(wèn)某些GPS數(shù)據(jù),因此需要在線程間采用同步策略。這里利用線程鎖來(lái)實(shí)現(xiàn),將其定義為GPSL0CK。它是一個(gè)pthread_mutex_t類型的變量。
    對(duì)應(yīng)于Point型、Pline型和Region型3種類型的地理信息,分別定義數(shù)據(jù)結(jié)構(gòu)_POINT、_PLINE和_REGION。以道路為例,在程序中定義對(duì)應(yīng)的_PLINE結(jié)構(gòu)來(lái)描述相關(guān)信息,該結(jié)構(gòu)定義如下:
   
3.3 MiniGUI下電子地圖的繪制
    MiniGUI程序的入口點(diǎn)為MiniGUIMain.main函數(shù)已在MiniGUl的函數(shù)庫(kù)中定義,該函數(shù)在進(jìn)行一些MiniGUI的初始化工作后調(diào)用MiniGUI-Main函數(shù)。先調(diào)用SetDesktopRect函數(shù)來(lái)設(shè)置程序的顯示區(qū)域,然后調(diào)用CreateMainWindow函數(shù)創(chuàng)建并顯示程序的主窗口,最終進(jìn)入消息循環(huán)。
    MiniGUI是消息驅(qū)動(dòng)的系統(tǒng),一切運(yùn)作都圍繞消息進(jìn)行,MiniGUI應(yīng)用程序通過(guò)接收消息來(lái)與外界交互。在電子地圖的繪制過(guò)程中,主要用到MiniGUI的窗口繪制消息MSG_PAINT。該消息在需要進(jìn)行窗口重繪時(shí)發(fā)送到窗口過(guò)程。MiniGUI通過(guò)判斷窗口是否含有無(wú)效區(qū)域來(lái)確定是否需要重繪,在需要進(jìn)行重繪時(shí),MiniGUI會(huì)向相應(yīng)的窗口過(guò)程發(fā)送MSG_PAINT消息。MSG_TIMER則主要負(fù)責(zé)從后端GPS線程中取得當(dāng)前的經(jīng)緯度信息,格式化之后輸出到文本框中。
    當(dāng)MiniGUI主程序接收到其GPS通信子進(jìn)程發(fā)送的SIGUSRl信號(hào)時(shí),就會(huì)調(diào)用相應(yīng)的信號(hào)處理函數(shù)。為了實(shí)時(shí)更新定位點(diǎn)在電子地圖中的位置,必須在該函數(shù)中讀取共享內(nèi)存中的最新位置信息;同時(shí)根據(jù)定位點(diǎn)位置的變化確定需要重繪的區(qū)域,調(diào)用MiniGUI中的lnvalidateRect函數(shù)使該區(qū)域無(wú)效。通過(guò)這種方式使得最新的位置信息實(shí)時(shí)地顯示在電子地圖上。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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