999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式Linux通用GPS接口的設(shè)計與實現(xiàn)

2008-04-12 00:00:00李學(xué)斌
現(xiàn)代電子技術(shù) 2008年22期

摘 要:伴隨著GPS的廣泛應(yīng)用,基于PC機(jī)的GPS由于其價格及功耗較高已不能滿足社會發(fā)展的需要,嵌入式定位技術(shù)迅速發(fā)展起來。結(jié)合ARM處理器及嵌入式Linux操作系統(tǒng)的優(yōu)勢,提出一種基于嵌入式Linux平臺的通用GPS接口設(shè)計方案。首先介紹GPS系統(tǒng)的定位原理與通信格式,在此基礎(chǔ)上較為詳細(xì)地闡述基于串行接口的嵌入式Linux與GPS設(shè)備的通信方案,最后給出基于中斷模式的GPS信號接收與提取方法。該方案具有較強(qiáng)的通用性,可廣泛應(yīng)用于便攜式GPS系統(tǒng)中。

關(guān)鍵詞:ARM;嵌入式Linux;GPS;串行接口

中圖分類號:TP368.1;TP336文獻(xiàn)標(biāo)識碼:B

文章編號:1004373X(2008)2203904

Design and Implementation of General GPS Interface Solution Based

on Embedded Linux Operation System

LI Xuebin

(Changzhi College,Changzhi,046011,China)

Abstract:With the widely deployment of GPS,the system based on desktop can not meet the application requirements due to its high prize and high energy consumption,and embedded GPS technology is more and more popular.In this paper,a new kind of GPS interface solution uniting the advantages of ARM processor and embedded Linux operation system is proposed,which is based on embedded Linux platform.The paper first introduces the position principle and communication protocol of GPS,and illuminates the new COM-based communication solution between embedded Linux operation system and GPS system.An interruption-based GPS signal receiving-resolving solution is also illustrated.The solution can be used in various packed GPS systems.

Keywords:ARM;embedded Linux;GPS;serial interface

1 引 言

全球定位系統(tǒng)(Global Position System,GPS)是美國從20世紀(jì)70年代由美國國防部批準(zhǔn)開始研制的,具有在海、陸、空進(jìn)行全方位實時三維導(dǎo)航與定位能力的新一代衛(wèi)星導(dǎo)航與定位系統(tǒng)。雖然最初GPS衛(wèi)星定位系統(tǒng)是為軍事用途而設(shè)計的,但其精密的全球定位、簡便的觀測、優(yōu)異的實時性、豐富的功能、良好的抗干擾性能、極強(qiáng)的保密性等特點,使其獲得廣泛的應(yīng)用。在火險處理中,精確的地理定位具有重要的意義,GPS的以上特點使其特別適合于火災(zāi)報警系統(tǒng)中的精確定位。

嵌入式系統(tǒng)是將先進(jìn)的計算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)以及各個行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。它可以根據(jù)應(yīng)用需求對軟硬件進(jìn)行適當(dāng)裁剪,以滿足應(yīng)用系統(tǒng)對功能、可靠性、成本、體積等的需求。隨著計算機(jī)技術(shù)的發(fā)展,基于PC機(jī)的定位系統(tǒng)由于其價格及功耗較高已不能滿足社會發(fā)展的需要,脫離PC機(jī)的嵌入式定位技術(shù)迅速發(fā)展起來。

基于以上2點,本文提出以ARM器件為CPU,以嵌入式Linux為軟件內(nèi)核的GPS定位系統(tǒng),并對Linux下通用GPS接口的設(shè)計加以詳細(xì)闡述。ARM是當(dāng)前全球領(lǐng)先的16/32位RISC微處理器內(nèi)核,而Linux系統(tǒng)具有內(nèi)核小、功能強(qiáng)大、運(yùn)行穩(wěn)定、系統(tǒng)健壯、效率高及開源等諸多優(yōu)點。本設(shè)計解決了單獨的基于PC機(jī)的定位系統(tǒng)和基于WinCE的嵌入式定位系統(tǒng)成本高或攜帶不便的問題,系統(tǒng)性價比高,可彌補(bǔ)傳統(tǒng)定位系統(tǒng)的不足。

2 GPS定位原理與通信格式

2.1 GPS定位原理

