0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过利用ARM9和Linux操作系统实现车载GPS定位系统的设计

电子设计 来源:郭婷 作者:电子设计 2019-07-26 08:12 次阅读

前言

车载定位系统作为车载信息系统的重要部分,利用GPS等装置,以一定精度实现车辆定位,包含位置、速度和行车方向等车辆姿态信息。继一些国家之后,我国一些科研院所和高校也开始研究自己的车载定位系统,市场空前的繁荣。但是传统系统功能单一、集成度不高。随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经成为嵌入式应用和设计的主流。同时嵌入式Linux是一个非常好的免费的操作系统内核,具有稳定、良好的移植性、优秀的网络功能、完备的各种文件系统的支持、以及标准丰富的API等特点。因此,本文提供了一套具有先进性及工程实用性的车载定位系统整体解决方案,使得系统的性能、集成度和可扩展性大大提高。

1 系统的硬件设计

1.1 系统的整体硬件设计

本文车载信息系统由以下几部分组成:主控制部分、定位部分、通信部分、数据采集部分、显示部分,如图1所示。

通过利用ARM9和Linux操作系统实现车载GPS定位系统的设计

图1 车载定位系统总体硬件设计方案

主控制部分采用了三星公司基于ARM920T的S3C2410和Linux的嵌入式系统平台,完成整个系统的控制。其主要包括电源电路时钟电路、复位电路、存储模块电路、JTAG接口电路、串行口电路、LCD接口、SPI接口以及按键电路的设计。主控模块通过串行口、SPI接口、LCD接口与扩展模块相连接构成整个硬件系统。

1.2 GPS模块的硬件设计与制作

定位部分采用了自行设计和制作了基于瑞士U-BLOX公司LEA-4S芯片的GPS接收模块。在此给出了GPS接收模块的整体设计,如图2所示。

通过利用ARM9和Linux操作系统实现车载GPS定位系统的设计

图2GPS接收模块的整体设计

u-blox的GPS部分分为两部分。采取数字/模拟分开设计的方法,有效提高了模块的抗干扰能力。在硬件的设计制作过程中。也是分为两步,即模块部分和数字部分。模拟部分主要由天线接入端及天线供电部分/检测电路构成。

天线选用3v供电的有源天线,增益27dB左右,噪声系数1.5dB左右。天线接入模块较为复杂,从GPS有源天线接收的信号频率高选1.575C,属于微渡范围。PCB设计需要满足天线座到模块RF_IN端的阻抗匹配为50Ω。

模块供电电源稳压电路为5v转3v的五脚LDO,对电压稳定精度较高,要求输出纹波在50mV以下,电流为150mA左右,这里选用精工的SOT-23-5封装的LDO S-1112 3.0V,能满足电源供应的要求。后备3V可充电微型锂电池则为数据保存作用。

选择电路为波特率的选择及速率选择。或是启动速度之类的选择,一般可以用默认值。

数字部分硬件相对简单,LEA-4S为两路TTL电平输出,分别为9600/11520波特率,分别支持国际通用GPS协议NMEA及u-blox公司的UBX二进制格式。在本设计中,通过串口O提取ASCII码,串口数据通过MAX232电平转换为RS232电平。另外,将GPS模块的发送端和接收端经电平转换后与审口DB9交叉相连。

2软件平台的搭建

系统的软件平台的搭建其实就是嵌入式linux操作系统的移植移植工作,主要包括4步:建立交叉编译环境,移植引导程序,编译内核,生成根文件系统。

交叉编译工具主要由gcc,binutils和glibc这几部分组成。由于重新建立一个交叉编译工具链比较复杂也没有任何意义,所以本文使用已经做好的工具链。因此建立交叉编译环境的过程实际就是对工具包cross-3.3.2.tar.bz2解包的过程。

本文移植的Bootloader是韩国Mizi公司开发的vivi.首先在根目录下创建一个armsys2410目录,对vivi_armsys.tgz执行解压命令。解压完成后进人vivi_armsys.执行命令makememmonfig,然后选择"Load on Alternate Configuration File"菜单,再写入arch/def-co-igs/smdk2410,进行vivi的裁剪。执行make命令进行编译,在vivi_armsys目录下生成vivi二进制文件。最后将其烧写到Flash.

内核的编译通过命令make menueorffig进行内核的配置;通过命令make dep建立依赖关系;通过命令make zlmage建立内核。得到Linux内核压缩映像zhnage.最后通过vivi命令提示模式下使用下载命令,将压缩映像文件zlmge装载到flash存储器中。

Linux支持多种文件系统。cramfs是Linus Torvalds撰写的只具备最基本特性的文件系统。本文使用mkcramfs工具对主机里已有cramfs文件系统进行制作和压缩。最后也要烧写到flash的相应部分。

