新闻中心

EEPW首页>嵌入式系统>设计应用> 基于嵌入式LINUX的车载导航系统设计

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

作者: 时间:2013-03-18 来源:网络 收藏

(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 启动时自动加载根文件系统,完成系统的启动。

(3)多线程技术在Qt 中的应用

在具有图形用户界面的 Qt 应用程序中,主线程由GUI 线程充当,它同时拥有一个或多个非GUI 线程作为工作线程来处理其它耗时操作,例如不断更新的车辆方向、速度,地图的匹配等。这样,即使在负载很重的情况下,应用程序也可以保证图形用户界面的响应。依赖 Qt 提供的多线程技术,使得该导航系统中的多数据交互成为可能,GUI 线程在调用了exec()函数后,要么等待一个事件,要么处理一个事件,每一个线程都可以有自己的事件循环,如图4所示,起始线程通过QcoreApplication::exec()启动事件循环,其他非GUI 线程通过Qthread::exec()启动各自的事件循环。

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

  图 4 Qt 线程事件模型

5 结论

本文作者的创新点:

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

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

(3)目前本系统已经装载在车上试运行,实践证明本系统能实时显示车辆当前运行状况,快速响应用户操作,为驾驶者提供良好的导航信息。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