按目前的方案,全球定位系統(tǒng)的空間部分用24顆高度約2.02×104 km的衛(wèi)星組成衛(wèi)星星座。21+3顆衛(wèi)星均為近圓形軌道,運(yùn)行周期約為11 h 58 min,分布在6個軌道面上(每軌道面4顆),軌道傾角為55°。衛(wèi)星的分布使得在全球的任何地方、任何時間都可觀測到4顆以上的衛(wèi)星,并能保持良好定位解算精度的幾何圖形(DOP)。這就提供了在時間上連續(xù)的全球?qū)Ш侥芰Α?/p>

GPS的基本定位原理是:衛(wèi)星不間斷地發(fā)送自身的星歷參數(shù)和時間信息,用戶接收到這些信息后,經(jīng)過計算求出接收機(jī)的三維位置、三維方向以及運(yùn)動速度和時間信息,如圖1所示。

圖1 GPS定位原理

其中:

((x1-x)2+(y1-y)2+(z1-z)2)12+

c·(t-t01)=d1

((x2-x)2+(y2-y)2+(z2-z)2)12+

c·(t-t02)=d2

((x3-x)2+(y3-y)2+(z3-z)2)12+

c·(t-t03)=d3

((x4-x)2+(y4-y)2+(z4-z)2)12+

c·(t-t04)=d4(1)

由于含有接收機(jī)衛(wèi)星鐘的誤差及大氣傳播誤差,GPS接收機(jī)對碼的量測就可得到衛(wèi)星到接收機(jī)的距離,故稱為偽距。對CA碼(Coarse-Acquisition Code,粗捕獲碼)測得的偽距稱為CA碼偽距,精度約為24 m,對P碼(Precise Code,精密碼)測得的偽距稱為P碼偽距,精度約為2 m。

2.2 GPS通信格式

目前,幾乎所有的GPS廠商都遵循美國國家海洋電子協(xié)會(National Marine Electronics Association)制定的NMEA-0183V20通信標(biāo)準(zhǔn)格式。GPS接收機(jī)的輸出語句按照串行通信協(xié)議,數(shù)據(jù)格式為8個數(shù)據(jù)位、1個起始位、1個停止位,無奇偶校驗位。本文中采用的數(shù)據(jù)傳輸?shù)牟ㄌ芈蕿? 600 b/s。其輸出語句采用的是NMEA0183即ASCII格式碼,包括GGA,GSA,RMC,GSV,RMC,RMT,VTG等。這些定位語句不僅給出了位置、速度、時間等信息,而且指出了當(dāng)?shù)氐男l(wèi)星接收情況。根據(jù)項目的實際需求,本設(shè)計只提取GGA數(shù)據(jù)。GGA數(shù)據(jù)的數(shù)據(jù)格式為:所有的信息由$開始,以換行結(jié)束,緊跟著$后的5個字符解釋了信息的基本類型,多重的信息之間用逗號隔開。其中代表回車控制符,代表換行控制符。具體說明如下:

$GPGGA,hhmmss,XXXX.XXXX,N/S,

12 3

XXXXX.XXXX,E/W,X,XX,XXX,0/-XXXX,

4 56 7 89

M, 0/-XXX, M,XXX,XXXX *hh

101112 131415

(1)世界時(UTC):hh:時;mm:分;ss:秒。例如,北京時間(東八時區(qū))=UTC+8 h;

(2)緯度:“度度分分.分分分分”方式表示,小數(shù)點后也以分為單位;

(3)N:北緯;S:南緯;

(4)經(jīng)度:以“度度度分分.分分分分”方式表示。小數(shù)點后也以分為單位;

(5)E:東經(jīng);W:西經(jīng);

(6)GPS質(zhì)量指示。0:未定位;1:GPS定位;2:差分GPS定位;

(7)使用到的衛(wèi)星數(shù),可為0~12個。

(8)HDOP值:水平方向的定位精度劣化程度系數(shù)。三維定位時也會輸出HDOP值。但在未定位時輸出“099”。如果輸出語句的經(jīng)緯度輸出設(shè)置精度達(dá)不到1/10 000時,小數(shù)點后省略;

(9)天線高度,0:正數(shù),高于海平面;-:負(fù)數(shù),低于海平面;

(10)天線高度,單位為m;

(11)地理高度,0:正數(shù),高于海平面;-:負(fù)數(shù),低于海平面;

(12)地理高度,單位為m;

