Linux运用于嵌入式系统的技术分析王亚军.docx
- 文档编号:4366941
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:21
- 大小:35.42KB
Linux运用于嵌入式系统的技术分析王亚军.docx
《Linux运用于嵌入式系统的技术分析王亚军.docx》由会员分享,可在线阅读,更多相关《Linux运用于嵌入式系统的技术分析王亚军.docx(21页珍藏版)》请在冰豆网上搜索。
Linux运用于嵌入式系统的技术分析王亚军
Linux运用于嵌入式系统的技术分析
王亚军1,2,刘金刚1
(1.首都师范大学&中国科学院计算所计算机科学联合研究院,北京100037;2.中国人民武装警察部队学
院,河北廊坊065000)
TechnologyResearchonLinuxAppliedinEmbeddedSystem
WANGYa-jun1,2,LIUJin-gang1
(1.JoinResearchAcademyforComputerScience,CapitalNormalUniversity&InstituteofComputingTechnology,ChineseAcdemyofSciences,
Beijing100037,China;2.TheChinesePeople'sArmedPoliceForcesAcademy,LangfangHebei065000,China)
Abstract:
LinuxandEmbeddedSystemarebothhotpointsintheacademicfieldofcomputertechnology.Thecombinationof
themtwofurtherexpandstheirrespectivedevelopmentarea.Ontheotherhand,somenewtechnologyproblemsarealsopro-
duced.FocusingontheapplicationofLinuxontheembeddedsystem,thispapergoesintoalittlemoredetailabouttheseprob-
lemsandtheirsolutions.
Keywords:
Linux;EmbeddedSystem;EmbeddedLinuxSystem
自1991年至今,开放源代码的Linux操作系统在很多方
面已经赶上甚至超过了商用的UNIX操作系统,其在全球计算
机产业界中掀起的巨澜,是从前任何一个操作系统所无法比拟
的。
从台式个人机到大型服务器,Linux都表现出稳定、高效、
健壮以及功能齐全等优越性能,成为当前最流行的操作系统之
一。
同时,随着后PC时代的来临,信息家电的兴起,作为信息
家电的核心技术,嵌入式系统也获得了广阔的应用空间和发
展前景。
将Linux应用于嵌入式系统,开发嵌入式Linux系统,
已经成为嵌入式系统发展的重要分支。
而两者的融合,却带来
了许多技术上新的问题。
1 嵌入式系统转向Linux
按照英国电气工程师协会(IEE)所下的定义:
嵌入式系统
是用来控制或监视机器、装置或工厂等的大规模系统的设备。
嵌入式系统是电脑软件和硬件的综合体,它是以应用为中心,
以计算机和信息技术的发展为基础,将用户所需的特定功能嵌
入到产品、装置或大型系统中,软硬件可裁剪,从而能够适应实
际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用
计算机系统。
嵌入式系统的特点主要表现在以下几个方面:
(1)嵌入式系统是将先进的微处理器技术、超大规模集成
电路技术、网络通信技术以及嵌入式软件技术与各个行业的具
体应用相结合的产物。
(2)嵌入式系统是面向用户、面向产品、面向特定应用的。
从系统开发到升级换代,嵌入式系统始终与具体应用有机地结
合在一起。
(3)嵌入式系统的嵌入特性意味着这些系统本身与其所
控制和管理的对象是融为一体的,是其中的一个有机组成部
分。
(4)嵌入式系统中的CPU具有低功耗、体积小、集成度高
等特点,能够把通用CPU中许多由板卡完成的任务集成到芯
片内部,从而有利于整个系统设计趋于小型化。
(5)嵌入式操作系统所使用的技术,基本上是从台式计算
机操作系统演变过来的。
由于应用的需要和硬件条件的限制,
嵌入式操作系统必须重视效率,针对具体需求,去除冗余,才能
达到理想的性能。
嵌入式应用对操作系统的要求是:
功能专一而高效,高度
节约资源,启动速度快。
在嵌入式系统应用方面,Linux的内核
完全可以裁减到100KB以下。
Linux的内核精简而高效,可修
改性强,支持多种体系结构,而且具有非常好的网络性能,这些
优点使得它正适合于嵌入式开发和应用。
另外,各种商业嵌入
式操作系统价格昂贵,使得生产嵌入式产品的成本急剧上升。
相比之下,免费授权的Linux支持GNU公共许可证(PublicLi-
cense),并公开其源代码供所有人任意获取和免费使用。
2 Linux应用于嵌入式系统
Linux是一种类UNIX操作系统,它不仅具有UNIX操作系
统的优点,而且还有它自身的优势。
概括起来,Linux的特点主
要表现在以下几个方面:
(1)多用户支持。
Linux支持多用户模式,允许多个用户
同时登录系统。
(2)多任务支持。
Linux支持多任务模式,允许多个进程
并发执行,从而极大限度地利用了CPU资源。
(3)可移植性强。
Linux支持多种硬件平台,并且兼容
POSIX1003.1标准。
与国际标准接轨使得Linux在界面上具
有很强的通用性。
(4)真正的32位操作系统,支持虚拟内存和共享库,并且
使用处理器提供的内存保护模式来保证内核程序的安全可靠。
(5)强大的网络功能。
Linux系统在内核中集成了大量的
网络应用程序,支持TCP/IP,PPP等众多的网络协议,并且在
强大的网络需求下表现出优良的健壮性。
(6)源代码开放,可修改性强。
由于Linux是一个代码开
放的操作系统,并且模块性比较强,任何人都可以根据实际需
要对它进行修改和裁减,从而为Linux在嵌入式系统中的广泛
应用创造了条件。
尽管Linux性能优越,但是它必定不是专为嵌入式应用开
发的操作系统,当把这种操作系统应用于嵌入式领域时,还必
须解决许多技术问题。
首先,Linux的内核为非抢占式的,不能
通过改变优先权来影响内核当前的执行流程。
这样,Linux内
核可以对某些重要的数据结构进行修改而不加任何保护措施,
因为不担心被其他程序抢占。
但如此一来,实时任务也就不能
得到保证,从而不能满足许多嵌入式系统所要求的实时性。
其
次,Linux提供了强大的虚拟内存管理功能,这也是现代操作系
统的重要特征,但是由于嵌入式系统的硬件资源有限,有的系
统甚至没有内存管理单元,因此还需要重新编写这一部分的内
核代码。
另外,Linux为了追求代码的高效,而采用了单内核结
构,这是以损失系统的结构清晰为代价的,从而为代码的修改
带来了不便。
但是,业界已经开发出许多嵌入式Linux系统,
针对Linux运用于嵌入式领域所涉及的技术问题提出了宝贵
的解决方案。
3 主流嵌入式Linux系统的解决方案
(1)μClinux的嵌入式方案。
Lineo公司的拳头产品
μClinux是开放源代码的嵌入式Linux的典范之作。
μClinux
设计的目标平台是那些不具有内存管理单元(MemoryManage-
mentUnit,MMU)的微处理芯片。
为了达到嵌入式系统的需
求,μClinux不得不重写部分内核代码,而且对原标准Linux中
不再用到的代码,采用预处理宏的方法加以屏蔽。
另外,
μClinux采用Romfs文件系统,这种文件系统相对于一般的
EXT2文件系统需要更少的空间。
空间的节约来自两个方面:
首先内核支持Romfs文件系统比支持EXT2文件系统需要更
少的代码;其次,Romfs文件系统相对简单,在建立超级块时需
要更少的存储空间。
μClinux小型化的另一个做法是重写了C
函数库,相对于越来越大且功能越来越全的Glibc库,μClibc
对Libc作了精简,这也是嵌入式系统的通常做法。
(2)Embedix的嵌入式方案。
LineoEmbedix是一种嵌入式
Linux软件解决方案。
Lineo将实时技术集成到Embedix软件
开发工具包(SDK)中,以此为嵌入式设备提供软件和硬件的实
时能力。
EmbedixSDK的一个关键特性是包含了TargetWizard
库编辑工具。
这是一种自动操作方式,可以快速、简便地选择
目标映像的所有需要,为嵌入式设备快速建立尽可能小的软件
映像。
另外,Windows下的EmbedixSDK为开发者提供了虚拟
的开发环境,允许Windows开发者在他们熟悉的Windows环境
下开发嵌入式Linux应用软件。
(3)RTLinux的嵌入式方案。
RTLinux是世界上最早的实
时Linux系统,是针对Linux系统缺少实时性的一个非常成功
的解决方案。
RTLinux并没有对Linux内核做大的改动,而是
利用Linux内核模块机制,采用插入模块的方式,通过一个独
立的内核来管理实时任务,如图1所示。
在加载了RTLinux实
时内核之后,原来的Linux内核就作为实时操作系统的一个空
闲任务,仅当没有实时任务要运行时才执行。
RTLinux使用的
关键技术是中断控制硬件的软件模仿。
无论Linux正在做什
么,无论Linux是否在核心态运行,无论Linux是否禁止中断,
也无论Linux是否被锁住了,实时系统总是能响应中断,从而
保证了系统的实时性。
(4)RTAI的嵌入式方案。
RTAI(Real-TimeApplicationIn-
terface)是一套在Linux上用于编写实时应用程序的接口。
如
图2所示,它的实现机制与RTLinux非常相似,唯一不同的是
RTAI在Linux上定义了一个实时硬件抽象层RTHAL(Real-
TimeHardwareAbstractionLayer),并针对RTAI开发了LXRT
(Linux-RT),让RTAI可以使用Linux本身的系统调用功能。
RTHAL的作用是使RTAI能够在实时任务需要运行的任何时
刻中断Linux,从而使Linux任务总是作为优先级最低的任务
来运行,并且只有在没有实时任务时才可以运行。
作为Linux
的实时功能的扩展,RTAI已经相当稳定和成熟。
(5)MontaVistaLinux的嵌入式方案。
MontaVistaLinux是
针对嵌入式设备量身定做的、实时的、专业的嵌入式操作系统。
MontaVistaLinux在嵌入式系统市场处于领先地位的原因之
一,就是它能够基于Linux提供很好的实时解决方案。
在
Linux中存在三个不利于实现实时性的问题:
①中断封锁时间
过长;②非抢占式的Linux内核;③耗尽式的、机会均等的进程
调度策略。
针对这三个问题,MontaVistaLinux提出了下列解决方案:
①完全的抢占性内核,而且对Linux的API不作任何改变。
②
透明的实时调度器。
如图3所示,MontaVistaLinux实时调度
器在Linux调度器之前运行,然后由它来管理有实时要求的进
程。
如果不存在有实时要求的进程,那么MontaVistaLinux实
时调度器会十分有效地将控制权转交给标准Linux调度器。
(6)ETLinux的嵌入式方案。
ETLinux对Linux实现嵌入
式改造的思路是:
通过修改内核以及应用程序来减少对内存空
间的需求。
通过对普通Linux内核的配置和修改源代码,它一
方面减少内核数据结构的大小,另一方面去除不需要的功能。
最大的空间节省来自于将控制台代码从内核中删除,节省了大
约90KB空间。
此外,一个ELF文件格式的可执行程序总是具
有一个复杂的文件头,用来在将控制权转给main函数之前准
备运行环境。
由于每个可执行文件都包括一份类似信息的复
103第5期 王亚军等:
Linux运用于嵌入式系统的技术分析
日期:
2003-12-19;修返日期:
2005-02-23
Linux运用于嵌入式系统的技术分析
王亚军1,2,刘金刚1
(1.首都师范大学&中国科学院计算所计算机科学联合研究院,北京100037;2.中国人民武装警察部队学
院,河北廊坊065000)
摘 要:
Linux和嵌入式系统都是计算机学术领域中的技术热点,两者的结合,为它们开辟了新的发展空间,也
带来了许多新的技术问题。
针对Linux运用于嵌入式系统所产生的技术问题及解决方案,作了详实的阐述。
关键词:
Linux;嵌入式系统;嵌入式Linux系统
中图法分类号:
TP316 文献标识码:
A 文章编号:
1001-3695(2005)05-0102-03
TechnologyResearchonLinuxAppliedinEmbeddedSystem
WANGYa-jun1,2,LIUJin-gang1
(1.JoinResearchAcademyforComputerScience,CapitalNormalUniversity&InstituteofComputingTechnology,ChineseAcdemyofSciences,
Beijing100037,China;2.TheChinesePeople'sArmedPoliceForcesAcademy,LangfangHebei065000,China)
Abstract:
LinuxandEmbeddedSystemarebothhotpointsintheacademicfieldofcomputertechnology.Thecombinationof
themtwofurtherexpandstheirrespectivedevelopmentarea.Ontheotherhand,somenewtechnologyproblemsarealsopro-
duced.FocusingontheapplicationofLinuxontheembeddedsystem,thispapergoesintoalittlemoredetailabouttheseprob-
lemsandtheirsolutions.
Keywords:
Linux;EmbeddedSystem;EmbeddedLinuxSystem
自1991年至今,开放源代码的Linux操作系统在很多方
面已经赶上甚至超过了商用的UNIX操作系统,其在全球计算
机产业界中掀起的巨澜,是从前任何一个操作系统所无法比拟
的。
从台式个人机到大型服务器,Linux都表现出稳定、高效、
健壮以及功能齐全等优越性能,成为当前最流行的操作系统之
一。
同时,随着后PC时代的来临,信息家电的兴起,作为信息
家电的核心技术,嵌入式系统也获得了广阔的应用空间和发
展前景。
将Linux应用于嵌入式系统,开发嵌入式Linux系统,
已经成为嵌入式系统发展的重要分支。
而两者的融合,却带来
了许多技术上新的问题。
1 嵌入式系统转向Linux
按照英国电气工程师协会(IEE)所下的定义:
嵌入式系统
是用来控制或监视机器、装置或工厂等的大规模系统的设备。
嵌入式系统是电脑软件和硬件的综合体,它是以应用为中心,
以计算机和信息技术的发展为基础,将用户所需的特定功能嵌
入到产品、装置或大型系统中,软硬件可裁剪,从而能够适应实
际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用
计算机系统。
嵌入式系统的特点主要表现在以下几个方面:
(1)嵌入式系统是将先进的微处理器技术、超大规模集成
电路技术、网络通信技术以及嵌入式软件技术与各个行业的具
体应用相结合的产物。
(2)嵌入式系统是面向用户、面向产品、面向特定应用的。
从系统开发到升级换代,嵌入式系统始终与具体应用有机地结
合在一起。
(3)嵌入式系统的嵌入特性意味着这些系统本身与其所
控制和管理的对象是融为一体的,是其中的一个有机组成部
分。
(4)嵌入式系统中的CPU具有低功耗、体积小、集成度高
等特点,能够把通用CPU中许多由板卡完成的任务集成到芯
片内部,从而有利于整个系统设计趋于小型化。
(5)嵌入式操作系统所使用的技术,基本上是从台式计算
机操作系统演变过来的。
由于应用的需要和硬件条件的限制,
嵌入式操作系统必须重视效率,针对具体需求,去除冗余,才能
达到理想的性能。
嵌入式应用对操作系统的要求是:
功能专一而高效,高度
节约资源,启动速度快。
在嵌入式系统应用方面,Linux的内核
完全可以裁减到100KB以下。
Linux的内核精简而高效,可修
改性强,支持多种体系结构,而且具有非常好的网络性能,这些
优点使得它正适合于嵌入式开发和应用。
另外,各种商业嵌入
式操作系统价格昂贵,使得生产嵌入式产品的成本急剧上升。
相比之下,免费授权的Linux支持GNU公共许可证(PublicLi-
cense),并公开其源代码供所有人任意获取和免费使用。
2 Linux应用于嵌入式系统
Linux是一种类UNIX操作系统,它不仅具有UNIX操作系
统的优点,而且还有它自身的优势。
概括起来,Linux的特点主
要表现在以下几个方面:
(1)多用户支持。
Linux支持多用户模式,允许多个用户
同时登录系统。
102
制,这样的头文件被复制了许多次,占用了大量宝贵的磁盘空
间。
ETLinux的解决方案是采用一种解释性语言Tcl来作为驱
动器,把许多基本功能放在解释器的可执行程序中,使它们成
为语言的原语,然后将脚本作为应用程序来运行。
由于Tcl是
一种轻量级解释性语言,具有非常简单的语法,因此非常适合
于作为嵌入式系统的命令行界面。
4 建立嵌入式Linux系统的技术实现
在分析业界主流嵌入式Linux系统解决方案的基础之上,
下面着重阐述针对具体应用建立嵌入式Linux系统的方法。
一般来说,可以把建立嵌入式Linux系统分成三个方面:
①根
据需要修改Linux的源代码并编译一个Linux内核;②编写自
己系统的脚本;③建立一个尽量小的文件系统。
(1)修改并编译Linux内核源代码。
要裁减Linux内核源
代码,必须首先精通Linux的内核原理和体系结构。
Linux内
核有自己的结构体系,其中进程管理、内存管理和文件系统是
其最基本的三个子系统,如图4所示。
在图4中,可将虚线部分看成是Linux内核的单内核结
构。
用户进程可直接通过系统调用或函数库来访问内核资源。
单内核结构注重的是代码的效率和功能的强大,但这是以操作
系统结构清晰的损失为代价的。
正因为Linux采用了单内核
结构,因此修改内核时必须注意各个子系统之间的协调。
修改
Linux源代码主要有两方面原因:
首先,嵌入式系统硬件资源有
限,这就决定了嵌入式操作系统必须针对具体需求,量体裁衣,
才能达到理想的性能。
其次,Linux操作系统本身的某些特征
不能满足嵌入式系统的要求,必须对这些特征进行修改。
综合分析可知,需要在文件系统、内存管理和进程调度上
来改动源代码。
实际情况表明,EXT2文件系统虽然在组织文
件上有其自身的优势,但嵌入式系统往往不需要额外的功能,
如果能对EXT2文件系统进行部分自定义,将大大节省外存空
间。
另外,许多嵌入式系统要求具备实时性,而Linux系统不
具有实时性。
导致Linux内核实时性不强的原因之一在于它
使用了虚拟内存的管理机制。
虚存管理使得同时运行的进程
数目更多一些,却降低了CPU的突发处理能力。
因此屏蔽内
核的虚存机制最能改善其实时性。
另外,Linux内核为非抢占
式的,采用机会均等的调度策略,所以实时任务得不到保证。
采用抢占式内核和面向实时的调度策略,也是提高内核实时性
的重要途径。
(2)嵌入式Linux系统中的脚本控制。
Linux系统在启动
和退出时使用了大量的脚本,用于启动或者停止服务进程。
普
通Linux系统从启动到字符登录界面的出现会花费很长的时
间,这对于嵌入式产品的用户来讲是不必要的。
为了实现系统
的快速启动和快速退出,最好的方法就是重新编写系统的启动
和退出脚本。
要缩短Linux系统的启动时间,必须先清楚
Linux系统的启动过程。
系统启动后,首先执行BIOS程序进行
系统自检,包括检查内存、硬盘和光驱等,这段时间是由硬件来
限制的。
接下来,BIOS读取主引导记录(MBR),并将其装入内
存。
MBR上一般装载了LILO(LinuxLoader)。
LILO先装入
Linux内核映像,然后内核的启动代码将获得CPU控制权,并
依次运行bootesc.ts,head.s和setup.s等代码。
这一部分的时
间相对于整个系统的启动时间来说可以忽略不计,也不需要对
这部分代码作任何修改。
32位启动代码setup.s运行完后,内核执行start_kernel()
程序,首先检查设备并初始化驱动程序,然后启动第一个用户
进程init。
进程init根据/etc/inittab决定进入哪个运行级别,
并根据运行级别执行相应的脚本来启动特定服务,这些脚本包
括/etc/rc.d/rc.sysinit和/etc/rc.d/rcN.d。
脚本运行完成后由
进程init启动getty进程给出登录提示。
要真正加快这一部分
的启动时间,就要重新编写rc.Sysinit,rc等启动脚本,让它只
作一些必要的初始化工作及服务的启动。
修改以后,从内核开
始启动到字符登录界面的出现可以缩减到7s~8s的时间。
Linux的退出过程相对要简单一些。
一般来说,退出时
Linux运行/etc/rc6.d中的脚本终止服务进程,其中最重要的
脚本是S01reboot,实际上执行这个脚本就可以终止系统的所
有服务进程,但是为了可靠地终止系统服务,需要逐项检查。
自定义退出脚本时,可以屏蔽那些为可靠终止服务而编写的脚
本,直接让S01reboot负责终止所有进程。
对S01reboot脚本的
修改主要是除掉与应用无关的语句。
(3)组建嵌入式Linux的文件系统。
它主要有两方面的原
因:
首先现有的Linux文件系统的全集实在太大;其次,需要改
写现有Linux系统中的配置文件以满足应用程序的要求。
由
于系统启动所需的脚本以及系统的命令文件都在文件系统内,
所以具有文件系统是Linux系统启动的基础。
EXT2(或
EXT3)不仅是Linux默认的文件系统,而且也是嵌入式Linux
系统中使用最广的文件系统。
修改EXT2文件系统实际上是
要剔除EXT2文件系统在EXT以及MINIX文件系统上的改
进。
MINIX文件系统规定的文件名不许超过14个字符,而在
嵌入式应用场合,文件的种类少且容量小,14个字符已经足够
区分文件名之间的差别。
由于Linux是单内核结构,因此修改
文件系统时,至少要考虑到每一个进程都可能要打开的文件列
表,进程创建、运行和结束这一系列过程都与文件系统有牵连,
因此相应的代码也要修改。
另外,内存管理与交换文件有关,
执行交换功能的内存子系统函数也要修改。
至此,我们已经获得了内核映像,并且组建了文件系统,嵌
入式Linux系统的设计基本完成,但是还需要花大量的时间进
行测试以保证它的稳定性、可靠性和安全性。
5 结束语
Linux在嵌入式环境中的应用,是继Linux在桌面端的应
用和在大型服务器上的应用之后,Linux开辟的另一个重要的应
用领域。
嵌入式技术具有广阔的应用前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 运用于 嵌入式 系统 技术 分析 亚军
![提示](https://static.bdocx.com/images/bang_tan.gif)