基于嵌入式LINUX的车载导航系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
1 绪论 (1)
2 系统总体结构 (1)
3 GPS/GPRS 系统的组成原理及构成 (2)
3.1 GPS 定位基本原理 (2)
3.2 GPRS 网络结构及传输原理 (3)
4 系统软件的设计与实现 (4)
4.1 系统软件结构 (4)
4.2 Linux 在S3C2440 上的移植 (5)
4.3 多线程技术在Qt 中的应用 (6)
总结 (7)
致谢 (8)
参考文献 (9)
1绪论
车载电子设备在技术水平上的不断提高已经成为现代汽车发展的重要标志之一,而车载导航设备是其中重要组成部分。

它要将数据通讯系统,影音娱乐系统,定位系统,电子控制系统实时显示出来,让用户得到充分的驾驶信息,以ARM及嵌入式操作系统为技术核心,为车辆驾驶者提供安全行驶所必需的路况、地理信息的车载导航系统目前正在全世界得到越来越广泛的应用,大大提高了用户驾驶体验与车辆运行的安全性。

但目前市场上的车载导航系统多使用WinCE作为操作系统,不仅软件使用价格昂贵,而且对硬件要求较高,运行速度偏慢。

2系统总体结构
系统整体结构如图1 所示,本系统采用SAMSUNG 公司的S3C2440A 嵌入式处理器,标称工作频率:400MHz;CPU 内置STN/CSTN/TFTLCD控制器,支持1024ⅹ768 分辨率以下的各种液晶;以太网控制器;1 通道5 线制串口,2 通道3 线制串口,CAN 接口,SPI接口,RTC实时时钟等;通过RS232 外接GPS接收仪及GPRS模块; 系统外扩64NB SDRAM,用于操作系统内存空间,存放动态数据和运行程序; 系统外扩
64MBFlash空间,用于存放Linux 内核,文件系统,应用程序和用户数据[1]。

图1 系统结构
系统软件基于嵌入式Linux 操作系统,并选择Qt/Embedded 作为图形用户界面(GUI)开发环境。

Qt 是Trolltech 公司推出的跨平台的应用程序框架,Qt/Embedded 是Qt 面向嵌入式应用的版本,一次编写,随处编译。

Qt 特有的信号/槽(singal /slot)机制,加强了对象间通信的灵活性;通过裁剪去掉无关模块可以调整库文件的大小,适合嵌入式系统使用;在QT 中支持OpenGL 接口和矢量图形格式SVG. 能充分满足导航系统绘图需要。

系统从GPS实时获取车辆位置(包括经纬度与时间等)和运行信息(包括车速与方向等),在电子地图上显示相关导航信息,用户通过触摸屏操作,提供地图漫游、地图查询和道路信息管理等功能。

3 GPS/GPRS 系统的组成原理及构成
3.1 GPS 定位基本原理
GPS是英文Global PositiONingSystem的缩写。

GPS系统包括三大部分:空间部分--GPS卫星星座;地面控制部分--地面支持系统;用户设备部分--GPS信号接收机GPS 信号接收机通过捕获按一定卫星高度截止角所选择的待测卫星的信号,并跟踪这些卫星的运行,对所接收到的GPS信号进行变换、放大和处理,以便测量出GPS信号从卫星到接收机天线的传播时间,解析出GPS卫星所发送的信息报文,实时地计算出测站的三维位置、速度和时间等信息[2]。

GPS 的定位原理实质上就是测量学的空间测距定位,利用在平均20200km 高度均匀分布在6 个轨道的24 颗卫星,发射测距信号码和载波,用户通过接收机接收这些信号测量卫星至接收机之距,通过一系列方程演算,便可知地面定位坐标。

用户测得的到卫星的距离称为“伪距”,它不是用户到卫星的真正距离,其中还包括卫星时钟的偏差,用户时钟的偏差信号,传播延迟引起的测距误差等,因此在至少收到三颗卫星后,即可计算出平面坐标(经纬度)值,收到四颗则可在计算出方程值,这就是GPS 的基本定位原理。

如图2所示GPS 定位原理图。

图 2 GPS 定位原理图
程式中各个参数意义如下: x,y,z 为待测点坐标的空间直角坐标。

