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

发布者:明理厚德最新更新时间:2012-01-14 关键字:Linux  嵌入式  车载导航系统 手机看文章 扫描二维码
随时随地手机看文章

1.前言
HMS30C7202 嵌入式微处理器是目前性价比交优秀的芯片,由于其优良的性能用于替代早期的芯片,在车辆导航方面的开发应用有着广阔的应用前景。在诸多的操作系统中,由于Windows CE 、Vxwork 等操作系统都是商业化产品,其价格高昂、源代码封闭。另外,对于上层应用开发者而言,嵌入式系统需要的是一套高度简练、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。源码开放的Linux 正好可以满足这些要求。由于嵌入式系统的应用多种多样,并且标准Linux 操作系统比较庞大,因此,需要根据实际应用对标准Linux 进行重新的移植、裁剪和配置,生成代码紧凑、代码量小的特定操作系统。
2.导航系统的硬件组成
车载导航系统的硬件平台为HMS30C7202 的SAMSUNG 公司的32 位高性能嵌入式微处理器,以HMS30C7202 为核心,包含了LCD 液晶显示模块、存储器模块(Flash、SDRAM)、GPS 模块、串行接口、USB 接口、IrDA 红外通讯接口、网络接口等外围部分,其硬件构成如图1 所示。
HMS30C7202 嵌入式微处理器采用16/32位精简指令集,具有高性价比,低功耗,高性能的特点,为掌上设备和一般类型应用提供了小型微控制器的解决方案。为了减少总的系统消耗,HMS30C7202 包括了以下部分:独立的16KB 指令缓存和16KB 数据缓存,MMU,LCD 控制器(STN/TFT),NAND Flash 启动加载器,存储管理器(片选逻辑与SDRAM 控制器), 
 

    3通道的UART ,4 通道的DMA,4 通道的脉宽调制定时器,I/O 端口,RTC 实时时钟,8通道10位的A/D 控制器及触摸屏接口,IIC 接口,IIS 接口,音频接口,USB 主机,USB 设备,SD 主机/多媒体卡接口,2 通道的SPI,摄像头接口,PLL 时钟发生器以及电源管理等。[page]

1 3. 基于Linux 的软件系统设计
2 软件功能与组成

系统的软件包括嵌入式操作系统、GUI 图形用户界面、应用程序三个部分,其中嵌入式操作系统和GUI 图形用户界面属于关键技术,它们的好坏决定了系统能否得到成功的应用。应用程序建立在嵌入式操作系统和GUI 图形用户界面之上,上电之后启动过程如图2 所示。在本软件设计中,操作系统采用使用广泛的内核源代码开放的嵌入式Linux,GUI 图形用户界面采用源代码开发的Micro windows 。

