基于ARM-LINUX的GPS导航系统论文.docx

上传人:牧羊曲112 文档编号:1667595 上传时间:2022-12-13 格式:DOCX 页数:44 大小:1.05MB
返回 下载 相关 举报
基于ARM-LINUX的GPS导航系统论文.docx_第1页
第1页 / 共44页
基于ARM-LINUX的GPS导航系统论文.docx_第2页
第2页 / 共44页
基于ARM-LINUX的GPS导航系统论文.docx_第3页
第3页 / 共44页
基于ARM-LINUX的GPS导航系统论文.docx_第4页
第4页 / 共44页
基于ARM-LINUX的GPS导航系统论文.docx_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《基于ARM-LINUX的GPS导航系统论文.docx》由会员分享,可在线阅读,更多相关《基于ARM-LINUX的GPS导航系统论文.docx(44页珍藏版)》请在三一办公上搜索。

1、目 录0摘要 11引言21系统方案选择与论证21.1总体设计方案 31.2部分模块设计方案31.2.1 主控芯片选择方案 31.2.2 操作系统及选择方案 31.2.3 GPS模块设计方案31.2.4显示模块设计方案 31.2.5地图文件存放方案 41.3总体方案确定42 系统硬件设计2.1主控芯片电路52.2 flash芯片电路 72.3串口电路 82.4 usb接口电路 92.6系统总线及lcd接口电路 92.5电源电路 103系统的软件设计 113.1程序结构框图 113.2 Maintab类 113.3 Mainwidget类 113.4 config 类 123.5 map类 133

2、.6 gps_diver 类 143.7 staSNR 类 143.8 debug_PDF 类 153.9 Makefile 文件 163.10 地图文件 (mapinfo.txt文件)164测试 164.1操作系统烧写测试 164.2 卫星接收测试184.3地图显示测试 204.4GPS信号检测测试224.5功耗测试 224.6其他测试 234.7测试结果分析 235总结 23参考文献: 23谢: 24录: 24基于ARM-LINUX的GPS导航系统 李双元(西安交通大学城市学院 计算机科学与技术 08级) 摘要:本系统由GPS数据采集并显示、地图显示两大部分组成,模拟GPS导航的过程。通过

3、GPS模块、arm11硬件环境、嵌入式LINUX操作系统、TFT触摸屏等模块来完成整个体系的运作,使其实时采集GPS数据,然后将GPS数据对应的地图显示出来,再利用串口将数据送入PC机数据库中实现查询等一系列功能。本设计的特点在于界面友好、用户易操作、功耗低、便于长时间户外导航。关键词:ARM11;LINUX;GPS;C+语言;SHELL编程;嵌入式Linux操作系统;S3C6410 The ARM-LINUX-based GPS navigation systemZhu Heng(Institute: Institute of Physics and Electronic Informati

4、on Professional: Applied Electronic Technology Education Year: 06 Instructor: ZHOU Yong-hong) Abstract: This system consists of GPS data collection, map display composed of two parts, simulated GPS navigation process. Through the GPS module, arm11 hardware environment, embedded LINUX operating syste

5、m, TFT touch screen and other modules to complete the operation of the entire system to collect real-time GPS data, GPS data and then display the corresponding map, re-use the data into the PC serial port machine in the database queries, and so to achieve a series of functions. This design feature i

6、s user-friendly, user easy to operate, low power consumption, easy to navigate a long time outdoors.Keywords: ARM11; LINUX; GPS; C + + language; SHELL programming; Embedded linux operating system ;S3C64100 引言GPS 是英文Global Positioning System(全球定位系统)的简称,而其中文简称为“球位系”。GPS是20世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定

7、位系统 。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的。随着人民生活水平的法杖,GPS技术被越来越多的应用在个人PDA、个人车载终端、手机等个人设备上。人们通过手持GPS,能准确知道自己所在的位置,从实现到导航、确定旅游路线、获取地理信息等功能。本文介绍的GPS导航系统,以ARM作为主控芯片,配以GPS、TFT触摸屏、嵌入式LINUX操作系统,构建了一个集GPS信息显示、地图显示、语音导航为一体的完整系统。本系统在一定程度上推动了个人手持GPS导航设备研究的发展。1 系统方案选择和论证1.1 总体设计方案个人手持设备要求

