张成法 李楠
摘 要:随着计算机技术和微电子技术的迅猛发展,嵌入式系统逐渐发展为计算机应用的一个重要领域,在生活中得到了普遍的应用。本文通过搭建嵌入式系统开发平台、对嵌入式Linux系统进行构建、移植设备驱动程序和介绍嵌入式GUI应用程序开发,讨论了基于ARM9微处理器的嵌入式Linux系统的设计与实现。该系统为嵌入式控制系统设计提供了一种可行的方案。
关键词:嵌入式系统;Linux;驱动程序;ARM9
一、引言
嵌入式系统作为一种专用的计算机系统。它以计算机技术作为基础,以应用作为中心,并且其硬件和软件都可以裁剪。它能够满足应用系统对功耗和可靠性的严格要求。嵌入式系统具有实时性高、系统内核小的特点。嵌入式Linux 是一种操作系统,它能够运行在嵌入式计算机系统上。代码开放,版权免费[2]是它与其它操作系统相比的优势,嵌入式Linux有非常广泛的应用领域,主要应用于工业控制、大屏幕功能手机、信息家电、医疗电子等领域。本文从应用出发,着重对一个嵌入式Linux系统进行研究、设计及实现。
二、嵌入式系统开发平台的搭建
硬件结构和软件系统这两部分组成了一个完整的嵌入式系统,其中嵌入式处理器和外围的接口电路是硬件结构的主要组成部件,而嵌入式操作系统和应用程序则是软件系统的主要组成部分。
嵌入式系统开发平台的搭建主要包括硬件开发平台、软件开发平台和交叉开发环境的搭建[1]。
(一) 硬件开发平台的搭建
嵌入式系统硬件平台的搭建主要是围绕目标板和主机这两方面进行的,目标板选用的是采用嵌入式处理器的开发板作为硬件开发平台,主机选用的是PC机。
通过对当前主流的嵌入式处理器综合性能的比较,又依据嵌入式软件开发要求嵌入式处理器要具有性能高、功耗低等特点,因此选取ARM处理器作为本文的嵌入式处理器。由于本文重点从应用开发方面来设计嵌入式系统,选用ARM9系列的S3C2440A处理器比较合适,因此目标板采用的是基于芯片S3C2440A的开发板作为硬件开发平台。
(二) 软件开发平台的搭建
软件开发平台的搭建主要围绕选择何种类型的嵌入式操作系统而进行。嵌入式Linux、μC/OS‐Ⅱ和VxWorks等是当前在嵌入式领域涌现出来的几种著名的操作系统。通过对这几种操作系统的比较,发现嵌入式Linux具有较多的优势:第一,它提供开发套件;第二,嵌入式Linux操作系统的内核更新速度较快,具有较高的安全可靠性,内核不仅小,而且可以裁减;第三,它的开发者可以从众多的爱好者中获得强大的技术支持,由于源代码开放,不收费,所以在价格上具有很大的竞争力。因此,本文的嵌入式操作系统最终选用了嵌入式Linux。
(三) 交叉开发环境的搭建
本系统设计采用宿主机-目标机(HOST-TARGET)的开发模式, 宿主机采用的是PC机,将Linux操作系统安装于宿主机上,目标机采用S3C2440A开发板。将相应的ARM交叉编译工具链arm-linux-gcc安装到ubuntu系统中,然后利用这个交叉编译工具对源代码进行编译,最后得到能够在目标机上运行的程序。
三、嵌入式Linux系统的构建
嵌入式Linux系统的构建主要包括下面三个部分。
(一) Bootloader的移植
考虑到U-Boot的功能比较强大,并且能够很好的支持S3C2440A芯片,同时调试程序更方便,因此本系统的Bootloader选用了U-Boot。U-Boot的移植包括处理器相关文件的修改、存储器的配置和Makefile文件的修改,当这些都完成后,最后再对U-Boot进行编译[3]。
(二) Linux2.6内核的移植
首先要得到Linux源代码,这可以从它的官方网站获得,然后修改Makefile文件,修改内核的机器码和平台的时钟频率,同时设置分区结构;当完成上述工作后,接下来要对内核进行缩剪,并对内核进行配置, 当内核被配置完成后,再执行命令对内核进行编译,内核被成功编译后,就会生成其镜像文件,然后将其下载到开发板。
(三) Linux文件系统的创建和实现
根文件系统的制作可以由busybox来完成。利用菜单配置命令就可以对BusyBox进行配置。
四、嵌入式Linux系统的设备驱动移植
本系统以LCD模块为例讲述Linux系统的设备驱动移植过程。首先要修改Linux内核源码中的文件s3c2410fb.c中的程序,可以实现设置LCD时钟频率,然后在文件mach-smdk2440.c中, 添加一些参数,这些参数在对LCD控制器进行初始化的时候会被用到,然后对内核配置单进行修改,这样就完成了LCD设备驱动程序的移植。
五、构建平台的嵌入式GUI系统
本平台的嵌入式GUI系统采用的是Qt/Embedded,采用宿主机-目标机交叉的开发模式对基于Qt/Embedded的嵌入式GUI应用程序进行开发。
首先,Qt应用程序的编写是在Qt/X11环境下,当程序编写完成后,要在宿主机上进行调试直到满足项目要求,然后对Qt应用程序再次进行编译,将得到的可执行文件运行在QVFB上,它可以模拟应用程序在实际ARM9平台上的运行效果, 最后,使用工具对应用程序再次进行编译就可以得到可执行程序,当然,所得到的可执行程序是能够运行于S3C2440A芯片上的,然后再将可执行程序下载到开发板上就可以了[4]。基于Qt/Embedded的嵌入式应用程序开发过程如下图所示。
六、结束语
文中从实际应用出发,提出了嵌入式Linux系统设计及实现方案,给出了嵌入式系统开发平台的搭建、嵌入式Linux系统的构建、硬件设备驱动程序移植和嵌入式GUI应用程序开发的实现方法。为用户设计嵌入式Linux系统提供了解决方案和便利。
参考文献:
[1] 赵扬. 基于嵌入式Linux的考勤系统研究与设计[D].吉林: 吉林大学,2015.
[2] 刘哲峰.嵌入式Linux音频设备的驱动设计与研究[D].太原: 太原理工大学, 2010.
[3] 王田苗.嵌入式系统设计与实例开发[M].北京: 清华大学出版社, 2013.
[4] S3C2440ADatasheet[M].韩国: Samsung公司, 2008.