3 GPS模块驱动程序的开发

Linux将设备分为最基本的两大类,字符设备和块设备。字符设备是单个字节为单位进行顺序读写操作,通常不使用缓冲技术;而块设备则是以固定大小的数据块进行存储和读的。

GPS模块驱动程序是在UART驱动程序的基础上加入对GPS模块初始化和对GPS模块输出数据处理的部分,构建一个独立的驱动模块,在导航系统进实时导航工作模式时挂接到系统内核中,实现GPS功能。

3.1 初始化/清除模块

在初始化程序段中要完成对GPS设备的注册,设备节点的创建和对串口相关寄存器的初始化。部分代码如下:

通过利用ARM9和Linux操作系统实现车载GPS定位系统的设计

3.2 两个数据结构定义

模块驱动的最终目的就是取得GPS信息,因此规范GPS数据是对数据传递的可靠性和速率都是有益的。

struct GPS_DATA{

unsigned int hour;//小时,24小时制

unsigned int minute;//分

unsigned long Second;//秒,精度小数点后三位

unsigned long latitude;//纬度

unsigned char southornorth;//纬度属于南北的标志码

unsigned long longitude;//经度

unsigned char eastorwest;//经度属于东西的标志码

};//其中包括了在导航系统中所需的几个重要数据。

另外还有对驱动模块文件操作结构的定义。即:

static struct file_operations gps_fops={ead:gps_read,

rite:gps_write,

octl:gps_ioctl,

open:gps_open,

elease:gps_release,

};//定义了设备操作映射函数结构。

3.3 驱动程序的模块操作

在导航系统进入GPS导航模式时,系统首先是将GPS模块注册到操作系统中,实现初始化过程,再通过gps_open函数打开设备,此过程中完成对中断、缓冲区以及定时器等资源的申请,为GPS数据读取做准备。通过gps_write()向模块写命令字来是自主地选择工作模式,gps_ioctl()则是选择串口传输模式,使之与GPS模块传输模式相匹配。之后的应用程序将创立一个独立的进程为进行GPS数据的读取gps_read(),该进程没有数据时进程会一直处于睡眠等待数据,有数据来,进入中断处理模块,完成数据的分析,生成GPS_DATA数据结构,供导航使用。这个进程是随着导航模式的切换而终止的,此时除了关闭进程外,还需要用gps_release()释放申请的所有资源,并关闭设备。

3.4应用程序的实现

GPS模块通过串口输出NMEAO183语句,而应用程序主要完成对GPS数据的采集与解析。NMEA0183输出语句多达十余种,任意一种定位语句都包含一定的定位数据,由于以"$GPRMC"开头的语句包含了本系统所需的所有定位信息,本系统只需研究该类型。该类型定位数据的各个符号位的含义如下所示。

表1 $GPRMC帧基本格式的描述

通过利用ARM9和Linux操作系统实现车载GPS定位系统的设计

应用程序的整体设计流程如图3所示。

通过利用ARM9和Linux操作系统实现车载GPS定位系统的设计

图3 软件设计整体框图

从图3可以看出,系统开始运行后首先对串口的初始化就是对GPS模块韧始化,包括设置波特率、数据位、校验位等,然后开始接收GPS数据。即从串口读数据。井将读到的数据保存到BUF中;接着进入数据的解析和提取阶段。通过BUF等不等于"c"判断是苦为$GPRMC;若是,则开始提取经纬度、时间等信息并存入结构体GPS_DATA中。最后通过LCD显示出来。

4 结束语

本文给出了基于ARM9和嵌入式操作系统Linux下,GPS定位系统的整体解决方案。包括了系统的整体设计,GPS模块制作方案,开发平台搭建以及GPS驱动程序和应用程序的设计。较市场上的车载定位系统相比,本设计在功能性、可扩展性和稳定性上都有所提高。由本系统作为基础,车载定位系统的下一步工作将可以专注于应用程序的编写,包括提高GPS定位精度的算法,以及开发更加友好的人机交互界面。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5046

    文章

    18837

    浏览量

    299004
  • Linux
    +关注

    关注

    87

    文章

    11131

    浏览量

    207993
  • 操作系统
    +关注

    关注

    37

    文章

    6556

    浏览量

    122800