x i 、y i 、z i (i=1, 2, 3, 4)分别为4 颗卫星在t 时刻的空间直角坐标,可由卫星导航电文求得。

Vti (i=1, 2, 3, 4)分别为4 颗卫星的卫星钟的钟差,由卫星星历提供。

Vt0为接收机的钟差。

由以上方程即可解算出待测点的坐标x,y,z 和接收机的钟差Vt0。

3.2 GPRS 网络结构及传输原理
GPRS的英文全称为General PacketRadio Service,中文含意为通用分组无线服务。

它是利用"包交换"(Packet-Switched)的概念所发展出的一套无线传输方式。

即将需要传送的信息划分为一定长度的包(分组),每个分组信息都载有接受地址和发送地址的标识;在传送数据之前,先建立虚连接,然后依序发送。

目前中国移动GPRS网络已覆盖全国所有省、直辖市、自治区,网络遍及240多个城市。

利用分布广泛的GPRS网络,可以很容易地实现异地数据的无线传输,并且价格十分低廉。

GPRS具有以下优点:①永远在线:只要激活GPRS应用后,将永远保持在线,不存在掉线问题,类似于一种无线的专线网络。

②按流量计费:虽然保持永远在线,但不必担心费用问题,因为只有产生通信流量时才计费。

它是一种面向使用的计费,计费方式更加科学合理。

③快速登录:全新的分组服务,无需以往长时间的拨号建立连接过程。

④自如切换:话音和数据业务可以切换使用,电话上网两不误。

⑤高速传输:GPRS最高理论传输速度为171.2kbit/s,目前
使用GPRS可以支持40kbit/s左右的传输速率。

GPRS 是在原有的GSM 网络中增加了两个节点:SGSN(Serving GPRS SupportNode,服务GPRS 节点)和GGSN(Gateway GPRS SupportNode,网关GPRS 节点),SGSN 的主要作用就是记录车辆的当前位置信息,并在车辆和GGSN 之间完成移动分组数据的发送和接收,GGSN 主要是起网关作用,它可以和许多不同的数据网络连接。

GGSN 提供了GPRS 网络与Internet 的接口,而SGSN 负责联系移动终端和GGSN,应此,一个完整的GPRS 通讯过程就是车载终端发出的数据先传至BSS(Base Station System 基站系统),经由GPRS 网络传至GGSN,通过GGSN 接入Internet,在Internet 上依靠TCP 协议传给上位机,终端接收数据的流程则与此相反,GPRS 数据收发在网络层使用TCP/IP 协议。

4 系统软件的设计与实现
4.1 系统软件结构
主要由以下模块组成:用户界面显示模块、GPRS 通讯模块、GPS 定位模块、地图匹配模块、路径规划模块、电子地图模块、底层通讯模块等。

如图3所示系统软件结构总体框图[3]。

图3 系统软件结构总体框图
用户界面显示模块:用户与车载导航系统交互的平台,通过调用其它模块起到信息
交互的作用;GPRS 通讯模块:将用户驾驶信息及车况信息实时传送至远程监控端,不仅起到记录车况的作用,而且还能防盗;GPS 定位模块:实时接收卫星定位数据,包括经纬度,时间,海拔,即时速度等;地图匹配模块:根据GPS 定位获得的数据,与系统中存储的地图信息进行匹配,获得车辆周围的地理信息,为用户提供参照;路径规划模块:用户输入起始坐标和终点坐标,系统自动计算最近道路,从而起到车辆导航的作用;底层通讯模块:通过CAN 总线及232 总线,获取车辆各种信息,从而在用户显示界面上显示出来。

4.2 Linux 在S3C2440 上的移植
嵌入式Linux 管理整个导航系统的硬件设备并对所有程序进行调度,是软件系统的核心。

由于Linux 是面向PC 机的操作系统,将其用于嵌入式领域,需要进行移植,它一般包括启动加载代码(Bootloader)的移植、内核移植、驱动程序的编写、文件系统的构建等。

将U-boot 源代码在ADS 环境下进行编译,将编译成功的二进制代码烧写到开发板所带Flash 上,然后在上电启动。

Bootloader 首先完成硬件设备的初始化,然后设置Linux 内核的启动参数,最后调用Liuux 内核,直接跳转到Linux 内核的第一条指令处。