8、界面美观、功耗低、易于操作。系统应有彩色触摸屏;低功耗、高速度的处理芯片;带有嵌入式操作系统;GPS信息接收模块;sd卡用以存放地图;TFT触摸屏模块框图分别如图1所示: Nand flashSd卡(存放地图)Gps模块S3c6410串口(调试及下载)电 源图1 系统结构框图Fig.1 System Structure Diagram1.2 部分模块设计方案1.2.1 控制模块设计方案采用samsung公司的s3c6410。S3c6410采用ARM-Linux2.3.28的内核,实现了MMU、ARBA、BUS和Harvard高速缓冲体系结构。是一块高性能、低功耗的嵌入式芯片。可植入操作系统。在

9、个人PDA领域应用及广。植入操作系统后,在用户GUI编程方面具有很大优势。内置AD/DA,便于扩展语音模块。1. 2. 2 操作系统选择方案Linux操作系统广泛应用在嵌入式设备中,其源代码开放、免费;内核性能高效、多任务、可制定;完善的图形管理、文件管理机制;良好的开发环境、强大的工具集。可移植QT开发环境,可实现跨平台的编译,代码重用率高。1.2.3 GPS模块选择方案采用串口接口GPS模块。优点:便于驱动,价格便宜。缺点:嵌入式linux的调试需要用到串口,若GPS模块占用了串口会造成调试不便。1.2.4显示模块设计方案采用TFT显示。TFT屏幕带有四线式电阻触摸膜,能实现触摸功能、便于

10、用户操作。1.2.5地图文件存放方案采用外置sd卡。Sd卡读取速度相对较慢,且会增加成本。但能存放大量数据(),地图更新升级也很方便。1.3 总体方案确定1) 控制芯片: 采用s3c6410 arm11 处理器2) 液晶显示模块: 采用4.3寸TFT真彩液晶屏幕块(480*272)3) GPS模块: 采用三星公司的GPS模块4) nand flash: 采用 K9F1208;5) 音频处理芯片: UDA1341TS;6) SD卡 模块: 采用金士顿公司的 4GB SD卡;7) 电源模块: 插座;8) 操作系统: 采用嵌入式linux操作系统2 系统的硬件设计与实现 UT-S3C6410开发板是

11、性能稳定、功能强大、高性价比的ARM11处理器开发板;专为消费类电子、工业控制、车载导航、行业PDA等电子产品的开发而设计,主要供广大企业用户进行产品前期软硬件性能评估验证、设计参考用,其小巧、紧凑、一体式的人性化外观设计也是高校、培训机构、嵌入式爱好者学习研究的最佳工具。如下图 图2 主控芯片电路Fig.2 Master-chip circuitry2.1 主控芯片电路主控芯片为s3c6410的6层核心板,该核心板性能稳定、工艺精良。图2.1 主控芯片电路Fig.2.1 Circuit of ultrasonic transmitting and receiving2.2 flash芯片电路

12、2.21 nand flash芯片电路Nand flash 是操作系统的程序存储区,该芯片掉电不丢失数据、寿命长,可反复擦写。芯片容量128M。适合存放高密度数据结构图2.2.1 主控芯片电路Fig.2.2.1 Circuit of ultrasonic transmitting and receiving 2.22 nor flash芯片电路Nor flash是系统 BIOS 存储区。该芯片掉电不丢失数据、寿命长,可反复擦写。芯片容量8M。适合高速度、低数据密度的数据结构。 图2.2.2 主控芯片电路 Fig.2.2.2 nor flash chip circuitry2.3 串口电路 采用

13、max3232电平转换芯片与计算机通信图2.3 串口电路Fig.2.3 Serial circuit2.4 usb端口电路采用usb2.0协议,usb接口用以连接gps模块图2.4 usb端口电路Fig.2.4 Driving circuit2.5 系统总线及lcd接口电路图2.5系统总线及lcd接口电路Fig.2.5 Driving circuit2.6 电源电路系统输入电压为DC5VC,通过LM1117-1.8、LM1117-33、MAX8869EU18芯片转换成系统需要的三种电压:1.8V、3.3V、1.25V图2.6 电源电路Fig.6 Power circuit3 系统的软件设计本系

14、统的所有程序均采用C+语言编写,开发工具为QT embed 2.0。程序定义了许多类来分别管理各个模块,通过对各个类的操作,来构建整个程序框架。3.1 程序整体结构框图图3.1 maintab类流程图 Fig.3.1 Diagram of the overall structure of program3.2 Maintab类 Maintab 类负责程序外框基本定义及程序初始化 开始 设置好卫星信号强度数据设置窗口大小、颜色显示窗口图3.2 maintab类流程图 Fig.3.2 maintab Class Flowchart3.3 mainwidgt类Mainwidgt类负责对各个按钮部件、

15、页面部件的初始化开始 定义GPS时钟 绘制主框 绘制上下左右四个按键 绘制三个页面标签 连接点击按钮事件与处理按键程序 结束图3.3 mainwidget 类流程图Fig.3.3 mainwidget class Flowchart3.4 config类流程图Config类用以实现对地图路径、gps模块波特率的设置 开始 设置地图路径 设置gps的波特率 结束图3.4 config 类流程图Fig.3.4 config class Flowchart 3.5 map类Map类负责读取mapinfo文件里的地图 ,并显示对应地图。地图显示算法:首先把地图分割成n*n小块。然后系统通过得知整张地图

16、四角的坐标,计算出地图每个像素点所对应的坐标。最后根据读取的gps信息,找到对应的地图,并显示到lcd上。 开始 读取地图的基本信息根据当前gps信息找到对应的地图并显示 N 地图按键按下 Y 修改显示的地图 结束图3.5 map 类流程图Fig.3.5 map class Flowchart 3.6 gps_diver类gps_diver类负责驱动gps模块,gps驱动原理如下所述: GPS卫星发射两种频率的载波信号,即频率为1575.42MHz的L1载波和频率为1227.60HMz的L2载波。L1为民用频率,L2为军用。民用GPS信号调试成C/A码发送,C/A码又被称为粗捕获码,是1MHz

17、的伪随机噪声码(PRN码),其码长为1023位(周期为1ms)。用户机接受到C/A码后,通过gps接受器,解调为发送次C/A码的卫星时间。并通过多个卫星发送的C/A码时间差(至少3个),来确定当前位置。并以串口的形式把经纬度数据发送给上位机。 开始 设置串口属性,访问gps模块设置gps时钟 驱动gps模块计算经纬度坐标值结束图3.6 gps_driver类流程图Fig.3.6 gps_driver class Flowchart 3.7 staSNR类StaSnR类负责对检测卫星数量,并告知gps_driver类。 开始 检测卫星数量 N 卫星数量3?Y 结束图3.7 strSNR类流程图F

18、ig.3.7 strSNR class Flowchart 3.8 debugPDF类debugPDF类负责提供调试信息,错误编号等内容。调试程序时,配合linux中gdb命令。能实现断点调试、逐步调试等功能并显示对应的错误信息。定义如下:#include #include #ifndef DEBUG_PDF_H#define DEBUG_PDF_H/=debug level for info trace bug #define debug 1#define POP3DEBUG 1#ifdef POP3DEBUG #define PDF(level, fmt, args.) if (debug

