嵌入式系统翻译.docx

上传人:b****8 文档编号:11123109 上传时间:2023-02-25 格式:DOCX 页数:29 大小:32.92KB
下载 相关 举报
嵌入式系统翻译.docx_第1页
第1页 / 共29页
嵌入式系统翻译.docx_第2页
第2页 / 共29页
嵌入式系统翻译.docx_第3页
第3页 / 共29页
嵌入式系统翻译.docx_第4页
第4页 / 共29页
嵌入式系统翻译.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

嵌入式系统翻译.docx

《嵌入式系统翻译.docx》由会员分享,可在线阅读,更多相关《嵌入式系统翻译.docx(29页珍藏版)》请在冰豆网上搜索。

嵌入式系统翻译.docx

嵌入式系统翻译

Linux作为一种嵌入式操作系统

作者:

JerryEpplin

Linux作为一种嵌入式操作系统有潜力吗?

高档商业RTOS厂商会穿着布鲁诺玛格里站立不稳

吗?

本文将评估Linux的功能性,强壮性,局限性,以及最重要的是,它的实时处理设施。

更多地使用PC硬件是近几年来高端嵌入式系统中最重要的发展之一。

由于这个趋势,高档系统

的硬件成本已经大幅下降,使得有些以前由于非基于PC的嵌入式硬件成本之高,不会被做的项

目成为可行。

但作为嵌入式PC平台,软件的选择却不像硬件那么有吸引力。

您可以选择DOS,

但它有众所周知的局限性;微软Windows,缺乏实时能力;或某种高端实时操作系统,它昂贵,专

用,而且大多不可移植。

Linux操作系统为上述选项提供了一个非常具有吸引力的替代方案,它

没有上述缺点。

Linux操作系统以前几乎只是被有太多空闲时间的Unix爱好者用于台式电脑,

现今已发展成一个必须被认真对待的又先进又可靠的操作系统。

其中一个最近期的发展是对操作

系统添加实时设施,它完成了Linux从一个爱好者的玩具到一个被嵌入式系统设计师使用的宝贵

工具的转型。

这些实时设施还没有那些高端RTOS中使用的设施先进,Linux永远不会适用于必

须尽量减少RAM和ROM使用的系统。

但是,对于许多应用,Linux系统的优点能克服这些缺点。

在嵌入式系统中使用PC硬件的优点现在已众所周知了。

与许多专为嵌入式市场开发的硬件相反,

PC硬件是大规模生产的,容易获得,成本低廉。

您可以预期模拟和数字输入/输出板,网络接口,

图像采集与处理板之类接口板,用VME总线设计时要比用某种PC总线设计时多花两倍以上成本。

随着高性能PCI总线越来越多的使用,使用PC平台时吞吐量也不再有什么问题。

但在操作系统的能力方面并没有发生与此相称的革命。

随着对较低硬件成本的需求,高端嵌入式

系统需要更先进的功能,如图形用户界面和联网能力。

许多高端RTOS的供应商们提供了这些能

力,这往往是要求更高价格的选项。

微软Windows也提供了这些功能,但它缺乏多数嵌入式系统

要求的实时功能。

人们或许可以以DOS为基础拼凑一个系统,对每个组件都采用单独的第三方工

具,但具体实施起来必会失败,因为不存在为建立这样一种系统提供的支持。

我们需要的是一个

有足够多支持的操作系统,它既便宜又成熟,而且提供了高端嵌入式系统必须具备的功能。

由于上述许多理由,Linux操作系统最近开始受到来自主流出版界的注意。

1许多台式机用户被

它的功能和强壮性所吸引,另一个事实是,要取得它只需花费通过FTP进行下载的成本。

它包括

UNIX用户期待的一套完整的功能和开发工具。

几乎所有的Unix系统和应用软件已被移植到了

Linux系统。

提供了基于TCP/IP的网络协议。

提供了互联网客户机和服务器软件。

提供了X

Windows,并可以在几个窗口管理器中进行选择。

为C,C++,Java和其他语言配备了良好的

编译器。

用户能发现这些功能比Windows提供的更成熟,更完整,也更容易使用。

很多公司都至

少有一个Linux的爱好者,当一个问题很难或根本不可能用Windows解决(例如,配置一台PC

机作为拨号网络服务器),他马上会说"嗯,要是我们有Linux系统就好办了……"

现在,不管比尔·盖茨是否有点担心在一些杂志中辩论的一个主题。

重要的是不被任何公司拥有

和支持的Linux正开始被很多不能被认为是电脑迷的桌上型电脑用户所接受。

如今这点之所以成

为可能,是因了操作系统的成熟以及过去几年中因特网的日益风行。

遇到问题的Linux用户能通

过因特网新闻组和邮寄名单获得数以千计的联机用户的专门知识的帮助。

您遇到的任何问题必然

已经被这些用户之一所遇到过,并且其中大部分人都愿意帮助您。

以我的经验而言,与依赖于

RTOS技术支持部门相比,使用因特网资源通常能更快地解决问题。

您可能必须整理来自其它新

闻组参加者的成打的非正式回答,但是至少有一个回答是可能有帮助的。

比较起来,您从技术支

持部门一次只能得到一个答案。

如果它并非恰当,您必须再次开始整个过程。

此外,为Linux提

供支持的公司也已经开始出现,为那些觉得与常规技术支持部门打交道更自在的用户提供了一个

选择余地。

此外整个Linux提供了源代码,为回答最困难的问题提供了种种手段。

有些嵌入系统设计者会发现就现状来说Linux已很好用。

它在视窗或者DOS之外,为那些没有实

时要求的应用或者虽有实时要求但可以采用专用硬件或协处理器的应用提供了一个好的替代选

择。

但是这种应用非常罕见。

需要有一种方法用Linux实现实时系统,在这方面已经取得了足够

进展,允许实现很多高端嵌入式应用。

被采用的实时Linux方案有两种,我把它们称为POSIX

方案和低层次方案。

POSIX和Linux

POSIX是一种运动,以规范Unix型操作系统必须具备的功能和接口类。

设想是,提高用UNIX

编写的软件可移植性,使Unix程序员的工作更为容易。

一些实时扩展,称为posix.1b或IEEE

1003.1b,已被列入标准。

这些扩展包括如信号量,内存锁定,时钟和定时器,消息队列,和

先占优先级调度等设施。

使用POSIX作为规范实时操作系统的特点的基础已被正确地批评。

2该标准大而拙劣,有许多

臃肿的适合桌面UNIX工作站的功能,但无助于嵌入式系统。

该标准的决策机构主要是受工作站

制造商的支配,不愿对RTOS的供应商和用户作出让步。

此外,POSIX系统调用反映了Unix

系统调用的晦涩和繁琐的语法,使得使用VxWorks或pSOS+时只要1,2次调用的操作竟需

要十多次POSIX调用。

Unix程序员习惯了这种烦扰,但嵌入式系统程序员却觉得无法忍受。

许多Linux开发人员正在Linux中努力实施posix.1b功能。

3这一运动已经看到了一些成

功,并仍在继续努力。

POSIX扩展内存锁设施和确定调度算法的功能已付诸实施。

另一方面,

计时器功能和posix.1b讯号尚未完成。

或许最严重的是,任何认真的RTOS必不可少的POSIX

信号量和消息队列功能尚未可用。

一个基于POSIX的Linux的有前途的发展是POSIX线程的实现,它在posix.1c(或IEEE

1003.1c)中定义。

在一个进程中,您可以有多个线程,共享同一地址空间。

这与熟知的嵌

入式系统中的任务概念刚好相符。

Linux中已有一些POSIX线程实现可供使用。

尽管实现一个实时Linux的POSIX方案还是有一些前途的,但在目前和可预见的未来,只有"

最软的"实时应用能够用posix.1b功能来实现。

企图把posix.1b功能移植到Linux所面临

的最根本的问题是,事实上Linux有一个非先占式内核。

所以如不从根本上改变内核的设计,

要实现"硬"实时特性,看来似乎是不可能的。

不过,至少有一个小组已经成功地完成了这个目

标。

实时Linux的低层次方案

比基于POSIX的运动更有直接利益的是实现一个"硬"实时Linux的努力,其中最有前途的可

能是新墨西哥采矿h和技术学院的实时Linux(RT-Linux)项目。

由于观察到Linux是一种

为台式电脑用户设计的操作系统,那儿的研究者得出结论,尝试把实时功能嫁接到一个为分时设

计的操作系统将是徒劳无益的。

4他们的替代办法是在操作系统下面实现一个简单的实时内核,

把Linux本身作为该内核里运行的一个任务。

Linux的运行具有最低的优先权,而且可以在任

何时候被更高优先权的任务所抢先。

RT-Linux的设计理念是,只提供必要的为实现实时应用必需要件,以尽量减少对Linux本身

进行变更。

5由于尽量减少打扰Linux,就更容易把RT–Linux移植到后来出现的新版本

Linux。

因此,RT-Linux依赖于Linux本身,以提供几乎所有的必需服务,而RT-Linux

只提供低层次的任务创建,安装中断服务例程,并为各种低层次任务,中断服务例程,和Linux

进程之间的通信提供排队。

这种设计的结果之一是,一个RT-Linux的应用可以被当成具有两个领域-实时的和非实时的。

实时领域里的功能能满足其实时性要求,但必须非常简单,因为它们可用的资源相当有限。

另一

方面,非实时功能有全方位的Linux资源可供利用,但不能有任何实时性要求。

为两个领域之

间的通信提供了各种设施。

但在使用RT-Linux之前,嵌入式系统设计师必须确保所有必要的

功能可以纳入这两个领域之一。

使用RT-Linux并不会魔术般地使原有Linux功能变成实时功

能。

举例来说,假设某设计师有一个用于串行端口的Linux驱动程序,并希望在一段固定时间

内在串行端口接收到一串字节后触发一条并行输出线(使用一个实时任务)。

Linux的串行驱动

器不能使用,因为它位于非实时域内,您无法预测何时串行驱动器会唤醒实时任务,驱动并行输

出线以履行其工作。

因此,无论是串行和并行端口,都必须放在实时域里,这就需要重新设计串

行驱动器。

RT-Linux用于任务处理的设施是很基本的。

首先有rt_task_init(),它创建并启动一个任

务。

可以指定栈的大小和优先级。

Linux本身作为一个优先级最低的实时任务进行运行。

任务

可以用rt_task_make_periodic()设置成周期性地运行。

rt_task_wait()设施封锁

调用者任务。

各任务在一个简单的先占式调度器控制下运行。

实时任务和Linux进程之间的主要通信手段是FIFO(先进先出)。

rtf_create()设施创建

一个指定大小的FIFO。

rtf_put()使数据进入FIFO队列,如FIFO已满则返回一个错误。

同样,rtf_get()使数据退出FIFO队列,如果FIFO为空,则返回一个错误。

FIFO机制的最明显的用途是数据流控制。

在数据采集应用中,例如,可以用rt_task_init

()和rt_task_make_periodic()设立一个实时任务,从某一I/O板以固定时间间隔获

取样本数据。

该任务将用rtf_put()把它的数据发送给一个Linux进程。

Linux进程,将

执行一个循环,从FIFO读取数据,然后也许把数据写到磁盘中,在网上传送,或把它显示在一

个X窗口中。

FIFO将起缓冲作用,从而Linux进程可以进行操作而不受实时时间限制。

实现数据流系统似乎已成了RT-Linux设计师的首要动机。

但FIFO机制提供了一个不错的实

现信号量的方法。

二进制信号量可以是实现各种信号量的好方法。

创建一个大小为1的FIFO,

即可实现二进制信号量。

"让出"操作(也称为"V"或"信号")只是一个单纯的大小为1的

rtf_put(),数据内容和出错返回可被忽视。

"获取"操作(也称"P"或"等待")是一个大小

为1的rtf_get()。

要实现计数信号量,只需创建一个FIFO其大小应足以容纳预期的"让出

"操作数。

所以FIFO机制提供了在实时应用中为任务同步所需的大部分功能。

目前的实现还缺

乏一些RTOS用户熟悉的功能,如优先级继承(以防止优先级反转)和任务的删除安全性。

但通

过仔细设计,几乎总可以避免这些功能所对付的问题。

此外,虽然FIFO的操作可以被确立成当

数据不可用(读取FIFO时)或空间不可用(写FIFO时)时引起封锁,但这样做的语法相当麻

烦,因为阻塞功能似乎并非设计者的优先考虑。

不过,至少有一个努力正在进行,以提供一种简

单的语法封锁对FIFO的操作。

6这一努力也会实现执行封锁时的超时,这是许多嵌入式应用中

的一个重要特点。

RT-Linux的简单而开放式的设计允许用户能很容易地实现这些额外的喜好

特点。

RT-Linux的一个有趣的方面是设计师借以使Linux内核可先占的方式。

Linux,如同多数

UNIX型操作系统,有一个在很长一段时间内禁用中断的内核。

这其实正是Linux之所以是一

个非实时操作系统的原因。

可以采用两个办法来解决这个问题。

其一是重新设计内核,使之可以

被先占。

但Linux内核又大,又复杂,而且受到频繁的修改。

它的设计者是一些对实时应用没

有什么兴趣的程序员。

因此,要把某种实时的思维定式施加到现有代码上去是不切实际的。

即使

做了一次修改,每当发布一个Linux新版本就重新审视并重新进行修改也不切实际。

RT-Linux

的设计师采取了另一种做法,使Linux可先占。

他们把中断分为两组:

由Linux控制的中断,

和由RT-Linux控制的中断。

RT-Linux中断,类似于RT-Linux任务,被限制于可以自行完

成的工作,不能执行Linux调用。

因此,没有理由认为它们不能中断Linux内核。

总之,如果

他们不改变内核中任何东西,它们就不能干预核心中的任何事情。

另一方面,Linux中断不能

允许中断内核。

因此,RT-Linux的实现了一个虚拟的中断机制,其中Linux本身决不允许禁

止中断。

Linux使用”cli”和”sti”宏实现禁用和启用中断。

在标准Linux中,这些宏只是执

行相应的x86指令。

RT-Linux修改了这些宏,使得执行”cli”时不是禁用中断,它只是把中

断引至一些RT-Linux的代码。

如果中断是一个RT-Linux中断,则允许继续。

如果这是一个

Linux中断,则设定一个标志。

当”sti”被执行时,任何悬置的Linux中断被执行。

按这种方

式,Linux仍然不能中断本身,但RT-Linux可以打断它。

RT-Linux很简单,只提供为实现一个实时系统所必须的最低限度的功能。

但这种简单性符合

系统设计师的利益。

您通常会用Linux进程实现大部分的应用,因为Linux本身很坚实,稳定

且流行于很多台式机用户,因此您知道如果您遇到麻烦您可以得到帮助。

实时任务应该只有执行

实时I/O以及通过Linux进程传送数据时所需的功能。

RT-Linux的简单性有两个好处:

一,它非常简单,因此它不太可能漏洞百出;第二,如果您发现了错误,也可能很容易被找到并

修复。

这些因素是很重要的。

因为实时系统是Linux应用软件中很小一部分,您可以找到的用

于开发使用RT-Linux的代码资助金额必定也很少。

因此,一个功能丰富的RT-Linux未必是

所期待的。

现在实施的功能如果运用得宜,对于绝大多数实时系统也已足够了。

Linux显然不是适用于所有嵌入式电脑的最佳平台。

由于其大小,一个完整的基于GUI的系统

必须实现成一个基于磁盘的系统,或一个连接到网络且可以从网络启动的系统。

但是,仍然有大

量的越来越多的嵌入式应用可以运行于一台磁盘,且需要内置于Linux的GUI和网络功能。

如,许多医疗设备为了竞争,必须具有有吸引力的用户界面,工业机器控制必须兼备GUI和联

网功能。

要把这样一个系统与DOS或低端RTOS拼凑在一起是不切实际的。

向高端RTOS供应

商支付高达700美元的版权费则毫无可能。

Linux提供了一个方法,免费地提供这些功能。

们不光是免费的,而且它们通常比RTOS供应商所提供的更合乎时宜,他们通常都是提供那些在

桌面OS中早已可用的功能。

除了最近使Linux能用于基于磁盘的嵌入式系统的发展,在使它能从EPROM开机方面已取得了

一些进展。

通过只安装那些为应用所需的组件,在许多情况下,可以使用Linux拼凑出一个无

盘系统。

因此,举例来说,至少已有一个包括Linux网络(但不含XWindows)的完整系统

为Linux仅用了2.7MB的EPROM被拼凑了出来。

7因此,现在已可以用Linux开发实用的

独立无盘嵌入式系统。

此外,从网络启动Linux的功能早已确立。

因此,一个驻留在网络上的

系统可以从网络中某处的一台磁盘启动包括X窗口的整个系统。

前景

Linux遵循GNU运动的思想,通过成千名程序员的协作努力产生高质量的软件。

GNU,如同

Linux,以前曾被嘲笑为业余爱好者和有太多闲功夫的发烧友的玩具。

但现在所有怀疑论者都不

得不承认,GNU已经产生了一些世界级的软件,尤其是gcc和g++编译器。

这些产品都可以和

最优秀的商业编译器竞争,甚至高端RTOS产品,如VxWorks和lynxos都使用它们。

对RTOS

编译器已发生的事情对OS自身也可能发生。

基于Linux的RTOS产品将开始出现,供应商在

强调它们外加的实时特点同时,也会强调它们的支持。

结果将是高端嵌入式系统开发者的一个富

矿,即使是最便宜的RTOS产品提供的功能也比现有最昂贵的产品所提供的更多。

作者简介:

JerryEpplin在St.Louis,MO的一个嵌入式软件顾问。

主要工作是为医疗和工业设备制造商设计软件.邮箱:

JerryEpplin@。

有问题可以邮件联系。

参考文献

1.Mohr,Jim,"TheStateofLinux,"Byte,January1997.

2.Joseph,Moses,"IsPOSIXAppropriateforEmbeddedSystems?

"Embedded

SystemsProgramming,July1995,p.90.

3.Kuhn,Markus,"AVisionforLinux2.2-POSIX.1bCompatibilityandReal-Time

Support,"ftp:

//informatik.uni-erlangen.de/local/cip/

mskuhn/misc/linux-posix.1b,December1996.

4.Seehttp:

//luz.cs.nmt.edu/~rtlinux

5.Yodaiken,Victor,andMichaelBarabanov,"AReal-TimeLinux,"

ftp:

//luz.cs.nmt.edu/pub/rtlinux/papers/usenix.ps.gz.

6.Seehttp:

//stereotaxis.wustl.edu/~jerry.

7.Bennett,Dave,"BootingLinuxfromEPROM,"LinuxJournal,January1997.

原文:

LinuxasanEmbeddedOperatingSystem

byJerryEpplin

DoesLinuxhavepotentialasanembeddedoperatingsystem?

Shouldvendorsof

high-endcommercialRTOSsquakeintheirBrunoMaglis?

Thisarticleassesses

Linux'sfeatures,robustness,limitations,andmostimportantly,itsreal-time

facilities.

TheincreasinguseofPChardwareisoneofthemostimportantdevelopmentsin

high-endembeddedsystemsinrecentyears.Hardwarecostsofhigh-endsystems

havedroppeddramaticallyasaresultofthistrend,makingfeasiblesomeprojects

whichpreviouslywouldnothavebeendonebecauseofthehighcostof

non-PC-basedembeddedhardware.ButsoftwarechoicesfortheembeddedPC

platformarenotnearlyasattractiveasthehardware.YoucanchooseDOS,withits

well-knownlimitations;MicrosoftWindows,withitslackofreal-timecapability;or

oneofthehigh-endreal-timeoperatingsystems,whichareexpensive,proprietary,

andmostlynon-portable.TheLinuxoperatingsystempresentsanattractive

alternativetotheseoptions,havingnoneoftheabovedisadvantages.Previously

usedalmostexclusivelyonthedesktopcomputersofUnixenthusiastswithtoo

muchfreetime,Linuxhasevolvedintoasophisticatedandreliableoperating

systemthatmustbetakenseriously.Oneofthemostrecentdevelopmentshas

beentheadditionofreal-timefacilitiestotheOS,whichcompletesthetransitionof

Linuxfromahobbyist'stoytoavaluabletooltobeusedbyembeddedsystem

designers.Thesereal-timefacilitiesarenotyetassophisticatedasthoseavailable

inhigh-endRTOSs,andLinuxwillneverbeappropriateforsystemsthatmust

minimizeRAMandROMuse.However,formanyapplications,theadvantagesof

Linuxovercomethesedrawbacks.

TheadvantagesofusingPChardwareinembeddedsystemsarebynowwellknown.

Incontrasttomuchhardwaredevelopedspecificallyfortheembeddedmarket,PC

hardwareismass-produced,easilyavailable,andcheap.Youcanexpectinterface

boardssuchasanaloganddigital

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1