从Linux 的方式看待设备可区分为3 种基本设备类型:字符设备,块设备,或者网络设备。

车载导航系统设备驱动程序由以下三个部分组成:(1)自动配置和初始化子程序。

初始化子程序首先运行,负责检测硬件设备是否存在和能否正常运行;
(2)中断服务子程序。

由嵌入式Liuux 系统来接收硬件中断,再通过系统来调用中断服务子程序;
(3)服务于I/O 请求的子程序。

对I/O 设备进行存取。

将编写好的设备驱动编译到内核中,在系统启动时和内核一起启动。

文件系统构成了Linux 系统上所有数据的基础。

经过比较,系统设计时决定使用Cramfs文件系统,当访问文件时,Cramfs 文件系统自动的将要访问的文件解压到RAM 中,会尽可能给实际执行的应用程序保留RAM 空间,而且可以为运行时解压缩挪出额外的CPU 周期。

使用mkcramfs 命令生成cramfs 镜像文件,再将其下载到系统中去,Linux 启动时自动加载根文件系统,完成系统的启动。

4.3 多线程技术在Qt 中的应用
在具有图形用户界面的Qt 应用程序中,主线程由GUI 线程充当,它同时拥有一个或多个非GUI 线程作为工作线程来处理其它耗时操作,例如不断更新的车辆方向、速度,地图的匹配等。

这样,即使在负载很重的情况下,应用程序也可以保证图形用户界面的响应。

依赖Qt 提供的多线程技术,使得该导航系统中的多数据交互成为可能,GUI 线程在调用了exec()函数后,要么等待一个事件,要么处理一个事件,每一个线程都可以有自己的事件循环,如图4所示,起始线程通过QcoreApplication::exec()启动事件循环,其他非GUI 线程通过Qthread::exec()启动各自的事件循环[1]。

如图 4 所示Q t图形界面原理图。

图 4 Q t图形界面原理图
总结
将嵌入式Liuux 操作系统用于车载导航系统,是对传统的车辆导航系统的重大改进,成本大幅降低,同时利用Linux 系统的多线程技术,可以解决系统中多个任务并行处理的问题,保障了系统的稳定性、可靠性,提高了系统的运行速度。

显示系统采用Qt/Embeded 软件进行用户显示界面设计,一次编写,随处编译,方便移植到各种不同的平台,只需重新编译即可,使用开源版节约大量软件授权费用,这些都是传统WinCE 程序所不能比拟的。

致谢
我衷心地感谢所有在我做课程设计期间帮助过我的人。

在本次设计中通过老师的细心指导,使我遇到的许多困难都得到了解决,使我在业务水平上、知识层次上均得到了提高。

在做课程设计的过程中,感觉到学习和实际操作的还是完全不同的,在实际操作的过程中会遇到很多很多意想不到的问题。

在这里不仅是对自己知识的衡量,更是对自己意志的锻炼。

在这短时间里,使我的知识从理论升华到实践,并且提高了独立分析问题、解决问题的能力,还学到了许多新的知识,了解到做一件事情,并不像想象中的那么简单,往往需要将各个方面都要考虑周全,才能达到预期的效果。

相信这次设计的经历一定会为我在将来不久踏上工作岗位打下良好的实践基础。

课程设计能按时完成,在这里要衷心感谢我的指导老师,在整个做课程阶段,指导老师给予我很多的关心和指导。

第9 页参考文献
[1] 陶欣编. 计算机组成与设计. 浙江大学出版社 1992.11
[2] 唐靖飚,周良源.UNIX平台下C语言高级编程指南.北京希望出版社.1999
[3] 唐朔飞.计算机组成原理.高等教育出版社.1999.10
[4] 计算机硬件指南编写组. 计算机硬件实践指南. 东南大学出版社 1994
[4] (美)托伊,(美)齐著. 计算机硬件/软件系统结构. 上海科学技术文献出版社 1990.9
[5] (美)GOTOP著. 内存管理. 电子工业出版社 1995.6
[6] (美)Gary Saxer,Ellen Sander著. 内存管理深入剖析.华中科技大学出版社 2003。

相关文档
最新文档