<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è) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM的嵌入式車(chē)載GPS定位系統設計

基于A(yíng)RM的嵌入式車(chē)載GPS定位系統設計

作者: 時(shí)間:2013-01-12 來(lái)源:網(wǎng)絡(luò ) 收藏
軟件平臺的搭建

  系統的軟件平臺的搭建其實(shí)就是嵌入式linux操作系統的移植移植工作,主要包括4步:建立交叉編譯環(huán)境,移植引導程序,編譯內核,生成根文件系統。

  交叉編譯工具主要由gcc,binutils和glibc這幾部分組成。由于重新建立一個(gè)交叉編譯工具鏈比較復雜也沒(méi)有任何意義,所以本文使用已經(jīng)做好的工具鏈。因此建立交叉編譯環(huán)境的過(guò)程實(shí)際就是對工具包c(diǎn)ross-3.3.2.tar.bz2解包的過(guò)程。

  本文移植的Bootloader是韓國Mizi公司開(kāi)發(fā)的vivi.首先在根目錄下創(chuàng )建一個(gè)armsys2410目錄,對vivi_armsys.tgz執行解壓命令。解壓完成后進(jìn)人vivi_armsys.執行命令makememmonfig,然后選擇"Load on Alternate Configuration File"菜單,再寫(xiě)入arch/def-co-igs/smdk2410,進(jìn)行vivi的裁剪。執行make命令進(jìn)行編譯,在vivi_armsys目錄下生成vivi二進(jìn)制文件。最后將其燒寫(xiě)到Flash.

  內核的編譯通過(guò)命令make menueorffig進(jìn)行內核的配置;通過(guò)命令make dep建立依賴(lài)關(guān)系;通過(guò)命令make zlmage建立內核。得到Linux內核壓縮映像zhnage.最后通過(guò)vivi命令提示模式下使用下載命令,將壓縮映像文件zlmge裝載到flash存儲器中。

  Linux支持多種文件系統。cramfs是Linus Torvalds撰寫(xiě)的只具備最基本特性的文件系統。本文使用mkcramfs工具對主機里已有cramfs文件系統進(jìn)行制作和壓縮。最后也要燒寫(xiě)到flash的相應部分。

  3 模塊驅動(dòng)程序的開(kāi)發(fā)

  Linux將設備分為最基本的兩大類(lèi),字符設備和塊設備。字符設備是單個(gè)字節為單位進(jìn)行順序讀寫(xiě)操作,通常不使用緩沖技術(shù);而塊設備則是以固定大小的數據塊進(jìn)行存儲和讀的。

  模塊驅動(dòng)程序是在UART驅動(dòng)程序的基礎上加入對模塊初始化和對GPS模塊輸出數據處理的部分,構建一個(gè)獨立的驅動(dòng)模塊,在導航系統進(jìn)實(shí)時(shí)導航工作模式時(shí)掛接到系統內核中,實(shí)現GPS功能。

  3.1 初始化/清除模塊

  在初始化程序段中要完成對GPS設備的注冊,設備節點(diǎn)的創(chuàng )建和對串口相關(guān)寄存器的初始化。部分代碼如下:

  3.2 兩個(gè)數據結構定義

  模塊驅動(dòng)的最終目的就是取得GPS信息,因此規范GPS數據是對數據傳遞的可靠性和速率都是有益的。

  struct GPS_DATA{

  unsigned int hour;//小時(shí),24小時(shí)制

  unsigned int minute;//分

  unsigned long Second;//秒,精度小數點(diǎn)后三位

  unsigned long latitude;//緯度

  unsigned char southornorth;//緯度屬于南北的標志碼

  unsigned long longitude;//經(jīng)度

  unsigned char eastorwest;//經(jīng)度屬于東西的標志碼

  };//其中包括了在導航系統中所需的幾個(gè)重要數據。

  另外還有對驅動(dòng)模塊文件操作結構的定義。即:

  static struct file_operations gps_fops={ead:gps_read,

  rite:gps_write,

  octl:gps_ioctl,

  open:gps_open,

  elease:gps_release,

  };//定義了設備操作映射函數結構。

3.3 驅動(dòng)程序的模塊操作

  在導航系統進(jìn)入GPS導航模式時(shí),系統首先是將GPS模塊注冊到操作系統中,實(shí)現初始化過(guò)程,再通過(guò)gps_open函數打開(kāi)設備,此過(guò)程中完成對中斷、緩沖區以及定時(shí)器等資源的申請,為GPS數據讀取做準備。通過(guò)gps_write()向模塊寫(xiě)命令字來(lái)是自主地選擇工作模式,gps_ioctl()則是選擇串口傳輸模式,使之與GPS模塊傳輸模式相匹配。之后的應用程序將創(chuàng )立一個(gè)獨立的進(jìn)程為進(jìn)行GPS數據的讀取gps_read(),該進(jìn)程沒(méi)有數據時(shí)進(jìn)程會(huì )一直處于睡眠等待數據,有數據來(lái),進(jìn)入中斷處理模塊,完成數據的分析,生成GPS_DATA數據結構,供導航使用。這個(gè)進(jìn)程是隨著(zhù)導航模式的切換而終止的,此時(shí)除了關(guān)閉進(jìn)程外,還需要用gps_release()釋放申請的所有資源,并關(guān)閉設備。



關(guān)鍵詞: ARM GPS 定位系統

評論


相關(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>