1、基于 ARM 嵌入式 GPS 导航系统软硬件设计 一、硬件实现 本嵌入式 GPS 导航系统的硬件核心是三星公司 arm9 系列中的 16/32 位 RISC处理器 S3C2410A 芯片,该芯片强大的实时处理能力和丰富的外围接口非常适合嵌入式系统的开发,本系统正是基于该芯片的这些特点而设计的。系统框图如图1 所示。 该系统以 S3C2410A 微处理器为核心,与 2 片 32M 的 SDRAM(HY57V561620CT)和一片 64M 的 NAND Flash(K9F1208U0B)组成了最小系统。外部添加了用于接收GPS 信号的 GPS 模块 ,用于显示的液晶面板以及一片 UDA1341T
2、S 的声音芯片。此外,为了调试的方便,我们还增加了一片 CS8900A 的 10M 网卡芯片。 图系统框图 二、 系统平台的建立 系统平台的建立主要包括两部分,即宿主机( PC 机)上操作系统的选择和交叉编译器工具链的建立。 PC 机上的操作系统可以有多种选择:安装 Linux 发行版、在 Windows 下使用虚拟机或者使用 Cygwin。由于现今 Microsoft Windows 统领着全球超过半数的 PC 机(在中国 Windows 占据近 90%的份额),许多开发者开始使用虚拟机等手段来实现在 Windows 平台下进行嵌入式 Linux 的开发,但这些方法都会或多或少地带来些兼容性
3、问题。开发嵌入式 Linux 最好的选择便是在 PC 机上安装 Linux发行版,因为这样与 Windows 毫无关联,可占有系统全部资源,拥有系统最高性能和最佳的兼容性。 在建立交叉编译器工具链方面必须注意一点的便是 C 运行 库的选择。现在可供选择的 C 运行库有 glibc, uClibc 以及 newlib 等。 glibc 是由 GNU 项目提供的标准 C 运行库,它针对 PC 应用设计,较庞大,但能提供最优的兼容性。如果一般的嵌入式开发可选用 uClibc。 uClibc 原本是 uCLinux 开发过程中的一个 C语言库,现已经独立于 uCLinux 项目并且进一步完善。它对 g
4、libc 的大部分函数进行了重写,并且目标就定位于嵌入式,所以其相对 glibc 而言要小巧很多。此外由于它的函数与 glibc 保持一致,这样很多原本基于 glibc 开发的软件基本无需改动便可改用 uClibc 编译运行,使得在嵌入式系统上占用的内存和磁盘空间更少。但由于毕竟不是标准的 C 运行库,因此 uClibc 拥有着一定的兼容性问题。 本系统选用了 Fedora Core 5 作为宿主机( PC 机)的操作系统以及分别使用 buildroot 和 crosstool 建立两条采用不同的 C 运行库的交叉编译器工具链。由于我们系统开发需要使用 U-Boot 的 TFTP 功能下载 L
5、inux 内核以及 Linux 的NFS 网络文件系统,所以首先需要对 Fedora Core 5 设置 TFTP 以及 NFS,而后需要设置一个串口通信软件与开发板互动 ,本系统选择了 Kermit。 使用两条采用不同 C 运行库的交叉编译器工具链的主要原因在于,我们的导航应用程序使用 uClibc 有兼容性问题,所以不得不采用 glibc。而为了减少占用资源,我们 U-Boot、 Linux 内核和 Busybox 仍然采用的是 uClibc。 本课题主要环境设置如下: 课题主目录 /Project 编译器目录 arm-linux-uclibc- /Project/toolchina/uc
6、libc/buildroot/build_arm_nofpu/ staging_dir arm-unknown-linux-gnu- /Project/toolchain/glibc/tools/gcc-4.1.0-glibc-2.3.2/ arm-unknown-linux-gun NFS 目录 /Project/nfs TFTP 目录 /tftpboot PC 机的 IP 地址 192.168.0.110 开发板的 IP 地址 192.168.0.3 三、应用软件的开发 在系统平台建立之后, Linux 操作系统提供了底层的操作,包括文件系统的管理、内存分配以及基本 flash 的烧录读取
7、,但并没有提供友好的显示界面。同时也为了实现地理数据的显示和导航,就需要在操作系统上放入图形用户界面支持系统和地理信息开发平台。为此我们分别选择了 MiniGUI 和 mGIS。 图 3 是应用软件的流程图 整个软件系统依靠响应不同窗口或者控件发出的事件,来实现各种功能。通过主窗口建立后注册 mGIS 控件,可以较为方便的实现一些常用的地图操作。主窗口建立后,将会创建许多用于子 窗口, 包括用于显示经纬度信息,时间。速度的静态框,用于实现快速便捷操作的工具栏,用于实现 GPS 功能关闭和地图数据加载的菜单栏。 图 4 GPS 接收模块流程图 四、总结 嵌入式移动地图导航系统经过最初设计、实现及应用检验,已经具备基本的功能,可初步满足个人移动导航信息系统的需求。能完成数字地图的加载、缩 放、拖动、搜索、简易导航、测距、 GPS 功能开闭等功能。同时我们也摸索出了一整套较为可行的矢量地图的制作方法 ,能依据使用的场合不同,较快速的完成地图数据源的制作及相关信息的添加,有一定的扩展能力。 图 5 硬件平台