论文部分内容阅读
在目前嵌入式领域中,Linux凭借其基于GPL的开放源代码授权模式、易于定制、易于裁剪和移植的特性,迅速应用和普及到各种不同的嵌入式平台和应用环境。本文主要研究了基于ARM架构的S3C2410和嵌入式Linux的嵌入式智能终端系统的软件实现,重点从底层的引导加载Bootloader、Linux内核、文件系统、设备驱动程序设计和上层的应用程序设计等方面阐述了嵌入式智能终端系统的设计过程。
在进行嵌入式系统开发前,建立交叉开发编译环境是必不可少的,交叉编译是指在某个主机平台上(如PC)用交叉编译器编译出能在其它平台上(如ARM)运行的代码的过程。
引导装载程序是系统复位后执行的第一段代码,主要负责硬件的初始化、嵌入式系统的引导加载以及程序的固化等底层工作,其在嵌入式系统的程序模块化设计以及固化程序升级上有着极其重要的作用。本文详细介绍了当前嵌入式开发中功能比较强大、稳定的引导加载程序U-Boot的特点和优势,以及其在基于S3C2410A平台上的移植过程。
在内核移植的过程中,由于标准Linux内核对于资源受限的嵌入式系统来说过于庞大,因此移植前就需要将Linux内核根据目标平台的硬件资源进行裁剪、配置,进而编译生成内核映像文件。在配置时,与内核紧密且经常使用的部分功能代码直接编译到内核中,主要是处理器类型、板型、设备驱动和文件系统的配置。文件系统包括根文件系统和建立于Flash固态存储设备上的文件系统。本文通过配置、编译、安装BusyBox,以及生成根文件系统映像文件,介绍了Busybox制作根文件系统的一般方法。通常嵌入式文件系统一般构建在Nand Flash等固态存储器上,需要选择专门的文件系统。本文简单介绍了目前比较常用的文件系统Cramfs、Jffs2、Yaffs等,描述了各文件系统的特点,比较它们各自的优劣及具体的应用场合,同时介绍了Yafss文件系统移植的过程。
在嵌入式Linux中,由于内核的保护机制,用户一般不能直接访问硬件,而是要通过调用驱动程序来实现对硬件的控制。设备驱动程序是Linux内核的重要组成部分,不同版本的内核,其主要区别也是体现在设备驱动程序的不同。本文介绍了嵌入式Linux驱动程序的类型、结构和功能,为了满足智能终端系统的需要,根据LCD硬件的特点移植基于FrameBuffer的LCD驱动程序,并实现在LCD上的画点函数;设计点阵键盘的驱动程序,并在驱动模块中解决键盘抖动、组合键及重复按键的问题;根据CS8900A硬件的特点设计网络驱动程序,实现终端系统的网络功能。
在完成了底层的软件工作后,为了实现智能终端设备在AIS辅助基站中的应用,本文移植了Linux下的Qt/Embedded工具,并在此基础上完成了电子海图的移植和具有良好用户界面的应用程序设计。在AIS辅助基站系统中,终端设备从通信模块接收航行数据,并对数据进行处理和将结果显示在电子海图上,同时利用键盘完成系统信息输入,完成基站的控制功能。本终端设备相对于普通单片机系统具有良好的用户界面,利用嵌入式操作系统,降低了编程难度和便于系统升级;相对于PC机系统投资小,运行成本低,可靠性高,具有良好的应用前景。