基于ARM的嵌入式车载GPS定位系统设计
0 前言
车载定位系统作为车载信息系统的重要部分,利用GPS等装置,以一定精度实现车辆定位,包含位置、速度和行车方向等车辆姿态信息。继一些国家之后,我国一些科研院所和高校也开始研究自己的车载定位系统,市场空前的繁荣。但是传统系统功能单一、集成度不高。随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经成为嵌入式应用和设计的主流。同时嵌入式Linux是一个非常好的免费的操作系统内核,具有稳定、良好的移植性、优秀的网络功能、完备的各种文件系统的支持、以及标准丰富的API等特点。因此,本文提供了一套具有先进性及工程实用性的车载定位系统整体解决方案,使得系统的性能、集成度和可扩展性大大提高。
1 系统的硬件设计
1.1 系统的整体硬件设计
本文车载信息系统由以下几部分组成:主控制部分、定位部分、通信部分、数据采集部分、显示部分,如图1所示。
图1 车载定位系统总体硬件设计方案
主控制部分采用了三星公司基于ARM920T的S3C2410和Linux的嵌入式系统平台,完成整个系统的控制。其主要包括电源电路、时钟电路、复位电路、存储模块电路、JTAG接口电路、串行口电路、LCD接口、SPI接口以及按键电路的设计。主控模块通过串行口、SPI接口、LCD接口与扩展模块相连接构成整个硬件系统。
1.2 GPS模块的硬件设计与制作
定位部分采用了自行设计和制作了基于瑞士U-BLOX公司LEA-4S芯片的GPS接收模块。在此给出了GPS接收模块的整体设计,如图2所示。
图2 GPS接收模块的整体设计
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交叉相连。 软件平台的搭建
系统的软件平台的搭建其实就是嵌入式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 初始化/清除模块
在初始化程
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)