网络出版时间:2014-01-28 11:52
网络出版地址:wwwki/kcms/detail/61.1450.TP.20140128.1152.046.html
嵌入式Linux系统的设计与实现
霍玲玲,王世君,徐晓卉,镇维,马祥杰
(空军工程大学,北京,100097)
摘要近几年计算机硬件技术及网络水平的不断发展和提高,嵌入式系统在军事、政治、经济、生活等各个方面都得到了普遍地应用。Linux操作系统具有代码公开、内核优化、
占用资源少等多方面无与伦比的优点。因此,本文提出了一种嵌入式Linux系统设计及具体
实现方法,其中包括硬件结构,软件设计主要分析了嵌入式操作系统的选择和驱动程序的实
现。该系统采用微处理芯片来控制实现系统功能,并最终提出了一种使用软硬件技术开发的
嵌入式Linux系统的方法。嵌入式Linux系统对于提高工作效率,改善人民生活水平,促进
社会信息化发展有着现实的意义。
关键词嵌入式系统;Linux;驱动程序;微处理器
Design and Implementation of Embedded Linux System
Huo Lingling,Wang Shijun,Xu Xiaohui,Zhen Wei,Ma Xiangjie
(Air Force Engineeering University,BeiJing,10097)
Abstract:The continuous development and improvement in recent years,the computer hardware
technology and network level,embedded system in the military,political,economic,life have
been used.Linux operating system has the advantages of open code,the kernel optimization,less
resource and other aspects of incomparable.Therefore,this paper presents a design of embedded
Linux system and implementation,including hardware structure,software design mainly analyzes
the embedded operating system selection and implementation of driving program.The system
uses a microprocessor chip to control the realization of the system function,and finally put
forward a method of using hardware and software technology development of embedded Linux
system.Embedded Linux system to increase work efficiency,improve the people's living
standards,there is practical significance to promote the development of the information society.
Key words:embedded sysem;Linux;driver;microprocessor
中图分类号:TP334文献标识码:A
引言
嵌入式系统是一种特殊计算机系统,它是一个控制程序存储在ROM中的嵌入式处理器控制板,可以用来控制、监视或辅助设备和机器运行的设备。嵌入式系统在计算机以及硬件
基础上,以应用为目的,并对功能、性价比、大小和功耗等有严格要求的专用计算机系统[1]。
Linux操作系统最初应用于个人PC机,到如今越来越多的网站也采用Linux,它具有支持多种
语言、资源免费、性优价廉、功能强大等优点,成为与Windows、安卓等操作系统齐名的操
作系统。同时,随着后PC时代的来临,信息家电的兴起作为信息家电的核心技术,嵌入式
系统获得了广阔的应用空间和发展前景[2]。嵌入式Linux系统的研究及应用占据了很大的市
场份额,Red Hat、IBM、Intel、Motoro1a等著名企业一直从事嵌入式Linux的开发和应用。
本文从应用出发,着重对一个嵌入式Linux系统进行研究、设计及实现。
1总体设计
嵌入式Linux系统与传统意义上的计算机系统不同,其自身具有特殊结构,主要包含3个部分:硬件设备的设计、嵌入式操作系统的选择以及驱动程序的设计。
硬件设备包括底层硬件电路、系统初始引导固件、操作系统/控制程序固件、内部功能固件和LCD 模块。嵌入式微处理器是嵌入式系统的中央部分,即整个硬件的指挥中心,它的职能是管理和调度整个系统。其它外围设备负责完成嵌入式系统的存储、通信、调试和显示等辅助功能。嵌入式操作系统的选择在整个系统的研究与开发过程中起着至关重要的作用,它除了负责管理复杂的系统资源以外,还提供对用户的向上接口和与硬件设备交互的向下接口。驱动程序就是桥梁纽带,负责提供连接到计算机硬件的软件接口,它是操作系统的一个信任部分,是实现计算机与外部设备间正常通信的重要保障。嵌入式Linux 系统的结构如图1所示。图1
系统结构下面详细讨论构建嵌入式Linux 系统的方法。
2
硬件电路2.1系统方案嵌入式Linux 系统的硬件开发要求设计者对硬件资源非常熟悉,并能针对项目中的具体应用,综合考虑系统需求、性能指标、成本等多方面因素,进行总体规划,从而得出已有条件下的最佳方案。文中嵌入式系统的设计具体涉及到微处理器的选型、内存、Flash 和外围接口的确定等内容[3]。硬件结构如图2所示。
图2
嵌入式Linux 系统硬件结构图
2.2芯片选择嵌入式Linux 系统中微处理器、通信模块以及存储模块是较关键的部分,在此将详细介绍芯片选择的情况。
(1)嵌入式微处理器的选择
嵌入式微处理器是嵌入式系统的中央部分,即整个硬件的指挥中心,它的职能是管理和调度整个系统。其性能的优劣将与系统的工作状态直接挂钩[4]。市场上的嵌入式微处理器的主流产品有X86、PowerPC 、ARM 、MIPS 等体系结构,它们体积一般都较小,且能耗低,
非易失存储器
(FLASH )
随机存储器存储
器通
块微处理器
LCD液晶屏
底层硬件电路系统初始引导固件操作系统/控制程序
固件标准应用编程接口用户应用编程接口设备驱动程序内部功能固件应用系统
硬件部分软件部分
L
C
D
而且都采用了精简指令集计算机架构。值得一提的是其中的ARM 处理器,它有很多特点,具体如耗电少、功能强、占地小、性价比高、运算速度快、品种多、支持16位双指令集,能很好的兼容8位/16位器件,赢得了众多客户的青睐,得到了广泛的应用。本系统结合性价比、资料可查性以及开发经验等因素,选择了ARM9系列的S3C2440A 芯片。它是韩国的三星公司推出的16/32位RISC 处理器[5],为嵌入式便携设备及其它应用提出了一种功耗低、性价比高的微控制器解决途径。
(2)通信模块
嵌入式设备具有与其它装置或人进行通信的能力。通信连接一般包括USB 、IEEEl394、Ethemet /Fast Ethemet 、PCI04总线、PCI 总线、PCI 卡、传统I /O 等一些工业控制总线和嵌入式外部设备。综合考虑其功能、应用和技术可行性等方面,本系统最终采用了USB 、PCI 总线和IEEEl394等接口。
(3)存储模块
linux系统免费下载存储模块负责存放所有重要的指令和数据,在设计中占有相当重要的地位。嵌入式系统比一般的计算机对硬件设计更加严格,要求结构紧凑,软件代码精简,因而大多采用闪存(F1ash Memory),不能使用大容量的硬盘。鉴于闪存体积小,可靠性高,掉电后不丢失数据等特点,通常将其用于存放系统的软件代码和重要的配置参数。本方案的硬件板上有32M F1ash ,2片Intel 公司16Mb 容量的芯片。另外,由于SDRAM 芯片的数据传输速度已极高,价格也较SRAM 便宜,因而选用了2片美光公司容量为16M 的SDRAM 芯片[6]。3软件设计
嵌入式系统的软件设计步骤比较复杂。在具体实施的过程中常常失败,为了保证较高的成功率,常常采用如下图3所示的方法:
a.在计算机上进行代码编写,调试通过后,生成C 源程序;
b.交叉编译,生成目标文件;
c.在交叉函数库的基础上进行交叉链接,生成系统镜像文件
d.下载烧写到目标板,进行调试即可。
图3
嵌入式系统软件开发流程由于篇幅的限制,软件设计在此仅主要介绍嵌入式操作系统的选择和驱动程序的实现两部分。
3.1嵌入式Linux 操作系统的选择
嵌入式Linux 是在Linux 基础上发展起来的,它利用Linux 其自身的许多特点,并将其应用到嵌入式系统里,因此嵌入式Linux 既有无限开放源代码的资源,又具有嵌入式操作系统的特点。其最为显著的特点是性价比高、占地小,甚至能够固化在只有几Kb\Mb 字节的存储
代码编写交叉编译交叉链接调试C 源程序
OBJ 文件
系统镜像文件
目标板
交叉函数库
芯片或者单片机中,特别适合于具有特殊要求的嵌入式系统[8]。
如今市场上的嵌入式系统中,选择嵌入式Linux作为操作系统的项目占了近一半。近一步分析,目前主流有两种嵌入式Linux操作系统:分别是小型化和实时扩展性的嵌入式Linux 系统。两类的具体版本主要有uClinux、EfLinux、TinyLinux、ThinLinux、PeeweeLinux等;和RTLinux、MontaVista Linux。作为领先的操作系统,嵌入式Linux操作系统可以运行在手机、电视、平板电脑、电子游戏机、路由器等多种家电以及航天航空领域中。根据已选定的CPU型号,本系统最终选择了arm—linux—gcc,即一种能够将通用计算机系统的Linux操作系统环境下开发的源代码,编译成可以在ARM体系结构中运行的二进制代码的一种交叉编译。具体包括u—boot的移植与修改、Linux内核的配置和编译和根文件系统的定制。
3.2驱动程序
驱动程序负责完成对外设的访问,按系统内核的功能,Linux系统包括3类输入\输出设备,分别是字符设备、块设备和网络设备。字符设备支持面向字符的采用顺序存取数据,并可以直接读写的设备。块
设备仅支持面向块I/O操作,需要通过内核地址空间中的I/O缓冲区进行,并采取随机存取。它和字符设备的共性是都可以由/dev目录下面的文件系统结点来访问。应用程序就可以读写块设备时一次传输很多字节。块设备与字符设备的不同就是内核层在管理数据上稍有区别[9]。网络设备可以通过BSD套接口访问数据。
作为内核与硬件之间桥梁的设备驱动,本系统采用FrameBuffer即帧缓冲技术。即内核层的/linux/drivers/video目录下的fbmem.c文件,提供了framebuffer设备驱动的通用文件操作接口,最大的优势在于应用程序不用关心硬件的细节[10]。帧缓冲驱动程序的数据结构包括fb_info、fb_fix_screeninfo、fb_var_screeninfo和fb_ops。值得一提的是,fb_info结构是Linux为帧缓冲设备定义的驱动层接口,用于用户在内核空间的调用,含底层函数和记录了设备状态的数据,每个帧缓冲设备都有一个fb_info结构相对应。结构fb_info中包含许多信息,例如帧缓冲设备的一些不能修改信息,视频硬件的一些可视分辨率、透明度、像素数量及大小的可变特行性,甚至包括开发帧缓冲驱动程序的核心结构,即负责底层硬件的具体操作工作的底层操作指针信息。使用framebuffer的基本步骤是:a.打开/dev/fb0设备;b.用ioctl 操作取得当前显示屏幕的参数;c.将屏幕缓冲区映射到用户空间;d.映射后直接读写屏幕缓冲区,进行绘图和图片显示。
4嵌入式Linux系统的开发调试工具
像其它工作一样,好的工具使得工作事半功倍;开发嵌入式系统的工具包也很关键,而且在开发的不同阶段一般使用不同的工具。
内部电路仿真器被首先应用于开发嵌入式系统。它的造价比较高,一般位于总线和微处理器之间的线路,可以为开发者调控和测试微处理器提供输入及输出信号,即可以全面准确的反应出总线的运行状态,但由于其自身的缺陷可能会使系统不很稳定。因此,当今的嵌入式系统利用微处理的初始代码就可以高速有效的得到芯片工作状态,即可以脱离了内部电路仿真器,从而节约了成本。当芯片接口调通之后,就可以支持各种专业开发工具[11]。本设计采用GNU的C编译器,结合sdb源调试器共同开发,它们几乎包括了嵌入式Linux系统开发所需的所有工具。具体步骤如下:
a.首先向芯片写入或植入原始引导码;
b.对芯片串口打印字符串编码;
c.主要将gdb目标代码植入芯片工作串口,并与另一台运行gdb程序的Linux主机系统相连,通过串口与测试机的gdb目标码对话之后,便是C源代码调试,也可以用这个功能将更多的代码载入RAM或Flash Memory中;
d.利用gdb让硬件和软件初始化代码启动Linux内核开始工作;
e.串口控制Linux,可以工作。
另外,目标硬件上如果运行了完整的Linux内核,利用其他的gab或gdb的图形开发工具如xgdb,可以调试相关的应用进程[12]。
5结束语
本文结合实际工程应用,提出了嵌入式Linux系统的设计方案,给出了硬件结构、Linux 操作系统以及驱动程序的实现方法。并为用户构造不同功能的Linux系统和规范其他嵌入式系统硬件设备的结构提供了便利。
[1]王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社,2013.
[2]王亚军.刘金刚.Linux运用于嵌入式系统的技术分析[J].计算机应用研究,2005,5:102-104
[3]王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版社,2001.
[4]方春春等.嵌入式系统——后PC机时代[J].航空计算技术,2004,34(1):126-129
[5]S3C2440ADatasheet,韩国Samsung公司芯片资料.2008
[6]李美菊.嵌入式LINUX系统硬件[J].技术在线,2009,09.091:90-91
[7]Lee C T,Lin J M,Hong Z W.An Application-Oriented Linux Kernel Customization for Embedded Systems[J].Information Science and Engineering,2004,20(6):1093-1107.
[8]刘哲峰.嵌入式Linux音频设备的驱动设计与研究[D].太原理工大学,2010.
[9]王彦堂.基于ARM的嵌入式Linux系统研究与应用[D].山东大学,2007.
[10]徐士强.基于ARM9的嵌入式Linux系统的研究与应用[D].南京邮电大学,2010.
[11]17ic.嵌入式系统产品是如何使用Linux[EB/OL].www.17ic/qianrushi/ qianrushixitong/80.html,2010,03,28
[12]杨桂松,牛志刚,张浩.嵌入式Linux系统的构建方法研究[J].机电一体化,2009.02:34-37
基金支持:国家自然科学基金项目No.61003252/F020801;
作者简介:
霍玲玲(1979-),女,河北沧州,硕士,主要从事计算机应用技术研究。
王世君(1967-),男,硕士,主要研究领域为密码使用及密码安全。
徐晓卉(1980-),女,北京,学士,主要从事计算机应用技术研究。
镇维(1982-),女,湖北,硕士,主要从事计算机应用技术研究。
马祥杰(1977-),男,博士,主要研究领域为互联网超大容量分组交换与调度技术。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。