基于ARM的嵌入式车载GPS定位系统设计.docx
- 文档编号:11322082
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:10
- 大小:331.80KB
基于ARM的嵌入式车载GPS定位系统设计.docx
《基于ARM的嵌入式车载GPS定位系统设计.docx》由会员分享,可在线阅读,更多相关《基于ARM的嵌入式车载GPS定位系统设计.docx(10页珍藏版)》请在冰豆网上搜索。
基于ARM的嵌入式车载GPS定位系统设计
基于ARM的嵌入式车载GPS定位系统设计
鹿存波,邓飞贺,赵龙章
(南京工业大学自动化与电气工程学院,江苏南京210009
摘要:
介绍了嵌入式GPS定位系统的整体设计方案,着重对基于ARM9和嵌入式Linux的系统进行硬件设计和内核移植,同时介绍了GPS接收模块的制作方案。
最后对GPS驱动程序及应用程序进行了设计。
关键词:
GPS;ARM;嵌入式Linux操作系统
DesignofEmbeddedVehicleGPSLocationSystemBasedonARM
LUCunbo,DENGFeihe,ZHAOLongzhang
(CollegeofAutomationandElectricEngineering,NanjingUniversityofTechonology,NanjingJiangsu210009,China
Abstract:
ThewholedesignofembeddedGPSsystemisintroduced.ThepapermainlydesignedthehardwareandmakesLinuxkerneltransplanted.AnditparticularlyimplementedtheexecutionofGPSmodule.Finally,thepaperdesignedtheGPSdriverandtheapplicationprogram.
Keywords:
GPS;ARM;EmbeddedLinuxOS
0引言
车载定位系统作为车载信息系统的重要部分,利用GPS等
装置,以一定精度实现车辆定位,包含位置、速度和行车方向等车辆姿态信息。
继一些国家之后,我国一些科研院所和高校也开始研究自己的车载定位系统,市场空前地繁荣。
但是传统系统功能单一、集成度不高。
随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经成为嵌入式应用和设计的主流。
同时嵌入式Linux是一个非常好的免费的操作系统内核,具有稳定、良好的移植性,优秀的网络功能,完备的各种文件系统的支持以及标准丰富的API等特点。
因此,本文提供了一套具有先进性及工程实用性的车载定位系统整体解决方案,使得系统的性能、集成度和可扩展性大大提高。
1
系统的硬件设计
1.1
系统的整体硬件设计
本文车载信息系统由主控制、定位、通信、数据采集、显
示等几部分组成,如图1所示
。
图1
车载定位系统总体硬件设计方案
主控制部分采用了三星公司基于ARM920T的S3C2410和Linux的嵌入式系统平台,完成整个系统的控制。
其主要包括
电源电路、时钟电路、复位电路、存储模块电路、JTAG接口电路、串行口电路、LCD接口、SPI接口以及按键电路的设计。
主控模块通过串行口、SPI接口、LCD接口与扩展模块相连接构成整个硬件系统。
1.2GPS模块的硬件设计与制作
定位部分采用了自行设计和制作的基于瑞士U-
BLOX公司LEA-4S芯片的GPS接收模块。
在此给出了GPS接收模块的整体设计,如图2所示
。
图2GPS接收模块的整体设计
u-blox的GPS部分分为两部分,采取数字/模拟分开设计的方法,有效提高了模块的抗干扰能力。
在硬件的设计制作过
程中,也是分为两步,即模块部分和数字部分。
模拟部分主要由天线接入端及天线供电部分/检测电路构成。
天线选用3V供电的有源天线,增益27dB左右,噪声系数1.5dB左右。
天线接入模块较为复杂,从GPS有源天线天线接
收的信号频率高达1.575G,属于微波范围。
PCB设计需要满足天线座到模块RF_IN端的阻抗匹配为50Ω。
模块供电电源稳压电路为5V转3V的五脚LDO,对电压稳定精度较高,要求输出纹波在50mV以下,电流为150mA
左
车载导航仪
右,这里选用精工的SOT-23-5封装的LDOS-11123.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。
执行命令makemenuconfig,然后选择“LoadonAlternateConfigurationFile”菜单,再写入arch/def-configs/smdk2410,进行vivi的裁剪。
执行make命令进行编译,在vivi_armsys目录下生成vivi二进制文件。
最后将其烧写到Flash。
内核的编译通过命令makemenuconfig进行内核的配置;通过命令makedep建立依赖关系;通过命令makezImage建立内核。
得到Linux内核压缩映像zImage。
最后通过vivi命令提示模式下使用下载命令,将压缩映像文件zImage装载到flash存储器中。
Linux支持多种文件系统。
cramfs是LinusTorvalds撰写的只具备最基本特性的文件系统。
本文使用mkcramfs工具对主机里已有cramfs文件系统进行制作和压缩。
最后也要烧写到flash的相应部分。
3GPS模块驱动程序的开发
Linux将设备分为最基本的两大类,字符设备和块设备。
字符设备是单个字节为单位进行顺序读写操作,通常不使用缓冲技术;而块设备则是以固定大小的数据块进行存储和读的。
GPS模块驱动程序是在UART驱动程序的基础上加入对GPS模块初始化和对GPS模块输出数据处理的部分,构建一个独立的驱动模块,在导航系统进实时导航工作模式时挂接到系统内核中,实现GPS功能。
3.1初始化/清除模块
在初始化程序段中要完成对GPS设备的注册,设备节点的创建和对串口相关寄存器的初始化。
部分代码如下:
if((register_chrdev(GPS_MAJOR,GPS_NAME,&gps_fops<0
{//注册GPS字符设备
printk(KERN_INFO”[registeringof“GPS”isfailed]\n”;
returnret;}
devfs_GPS_dir=devfs_mk_dir(NULL,“GPS”,NULL;devfs_handle=devfs_register(devfs_GPS_dir,“GPS”DEVFS_FL_DEFAULT,GPS_MAJOR,0,S_IFCHR|S_IRUSR|S_IWUSR,&GPS_fops,NULL;
printk(“GPSsuecessfullyinitialized\n”;
*UCON0=OxO211;//串口工作模式定义
*UBDRO=OxOO17;//波特率的选择
相反,清除模块函数GPS_Cleanup(,完成注销字符设备。
devfs_unregister_chrdev(GPS_MAJOR,GPS_NAME;
printk(“GPSmoduleremoved\n”;
3.2两个数据结构定义
模块驱动的最终目的就是取得GPS信息,因此规范GPS数据是对数据传递的可靠性和速率都是有益的。
structGPS_DATA{
unsignedinthour;//小时,24小时制
unsignedintminute;//分
unsignedlongSecond;//秒,精度小数点后三位
unsignedlonglatitude;//纬度
unsignedcharsouthornorth;//纬度属于南北的标志码
unsignedlonglongitude;//经度
unsignedchareastorwest;//经度属于东西的标志码
};//其中包括了在导航系统中所需的几个重要数据。
另外还有对驱动模块文件操作结构的定义。
即:
staticstruct{
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输出语句多达十余种,任意一种定位语句都包含一定的定位数据,由于以“$G-PRMC”开头的语句包含了本系统所需的所有定位信息,本系统只需研究该类型。
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,*hh,<CR><LF>等该类型定位数据的各个符号位的含义如表1所示。
表1$GPRMC帧基本格式的描述
域描述
$GPRMC定位语句起始标志
<1>协调世界时UTC
<2>GPS定位状态指示,A为有效定位,V为无效定位<3>纬度
<4>纬度标志,N为北纬,S为南纬
<5>经度
<6>经度标志,E为东经,W为西经
<7>相对于地面的速度
<8>:
轨道相对于地面的夹角
<9>UTC日期,日月年
<10>磁偏角
*hh校验标志符
<CR><LF>语句中止符
应用程序的整体设计流程如图3所示。
从图3可以看出,系统开始运行后首先对串口的初始化就是对GPS模块初始化,包括设置波特率、数据位、校验位等;然后开始接收GPS数据,即从串口读数据,并将读到的数据保存到BUF中;接着进入数据的解析和提取阶段,通过BUF[5]等
不等于“c”判断是否为$GPRMC,若是,则开始提取经纬度、时间等信息并存入结构体GPS_DATA中,最后通过LCD显示出来
。
图3软件设计整体框图
4结束语
本文给出了基于ARM9和嵌入式操作系统Linux下,GPS定位系统的整体解决方案。
包括了系统的整体设计,GPS模块制作方案,开发平台搭建以及GPS驱动程序和应用程序的设计。
与市场上的车载定位系统相比,本设计在功能性、可扩展性和稳定性上都有所提高。
以本系统作为基础,车载定位系统的下一步工作将可以专注于应用程序的编写,包括提高GPS定位精度的算法,以及开发更加友好的人机交互界面。
参考文献:
【1】徐俊仕.基于嵌入式Linux的车载GPS导航系统设计与实现[D].西安:
西北工业大学,2007.
【2】宋凯,严丽平,甘岚,黄晓生.ARMLinux在S3C2410上的移植[J].计算机工程与设计,2008,29:
4138.
【3】朱振涛,王成儒.基于ARM9的智能车载导航终端[J].电子元器件应用,2006,8(8:
51-53.
【4】李文亮.基于ARM的车载GPS/GPRS系统[D].南京:
南京理工大学,2007.
【5】孙琼.嵌入式Linux应用程序开发详解[M].北京:
人民邮电出版社,2006:
153-165.
作者简介:
鹿存波(1984—,男,汉,江苏徐州人,硕士研究生,研究方向为嵌入式系统。
电话:
E-mail:
lcb_rose@126.com。
收稿日期:
2010-01-
11车载导航仪
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 嵌入式 车载 GPS 定位 系统 设计