(13)DGPS修正經(jīng)過的時間。差分?jǐn)?shù)據(jù)時間單位為s;

(14)差分基準(zhǔn)站發(fā)播的ID編號;

(15)校驗和。

GPS命令格式為:

$PFST,,…,

命令行以$PFST開頭,后面跟著參數(shù),其中參數(shù)之間由逗號分隔開。GPS可以發(fā)送的數(shù)據(jù)如表1所示。

本設(shè)計中用到如下2個命令:

$PFST,START,0為發(fā)送命令使GPS模塊開始定位。

$PFST,NMEA,2000,9600為定義要發(fā)送的數(shù)據(jù),并設(shè)置通過串口傳輸?shù)牟ㄌ芈省?/p>

其中參數(shù)選擇2 000,即選擇了向串口發(fā)送GGA數(shù)據(jù)。

表1 GPS 基本命令

MessagebitMessagebit

GLL0x1000GGA0x2000

VTG0x4000RMC0x8000

GSA0x0002FOM0x0020

GSV0x0001PPS0x0010

Reserved0x0040

3 嵌入式Linux 通用GPS接口的實現(xiàn)

3.1 Linux 串行接口通信的設(shè)置與操作

3.1.1 串口初始化

本系統(tǒng)中,GPS模塊通過串口與Philip LPC2210嵌入式系統(tǒng)通信,處理器通過串口來獲得定位信息數(shù)據(jù)。Linux通過虛擬設(shè)備文件統(tǒng)一管理硬件設(shè)備,并將硬件設(shè)備的技術(shù)細(xì)節(jié)隱藏起來。內(nèi)核提供訪問設(shè)備文件的系統(tǒng)函數(shù),應(yīng)用程序通過調(diào)用這些函數(shù)完成對硬件的操作。對串口訪問控制的函數(shù)如表2所示,這些函數(shù)一起構(gòu)成了通用的終端控制接口,提供了對終端的有效的控制操作。

表2 串口訪問函數(shù)功能

函數(shù)描述

tcgetattr/tcsetattr獲取/設(shè)置終端屬性(termios結(jié)構(gòu))

cfgetispeed/cfsetispeed獲取/設(shè)置輸入速率

cfgetospeed/cfsetospeed獲取設(shè)置輸出速率

tcdrain等待所有輸出被傳送

tcflow暫停傳送或接受

tcflush丟棄隊列中尚未傳送或接受的數(shù)據(jù)

tcsendbreak發(fā)送BREAK字符

tcgetpgrp/tcsetpgrp獲取設(shè)置前臺的進(jìn)程組ID

在對串口操作之前,首先要對參數(shù)進(jìn)行初始化、設(shè)置它的屬性以保證通信雙方的通信參數(shù)保持一致,這些屬性定義在結(jié)構(gòu)體struct termios中,如下所示:

struct termios{

tcflag_t c_ iflag;

tcflag_t c_oflag;

tcflag_ t c_cflag;

tcflag_ t c_ lflag;

cc_ta_cc[NCCS];

}

其中,c_iflag成員用于控制輸入處理選項,它將影響到終端驅(qū)動程序在把輸入發(fā)送給程序前是否對其進(jìn)行處理,及怎樣對其進(jìn)行處理;成員c_oflag控制輸出處理過程;c_cflag包含對端口的設(shè)置,如波特率、字符位數(shù)、停止位等;存儲在成員c_iflag的本地模式標(biāo)志符決定是否顯示字符,是否發(fā)送信號到應(yīng)用程序等;數(shù)組c_cc包含控制字符的定義和超時參數(shù),在對struct.termios結(jié)構(gòu)體的各個成員賦值,調(diào)用tcsetattr()函數(shù)選擇新的設(shè)置完畢后,嵌入式Linux即可采用與普通文件的輸入/輸出相同的方式訪問串口。

3.1.2 Linux下的串口I/O操作

Linux對于串口資源采用“ttyS+編號”來命名,所有設(shè)備以設(shè)備文件的形式存儲在文件夾/dev中,其中每一個設(shè)備由一個主設(shè)備號和一個次設(shè)備號惟一確定。在Linux中串口設(shè)備被虛擬成文件,因此要訪問1個串口,只需打開相應(yīng)的設(shè)備文件,然后向這個文件讀寫數(shù)據(jù)就可以完成數(shù)據(jù)的接收和發(fā)送。首先調(diào)用open函數(shù)打開串口設(shè)備,使用完畢后用close函數(shù)關(guān)閉端口。使用的文件操作函數(shù)如下:

int open(coast char*pathname,int flags);

int close(int fd);

參數(shù)pathname指向欲打開的文件路徑字符串;參數(shù)flags為設(shè)置打開方式;open系統(tǒng)調(diào)用返回一個整形文件標(biāo)識符;以后所有的端口操作都針對這個標(biāo)識符進(jìn)行。close的參數(shù)fd為希望關(guān)閉的文件的標(biāo)識符[7-10]。

在完成串口配置,使用open函數(shù)打開串口后,調(diào)用read和write函數(shù)接收和發(fā)送數(shù)據(jù)。這兩個函數(shù)返回實際讀寫的字節(jié)數(shù),如果有錯誤發(fā)生,則返回-1。第一個參數(shù)為要讀/寫的文件標(biāo)識符,第二個參數(shù)為讀/寫緩存,第三個參數(shù)表示希望讀/寫的字節(jié)數(shù)。函數(shù)定義如下:

ssize_t read(int fd,void*buf,size_t count);

ssize_t write (int fd,const void*bufsize_t count);

3.2 基于中斷模式的GPS信號提取

中斷處理子函數(shù)主要用于處理串口接收到的數(shù)據(jù),由于GPS發(fā)送的數(shù)據(jù)類型都是以$符號開頭,所以首先應(yīng)檢測$符號,進(jìn)而進(jìn)行下一步的處理。

在此之前需要建立一個結(jié)構(gòu)體,用來保存GPS數(shù)據(jù),結(jié)構(gòu)體中包括數(shù)組Data[80],用來保存GPS數(shù)據(jù),數(shù)組長度設(shè)為80;還有一個狀態(tài)標(biāo)志位State,用于表示當(dāng)前的接收狀態(tài),State = 1表示已經(jīng)接收到$,State = 2表示已經(jīng)接收完1組GPS數(shù)據(jù),可以對數(shù)據(jù)進(jìn)行處理。State = 0表示還沒有接收到GPS信息。定義Data[GPSDataQWPTR] 表示第GPSDataQWPTR位數(shù)據(jù)。串口在接收GPS數(shù)據(jù)的時候需要判斷GPS數(shù)據(jù)的起始位和結(jié)束位,這一過程都在中斷處理子函數(shù)中實現(xiàn),具體的流程圖如圖2所示。

串口的中斷處理子函數(shù)起著非常關(guān)鍵的作用,一方面,它要處理來自于串口的緩沖區(qū)的GPS數(shù)據(jù),將串口中的數(shù)據(jù)寫入一個緩沖隊列中;另一方面,它還要負(fù)責(zé)與GPS_Handle()函數(shù)通信,通知GPS_Handle()任務(wù)開始對緩沖隊列中的數(shù)據(jù)進(jìn)行處理,將緩沖隊列中的數(shù)據(jù)寫入RAM中。根據(jù)$GPRMC數(shù)據(jù)格式,通過設(shè)置逗號計數(shù)器即可解算出經(jīng)、緯度等信息。

圖2 中斷處理子程序

4 結(jié) 語

GPS系統(tǒng)目前已廣泛應(yīng)用到社會的各個領(lǐng)域。Linux作為開源軟件,開發(fā)周期相對較短、內(nèi)核精簡、功能強(qiáng)大、運(yùn)行穩(wěn)定、系統(tǒng)健壯、效率高。其易于定制裁剪,內(nèi)核和用戶界面完全獨立。它非常靈活,各部分的可定制性都很強(qiáng)。正因為具有這些特性,為Linux在硬件資源有限的嵌入式領(lǐng)域提供了廣闊的舞臺。本文設(shè)計的基于嵌入式Linux平臺的GPS接口具有較強(qiáng)的通用性,可廣泛應(yīng)用于便攜式GPS系統(tǒng)中。

參考文獻(xiàn)

[1]何林遠(yuǎn),畢篤彥.嵌入式 Linux實時性的分析與研究\\.計算機(jī)應(yīng)用與軟件,2008,25(2):225-227.

[2]孫守昌,韓紅芳,孟煜.嵌入式Linux實時技術(shù)改進(jìn)與實現(xiàn)\\.微計算機(jī)信息,2007,23(12):67-69.

[3]任旭龍,周緯杰.基于嵌入式Linux操作系統(tǒng)內(nèi)核實時性的改進(jìn)方法研究\\.計算機(jī)工程與科學(xué),2006,28(1):125-127.

[4]周立功.ARM嵌入式系統(tǒng)基本教程[M].北京:北京航空航天大學(xué)出版社,2005.

[5]許海燕,付炎.嵌入式系統(tǒng)技術(shù)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2002.

[6]符意德.嵌入式系統(tǒng)設(shè)計原理及應(yīng)用[M].北京:清華大學(xué)出版社,2004.

[7]胃靜莊.嵌入式系統(tǒng)設(shè)計開發(fā)實例詳解基于ARM的應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.

[8]王田苗.嵌入式系統(tǒng)設(shè)計與實例開發(fā)[M].北京:清華大學(xué)出版社,2002.

[9]劉錚蓉,張智超,許振山,等.嵌入式Linux應(yīng)用技術(shù)詳解[M].北京:機(jī)械工業(yè)出版社,2004.

[10]Craig Hollabaugh.嵌入式Linux硬件、軟件與接口[M].陳雷,譯.北京:電子工業(yè)出版社,2003.

[11]馬忠梅,李善平,康慨.ARMLinux嵌入式系統(tǒng)教程[M].北京:北京航空航大大學(xué)出版社,2004.

[12]Karim Yaghmour.Building Embedded Linux Systems[M].New York:O′Reilly Press,2003.

作者簡介 李學(xué)斌 男,1956年出生,山西長治學(xué)院計算機(jī)系副教授。主要研究方向為計算機(jī)應(yīng)用。

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

主站蜘蛛池模板: 亚洲国产欧美国产综合久久| 丁香五月激情图片| 久草青青在线视频| 人妻少妇乱子伦精品无码专区毛片| 男女男免费视频网站国产| 免费久久一级欧美特大黄| 国产激情国语对白普通话| 亚洲精品第五页| 91在线播放免费不卡无毒| 三级视频中文字幕| 精品久久久无码专区中文字幕| www.99在线观看| 久久超级碰| 一本大道AV人久久综合| 国产SUV精品一区二区| 国产精品欧美日本韩免费一区二区三区不卡 | 2021精品国产自在现线看| 免费人成网站在线观看欧美| 日本欧美视频在线观看| 日韩欧美国产成人| 91视频99| 成人在线天堂| 波多野结衣AV无码久久一区| 亚洲精品色AV无码看| 成年人久久黄色网站| 国内自拍久第一页| 国产另类乱子伦精品免费女| 亚洲乱码视频| 日韩一区二区三免费高清| 欧美激情视频一区| 中文字幕无码av专区久久| 国产情侣一区二区三区| 伊人无码视屏| 久久影院一区二区h| 国产精品第三页在线看| 欧美无专区| 国产精品性| 亚洲天堂网在线观看视频| 久久久久久久97| 日韩成人高清无码| 欧美在线综合视频| 亚洲人成网址| 久久精品中文无码资源站| 国产成人91精品| 丰满人妻一区二区三区视频| 国产成人一区在线播放| 国产精品一线天| 亚洲va视频| 国产一区二区网站| 综合天天色| 91精品啪在线观看国产| 欧美成人精品欧美一级乱黄| 亚洲日本中文字幕乱码中文 | 国产地址二永久伊甸园| 色一情一乱一伦一区二区三区小说| 国产精品亚洲精品爽爽 | 色欲不卡无码一区二区| 久久国产精品嫖妓| 日韩在线1| 欧美精品亚洲精品日韩专| 亚洲一区二区三区麻豆| 永久免费无码成人网站| 亚洲国产欧美中日韩成人综合视频| 久久综合婷婷| 亚洲免费三区| 欧美日韩国产在线观看一区二区三区 | av无码一区二区三区在线| 欧美亚洲国产一区| 国产精品尤物铁牛tv| 国产精品页| 精品人妻系列无码专区久久| 99er精品视频| 真实国产精品vr专区| 久久亚洲日本不卡一区二区| 欧美性猛交xxxx乱大交极品| 亚洲自拍另类| 都市激情亚洲综合久久| 久久久久中文字幕精品视频| 久久青青草原亚洲av无码| 九色视频线上播放| 精品国产免费观看| 日韩国产亚洲一区二区在线观看|