3.2 交叉编译环境的建立
在满足系统稳定、安全、可靠的基础上,嵌入式产品的体积要尽可能小,从而不能够提供足够的资源供编译过程使用,因此,必须建立一种交叉编译的环境,即在高性能的宿主机上对即将运行于目标机上的程序进行编译,生成可在目标机上可以运行的代码格式,然后下载到目标机中运行。Linux 环境下使用GNU 工具完成编译、链接等过程,包括针对目标系统的编译器gcc、针对目标系统的二进制工具binutils 、针对目标系统的标准c 库glibc 和针对目标系统的Linux 内核头文件。
在linux 的根目录下,通过命令tar Ixvf cross-2.95.3.tar.bz2 进行解压缩,执行完毕之后在/usr/local/ 目录下自动生成arm/2.95.3 目录,进入2.93.3 目录下可以看到arm-linux 、bin、include 、lib 等各种目录,说明交叉编译工具安装完毕,编译环境已经建立起来了。
3.3 引导程序的移植
受嵌入式系统资源的限制,嵌入式系统的引导程序并不像PC 机上的引导程序一样是由BIOS 和位于硬盘MBR 中的引导程序组成,整个系统的引导加载任务主要是由一个称为BootLoader 的引导程序来完成的。BootLoader 是系统复位后首先要执行的代码,主要作用是初始化硬件设备、建立内存空间的映射等,将系统的软硬件环境带到一个合适的状态,从而为操作系统和应用程序的调用建立一个良好的环境。
系统的软件设计中采用的引导程序是韩国Mizi 公司开发的BootLoader----vivi 。在嵌入式系统中,BootLoader 是高度依赖于硬件的,在嵌入式系统中建立一个通用的BootLoader 几乎是不可能,因此对于每一种特定的平台,都要移植一个BootLoader。可以说建立一个与平台配套的、易于使用的BootLoader ,是软件设计的关键一步。
针对本系统的引导程序移植的思路是找到一个与所设计的平台最相近的平台的BootLoader,然后根据所设计平台的硬件参数对BootLoader 进行修改,从而完成BootLoader 的移植。首先根据实际情况修改vivi 工程管理文件Makefile 文件中的相关参数,包括交叉编译器库和头文件路径,交叉编译开关选项设置,Linux 内核代码中的库和头文件路径等。然后根据硬件平台的参数修改相应的配置,如处理器时钟、存储器初始化、通用I/O 初始化等等。然后进行配置、编译生成可执行的代码。
3.4 内核的移植
由于嵌入式系统是针对特定应用的,而且资源有限,所以标准Linux 无法应用到嵌入式系统中,因此必须根据实际情况对Linux 进行裁剪、配置,从而产生一个适用的嵌入式Linux 操作系统。Linux 内核的移植包括获取源代码、修改设置、裁减配置和编译。
3.4.1 获取源代码
Linux 内核源代码一般都有专门的机构负责维护,我们可以从这些机构的网站上下载下来使用。修改设置
嵌入式系统的应用的针对性很强,从站点上下载下来的内核不可能包含针对所有嵌入式系统的代码,因此需要对代码进行修改设置,从而适合目标平台。一般包含下面几步。
  ① 编写与处理器相关的代码。主要包括时钟设置、中断设置、存储器分配及其他一些寄存器的设置等等,这些与HMS30C7202 处理器相关的代码放在/arch/arm/mach-s3c2440 目录下。
  ② 修改根目录下的工程管理文件Makefile ,指定所移植的硬件平台和交叉编译器的路径。
  ③ 修改/ arch/arm 目录下的工程管理文件Makefile ,指定内核运行的虚拟地址,修改该目录下的配置文件config.in,以便在执行配置命令时能够显示HMS30C7202 的相关信息。
  ④在/arch/arm/def-configs 目录下添加配置好的HMS30C7202 配置文件。在/arch/arm/boot/compressed 目录下添加处理器的初始化代码head-s3c2440.s 。
  ⑤ 修改/arch/arm/kernel 目录下的工程管理文件Makefile ,确定文件类型之间的依赖关系。

[page]