19、 = level) printf(%s:%d fmt, _PRETTY_FUNCTION_, _LINE_ , # args)#else#define PDF(level, fmt, args.) do while(0)#endif0:没有任何的显示!1:正常工作的,能显示工作运行主流程error exit fatal show it2:更进一显示信息3:完全跟踪!3.9 Makefile文件Makefile文件为整个工程的管理文件 ,作用是连接各个头文件、c文件,最终编译成可执行文件。由于使用qt开发环境,程序可以在x86平台上与arm平台上分别运行。只需要修改Makefile文件中的编译期

20、即可。3.10 地图文件(mapinfo.txt 文件)地图文件由一大张西安市区地图分割成许多小地图。Map.cfg文件里包含了整张地图信息。分别代表整个地图的左上角经纬度、右下角经纬度、地图像素的长度、地图像素的宽度、每张地图的像素宽度。软件通过读取map.cfg的内容,来获取地图的基本信息。地图软件获取方法:采用专业地图下载软件 UMD(universal maps download),用户只需在此软件里输入想要地图的四角经纬度坐标。即可得到所需地图。保证mapinfo.txtL里的地图坐标与实际坐标一致。4 测试4.1 操作系统烧写测试安装操作系统测试的目的是搭建系统的软件环境,便于后续

21、工作安装linux有如下步骤1. 格式化nand flash2. 安装bootloader3. 安装内核文件4. 安装文件系统如下图所示图4.1.1 烧写操作系统-vivi界面Fig.4.1.1 Flow chart of program of cooling automatically安装好操作系统后,重启系统,将出现如下画面。 图 4.1.2 操作系统启动画面Figure 4.1.2 operating system to start screen系统烧写成功4.2 卫星接收测试卫星接收测试的目的是检测接收到卫星的数量,以便在接收到相同卫星的情况下,检测gps信号。测试位置:四川省成都市。

22、第一次测试:位置室内 卫星数量 0 如下图: 图 4.2.1 第一次卫星接收测试Figure 4.2.1 The first test satellite reception第二次测试:位置室外空旷地带 卫星数量 7 如下图: 图 4.2.2 第二次卫星接收测试Figure 4.2.2 The second test satellite reception第三次测试:位置街道 卫星数量 6 如下图:图 4.2.3 第三次卫星接收测试Figure 4.2.2 The third test satellite reception经测试,在室内不能接收到卫星的gps信号。故此系统只能在户外使用。4.

23、3 地图显示测试地图显示测试的目的是测试载入地图的正误、验证地图上下左右移动的功能。第一次测试: 能实现上下左右移动,显示地图如下图: 图 4.3.1第一次地图显示测试 Figure 4.3.1 The first map shows test第二次测试:能实现上下左右移动,显示地图如下图: 图 4.3.2 第二次地图显示测试 Figure 4.3.2 The second map shows test第三次测试:能实现上下左右移动,显示地图如下图: 图 4.3.3 第三次地图显示测试 Figure 4.3.3 The third map shows test经测试地图能准确的载入,并能实现上

24、下左右移动的功能4.4 gps信号检测测试 Gps信号测试的目的是测试gps信号的精确度,测试数据列于表3中。表3 gps数据测量表测试次数(次)第一次第二次第三次显示经纬度东经:30.797415北纬:106.080517东经:30.813544北纬: 106.09684 东经:30.804534北纬:106.08542 实际经纬度东经:30.797367北纬:106.080235 东经:30.797415北纬:106.09851 东经:30.797415北纬:106.08846误差计算 0.013 0.012 0.0011%从上表可以看出,gps数据精确度较高,误差都在0.01%左右4.5

25、 功耗测试测试环境:户外系统使用硬件:gps模块、sd卡、液晶屏测试次数(次)第一次第二次第三次电流 300毫安 350 毫安 320毫安电压 3.32V 3.31V 2.95V功耗 0.99W 1.15W 0.94W从上表可看出,系统功耗在1w左右。能满足设计技术指标。4.6 其他测试1)地图路径变更测试 。 功能实现,测试通过2)gps串口波特率设置。 功能实现,测试通过 4.7 测试结果分析由以上的测试数据可以看出:本GPS导航系统能很好地实现题目要求的各项功能。测试期间运行稳定,基本达到了设计要求。5 总结本系统成功的模拟了个人手持gps导航系统。用户通过点击触摸屏幕、方便的使用软件。

26、实现了地图的显示、拖动;gps信息、卫星数量的显示;地图路径的更改;gps波特率的更改的功能。系统低功耗、高处理速度、操作简易、界面有好。已具有一定的实用价值。通过这次毕业设计,我在更加牢固、灵活地掌握了所学的专业知识的同时。大量学习了嵌入式方面的相关知识:arm体系结构、操作系统、c+编程、shell编程、硬件驱动程序。参考文献:1 杜春雷 ARM体系结构与编程 清华大学出版社 2003-08-12 2 c+语言程序设计(第三版) 郑莉 董渊 张瑞丰 编著 清华大学出版社 2001-10-113 嵌入式系统开发 齐宇 徐俊 编著 人民邮电出版社 2005-06-054 美Douglas Bo

27、ling 嵌入式linux编程 北京科彦科技发展公司 译 北京大学出版社 2003-03-125 张洪斌 QT编程指南 电子科技大学出版社 2006-06-126 李先力 文苍茂 GPS原理及应用清华大小而出版社 2004-08-278 李新峰 何广生 赵秀文 基于ARM9的嵌入式Linux开发技术 电子工业出版社2003-03-189Thomas L.Floyd.Electronic Devices M. Prentice-Hall Inc, New jersey 1999-05-19致谢至此,我的毕业设计已经基本完成。回想过去的点点滴滴,如果没有学校、学院、老师、同学的关心和帮助,我也无法

28、按期完成这令我满意的作品。在此,我首先感谢学校和学院为我提供优越的实验场所和器材,使我能够更加方便、顺利地进行作品设计与调试,减少了设计周期;其次,我要感谢指导老师周永宏老师在百忙之中抽出时间同我一起探讨系统构架和软件的编写,并不厌其烦地替我修改论文,给我了莫大的帮助,并使我学到了很多东西。周老师严谨负责的治学态度,给我留下了深刻的印象,将使我终身受益。我再次对周老师这一年多来对我的关心和帮助表示最诚挚的谢意;最后,向在整个设计过程中关心和帮助过我的其他老师和同学致谢。附录:附录1:测试仪器表7 测试仪器设备清单序号型号、名称用途数量1PC机编译程序12UT33D 数字万用表测量各电路工作情况

29、13Gps导航仪测试显示的gps正误14vm虚拟机测试操作系统15成都、南充市区地图测试显示地图正误26精密电流、电压表测试系统功耗2附录2:部分参考源程序Maintab 类程序:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /=#include M

30、ainWidget.h#include zhMap.h#include gps_driver.h#include maintab.h#include GPS.hMainTab:MainTab(QWidget *parent,const char * name):QTabWidget(parent,name)GpMainLayout=new MainLayout;GpGPS=new GPS;GpConfig=new Config;GpConfig-GetObject(GpMainLayout);GpConfig-GetObject(GpGPS);GpConfig-setCOMBDRate();G

31、pConfig-setMapPath();addTab(GpMainLayout,QString(MAP);addTab(GpGPS,QString(GPS INFO);addTab(GpConfig,QString(CONFIG);timerid=startTimer(1000);void MainTab:timerEvent(QTimerEvent * event)GPS_DATA mGPSData;int i;PDF(3,TABMaster timer alarm!n);/=设置好卫星信号强度数据!GpGPS-mpSatSNR-SetData(GpMainLayout-pzhDrawRe

32、ct-pGpsdriver-mGPSStaSNR);/=GpMainLayout-pzhDrawRect-pGpsdriver-GetData(mGPSData);GpGPS-mpGPSinfo-SetData(mGPSData);/=PDF(3,TABMaster timer endn);int main(int argc, char* argv) QApplication app(argc,argv);MainTab t;app.setMainWidget(&t);t.show();return app.exec();Gps_driver 类程序:#include #include gps

33、_driver.h#include #include #include #include /*NMEA 0183 的 Checksum 只能作8位异或包括,的运算,但不包括$ 及 * 定义符号的运算。 最后的两位是检验码的hex(16进制)转成ASCII 两个符号 (0-9, A-F)。*/char nmea_checksum(char *sentence)/* is the checksum on the specified sentence good? */unsigned char sum = 0;char c, *p = sentence,csum2; c = *p; while (c

34、 != *) sum = c;p+;c=*p; /= csum0=sum&0x0f; if(csum0=10) csum0+=A; else csum0+=0;/= csum1=(sum&0xf0)4; if(csum1=10) csum1+=A; else csum1+=0;c= (csum1=toupper(p1) & csum0=toupper(p2) );return c;/ 0 is error int zh_gpsDriver:fifoctl(FifoType * priv ,int data ,const unsigned char flag)int temp = -1;unsigned int widx = 0; widx = priv-w_idx; /* Save the old index before proceeding */ if (flag = WR) /write data /* Save it to buffer */ if (priv-w_idx + 1) % BUFSIZE) = priv-r_idx) /* Adjust read index since buffer is full */ /* 无法写入来处理fifo满。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号