Kxgx.com - 移动开发网

本站快讯:
搜索: 您的位置主页>移动开发>Linux>>阅读文章:嵌入式操作系统和Linux|

嵌入式操作系统和Linux|

2006-05-22   来源:   作者:未知   【 】 评论:0 条
    摘要:Linux系统可以应用到嵌入式系统中,本文分析了Linux的特点,稳健性和局限性
以及最重要的实时领域的应用。
过去,因为非PC的嵌入式硬件平台价格昂贵,使得许多高性能要求的嵌入式系统不能实
现。现在,因为廉价的PC硬件大力发展和广泛的应用,使得那些高性能要求的嵌入式系
统有了实现的可能。但是,嵌入式PC平台的系统软件却不那么具有吸引力。当然你可以
选择DOS,不过它先天不足。你也可以选择WINDOWS,但是经过仔细的研究,你会发现它
的实时性能很差。很多高级实时操作系统价格不菲,可移植性不好。
从1991年以来,在网络下发展的Linux操作系统,在服务器和PC桌面机上,已经是Micro
soft 的DOS和WINDOWS95/98的强劲对手。而且它的性能比WINDOWS好得多。如果你有兴趣
,你可以从网上自由下载,或掏比CD本身贵一点的价格买到。最近有人把实时性的部件
加入Linux操作系统,使得它成为嵌入式系统设计师的一个极其有价值工具。尽管它的实
时部件不如其他的RTOS那么复杂,使用的内存不能太小,但是它的其他优点足以超越和
弥补它的不足。
在嵌入式系统中使用PC硬件的好处显而易见,生产量大,容易购买,价钱比较便宜。而


且还很容易搞到数模转换板、网络接口板、图象采集和处理板等专用板。再加上采用PC
I总线,系统性能将极大提高。在操作系统领域却没有相应的变化。
高级嵌入式系统不仅需要价格低廉的硬件,同时也需要很多复杂的功能,比如图形用户
接口、网络传输等。在操作系统方面,我们也需要价格便宜、性能成熟、同时又能够满
足高级嵌入式系统的需求。
如今的Linux已经引起了计算机世界的高度重视。许多计算机使用者和厂商都被它的稳定
性、易得性等特点吸引。它几乎完全兼容UNIX系统中的功能和开发工具、应用程序。它
提供了TCP/IP通讯功能、Internet的Client & Server 功能,以及C、C++、JAVA等语
言的编译工具,这些工具和功能都比MS WINDOWS成熟、完善、易用很多。当你在使用和
编程中遇到问题时,通过Internet你会得到成千上万的专家和热心人的帮助。我认为,
在解决问题时,通过Internet的帮助会比单纯依靠RTOS厂商快捷有效。在厂商帮助下解
决问题,一次只会得到一种方案,如果不行,你必须重新开始;在Internet上,你会得
到很多答案。今天的Linux已经得到了一些厂商的支持,你也可以从它们那得到技术支持
。但是,最重要的是你拥有源代码,你可以对问题进行深入的研究,甚至可以扩展功能

Linux是MS WINDOWS 和DOS之外所绝佳的选择。很多嵌入式系统工程师也已经开发了Lin
ux在嵌入式系统方面使用的价值,尤其在专用硬件环境和多处理器方面。现在的问题是
如何使使Linux系统具有实时性。当前有两种方案来解决这个问题:一个是POSIX方法,
另外一个是底层解决。
POSIX是类UNIX操作系统的标准化方案,目的是提高软件的可移植性,加速软件设计师的
工作。POSIX.1b已有实时性扩展,包括信号、内存锁定、时钟和计数、消息队列以及抢
先调度策略。不过这种办法比较适合工作站系统,对基于PC的嵌入式系统并不是很好;
其次是类UNIX的系统调用比较繁复,不如pSOS+等的明了。但是仍然有一批开发者在优
化Linux,当然也取得了一些成功,譬如内存锁定方法和任务调度算法有了改进。这其中
最主要的成果是POSIX线程(定义于POSIX.1c)。这个功能对嵌入式系统来说很好。
另一个方案从底层来提高Linux的实时性,即所谓的“硬”实时性。在这个方面做得最为
成功的是New Mexico institute of Mining and Technology,他们在Linux系统下加入
实时性的kernel(核心),让Linux本身运行在优先级较低的层面上。这种设计方法对Lin
ux系统的修改减少到最低,同时增加必需的实时功能。这样使得在Linux本身的升级后,


可以进行很少的修改就可以把RT-linux引进新版的Linux核心。RT-Linux和Linux的结合
提供所有的实时功能,包括底层任务的创建、中断任务的安装、底层任务队列管理、中
断任务的运行等。这种设计使得在系统中有两种域:实时域和非实时域。实时域的函数
满足实时性要求;不过,任务必须简单,因为分批给它们的资源比较少。非实时域的函
数可以享用系统全部资源,但是它们的实时性比较差。两个域之间的通讯方法也提供了
。在所有RT-Linux时,必须保证需要的函数在各自的运行域是合适的,不要以为先前的
非实时函数在安装安装了RT-Linux后就具有了实时性,对实时性要求有关的函数必须放
到实时域中去运行。
RT-Linux中任务处理也比较简单,所有rt-task-init()创建和启动实时任务。实时域和
非实时域的函数通讯方法是通过FIFO进行。所有FIFO的明显好处是方便数据的传输,如
果设定其长度为零,又可以当成信号所有。目前的不足是没有提供优先级继承机制(为
了防治优先级的逆转)和任务的安全删除,但是在设计过程中却可以依靠仔细设计来避
免这种错误发生。当然使用零长的FIFO来挂起程序的运行的方法有一点麻烦,不过它总
算是一种办法。新设计的方法是设定超时功能。


RT-Linux作为简单、开放的软件,使用者可以可以根据你们的需要来更新这些功能,设
计出更好的方案,并公布给大家。
RT-Linux中最为引人注意的特色是它使得Linux的核心能够被抢先。Linux以及其他类UN
IX操作系统的核心都不能被长期打断。正是因为这一点,使得Linux不能是一个完全合格
的实时操作系统。不过,使用上面介绍的两种方法都可以提高Linux的实时性。第一种方
法重新设计核心,当然能够达到要求。然而Linux的核心大且复杂,还经常修正;它的设
计者并不关心其实时性能。因此强加入实时的功能于现成代码并不合适。即使这样,当
Linux的核心升级,就不免要重新设计程序。RT-Linux采用的另外的方法使得Linux的核
心可以被中断;它把中断分为两类:Linux控制的中断和RT-Linux控制下的中断。RT-Li
nux严格限制任务和中断的内容;它们不能调用Linux的核心,所以它们可以中断核心的
工作。如果它们不改变核心的东西,那么它们将不会干扰核心的运行。其次,Linux的中
断也不能够打断核心的运行。于是RT-Linux采用了虚拟的中断结构,使得Linux的核心不
能禁止中断。在标准的Linux系统中,使用了“sti”和“cli”宏,然后运行X86的相应
指令。RT-Linux修改了这两条指令的运行方式;执行“cli”,它不禁止中断,而是重新


指向RT-Linux的代码,进行判断;如果是RT-Linux的则让中断继续执行,如果是标准Li
nux的中断,则设置标志。运行“sti”时,挂起的任何中断继续执行。如此这般,Linu
x不能中断它自身,RT-Linux就可以了。
RT-Linux简单有效地提供了实时性的需求,对系统设计人员来说这种简单只是相对于其
他的功能。Linux本身是健壮、稳定,在PC桌面设计人员中很流行,一旦你有困难,你可
以获得很多的帮助,因此你可以用它了建造大型系统。RT-Linux的实时任务只是在实时
输入和输出以及在Linux进程之间传输数据时需要。所以简单的实时RT-Linux有两大优点
:首先是因为简单所以少bug(错误);其次如果你发现了缺陷,你可以很容易的找到和
修改。这一点很重要,因为使用实时系统的人员比较少,因此在应用RT-Linux时能够获
得的帮助自然比较少。复杂功能的RT-Linux并不是非常需要,目前它的功能可以满足绝
大部分的实时系统的要求。
当然,Linux并不是很适合所有的嵌入式系统。因为使用GUI,系统必需磁盘或可以启动
的网络。然而,现在的许多嵌入式系统应用程序都需要磁盘来运行,同时也需要GUI和网
络功能。例如医疗设备需要有吸引力的用户界面;工业控制机器需要GUI和网络功能。在


这种情形下使用DOS和低级RTOS又不实际;花大钱买高级RTOS显然不合算。Linux中免费
包含这些功能,它不仅免费,而且提供的功能比商用的RTOS更新速度快。
最近的发展使得Linux可以在无盘的嵌入式系统上工作,它可以在EPROM中启动。在很多
无盘情况下,集合需要的功能在应用系统中,也能够很好地发挥Linux的优点。有一个例
子是不包括X WINDOWS只是集合了网络系统的功能的Linux仅占用2.7M的EPROM。因此我们
可以发展无盘的Linux系统。另外,Linux可以从网络启动,因此从网络的某个地方我们
可以启动这个网络系统,同时可以使用X WINDOWS。
Linux随着GNU的发展而发展,GNU和Linux都是成千上万的程序员的结晶。GNU有具有世界
知名度的gcc和g++编译器,它的优越性可以和世界的其他任何商用的编译器媲美。甚至V
xwork和LynxOS都使用它。基于Linux的RTOS肯定会出现。这正是嵌入式系统开放人员的
福气:使用开放环境;不仅功能卓越,而且价格低廉。
让我们大家都来使用和发展Linux系统,开发它在嵌入式系统方面的应用。
Tags:  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册)密码:匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 帮助