3.4.2 裁减配置及编译
修改完内核设置后,就可以对内核进行裁减配置及编译了,在配置中剪裁掉冗余的部分,使编译生成的最终的内核的映像文件代码量尽可能小。执行如下命令:
# make menuconfig
进入配置菜单,选择处理器类型和所需要的各种外设、协议的支持等等, 包含了LCD 、触摸屏、串口、声音、EXT2、FAT 和JFFS2 文件系统以及TCPIP 协议的支持.
# make dep
搜索Linux 编译输出与源代码之间的依赖关系,并生成依赖文件。
# make zImage
编译Linux 内核,生成压缩的内核映像文件zImage 。存放在/arch/arm/boot/ 目录下。
3.5 驱动程序的编写
驱动程序是操作系统内核和底层硬件之间的接口,驱动程序为应用程序屏蔽了硬件的细节,通过驱动程序,应用程序对硬件的操作可以像对普通的文件操作一样方便。驱动程序的主要作用是初始化和释放硬件设备,检测和处理硬件设备出现的问题,在应用程序、内核和底层硬件之间传输数据。
由于嵌入式系统是针对具体应用的,因此,应该根据具体的平台编写相应设备的驱动程序,以方便应用程序对底层硬件的访问。每一个系统调用都对应着file_operations 结构的每一个成员,编写驱动程序主要是编写底层设备需要的各个操作函数并填充结构file_operations ,该结构在/include/Linux/fs.h 文件中定义。
驱动程序通过设备名、主设备号和从设备号与具体的硬件相联系。驱动程序可以以动态或者静态方式加载到内核当中,在调试阶段,一般以动态的方式加载驱动程序,而在最终形成产品时,添加到内核当中,每次启动内核时自动加载。
3.6 根文件系统
一个嵌入式产品的稳定运行,除了引导程序、内核之外,还必须有一个区域用来为用户提供支持架构和用户使用的应用软件,存放数据读写的结果,这个区域就是根文件系统。嵌入式系统中通常使用的根文件系统有:Romfs 、Cramfs 、Ramfs 、JFFS2、EXT2 等,另外根文件系统既可以建立在RAMDISK 上,也可以建立在Flash 上,在RAMDISK 上建立根文件系统Cramfs 。
4.结束语
本研究具获得了以下创新:
(1)设计了以HMS30C7202 为核心的车载导航装置的硬件系统及其LCD 液晶显示模块、存储器模块(Flash、SDRAM)、GPS 模块、串行接口、USB 接口、IrDA 红外通讯接口河网络接口等外围部分。
(2)建立了软件设计的交叉编译的环境,完成了以HMS30C7202 为核心的车载导航装
置的软件设计。本研究得出以下结论:
1 (1)在车载导航系统中采用源代码完全开放的嵌入式Linux 完全可以代替WinCE 等商业操作系统,从而减低了系统的成本,增加了市场的竞争力。通过对系统的开发,笔者有以下几点感触。
2 (2)在程序中加入一些输出语句,以便在调试过程中,在超级终端上显示一些通过串口打印的调试信息,可以对程序运行情况进行观察。
3 (3)由于串口下载速度较慢,BootLoader 要尽可能支持网络,通过网络下载内核和文件系统,加快开发进度。

 

 

关键字:Linux  嵌入式  车载导航系统 引用地址:基于Linux的嵌入式车载导航系统的设计

上一篇:基于CAN总线的电车漏电检测装置的研制
下一篇:基于混合信号技术的汽车电子单芯片方案

推荐阅读最新更新时间:2024-05-02 21:51

Linux操作系统决定在所有AMD fTPM上禁用RNG
上个月,Linus Torvalds 发表了一篇文章,对 AMD fTPM 随机数生成器在更新固件/BIOS 后仍给用户带来问题表示失望。AMD Linux 工程师马里奥-利蒙切罗编写了一个补丁,今天合并后,所有 AMD fTPM 都禁用了 RNG。 马里奥在该提交中总结道: tpm: 禁用所有 AMD fTPM 的 RNG 当 CPU 已支持 RDRAND 指令时,TPM RNG 功能对于熵而言并非必要。TPM RNG 功能之前已在部分 AMD fTPM 系列上禁用,但仍有报告显示某些系统存在因 TPM RNG 功能而导致卡顿的问题。现已扩大禁用所有 AMD fTPM 的 TPM RNG 使用,无论其版本是否声称已修复。
[嵌入式]
基于Nios II的RTEMS嵌入式开发模式的搭建
1.引言 随着技术的不断发展,嵌入式技术逐渐成为计算机技术的一个重要分支。由于嵌入式产品所运用场合多种多样,不同应用场景对嵌入式实时响应、成本都有着不同的需求。嵌入式开发涉及硬件和软件设计,其中硬件开发包括板级开发;而软件开发则需要在硬件开发完成后才能开始,且与硬件有着紧密的关系。但FPGA的出现将彻底改变传统嵌入式开发模式,使得嵌入式开发工程师可以像PC端软件开发一样开发嵌入式软件,降低嵌入式开发的成本。 RTEMS (Real - Time Executivefor Multiprocessor Systems)是一个开放源代码的实时嵌入式操作系统,对各类主流的嵌入式平台都有良好的支持,同时其也有着良好的开发软件。目前无论是航
[电源管理]
基于Nios II的RTEMS<font color='red'>嵌入式</font>开发模式的搭建
基于CAN总线的分布式嵌入式远程监控
  前 言   随着计算机技术和网络技术的飞速发展,Internet网已成为信息交流的重要渠道,基于WebB/S(BroWser/Server)远程监控技术的应用也越来越广泛。将这种技术应用于工业现场控制,用户可在Internet接入的地方,实现对工业现场设备进行远程监控,是当前倍受关注和研究热点的真正意义上的工业控制远程监控系统。CAN bus是一种有效支持分布式控制和实时控制的优秀工业控制现场总线,与其它通信总线相比,具有突出的可靠性、实时性和灵活性。由CAN总线组成的分布式控制系统与Internet网络连接的嵌入式系统集成后的远程监控系统,可把工业控制现场的数据信息实时可靠地传输,实现工控现场与管理信息系统(MIS)
