作者简介:金 西(1970-),男,安徽合肥人,讲师,主要研究方向:微电子学、计算机应用、E DA 、远程教学; 黄 汪(1975-),男,广西北海人,高级程序员,主要研究方向:微电子学、网络交换机、RT OS.
文章编号:1001-9081(2000)07-004-03
嵌入式Linux 技术及其应用
金 西1,黄 汪2
(1.中国科技大学物理系,安徽合肥230026; 2.华恒网络技术有限公司,安徽合肥230026)
摘 要:Linux 是一种通用的且适合应用于嵌入式系统的操作系统,它既可以嵌入到一个非常小的系统中处理简单的任务,也可以组合起来处理非常复杂的任务。介绍了嵌入式Linux 在小型网络设备开发中的优势,并给出了嵌入式Linux 应用的一个具体实例。
关键词:嵌入式系统;嵌入式Linux ;实时多任务操作系统;实时Linux 中图分类号:TP316. 文献标识码:A
THE TECHNOLOG Y OF
EMBEDDED LINUX AN D ITS APPLICATION
J I N X i 1,H UANG Wang 2
(1.Department o f Physics ,Univer sity o f Science and Technology o f China ,He fei Anhui 230026,China ; 2.Huaheng Network Tech.Ltd.,He fei Anhui 230026,China )
Abstract:Linux is a versatile and cost effective operating system for embedded systems.I t can be embedded in a surprisingly small system to handle sim ple tasks and scaled up to handle m ore com plex tasks.This paper will discuss the advantages of using Embedded Linux in small netw ork devices.An exam ple system of Embedded Linux will be presented in s ome detail.
K ey w ords :embedded systems ;embedded Linux ;RT OS;RT 2Linux
1 引言
嵌入式系统(Embedded Systems )[1]被定义为:以
应用为中心,以计算机技术为基础,软件硬件可裁剪,适应对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统工业的基础是以应用为中心的“芯片”设计和面向应用的软件产品开发。
嵌入式计算机[1]在应用数量上远远超过了各种通用计算机,一台通用计算机的外部设备中就包含了5~10个嵌入式微处理器,键盘、鼠标、软驱、硬盘、显示卡、显示器、M odem 、网卡、声卡、打印机、扫描仪、数字相机、US B 集线器等均是由嵌入式处理器控制的。制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。
如果嵌入式系统能够连接到Internet 上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。将嵌入式系统与Internet 结合的主要困难在于,Internet 上面的各种通信协议对于计算机存储器、运算速度等的要求比较高,而嵌入式系统中除部分32位处理器以外,大量存在的是8位和16位MC U ,支持T CP/IP 等Internet 协议将占用大量系统资源,或根本不可能。
Linux 是自由的多任务操作系统,它需要PC 桌面系统作为运行平台。而本文所讨论的嵌入式Linux 是指经过小型化裁剪、能够烧录入容量只有几百K B 或几M B 的闪存(Flash Mem ory )内,不需要硬盘作为存储介质,也不需要键盘、鼠标之类的外设,适用于8位/16位/32位MC U ,应用于各种特定嵌入式场合的专用Linux 操作系统。
相对于Windows CE 、QNX 以及国内的H OPE N
第20卷第7期2000年7月
计算机应用C om puter Applications V ol.20,N o.7Jul.,2000
(女娲)等嵌入式操作系统,嵌入式Linux 以其特有的
开放性、与生俱来的网络特性将成为嵌入式操作系
统的主流之一。目前,嵌入式Linux 在国内尚未引起广泛注意,但在国外已处于研究与应用的初级阶段[2,3]。
2 为什么要用嵌入式Linux
2.1 与RT OS 的比较
实时多任务操作系统[1](Real 2time Multi 2tasking Operation System ,缩略为RT OS )是嵌入式应用软件
的基础和开发平台,它是一段嵌入在目标代码中的软件,用户的其它应用程序都建立在RT OS 之上。不但如此,RT OS 还是一个可靠性和可信性很高的实时内核,将CPU 时间、中断、I/O 、定时器等资源都包装起来,留给用户一个标准的API ,并根据各个任务的优先级,合理地在不同任务之间分配资源。
RT OS 是针对不同处理器优化设计的高效率实时多任务内核,优秀商品化的RT OS 可以面对不同体系结构的嵌入式处理器(诸如68K 、P owerPC 、ARM 、X 86、MIPS 、DSP 等)提供类同的API 接口,这是RT OS 基于设备的应用程序开发基础。因此基于RT OS 上的C 语言程序具有极大的可移植性。据专家测算,优秀RT OS 上跨处理器平台的程序移植只需要修改1%~5%的内容。
与RT OS 比较,Linux 版本开放、自带完整配套的
系列开发工具
[4,5]
(其开发工具可以是C/C ++、Java 、Ada 、汇编等等编译器;其调试工具是gdb 调试器,该调试器能支持源代码级调试),且支持X 2Windows 图形界面。2.2 RT 2
Linux
图1 数据和控制流程示意图
通用计算机具有完善的操作系统和应用程序接
口(API ),是计算机基本组成不可分离的一部分,应用程序的开发以及完成后的软件都在OS 平台上面运行,但一般不是实时的[2,5]。嵌入式系统则不同,应用程序可以没有操作系统直接在芯片上运行,但是为了合理地调度多任务,利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RT OS
开发平台,这样才能保证程序执行的实时性、可靠
性,并减少开发时间,保障软件质量。
在应用系统当中真正需要“硬实时”
(Hard Real T ime )系统的场合很少,一般的嵌入式系统仅需要接近于实时的系统就足够了。事实上,当今很多商用RT OS 声称是实时系统,但实际上并未达到“硬实时”[325]。
在我们进行RT OS 应用程序设计时,为了符合实时的要求,在设计硬件驱动程序的中断响应结构时必须谨慎。在很多商用RT OS 系统(如pS OS plus )中,一般建议我们把关键性的任务挂在优先级最高的处理器的中断上,这样才能保证RT OS 系统的实时性。
外挂了RT 2Linux 模块的嵌入式Linux 系统,也提供了一个中断管理器,处理所有的中断,能够保证关键性任务的实时响应。
其实,即使没有RT 2Linux 模块,嵌入式Linux 本身也具有良好的任务响应能力,诸如:在一台使用10M 以太网的低档586上使用Linux 处理10Mbps 的网络数据包,几乎不丢失任何数据包;对于处理56kbps 的M odem 通讯来说,即便是应用装有Linux 的486PC 机,也不会丢失任何应该处理的数据包。2.3 嵌入式Linux 的优点
嵌入式Linux [2]的界面可以采用X 2Windows 的G UI 方式,适用于各种需要人机交互的工控应用。嵌入式Linux 继承了Linux 的网络和通讯功能,其应用领域极其广泛。嵌入式Linux 对众多的数据库支持良好。嵌入式Linux 除了对传统的外设硬件支持良好外,对不断涌现的新型通讯接口,诸如US B 接口、蓝牙技术(一种用于手持数字设备PDA 之间的宽带传输协议)也给予强力支持。
3 嵌入式Linux 的一个设计实例
3.1 设计原理框图
嵌入式Linux 可以应用于嵌入式网络通讯设备、个人数字助理(PDA )、工业控制设备等场合。下面我们将给出一个应用实例,它可以将普通打印机转换为网络打印服务器,其实现的硬件成本仅需几百元,同时具有良好的系统功能扩充性,例如可以控制打印的权限、使用时间、打印张数,甚至能自动收E 2mail 并打印输出,其硬件平台的框图如图2所示
。
图2 嵌入式Linux 硬件平台框图
5
第7期金 西等:嵌入式Linux 技术及其应用
注意:虽然68K/P owerPC等在网络通讯领域的嵌入式工业中有广泛的应用,但我们需要对Linux 核心源代码当中涉及CPU的部分模块以及内存管理模式的模块进行修改,所以在本系统中没有采用该系列的MC U。
嵌入式Linux烧录在图2所示的Flash Mem ory 中,可以避免掉电的影响。系统加电启动后,程序将从Flash Mem ory加载到图2所示的RAM中执行。3.2 系统实现
由于Linux是开放源代码的自由软件,使我们可以根据应用系统设计的具体需要对Linux内核源代码进行修改并重新编译。系统实现步骤为:
(1)重新编译Linux内核(kernel),去掉内核中不需要的模块,诸如PC MCI A之类的外设支持模块等。编译Linux内核配置文件中的需要配置的部分源代码如下:
CONFIG—EXPERI ME NT A L=y
CONFIG—M ODU LES=y
CONFIG—M ATH—E M U LATION=y
CONFIG—ME M—ST D=y
CONFIG—M AX—ME MSIZE=1024
CONFIG—NET=y
CONFIG—PCI=y
CONFIG—BINFMT—E LF=y
CONFIG—KERNE L—E LF=y
CONFIG—M386=y
CONFIG—BLK—DE V—FD=y
CONFIG—BLK—DE V—IDE=y
CONFIG—BLK—DE V—C M D0=y
CONFIG—BLK—DE V—RZ1000=y
CONFIG—BLK—DE V—LOOP=y
CONFIG—BLK—DE V—RAM=y
CONFIG—BLK—DE V—INITRD=y
CONFIG—FIREW A LL=y
CONFIG—NET—A LIAS=y
CONFIG—INET=y
CONFIG—IP—FORW ARD=y
CONFIG—IP—M U LTICAST=y
CONFIG—SY N—COOKIES=y
CONFIG—IP—FIREW A LL=y
CONFIG—IP—FIREW A LL—VERBOSE=y
CONFIG—IP—M AS QUERADE=y
CONFIG—IP—M AS QUERADE—IPAUT OFW=y
CONFIG—IP—M AS QUERADE—IPPORTFW=y
CONFIG—IP—M AS QUERADE—PPTP=y
CONFIG—IP—M AS QUERADE
—
PPTP—M U LTIC LIE NT=y
CONFIG—IP—M AS QUERADE—IC MP=y
CONFIG—IP—TRANSPARE NT—PROXY=y
CONFIG—IP—M AS Q—LOOSE—UDP=y
CONFIG—IP—A LW AY S—DEFRAG=y
CONFIG—IP—ACCT=y
CONFIG—IP—ROUTER=y
CONFIG—NET—IPIP=m
CONFIG—IP—MROUTE=y
CONFIG—IP—NAT=y
CONFIG—IP—A LIAS=y
CONFIG—IP—NOSR=y
CONFIG—IPX=m
CONFIG—BRIDGE=y
(2)编写Boot Loader,制作Boot ROM用于加载嵌入式Linux内核到内存中;
(3)重新设计以太网驱动程序以及串/并口驱动程序;
(4)设计嵌入式Linux应用程序,管理打印服务的应用;
(5)嵌入式Linux系统执行流程如图3所示
。
图3 系统执行流程图
4 结束语
由于E D A(电子设计自动化)技术的飞速发展,我们已经成功地将小型化后的Linux操作系统写入F lash M em ory芯片中,正常运行并完成预期的管理目标。由于Linux操作系统具有强大完善的网络功能、开放的源代码、免费下载、良好在线服务等特点,积极开展有关的研究,既有利于,又利于创新、出新。
嵌入式Linux的应用领域很宽,投资较少,但对开发人员的素质要求很高,开发工作应由精通计算机工程、电子工程、行业应用的复合型高级人才完成。同时嵌入式系统也要求以工业化、工程化的方式研究开发有关技术。通过Internet网,推动嵌入式Linux技术的深入合作研究是一种好的手段。
参考文献
[1] 吕京建,等.面向二十一世纪的嵌入式系统综述[R].
http://w w.bol2system.com.
[2] em linux主页[E B/O L].http://w w w.em linux.com/.
[3] M oretonl主页[E B/O L].http://w w w.m oreton.com.au/
mbweb/product/nettel/nettel.htm.
[4] uC2Linux/C oldFire主页[E B/O L].http://w w w.
m oretonbay.com/cold fire/linux2cold fire.htm.
[5] uC2Linux主页[E B/O L].http://w w w.uclinux.org.
[6] M otorola C oldFire CPU主页[E B/O L].http://w w w.m ot.
com/SPS/HPES D/index.htm l.
[7] C.W ayne Wright,Edward J.W alsh.Hurricane hunting
[J].Linux Journal,(58),Feb1999.
6 计算机应用2000年