1 / 15
文档名称:

基于ARM的嵌入式车载GPS定位系统设计.doc

格式:doc   大小:340KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于ARM的嵌入式车载GPS定位系统设计.doc

上传人:薇薇安 2022/4/6 文件大小:340 KB

下载得到文件列表

基于ARM的嵌入式车载GPS定位系统设计.doc

文档介绍

文档介绍:2 / 15

基于 ARM 的嵌入式车载 GPS 定位系统设计
鹿存波,邓飞贺,赵龙章
(南京工业大学自动化与电气工程学院,江苏南京 210009
摘要:介绍了嵌入式 GPS 定位系统的整体设计方案,着重对基于 ARM9和嵌入可以用默认值 。
数字部分硬件相对简单, LEA-4S 为两路 TTL 电平输出, 分别为 9600/11520波 特 率, 分 别 支 持 国 际 通 用 GPS 协 议 NMEA 及 u-blox 公司的 UBX 二进制格式 。 在本设计中,通过串 口 O 提取 ASCII 码,串口数据通过 MAX232电平转换为 RS232电平 。 另外,将 GPS 模块的发送端和接收端经电平转换后与串 口 DB9交叉相连 。
5 / 15
2软件平台的搭建
系统的软件平台的搭建其实就是嵌入式 linux 操作系统的 移植工作,主要包括 4步:建立交叉编译环境; 移植引导程 序; 编译内核; 生成根文件系统 。
交叉编译工具主要由 gcc 、 binutils 和 glibc 这几部分组成 。 由于重新建立一个交叉编译工具链比较复杂也没有任何意义, 所以本文使用已经做好的工具链 。 因此建立交叉编译环境的过 程实际就是对工具包 cross -3. 3. 2. tar. bz2解包的过程 。
本文移植的 Bootloader 是韩国 Mizi 公司开发的 vivi 。 首先 在根目录下创建一个 armsys2410目录,对 执 行解压命 令 。 解 压 完 成 后 进 入 vivi _armsys 。 执 行 命 令 make menuconfig ,然后选择 “ Load on Alternate Configuration File ” 菜 单,再写入 arch /def-configs /smdk2410,进行 vivi 的裁剪 。 执行 make 命令进行编译,在 vivi_armsys 目录下生成 vivi 二进制文 件 。 最后将其烧写到 Flash 。
内核的编译通过命令 make menuconfig 进行内核的配置; 通 过命令 make dep 建立依赖关系; 通过命令 make zImage 建立内 核 。 得到 Linux 内核压缩映像 zImage 。 最后通过 vivi 命令提示 模式下使用下载命令,将压缩映像文件 zImage 装载到 flash 存 储器中 。
Linux 支持多种文件系统 。 cramfs 是 Linus Torvalds 撰写的 只具备最基本特性的文件系统 。 本文使用 mkcramfs 工具对主机 里已有 cramfs 文件系统进行制作和压缩 。 最后也要烧写到 flash 的相应部分 。
3GPS 模块驱动程序的开发
6 / 15
Linux 将设备分为最基本的两大类,字符设备和块设备 。 字符设备是单个字节为单位进行顺序读写操作,通常不使用缓 冲技术; 而块设备则是以固定大小的数据块进行存储和读的 。 GPS 模块驱动程序是在 UART 驱动程序的基础上加入对 GPS 模块初始化和对 GPS 模块输出数据处理的部分,构建一个 独立的驱动模块,在导航系统进实时导航工作模式时挂接到系 统内核中,实现 GPS 功能 。
3. 1初始化 /清除模块
在初始化程序段中要完成对 GPS 设备的注册,设备节点的 创建和对串口相关寄存器的初始化 。 部分代码如下:
if ((register_chrdev(GPS_MAJOR, GPS_NAME, &gps_fops <0
{//注册 GPS 字符设备
printk (KERN _INFO ” [registering of “ GPS ” is failed ]\ n ” ;
return ret ;}
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 (“ GPS suecessfully initialized \n” ;
*UCON0=OxO211; //串口工作模式定义
*UBDRO =OxOO17; //波特率的选择
7 / 15
相反, 清除模块函数 GPS_Cleanup(, 完成注销字符设备 。 devfs_unregister_chrdev(GPS_MAJOR, GPS_NAME;
printk (“