收藏 人收藏

    评论

    相关推荐

    WKADS ARM9开发系统培训

    WKADS ARM9开发系统培训主要内容MXL处理器WKADS应用开发系统嵌入式Linux操作系统WKADS应用实例 [hide]
    发表于 10-31 14:19

    怎么设计一种基于ARM9 S3C2410A的智能车载系统

    本文设计一种基于ARM9 S3C2410A的智能车载系统,它能够通过GPS全球定位系统和GPRS
    发表于 05-17 06:03

    嵌入式Linux操作系统

    ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)(2)必须掌握一个嵌入式
    发表于 10-27 10:22

    基于ARM车载GPS定位终端的设计

    论文设计了一套基于 ARM 处理器的车载GPS 系统,采用AT91RM9200 处理器为硬件平台,在该处理器上移植Linux
    发表于 06-24 09:54 51次下载

    WKADS ARM9开发系统培训

    WKADS ARM9开发系统培训 主要内容MXL处理器WKADS应用开发系统嵌入式Linux操作系统WKADS应用实例
    发表于 02-10 10:48 38次下载

    基于ARM9Linux操作系统的彩色液晶驱动设计

    为了提高工业仪表的开发效率,降低人机界面的设计难度,设计了一种具有通用接口的彩色液晶驱动终端。利用高性能ARM9微控制器与嵌入式Linux操作系统相结合的方法
    发表于 12-24 16:17 55次下载

    基于ARM9的智能车载系统设计

    基于ARM9的智能车载系统设计 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,开发了各种各样的电子控制系统。本文设
    发表于 05-11 10:55 1193次阅读
    基于<b class='flag-5'>ARM9</b>的智能<b class='flag-5'>车载</b><b class='flag-5'>系统</b>设计

    基于ARM9车载GPS定位终端设计

    车载GPS定位终端在过去十年内已经成为汽车工业发展的焦点。在欧美国家和日本,车载GPS定位终端在
    发表于 10-27 16:24 2470次阅读
    基于<b class='flag-5'>ARM9</b>的<b class='flag-5'>车载</b><b class='flag-5'>GPS</b><b class='flag-5'>定位</b>终端设计

    基于ARM9的电力负控终端系统的设计

    介绍了采用高端嵌入式单片机ARM9和嵌入式Linux操作系统构成的电力负荷终端系统,以及该系统的整体设计方案。终端
    发表于 12-23 14:55 51次下载
    基于<b class='flag-5'>ARM9</b>的电力负控终端<b class='flag-5'>系统</b>的设计

    基于LinuxARM9远程客车监控系统

    针对长途客车普遍存在着超员问题,提出了一种基于GPS/GPRS的远程监控系统设计方案,该方案采用ARM微处理器和嵌入式Linux操作系统作为
    发表于 02-08 11:31 28次下载
    基于<b class='flag-5'>Linux</b>的<b class='flag-5'>ARM9</b>远程客车监控<b class='flag-5'>系统</b>

    基于ARM9和NANDFlash对uboot和Linux内核进行修改

    本文针对嵌入式Linux操作系统提出了一种新的更新机制,并且基于ARM9微处理器和NANDFlash存储器,对uboot和Linux内核进行修改,
    发表于 04-07 11:00 2725次阅读
    基于<b class='flag-5'>ARM9</b>和NANDFlash对uboot和<b class='flag-5'>Linux</b>内核进行修改

    如何使用ARM9与WindowsCE进行车辆GPS定位信息采集系统的资料说明

      ARM9微处理器S3C2440カ硬件平台核心,WindowsCE嵌入式操作系統软件平台,杓建了微型化、便携的车輌GPS定位信息采集系統。
    发表于 02-28 17:03 10次下载
    如何使用<b class='flag-5'>ARM9</b>与WindowsCE进行车辆<b class='flag-5'>GPS</b><b class='flag-5'>定位</b>信息采集<b class='flag-5'>系统</b>的资料说明

    基于Linux操作系统和S3C2410微处理器实现GPS实时导航系统的设计

    Linux操作系统Linux操作系统负责系统的整体调度和控制。通过S3C2410的UART接口
    发表于 03-09 10:47 1017次阅读
    基于<b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>和S3C2410微处理器<b class='flag-5'>实现</b><b class='flag-5'>GPS</b>实时导航<b class='flag-5'>系统</b>的设计

    基于ARM9手持GPS定位系统的研究与实现

    电子发烧友网站提供《基于ARM9手持GPS定位系统的研究与实现.pdf》资料免费下载
    发表于 10-12 09:44 0次下载
    基于<b class='flag-5'>ARM9</b>手持<b class='flag-5'>GPS</b><b class='flag-5'>定位</b><b class='flag-5'>系统</b>的研究与<b class='flag-5'>实现</b>

    基于ARM9和WinCE操作系统的机电设备监测终端设计

    电子发烧友网站提供《基于ARM9和WinCE操作系统的机电设备监测终端设计.pdf》资料免费下载
    发表于 10-23 11:37 0次下载
    基于<b class='flag-5'>ARM9</b>和WinCE<b class='flag-5'>操作系统</b>的机电设备监测终端设计