电子测量技术基于嵌入式S3C2440的船舶导航系统设计_第1页
电子测量技术基于嵌入式S3C2440的船舶导航系统设计_第2页
电子测量技术基于嵌入式S3C2440的船舶导航系统设计_第3页
电子测量技术基于嵌入式S3C2440的船舶导航系统设计_第4页
电子测量技术基于嵌入式S3C2440的船舶导航系统设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子测量技术论文基于嵌入式S3c2440的船舶导航系统设计摘 要:文章在以ARMS3c2440核的硬件平台上应用Linux操作 系统开发了船舶导航系统,完成了系统的硬件设计、软件设计、交叉 编译环境的建立、引导程序的移植、内核的移植、驱动程序的编写和 根文件系统的建立等,实现了系统的功能。关键词:嵌入式;S3C2440 Linux; 船舶;导航;1 .前言2 .集计算机技术、通信技术、微电子技术等多种技术为一体的嵌入 式技术进入到了一个飞速发展的阶段,嵌入式系统已被广泛应用 到了航空、消费电子、信息家电、网络通信等各个领域。ARMS3c2440AFW入式处理器是性价比较优秀的芯片,在各个领 域

2、的开发应用有着广阔的应用前景。船舶导航技术也应随着科学技术背景的改变不断地向着高性能稳定性的方面发展,潜入式技术,为其提供了优质的开发资源。嵌入式系统需要一套高度简练、易开发、多任务,价格低廉的操作系统。源码开放的Linux满足这些要求。并且标准Linux操作系统比较 庞大,因此,需要根据实际应用对标准 Linux进行重新的移植、裁剪 和配置,生成代码紧凑、代码量小的特定操作系统。2. 导航系统的硬件设计 所设计的车载导航系统的硬件平台以基于 ARM902TSAMSUNG司的32 位高性能嵌入式微处理器S3c2440妫核心,包含了 LCD夜晶显示模块、 存储器模块(Flash、SDRAM、GP

3、SgI块、串行接口、US睢口、IrDA红外通讯接口、网络接口等外围部分,其硬件构成如图 1 所示。S3c2440醺入式微处理器采用16/32位精简指令集,具有高性价比,低功耗, 高性能的特点, 为掌上设备和一般类型应用提供了小型微控制器的解决方案。为了减少总的系统消耗,S3c2440也括了以下部分:独立的16KB指令缓存和16KB数据缓存,MMULCD空制器( STN/TFT) , NANDFlash 启动加载器,存储管理器(片选逻辑与SDRAM控制器), 3通道的 UART, 4通道的DMA, 4 通道的脉宽调制定时器,I/O端口,RTCg?时时钟,8通道10位的A/D控制器及触摸屏接口,I

4、IC接口,IIS接口,音频接口,USB主机,US股备,SD主机/多媒体卡接口,2通道的SPI,摄像头接口,PLL时钟发生器以及电源管 理等。3. 船舶导航系统的软件设计3.1 软件功能与组成 船舶导航系统的软件包括嵌入式操作系统、 GUI 图形用户界面、应用程序三个部分, 其中嵌入式操作系统和 GUI 图形用户界面属于关键技 术, 它们的好坏决定了系统能否得到成功的应用。 应用程序建立在嵌入式操作系统和GUI图形用户界面之上,上电之后启动过程如图2所示。 在软件设计中, 操作系统采用使用广泛的内核源代码开放的嵌入式Linux , GUI图形用户界面采用源代码开发的Micro windows。3

5、.2 交叉编译环境的建立在满足系统稳定、安全、可靠的基础上,嵌入式产品的体积要尽可能小,从而不能够提供足够的资源供编译过程使用,因此,必须建立一种交叉编译的环境, 即在高性能的宿主机上对即将运行于目标机上的程序进行编译, 生成可在目标机上可以运行的代码格式, 然后下载到目标机中运行。Linux环境下使用GNUT具完成编译、链接等过程,包括针对目标系统的编译器 gcc 、针对目标系统的二进制工具binutils 、针对目标系统的标准c 库 glibc 和针对目标系统的Linux内核头文件。在 linux 的根目录下,通过命令tar Ixvf cross-2.95.3.tar.bz2 进行解压缩,

6、执行完毕之后在/usr/local/ 目录下自动生成arm/2.95.3目录,进入2.93.3 目录下可以看到 arm-linux 、 bin 、 include 、 lib等各种目录, 说明交叉编译工具安装完毕, 编译环境已经建立起来了。3.3 引导程序的移植受嵌入式系统资源的限制,嵌入式系统的引导程序并不像PC机上的引导程序一样是由BIOS和位于硬盘MB珅的引导程序组成,整个系 统的引导加载任务主要是由 BootLoader 的引导程序来完成的。BootLoader 是系统复位后首先要执行的代码,主要作用是初始化硬件设备、 建立内存空间的映射等, 将系统的软硬件环境带到一个合适的状态,从而

7、为操作系统和应用程序的调用建立一个良好的环境。系统的软件设计中采用的引导程序是韩国 Mizi 公司开发的BootLoadervivi 。在嵌入式系统中, BootLoader 是高度依赖于硬件的, 在嵌入式系统中建立一个通用的 BootLoader 几乎是不可能,因此对于每一种特定的平台,都要移植一个BootLoader 。针对系统的引导程序移植的思路是找到一个与所设计的平台最相近的平台的BootLoader ,然后根据所设计平台的硬件参数对BootLoader 进行修改,从而完成BootLoader 的移植。首先根据实际情况修改vivi 工程管理文件Makefile 文件中的相关参数, 包括

8、交叉编译器库和头文件路径,交叉编译开关选项设置, Linux 内核代码中的库和头文件路径等。 然后根据硬件平台的参数修改相应的配置, 如处理器时钟、存储器初始化、通用 I/O 初始化。然后进行配置、编译生成可执行的代码。3.4 内核的移植由于嵌入式系统是针对特定应用的,而且资源有限,所以标准 Linux无法应用到嵌入式系统中,因此必须根据实际情况对Linux 进行裁剪、配置,从而产生一个适用的嵌入式 Linux 操作系统。 Linux 内核的移植包括获取源代码、修改设置、裁减配置和编译。3.4.1 获取源代码Linux 内核源代码一般都有专门的机构负责维护,我们可以从这些机构的网站上下载下来使

9、用。修改设置嵌入式系统的应用的针对性很强, 从站点上下载下来的内核不可能包含针对所有嵌入式系统的代码, 因此需要对代码进行修改设置, 从而适合目标平台。一般包含下面几步。 编写与处理器相关的代码。主要包括时钟设置、中断设置、存储器分配及其他一些寄存器的设置等等,这些与S3c244况理器相关的代码放在 /arch/arm/mach-S3C2440 目录下。 修改根目录下的工程管理文件 Makefile ,指定所移植的硬件平台和交叉编译器的路径。 修改 / arch/arm 目录下的工程管理文件Makefile ,指定内核运行的虚拟地址,修改该目录下的配置文件config.in ,以便在执行配置命

10、令时能够显示S3c2440的相关信息。在/arch/arm/def-configs目录下添加配置好的 S3c24400勺配置文件。在 /arch/arm/boot/compressed 目录下添加处理器的初始化代码 head-S3C2440.s。 修改 /arch/arm/kernel 目录下的工程管理文件 Makefile , 确定文件类型之间的依赖关系。3.4.2 裁减配置及编译修改完内核设置后,就可以对内核进行裁减配置及编译了,在配置中剪裁掉冗余的部分,使编译生成的最终的内核的映像文件代码量尽可能小。执行如下命令:# make menuconfig进入配置菜单, 选择处理器类型和所需要的

11、各种外设、 协议的支持等等,包含了 LCD触摸屏、串口、声音、 EXT2 FAT和JFFS2文件系 统以及TCPIP协议的支持.# make dep搜索 Linux 编译输出与源代码之间的依赖关系,并生成依赖文件。# make zImage编译Linux内核,生成压缩的内核映像文件 zImage。存放在/arch/arm/boot/ 目录下。3.5 驱动程序的编写驱动程序是操作系统内核和底层硬件之间的接口, 驱动程序为应用程序屏蔽了硬件的细节, 通过驱动程序, 应用程序对硬件的操作可以像对普通的文件操作一样方便。 驱动程序的主要作用是初始化和释放硬件设备,检测和处理硬件设备出现的问题,在应用程

12、序、内核和底层硬件之间传输数据。由于嵌入式系统是针对具体应用的, 因此, 应该根据具体的平台编写相应设备的驱动程序, 以方便应用程序对底层硬件的访问。 每一个系统调用都对应着file_operations 结构的每一个成员, 编写驱动程序主要是编写底层设备需要的各个操作函数并填充结构file_operations ,该结构在/include/Linux/fs.h 文件中定义。驱动程序通过设备名、 主设备号和从设备号与具体的硬件相联系。 驱动程序可以以动态或者静态方式加载到内核当中, 在调试阶段, 一般以动态的方式加载驱动程序, 而在最终形成产品时, 添加到内核当中,每次启动内核时自动加载。3.

13、6 根文件系统一个嵌入式产品的稳定运行,除了引导程序、内核之外,还必须有一个区域用来为用户提供支持架构和用户使用的应用软件, 存放数据读写的结果, 这个区域就是根文件系统。 嵌入式系统中通常使用的根文件系统有:Romf& Cramfs、Ramf& JFFS2 EXT2等,另外根文件系统既可以建立在 RAMDISKt,也可以建立在 Flash上,在RAMDISKt建立根文件系统Cramfs 。4. 结束语在船舶导航系统中采用源代码完全开放的嵌入式 Linux 完全可以代替WinC净商业操作系统,从而减低了系统的成本,增加了市场的竞争力。通过对系统的开发,笔者有以下创新点:( 1)在程序中加入一些输出语句,以便在调试过程中,在超级终端上显示一些通过串口打印的调试信息,可以对程序运行情况进行观察。( 2)由于串口下载速度较慢,BootLoader 要尽可能支持网络,通过网络下载内核和文件系统,加快开发进度。参考文献:1 田 泽 . 嵌入式系统开发与应用教程M. 北京: 北京航空航天大学出版社, 2005.2 韩俊淑,曾锐利,李长安 .PID 算法在蓄电池充电控制系统中的应用J.自动化技术与应用,2005, 24 (9) : 4851.3 黄进 . 含摩擦环节伺服系统的分析及控制补偿研究D. 西安电子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论