1 引言
隨著中國(guó)的城市化的程度不斷加快,使得越來(lái)越多的人口與事業(yè)單位集中在一個(gè)“狹小”范圍內(nèi)生活與工作,。城市的迅速“膨脹”直接導(dǎo)致了交通網(wǎng)絡(luò)的日趨復(fù)雜,,人員流動(dòng)的日益頻繁也使得每個(gè)人對(duì)空間信息有了更多的依賴(lài)。人們更加關(guān)心“當(dāng)前我在哪里,?”“目的地在哪里,?”“如何到達(dá)?”等問(wèn)題,。而以嵌入式系統(tǒng)為平臺(tái)的數(shù)字地理集成應(yīng)用方案可以有效地解決這些矛盾,。在此背景下,本文給出了基于ARM的嵌入式解決方案,。
2 硬件實(shí)現(xiàn)
本嵌入式GPS導(dǎo)航系統(tǒng)" title="導(dǎo)航系統(tǒng)">導(dǎo)航系統(tǒng)的硬件核心是三星公司ARM" title="ARM">ARM9系列中的16/32位RISC處理器S3C2410A芯片,,該芯片強(qiáng)大的實(shí)時(shí)處理能力和豐富的外圍接口非常適合嵌入式系統(tǒng)的開(kāi)發(fā),本系統(tǒng)正是基于該芯片的這些特點(diǎn)而設(shè)計(jì)的,。系統(tǒng)框圖如圖1所示,。
該系統(tǒng)以S3C2410A微處理器為核心,與2片32M的SDRAM(HY57V561620CT)和一片64M的NAND Flash(K9F1208U0B)組成了最小系統(tǒng),。外部添加了用于接收GPS信號(hào)的GPS模塊,,用于顯示的液晶面板以及一片UDA1341TS的聲音芯片。此外,,為了調(diào)試的方便,,我們還增加了一片CS8900A的10M網(wǎng)卡芯片。
圖1 系統(tǒng)框圖
3 系統(tǒng)平臺(tái)的建立
系統(tǒng)平臺(tái)的建立主要包括兩部分,,即宿主機(jī)(PC機(jī))上操作系統(tǒng)的選擇和交叉編譯器工具鏈的建立,。
PC機(jī)上的操作系統(tǒng)可以有多種選擇:安裝Linux發(fā)行版、在Windows下使用虛擬機(jī)或者使用Cygwin,。由于現(xiàn)今Microsoft Windows統(tǒng)領(lǐng)著全球超過(guò)半數(shù)的PC機(jī)(在中國(guó)Windows占據(jù)近90%的份額),,許多開(kāi)發(fā)者開(kāi)始使用虛擬機(jī)等手段來(lái)實(shí)現(xiàn)在Windows平臺(tái)下進(jìn)行嵌入式Linux的開(kāi)發(fā),但這些方法都會(huì)或多或少地帶來(lái)些兼容性問(wèn)題,。開(kāi)發(fā)嵌入式Linux最好的選擇便是在PC機(jī)上安裝Linux發(fā)行版,,因?yàn)檫@樣與Windows毫無(wú)關(guān)聯(lián),可占有系統(tǒng)全部資源,,擁有系統(tǒng)最高性能和最佳的兼容性,。
在建立交叉編譯器工具鏈方面必須注意一點(diǎn)的便是C運(yùn)行庫(kù)的選擇。現(xiàn)在可供選擇的C運(yùn)行庫(kù)有glibc, uClibc以及newlib等,。glibc是由GNU項(xiàng)目提供的標(biāo)準(zhǔn)C運(yùn)行庫(kù),,它針對(duì)PC應(yīng)用設(shè)計(jì),,較龐大,但能提供最優(yōu)的兼容性,。如果一般的嵌入式開(kāi)發(fā)可選用uClibc,。uClibc原本是uCLinux開(kāi)發(fā)過(guò)程中的一個(gè)C語(yǔ)言庫(kù),現(xiàn)已經(jīng)獨(dú)立于uCLinux項(xiàng)目并且進(jìn)一步完善,。它對(duì)glibc的大部分函數(shù)進(jìn)行了重寫(xiě),,并且目標(biāo)就定位于嵌入式,所以其相對(duì)glibc而言要小巧很多,。此外由于它的函數(shù)與glibc保持一致,,這樣很多原本基于glibc開(kāi)發(fā)的軟件基本無(wú)需改動(dòng)便可改用uClibc編譯運(yùn)行,使得在嵌入式系統(tǒng)上占用的內(nèi)存和磁盤(pán)空間更少,。但由于畢竟不是標(biāo)準(zhǔn)的C運(yùn)行庫(kù),,因此uClibc擁有著一定的兼容性問(wèn)題。
本系統(tǒng)選用了Fedora Core 5作為宿主機(jī)(PC機(jī))的操作系統(tǒng)以及分別使用buildroot和crosstool建立兩條采用不同的C運(yùn)行庫(kù)的交叉編譯器工具鏈,。由于我們系統(tǒng)開(kāi)發(fā)需要使用U-Boot的TFTP功能下載Linux內(nèi)核以及Linux的NFS網(wǎng)絡(luò)文件系統(tǒng),,所以首先需要對(duì)Fedora Core 5設(shè)置TFTP以及NFS,而后需要設(shè)置一個(gè)串口通信軟件與開(kāi)發(fā)板互動(dòng),,本系統(tǒng)選擇了Kermit,。
使用兩條采用不同C運(yùn)行庫(kù)的交叉編譯器工具鏈的主要原因在于,我們的導(dǎo)航應(yīng)用程序使用uClibc有兼容性問(wèn)題,,所以不得不采用glibc,。而為了減少占用資源,我們U-Boot,、Linux內(nèi)核和Busybox仍然采用的是uClibc,。
本課題主要環(huán)境設(shè)置如下:
課題主目錄 |
/Project |
|
編譯器目錄 |
arm-linux-uclibc- |
/Project/toolchina/uclibc/buildroot/build_arm_nofpu/
staging_dir |
arm-unknown-linux-gnu- |
/Project/toolchain/glibc/tools/gcc-4.1.0-glibc-2.3.2/
arm-unknown-linux-gun |
|
NFS目錄 |
/Project/nfs |
|
TFTP目錄 |
/tftpboot |
|
PC機(jī)的IP地址 |
192.168.0.110 |
|
開(kāi)發(fā)板的IP地址 |
192.168.0.3 |
4 應(yīng)用軟件的開(kāi)發(fā)
在系統(tǒng)平臺(tái)建立之后,Linux操作系統(tǒng)提供了底層的操作,,包括文件系統(tǒng)的管理,、內(nèi)存分配以及基本flash的燒錄讀取,但并沒(méi)有提供友好的顯示界面,。同時(shí)也為了實(shí)現(xiàn)地理數(shù)據(jù)的顯示和導(dǎo)航,,就需要在操作系統(tǒng)上放入圖形用戶(hù)界面支持系統(tǒng)和地理信息開(kāi)發(fā)平臺(tái)。為此我們分別選擇了MiniGUI和mGIS,。
圖3是應(yīng)用軟件的流程圖
整個(gè)軟件系統(tǒng)依靠響應(yīng)不同窗口或者控件發(fā)出的事件,,來(lái)實(shí)現(xiàn)各種功能。通過(guò)主窗口建立后注冊(cè)mGIS控件,,可以較為方便的實(shí)現(xiàn)一些常用的地圖操作,。主窗口建立后,將會(huì)創(chuàng)建許多用于子窗口,包括用于顯示經(jīng)緯度信息,,時(shí)間,。速度的靜態(tài)框,用于實(shí)現(xiàn)快速便捷操作的工具欄,,用于實(shí)現(xiàn)GPS功能關(guān)閉和地圖數(shù)據(jù)加載的菜單欄,。
圖4 GPS接收模塊流程圖
5 總結(jié)和展望
“Find My Way”(完成項(xiàng)目的名稱(chēng))嵌入式移動(dòng)地圖導(dǎo)航系統(tǒng)經(jīng)過(guò)最初設(shè)計(jì)、實(shí)現(xiàn)及應(yīng)用檢驗(yàn),,已經(jīng)具備基本的功能,可初步滿(mǎn)足個(gè)人移動(dòng)導(dǎo)航信息系統(tǒng)的需求,。能完成數(shù)字地圖的加載,、縮放、拖動(dòng),、搜索,、簡(jiǎn)易導(dǎo)航、測(cè)距,、GPS功能開(kāi)閉等功能,。同時(shí)我們也摸索出了一整套較為可行的矢量地圖的制作方法,能依據(jù)使用的場(chǎng)合不同,較快速的完成地圖數(shù)據(jù)源的制作及相關(guān)信息的添加,,有一定的擴(kuò)展能力,。當(dāng)然由于時(shí)間和能力的有限,這款產(chǎn)品也有其一定的不足,,值得進(jìn)一步的深入研究,,例如:在打開(kāi)GPS接收模塊之后,系統(tǒng)的響應(yīng)速度將有顯著的下降,,雖然已經(jīng)對(duì)Linux核心和編譯器經(jīng)過(guò)適當(dāng)?shù)膬?yōu)化,,但情況并沒(méi)有顯著的改善。問(wèn)題可能在硬件平臺(tái)的處理速度和可調(diào)用的資源有限,,也有可能在軟件接收上的程序結(jié)構(gòu)不合理,,嵌套過(guò)多。GPS接收信號(hào)有時(shí)會(huì)發(fā)生信號(hào)接收的不穩(wěn)定,,出現(xiàn)信號(hào)的偏移,,超過(guò)標(biāo)稱(chēng)的誤差值。問(wèn)題可能在開(kāi)發(fā)平臺(tái)的設(shè)計(jì)電路中對(duì)于數(shù)據(jù)信號(hào)線(xiàn)的排版上,,沒(méi)有使信號(hào)線(xiàn)等距,,也沒(méi)有設(shè)置合理的信號(hào)隔離和保護(hù)帶,導(dǎo)致最終出現(xiàn)了不應(yīng)有的誤差,。但從軟件上著手,,如何糾正這樣的誤差也是值得研究的一個(gè)方向。在本課題中只實(shí)現(xiàn)了固定點(diǎn)的導(dǎo)航,并不能完成從任意點(diǎn)至任意點(diǎn)的導(dǎo)航,。導(dǎo)航功能可以從軟件方面繼續(xù)深入的研究,,包括對(duì)地圖格式的選擇等。這些都是將來(lái)值得完善之處,。
圖5 硬件平臺(tái)
圖6 最終效果圖
參考文獻(xiàn)
1 飛漫軟件,,MiniGUI 技術(shù)白皮書(shū) Ver 1.6.2,www.minigui.org,, 2004.3.29
2 飛漫軟件,,mGIS技術(shù)文檔,www.minigui.org,, 2005.3
3 飛漫軟件,,mGIS產(chǎn)品介紹,www.minigui.org,, 2005.3
4 MapInfo Corporation, MapInfo7.5用戶(hù)指南,,www.mapinfo.com,2003.12
5 HOLUX,GR-87使用手冊(cè),,www.holux.com.cn,2006.2.21
6 HOLUX,,GR-86 manual,www.holux.com.cn,2005.5
7 鄧滔,,徐勇,,GPS與嵌入式Linux平臺(tái)串行通信研究,湖南大學(xué)電氣與信息工程學(xué)院,,2004.11.2,,全文
8 孫天澤,袁文菊,,張海峰. 嵌入式設(shè)計(jì)及Linux驅(qū)動(dòng)開(kāi)發(fā)指南. 北京:電子工業(yè)出版社,,2005
9 馬忠梅,李善平,,康慨等. ARM & Linux嵌入式系統(tǒng)教程. 北京:航空航天出版社,,2004
10 廖日坤. ARM嵌入式應(yīng)用開(kāi)發(fā)技術(shù)白金手冊(cè). 北京:中國(guó)電力出版社,2005
11 Samsung Electronics Co., Ltd. S3C2410X 32-Bit RISC Microprocessor User's Manual. Revision 1.2. 2003
12 Samsung Electronics Co., Ltd. K9F1208U0B Datasheet. Revision 0.1. 2004
13 Corbet J, Rubini A, Kroah-Hartman G. Linux設(shè)備驅(qū)動(dòng)程序. 魏永明,,耿岳,,鐘書(shū)毅譯. 第三版. 北京:中國(guó)電力出版社,2006
14 Love R. Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn). 陳莉君,,康華,,張波譯. 第二版. 北京:機(jī)械工業(yè)出版社,2006
15 Philips Semiconductors. UDA1341TS Product Specification. 2002
16 Sharp Corporation. LQ080V3DG01 Product Specification. 2003