[医疗电子]
单片机在嵌入式系统应用中的抗干扰措施
  单片机在嵌入式系统应用中,抗干扰性能是系统可靠性的重要指标,抗干扰设计是单片机系统研制中不可忽视的一个重要内容。本文根据笔者在实际工作中的体会,就单片机在嵌入式系统应用中的抗干扰问题进行探讨,并给出了排错设计、容错设计的一些方法和措施。   随着科学技术的迅速发展,单片机在各个领域中的应用越来越广泛。在众多的应用系统中共同面临的一个问题,就是它在应用系统中的可靠性,这就要求我们在设计时应根据现场具体情况,在硬件设计、线路板设计、软件设计等方面来采取相应的抗干扰措施。    一、抗电源干扰的措施   大部分单片机嵌入式系统都采用市电电源供电,在应用系统中一个很重要的干扰就来自电源。市电的各种干扰,如雷电、大容量感性负载的起
[单片机]
ARM嵌入式编译器(五) 优化循环的4种方法
1. 循环展开 循环执行的时间取决于循环的次数,循环中每次检查是否进行循环的条件会降低循环的性能。使用循环展开可以减少检查条件的判断次数,但是展开循环就意味着增加代码量。例如:在精确的时钟周期循环中,可以使用#pragma unroll (n)来展开循环。 “pragma”(编译指示)仅在选择优化等级为-O2/-O3/-Ofast和-Omax时有效。 编译指示的相关用法: 注:虽然给出了循环展开的编译指示,但Arm官方不建议使用,这样会影响编译器的展开优化和其他循环优化。 将代码分别复制到file.c文件中,然后使用以下命令进行编译和反汇编。 armclang --target=arm-arm-none-eab
[单片机]
Wind River商用级Linux飞向太空
(2007年7月13日讯) 全球领先的设备软件优化(DSO)厂商风河系统公司(Wind River)日前宣布,Honeywell Aerospace公司将风河Linux产品用于开发美国国家航空和宇宙航行局(NASA)New Millennium Program Space Technology 8(ST8)可靠多处理器(Dependable Multiprocessor)项目。Honeywell Aerospace是NASA ST8 Dependable Multiprocessor项目的主要外包商,这是该公司首次购买采用Linux平台用于太空任务项目开发。Wind River Platform for Network Equip
[焦点新闻]
port linux 2.6.11.7 kernel to s3c2410(SMDK2410)
1 preparation my board is s3c2410 SMDK2410 a download kernel http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.7.tar.gz decompress and no patch is needed b install the gcc compiler ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2 2 modify kernel source a add your nand flash partiti
[单片机]
The Linux Foundation AI & Data基金会推出企业AI开放平台项目,英特尔携手伙伴共助AI创新发展
The Linux Foundation AI & Data基金会推出企业AI开放平台项目,英特尔携手伙伴共助AI创新发展 摘要:英特尔计划联合开发者社区,共同推动生成式AI系统发展。 北京时间2024年4月17日, The Linux Foundation AI & Data基金会公布了其最新的沙箱项目——企业AI开放平台(OPEA)。 OPEA旨在通过驱动多样且异构的生态系统的互操作性,并在检索增强生成(RAG)技术的支持下加速安全、高效的生成式AI部署。 在Intel Vision 2024大会上,英特尔公司首席执行官帕特·基辛格介绍了目前行业所面临的种种挑战,并宣布将创建一个面向全行业的企业AI开放平台。现在
[网络通信]
The <font color='red'>Linux</font> Foundation AI & Data基金会推出企业AI开放平台项目,英特尔携手伙伴共助AI创新发展
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved