这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 嵌入式技术手册-4

共1条 1/1 1 跳转至

嵌入式技术手册-4

院士
2002-08-13 22:51:29     打赏
嵌入式实时操作系统 5.1大小各异的实时操作系统   有各种各样的实时操作系统,它们在是否需付版权费、系统调用、支持的处理器类型以及提供的工具方面存在很大差别。   实时操作系统(RTOS)在嵌入应用中很有用武之地,其涉及范围很宽,从最简单的执行多种任务的马达控制到飞机上的飞行控制系统。RTOS与其他操作系统不同的一个特征是:它们必须至少有一个中断,其服务能保证在一个给定的时间内完成,而不论是否发生其他事情。这就像是一个变戏法的魔术师,他必须准确地在下一个球落下时抓住它,不能耽误时间。 如果有一个以上的任务需要获得有保证的响应,处理器必须有足够的空闲时间能够完成全部工作,不会使优先级较低的任务因被抢占而瘫痪。有保证的响应只需要对特定的事件足够快就行,不一定要达到最快。   有一些厂商对RTOS的理解并没有上面所述那么严格,而且很多嵌入式控制应用在任务拥塞的概率很低时也工作得很好。在这种情况下,开发人员可能被劝诱采用一个Linux或Berkeley内核,取消实现高优先级任务的内存交换。留下足够多的空闲CPU周期让处理器经常闲着,这能够使多任务的执行看起来更好些。   这里介绍的RTOS就它们所能提供的系统调用数、支持的处理器类型以及在开发环境中包含的工具种类而言差别很大。模块化的程度也有区别。有一些RTOS可以仅仅对特定目标产品所需的部件进行编译,从而产生一个很小的内核。系统在授权使用的方式上也存在差别。有些可提供源代码,有些只提供二进制代码。   有些厂商对售出的每一套运行系统都收费,而另外一些厂商事先收一笔总的费用。能够预见到一项产品的生命周期及产品数量的开发人员可以对这些定价因素加以考虑。 5.1.1无版权费的系统   正在面临着采购还是自己开发决策的设计人员可能发现eCos值得注意。Cygnus Solutions公司(位于美国加州Sunnyvale市)已经成长为一家为无版权费的GNU操作系统销售工具、进行移植和技术支持的成功企业,它已经发布了eCos(参看《今日电子》1999年第2期,P.5),这是一种遵循GNU商业模式的RTOS。   这家公司把源代码放到网址http://www.cygnus.com/ecos上,包括用于几种微处理器的版本,正在对其他一些微处理器进行移植。当然,公司很乐意销售设计人员的工具以及支持服务,但习惯于GNU或Linux运作方式的设计人员可能先要尝试一下。 On Time Software公司(位于纽约州的Setauket市)为386以上的x86处理器提供了32位的RTOS。它的内核以32位保护方式运行。主机支持包括DOS或Windows(从3.x版一直到98和NT)。RTTarget-32核心OS连同交叉开发工具的二进制代码定价为1700美元(源代码为2700美元)。 RTTarget的抢占式多任务程序RTKernel-32的二进制代码定价1950美元(源代码3600美元)。其FAT文件系统RTFiles二进制代码定价1700美元(源代码3200美元)。   公司还提供各种TCP/IP附加软件。演程序可以在登记后从网址http://www.on-time.com/download.htm下载。 U.S.Software公司(位于美国奥勒冈州的Hillsboro)推出的TronTask! 3.0以μITRON规范为基础,这是一种在日本广泛采用的针对内存容量受限的小型产品的标准。单用户开发许可证价格为5000美元,购买与DOS/Windows 95兼容的文件系统US-Files另加3500美元。   该公司还提供NetPeer,它是嵌入目标模块C程序库,需要不到16K字节代码和2字节RAM。公司还在嵌入目标模块中加进TCP/IP、IrDA、RF、Ethernet和PPP等协议,独立于主机的操作系统。可以为很多处理器和工具集建立程序库。在一台工作站上,NetPeer是Windows 95/98/NT/CE、Linux、Solaris、MacOS和Unix下的一个独立的应用程序。它的起价为7500美元。    QNX Softwane Systems公司(位于加拿大安大略省Kanata市)已经将PersonalJava和EmbeddedJAVA应用环境(得到Sun Microsystems公司的许可证)添加进它的NeutrinoRTOS中。添加的软件将使得运行Neutrino的信息电器可以利用Java进行联机升级。单用户Neutrino开发环境定价2695美元,运行版许可证单套的定价在90至350美元之间。单套版的Java附加软件每份45美元。   Green Hills Software公司(位于美国加州Santa Barbara市)提供Multi/ThreadX集成开发环境(IDE)。它将公司的多个软件开发工具与Express Logic ThreadX RTOS相结合。 ThreadX组合了小的存储器容量(最低5K字节)与硬件实时能力。在40MHz的Power PC 860处理器上,上下文关连转换时间不到2微秒。对ThreadX的支持已经被集成到Multi工具之中,使得调试时可利用内核功能。工具中还包括用于在主机上进行开发的模拟器 。   Multi/ThreadX已经为821/860、750、CPU32、ColdFire/68K、Mips、SH、ARM7TDMI和StrongARM等处理器准备好版本。将来还将移植到Mcore、NEC V800和Infineon TriCore系列。   主机硬件连接能力包括BDM和JTAG,EST公司的VisionICE,Hewlett-Packard公司的Processor Probe,ARM公司的EmbeddedICE,以及ROM监视器等。包括C/C++/EC++编译器、汇编程序/连接程序、Multi开发环境、内核相连的软件包在内的单用户许可证,以及无版权费、可无限制分发的ThreadX源代码的工程许可证定价从13400美元起,每增加一 个PC席位增加5900美元。对于某些处理器提任Unix主机的许可证。   Green Hills公司还以相似的基于Multi的软件包的形式提供Integrity 2000 RTOS,一种基于优先级的多任务系统,它具有关键任务应用所需的内存保护,可以放入ROM或闪存中。操作系统加强对目标MMU的内存保护以防止非法的进程破坏其他的代码。系统还禁止内核重入,多个任务不可同时调同一个系统调用。 系统支持在不重新启动的情况下下载新的用户应用。对821、860、8260、60X和740/750 PowerPC处理器具有完整性。对很多板卡提供支撑软件包,并且为开发人员选择其他板卡提供移植的指导。包括Multi在内的单份许可证用于PC主机时定价7900美元,用于Unix主机时定价10900美元。    Enea OSE Systems公司(位于美国得克萨斯州Dallas市)的OSE RTOS已经被移植到 MPC 8260 PowerQUICC Ⅱ处理器。这种结合为分布式电讯之类的高可用性和容错应用提供了有效的数据处理能力。   除了内核之处,OSE还包含了一个链接把手,它是为进程间通信而提供。程序把手允许在一个运行的系统中加载、改变或移去程序。OSE的一个许可证价格为8000美元。 Green Hills公司的Multi IDE也可以提供给OSE使用,其PC版价格为5900美元,Unix版价为8900美元(不包括OSE许可证)。   JMI Software Systems公司(位于美国多佛市)提供C Executive,这是一个可放入ROM中的多任务RT内核,可用于8、16和32位CISC处理器,以及RISC和DSP器件。可选的附加件包括DOS兼容的文件系统、TCP/IP以及SNMP。PSX是加入了Posix.1系统调用子集的一种扩充。 3.3版当前支持32位的x86、ARM 7/StrongARM\ARM7TDMI(混合模式)、PowerPC、i960和68000,下面还将有很多的处理器。C Executive的二进制开发包价格为2500美元,使用人数不限,针对PSX时价格为3750美元。付7500美元可购买无版权费、无限制分发的许可证。使用次数不多、带版权费的销售方式也在计划之中。   Accelerated Technology公司(位于美国阿拉巴马州Bobile市)最近将Nucleus OSEK移植至Infineon C167微控制器中,意欲使它成为飞行器中电子控制的一种标准。带源代码和无限制运行许可证的系统分销价为29000美元。OSEK的任务工具集用于Windows、Solaris和HPUX主机的版本起价为4595美元。工具集包括嵌入开发环境、C/C++/EC++编译器套件、CrossView Pro调试器、用于RTOS的编辑、链接和调试工具,以及Nucleus RTOS。 5.1.2有版权的系统   Wind River Systems公司(位于美国加州Alameda市)的VxWorks模块化RTOS有一个基本开发工具集Tornado Ⅱ。Tornado Ⅱ定价为2995美元,这是一种单用户许可证但并不限于单一的工程项目,与VxWorks许可证的规定一样。支持的主机现有Windows 95/98/NT、Solaris和HPUX。针对的系统架构包括PowerPC、68K/CPU32、x86/Pentium、 StrongARM、i960、Mips、ARM和SPARC。    VxWorks需要取得OEM许可证,定价为15000美元,或者在购买了至少一个Tornado Ⅱ拷贝后只需付13500美元。仅用于一个工程项目的许可证包含了一个板卡支持软件包。基础VxWorks还有很多可选的增补软件,每种都须付开发和运行的使用费。例如,TrueFFS for Tornado在目标库中添加了集成的Flash File系统,包含1000个运行时的目标程 RTOS在国内主要有vxworks和pSOS,现在还有nuclear、QNX、WinCE。   相对而言,vxWorks要好一些,国内研究所一直用的VRTX,现多数已被vxworks所替代了。因为VRTX是最早商业化的RTOS,60年代就开始卖了,全是汇编,改都改不过来,对TCP/IP的支持一直不好,vxWorks是从VRTX公司出来的人做的,号称make VrtX Works!所以就叫vxWorks的名字。 nuclear是卖源代码的,而且不卖licence,就是说,你设计了一台路由器,生产的时候不用为你的每一台路由器都付30美圆的licence费用给nuclear的那个公司。   QNX和WinCE都似乎更注重于GUI图形界面方面的东西,当然,QNX好象还号称在别的方面也很出色,它是一家加拿大的公司做的。有一张DEMO盘,1.44M的小盘,用它启动,就能够实现图形界面和MODEM拨号上网。但是请别以为QNX就是用在一般DESKTOP PC机上的。QNX是在X86体系上面开发出来的,这和别的RTOS不一样,别的好多RTOS都是从68K的CPU上面开发成熟,然后再移植到X86体系上面来的,但是QNX就是直接在X86上面开发的然后近年才在68K等CPU上面能用。   WinCE,刚出来的时候还是soft realtime,不是hard realtime,所以一开始的时候大家就很鄙视WinCE,但是,现在WinCE却声势浩大。 pSOS吗,和vxWorks一起,是最成熟的RTOS,用pSOS和vxWorks来开发路由器、交换机、大型电讯设备、卫星通讯设备、航天器、军事控制设备,那是最合适的,有些东西是不能死锁的,稳定性是第一位的。当然,还有系统硬件设计上面的问题,比如双机热备份冗余设计之类的,不然电话交换机一坏,电讯局就要整天挨批。那么QNX和WinCE呢,用来设计机顶盒、手持设备(手掌电脑、手机)、GPS设备(?)之类的需要漂亮界面的地方。 5.1.3 免费的RTOS   穷人的RTOS在哪里?ucOS就是了,免费的,好象不全;支持好多单片机、甚至支持DSP!还有eCOS也有人下载,但是可惜不支持X86。免费的还有好几种呢,一种是美国军方以前用的RTEMS。有许多站点,如 www.ucos-ii.com。    RTOS在全世界有好几百种,很多大公司都有自己的RTOS,lucent的是免费的呢。 高性能但是又不用钱的RTOS,象linux那样,想点办法也能下到。 其实一个实用的RTOS,除了本身OS核心的性能要好之外,还有开发工具、编译器、调试器之类的,调过单片机程序的人一定很有感触。更重要的还有现在日新月异的各种新技术要往RTOS上面加。比如tcp/ip以及许多的新的网络协议(比如internet,web/browser,java等)。   对RTOS,其实学会了一种,别的也就大同小异了。还有一个问题就是,应用层的程序和RTOS之间用一个虚拟的接口接起来,以后无论你移植到哪个RTOS都会很方便,而且软件可以在虚拟的接口上面先调试,在硬件板子还没有出来之前软件就可以先调试了。开发RTOS和使用RTOS是两件事。使用RTOS开发的应用程序和RTOS是一起烧进FLSH芯片里面去使用,相当于你使用了RTOS厂商的BIN代码。 5.2 Linux在嵌入式领域的发展前景 5.2.1嵌入式计算机系统的潜力   嵌入式系统早已渗入到人们日常生活的每一个角落,与我们的生活息息相关! 美国汽车大王福特公司的高级经理曾宣称,"福特出售的'计算能力'已超过了IBM"。显然,这并不是一个哗众取宠或者夸张的说法。   为了更好的考察这个问题,请允许我再次重申一下关于嵌入式系统(Embedded Systems)的定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡等均是由嵌入式处理器控制的,嵌入式系统市场的深度和广度,由此可见一斑。尽管如此,它的市场价值也许仍然超过了您的想象:今天,嵌入式系统带来的工业年产值已超过了1万亿美元。 5.2.2 LINUX和嵌入式系统   一个完整的系统,当然要包括硬件和软件两个部分。尽管嵌入式系统有着无比广阔的市场需求和发展前景,但嵌入式系统的发展,多年来却经历了一个比相对后期产生的个人计算机(PC)更为曲折和痛苦的历程。随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈,就突出表现在了软件方面。尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、pSOS、Neculeus和Windowss CE,但仍然有大量的嵌入式系统摒弃操作系统于不顾,而仅仅包括一些控制流程。   当然,我们可以说在嵌入式系统相对简单的情况下,这些控制流程足以应付。但是,当嵌入式系统的功能复杂后,也就是说需要提供更完善的服务的时候,简单控制逻辑就不够用了。毋庸置疑,对于任何一个产品来说,服务的内容和质量,都是价值的源泉和生存的基础。嵌入式系统需要的是一套高度简练、友善界面、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。   人们可以发现,以上所说的要求简直就是在形容Linux。更为令人心动的是,除上述优点之外,LINUX与生俱来的优秀网络血统,更为今后的发展铺平了一条宽广平坦的大路。这里的网络,不仅仅指Internet,关于LINUX在Internet中的优势,将需要专门著文论述,这里仅仅提醒大家注意的是另一个也许可以说较Internet更为广阔的市场:家庭网络。尽管全世界每分每秒都有成千上万的优秀软件工程师致力于将个人电脑(PC)的操作系统变得更加简单易用,但令人遗憾的是,对某些特定的年龄和社会阶层的人群来说,要想开启精彩的网络世界大门,依然有一道难以逾越的门槛。事实就是社会上关于个人电脑的普及班和书籍依然铺天盖地,而我们却从未听说过关于操作电视或者空调的培训。   LINUX系统和嵌入式设备的结合,无疑将会对智能住宅及数字家电事业,注入无限澎湃的动力。这并不是什么超前的设想,许多具有高前瞻性的企业,已经从研发阶段过渡到生产阶段,推出了多姿多彩的嵌入式LINUX操作系统的PDA、相机、或者更为概念化的咨讯家电。如推出全球最小的嵌入式操作系统内核--夸克(QUARK),而闻名于世的网虎国际(XLinux),已与Intel成功合作,将夸克应用于Intel去年推出的strongARM芯片上。人们可以在这一平台上享受上网和听MP3的乐趣。而据我所知, LINUS本人在归家的途中已经在利用手机指令家中的咖啡壶为自己准备咖啡了。 5.2.3正确与先进   绝大多数的IT企业,都把保持先进性视为企业生死存亡的大事。但业界一个需要引起重视的现实就是:网海无边,有许多技术和创意的巧妙结合的精品,都象洒落在大海的珍珠,很难得到应有的重视和发掘,在没有散发出自身诱人的光芒之前,就湮灭在茫茫的大海上了。先进是一个需要对比和评价的概念。没有对比和评价,何来先进之有呢?正确的先进应该是高瞻远瞩,利用别人休息的时间找到出路,再回到大伙身边,引导大家一起向前走;如果一个人独自走的太远,过于"先进"的话,反而最终也许会迷失方向。另外一个困难就是:要想永不停顿的保持先进,无论对于一个个人或者一个集体,都是一件极为吃力的事情,甚至是不可能的,尽管愿望是美好的,比如永动机的构想。LINUX相比较其他操作系统的先进之处就在于,它提供了一个永远有人不停顿的自发的寻找出路的游戏规则:它牺牲了某个个人或团队的保持垄断先进性的特权,从而保障了这项事业的永远先进。网虎国际的总经理李奇申曾为Linux做过一个很好的评价--"这是一个符合人性的科技。" 5.2.4 LINUX嵌入系统的可操作性。   事实上我们已经可以在许多公司或个人的网站上免费得到已开发成品或者详尽的方案。在稳定性和效能方面,也无可挑剔,甚至会令其他的操作系统如NT感到无地自容-在服务器方面有确实的研究指出:Linux+Samba的效能达NT的250%之多。因此再具体讨论如何开发LINUX嵌入式系统显然有些过时。在所有的关于最新进展的消息当中,我想最引人注目和振奋人心的莫过于网虎国际公司的研发成果--GCS超字元集。以前曾有文章预测,多国语系统支援的目标,最有可能在LINUX达成。时隔不久,预测变为现实,网虎国际运用GCS技术研发出的XLinux1.0版本宣布可以支持全部人类,这将为全球化的合作搭建一个坚实的平台。而各家电厂商在应用网虎的GCS技术的基础上,其产品也可毫无阻碍的行销世界各地。记得曾经读过一篇圣经故事,里面提到在古代人们使用同一种语言,为了彰显人类力量的伟大,大家一致决定建造一座通天塔,并开始付诸行动。这个项目的建设令上帝感到不安,因此,将人们的语言打乱,使人们无法很好的沟通,以造成通天塔项目的流产。GCS的开发,我想是最符合人类天性的技术成果之一,这是否意味着将产生基于LINUX的通天塔呢?请让我们继续共同关注。 5.2.5专业的工作,应该交给专业人员去做   由于LINUX操作系统的出现,将会更好的体现市场的专业细分的原则。这至少包括几个方面的含义。首先是面向大众普及,操作系统的导入,嵌入式计算设备将变得功能更为强大,同时更加简便易用,而改变过去的"你可以利用我提供的设备做许多工作,前提是你必须和我一样专业"的局面。其实除了专业人员以外,并不是人人都需要功能强大的计算设备。举例来说,网络的突出功能就是提供了互动的功能,但依然有许多人选择电视或其他传统媒体,因为人们并不想时时在每一个领域进行"创造",更多的时候,只是简单的"索取",我们也许会选择相信和依赖于某一个经过挑选的专业团体为我们提供的咨讯,这种索取的需求就是市场的要求,因此,致力于提高原有设备的附加计算功能,甚至比提供专业的计算设备的附加使用功能,更有价值。让那些复杂的操作交给生产厂家去完成吧,用户更需要的是坐享其成。继而,对于生产厂家来说,更可以专心致力于根据客户的需求,完善设计。至于相应的软件,于过去相比,更可以放心大胆的要求专业化的软件开发人员去实现厂商的设计要求。   在今年4月17日的COMMDEX上,网虎国际的总经理李奇申曾就open source与商业公司的合作,进行了一个主题演讲,他认为:"首先,软件开发的成本,从硬件(跳过了ICE屏障)和软件(购买授权)两方面都得到得最大程度的节约,减轻了厂商在开发成本上的顾虑。其次,由于是资源开放(open source),对厂商来说,可以不费吹灰之力,就轻易的拥有涵盖全球的开发队伍,从而保障了软件质量的高效可靠。第三,对于软件开发人员来说,将会更加容易和以更低廉的代价,得到更加专业的开发工具。例如,可能会有人愿意自行发行一套Linux Graphics Workstation,而不必再象以前一样,附在某个操作系统上。   最后,如果感兴趣,人人都可以涉足以上任何一个环节,这将比想象的更加容易,只要您有需求和创意,那么您只需要完成您所感兴趣的那一小部分就足够了,其余的,可以交给其他的专业人员去做。这就是资源开放!也就是说,您可能仅仅制作了一个独特的轮胎,结果您却得到了整部汽车!" 那么我实在想不出,除了我们自身的想象力,还有什么会限制LINUX在嵌入式领域的发展呢?  5.3 LynxOS、QNX、Linux的分析和比较   这里对四种实时操作系统(RTOS)特性进行分析和比较。它们是:Lynx实时系统公司的LynxOS、QNX软件系统有限公司的QNX以及两种具有代表性的实时Linux--新墨西哥工学院的RT-Linux和堪萨斯大学的KURT-Linux。 近年来,实时操作系统在多媒体通信、在线事务处理、生产过程控制、交通控制等各个领域得到广泛的应用,因而越来越引起人们的重视。   5.3.1基本特征概述   QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。它遵循POSIX.1 (程序接口)和POSIX.2(Shell和工具)、部分遵循POSIX.1b(实时扩展)。它最早开发于 1980年,到现在已相当成熟。 LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。它最早开发于1988年。 RT-Linux是一个嵌入式硬实时操作系统,它部分支持POSIX.1b标准。     KURT-Linux不是为嵌入式应用设计的,不同于硬(hard)实时/软(soft)实时应用,他们提出"严格(firm)"实时应用的概念,如一些多媒体应用和ATM网络应用,KURT是为这样一些应用设计的"严格的"实时系统。   体系结构异同 实时系统的实现多为微内核体系结构,这使得核心小巧而可靠,易于ROM固化,并可模块化扩展。微内核结构系统中,OS服务模块在独立的地址空间运行,所以,不同模块的内存错误便被隔离开来。但它也有弱点,进程间通信和上下文切换的开销大大增加。相对于大型集成化内核系统来说,它必须靠更多地进行系统调用来完成相同的任务。   QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。   LynxOS目前还不是一个微内核结构的操作系统,但它计划使用所谓的"Galaxy" 技术将其从大型集成化内核改造成微内核,这一技术将在LynxOS3.0中引入。新的 28Kb微内核提供以下服务:核心启动和停止、底层内存管理、出错处理、中断处理、多任务、底层同步和互斥支持。 RT-Linux实现了一个小的实时核心,仅支持底层任务创建、中断服务例程的装入、底层任务通信队列、中断服务例程(ISR)和Linux进程。原来的非实时Linux核心作为一个可抢先的任务运行于这个小核心之上,所有的任务都在核心地址空间运行。它不同于微内核和大型内核,属于实时EXE(realtime executive)体系结构。其可靠性和可维护性对电信服务系统来说都不够理想。 KURT-Linux核心包括两个部分:内核和实时模块。内核负责实时事件的调度,实时模块为用户进程提供特定的实时服务。它不属于微内核结构。   调度策略分析任务调度策略是直接影响实时性能的因素。尽管调度算法多种多样,但大多由单调率算法(RM)和最早期限优先算法(EDF)变化而来。前者主要用于静态周期任务的调度,后者主要用于动态调度,在不同的系统状态下两种算法各有优劣。在商业产品中采用的实际策略常常是各种因素的折中。   QNX 提供POSIX.1b标准进程调度: 32个进程优先级; 抢占式的、基于优先级的正文切换; 可选调度策略:FIFO、轮转策略、适应性策略。 LynxOS 其调度策略为: LynxOS支持线程概念,提供256个全局用户线程优先级; 硬实时优先级调度:在每个优先级上实现了轮转调度、定量调度和FIFO调度策略; 快速正文切换和阻塞时间短; 抢占式的RTOS核心。 RT-Linux在操作系统之下实现了一个简单的实时核心,Linux本身作为一个可抢占的任务在核内运行,优先级最低,随时会被高优先级任务抢占。 用户可自行编写调度程序,它们可实现为可加载的核心模块; 已实现的调度程序有:基于优先级的抢占式调度和EDF调度; 基于优先级的调度使用"单调率算法",它直接支持周期任务。     KURT-Linux可运行在两种状态之下:通常状态和实时状态。在通常状态下,所有进程都可以运行,但某些核心服务将带来中断屏蔽的不可预期性。实时模式只允许实时进程运行。 支持FIFO调度策略、轮转调度策略和UNIX分时调度策略; 增加了SCHED-KURT调度策略,这是一种静态调度策略,使用一个特殊的调度文件记录预先定义好的待调度进程的参数。   从以上简略描述可以看出,前三种调度策略实现较规范,特别是两种商业RTOS,遵循或部分遵循POSIX.1b实时调度标准。 操作系统服务比较 QNX的系统服务: 多种资源管理器,包括各种文件系统和设备管理,支持多个文件系统同时运行,包括提供完全POSIX.1及UNIX语法的POSIX文件系统,支持多种闪存设备的嵌入式文件系统,支持对多种文件服务器(如WindowsNT/95、LAN Manager等)的透明访问的SMB文件系统、DOS文件系统、CD-ROM文件系统等。    设备管理。在进程和终端设备间提供大吞吐量、低开销接口服务。   图形/窗口支持。包括QNX Windows、X Window System for QNX、对MS Windows NT/95和X Window系统的远程图形连接。 TCP/IP for QNX。 高性能、容错型QNX网络--FLEET,使得所有连入网络的计算机变成一个逻辑上的超级计算机。 透明的分布式处理。FLEET网络处理与消息传递和进程管理原语的集成,将本地和网络IPC统一起来,使得网络对IPC而言是透明的。     LynxOS的系统服务: 网络和通信。由于使用UNIX/POSIXAPI,Lynx很适合于数据通信和Internet应用。又由于系统的开放性,网络软件很容易移植到Lynx上。同样,Lynx亦提供关键的电话通信协议,使之适用于电信系统的基础架构、操作和多媒体应用。 TCP/IP协议栈。Lynx自带优化的TCP/IP协议栈,提供高性能服务,如TCP头预测、高级路由算法、IP级多址广播和链路级高速缓冲 Internet工具。包括,Telnet、Ftp、tftp、PPP、SLIP、实时调度的嵌入式Java虚拟机、嵌入式HTTPserver、bootp、ARP/RARP、DNS域名服务、电子邮件、Perl、电话通信协议等。 SVR3流。   LynxOS流机制为开发和移植基于流的驱动程序和应用提供了核心支持。 文件系统。实时的类UNIX层次结构文件系统:连续结构文件、带缓冲/不带缓冲、原始分区和原始设备访问。 基于Motif的图形用户接口。 分布式计算资源。SCMP与VME总线上的多处理结合,PCI桥服务、CompactPCI Hot-swap Services、Lynx/HA-DDS分布式数据系统。 Linux的系统服务:   近来,很多基于Linux的实时应用被开发出来,它具有成熟和丰富的资源。 UNIX用户的开发工具和应用软件都被移植到Linux上。 TCP/IP网络协议。 各种Internet客户/服务端软件。 X Window。 C/C++、Java等语言编译器。   上述系统的共同点是都提供了图形界面、各种网络支持等必要工具。QNX是一个 更加符合传统"分布式"概念的操作系统,目标是把整个局域网变成一个大的超级 计算机,使得网络的存在对用户透明,文件系统提供的服务也很丰富。但是,分布式的程度越高也意味着系统开销的增大。LynxOS则着意于提供丰富的网络服务,而Linux的最大优势则是经济,还可以通过新闻组或mailinglist快速地解决用户碰到 的任何问题。 5.3.2系统开放性对比   对于很多大、中型系统来说,大多数软件都是为UNIX平台编写的,因此RTOS是否提供POSIX/UNIXAPI就显得很重要。   (1)QNX的开放性: QNX的POSIX兼容性和其提供的UNIX特色的编译器、调试器、XWindow和TCP/IP都是UNIX程序员所熟悉的。 支持多种CPU:AMD ElanSC300/310/400/410、Am386 DE/SE、Cyri 支持多种CPU:AMD ElanSC300/310/400/410、Am386 DE/SE、CyrixMediaGX、x86处理器(386以上)、Pentium系列、STMicroelectronics 的STPC。 多种总线:CompactPCI、EISA、ISA 、MPE (RadiSys)、STD、STD32、PC/104、PC/104-Plus、PCI、PCMCIA、VESA、VME。 各种外设:多种SCSI设备、IDE/EIDE驱动器、10M/100M以太网卡、Token Ring网卡、FDDI接口卡、多种PCMCIA设备、闪存、声卡等等。xOS的开放性: POSIX.1a、1b、1c及BSD4.4等兼容性,使得遵循POSIX1003或用于UNIX的程序很容易移植到LynxOS上。 支持多种CPU主板:包括CompactPCI(6U/3U)和标准PCI、VME/Eurobus、PC/104和PC/AT硬件等。 各种外设适配器:10/100Base Ethernet、SCSI接口、单/多通道串行控制器、单/双工并行口、时钟、计时器、IDE接口、高分辨率显示适配器等。   (2)Linux的开放性: 用户可得到UNIX的全部开发工具。 可使用市场上便宜又常见的硬件。 通过分析,可以看到以上系统各有优势,因此,在平台搭造过程中,用户应 根据自己的实际需要并结合性能价格比进行选择。 5.4 Linux操作系统的讨论   为了使大家对Linux有更深的了解,我们摘录网上对Linux的一些讨论的观点: 5.4.1 讨论的主题   Linux是开放源码的系统,它代表了软件业几十年发展过程中的一种趋势。但是,如果说Linux是免费的,则它就不会是软件业发展的主流。有人说Linux是反资本主义的,换一种说法,Linux是反资本积累的,是反市场的。大家同意吗 ?Linux的开放源码概念只是给象Microsoft这样的主流资本主义企业加了一些作料,迫使Microsoft也开放一些源码,也将一些价,让他们朝更先进的软件业发展潮流走了一步。但是,发达资本主义国家从来(也许永远)不会真心让Linux做软件业的主流。   最近,美国政府推翻了克林顿政府对Microsoft的裁决,这是不是证明,美国政府是支持Microsoft这样的现代资本主义巨无霸企业来霸占全世界的市场。而我想问我们中国人用什么来通过市场的办法与美国人竞争 ?用我们"国产"的Linux ? "国产"的嵌入式Linux?很值得怀疑。   另外,我想知道,我要花多少钱才能将国产的嵌入式Linux安装到我的嵌入式计算机中,可以免费吗 ?技术支持要多少钱 ?免费吗 ?嵌入式Linux收版税吗 ?使用Linux的人,在没有技术支持的情况下,是不是也要他们的老板付钱玩上它几个月才能学会使用Linux ?如果,Linux是免费的,那么,这些经营Linux的公司如何生存 ?很值得怀疑。 5.4.2多数人认为Linux是什么?   a:基本同意上述的观点。但是,采用Linux的技术为自己所用并不犯法,也没有什么害羞的。Linus本人不就采用了GNU的代码吗(如:GNU-GCC),GNU的创始人不是也说Linux应该叫做GNU-Linux吗。我确实希望看到我们中国人认真地消化Linux技术,然后搞点自己的东西,别什么东西都是download.   b:是的,Linux采用GNU-gcc,gdb, VxWorks也采用GNU-gcc, gdb.看了科银京成的DeltaSystem也采用了GNU-gcc, gdb。   c:Linux似乎是软件业的国际共产主义运动.   d:可惜,软件业还处于封建割据状态。   e:我倒认为open source(资源开放)正是linux的优势所在。   但是linux的希望和前途在于嵌入式系统,作为PC上的OS,linux是不可能与windows竞争的。 f:学者们常常提到一个说法-Fatal Freedom. 它即可以译成"致命的自由", 也可以译成"致命的免费". 免费是有代价的, 而且这种代价是相当沉重的. 延伸到Freeware, 他最终会给软件产业带来的是"财富"还是"灾难"呢? g:Open Source对真正的程序员更可能是财富,而对他们的老板更可能是灾难。 5.4.3 Linux贵不贵?    a:一提这个Linux,我就一肚子的火,前段时间想搞点嵌入式开发,就去问了一家比较有名的Linux开发商,结果他的所谓的Linux要40万一套,这是免费的吗?稍微改动了一下竟然要四十万,简直是无耻。后来买了两套别的公司的,一家国内的,一家国外的,都只要几千块。   b:谁的要40万?   c:知道吗? Linus的父亲就是一个社会主义者.   d:注意一个前提:Linux是按照GPL发行,是自由软件!不是免费软件!这是一个根本性的区别!在GPL条款之下,钱不是问题,只要有人愿意买,你可以卖一百万美元。但是,你必须提供软件来源。而得到或买到你的来源的人,将拥有和你一样多的对于该程序的权利和自由。 关键是自由!如果说这是个政治问题的话,就是这个自由!   e:是的,free不代表free of charge.   f:我觉得linux具有世界性,谈那个国家的linux是不正确的,但是,linux 确实给中国带来了机遇,是我们有更多的人,有更多的机会去接触操作系统的内部。我个人认为,没有世界各国的软件高手为GNU而做出的贡献,也不会有今天的linux, 而对于中国来说,搞一个中国的linux是不符合实际的,也是可笑的。中国可以没有一个操作系统,但是中国绝对不能没有操作系统的核心技术。中国真正缺乏的是技术,或者是技术氛围,而不在于产品。   g:大家有误解的意思了,Linux是免费提供源代码给大家使用,你有技术你可以在这个基本上随意的改动或裁减一个比较小的操作系统,也可以自己研发对一些硬件的支持,WinCE可以吗?你在上面开发PDA,入门的费用你们知道要多少吗?然后它的licence是多少你知道吗?我想只有联想他们知道这个敢怒而不敢言了.这里有人说曾经问过一个嵌入式Linux公司要40万一套,是那家公司,人家提供什么样的服务和产品,付了40万后人家有没有再需要你付款, 提供了什么样的技术支持和培训(现在一些公司搞个培训也不要好几千一人吗?) 打个比方:给你一个嵌入式Linux的基本系统(免费给你),你能将它移植到PowerPC、DraongBall、StrongARM等CPU上吗?这些嵌入式系统上的应用你会开发吗?   有人还说:用几千元买到嵌入式Linux,我不用钱能下载一个(用了点网费),供学习参考用。 嵌入式Linux的商业模式是可以生存的,奈何现在的Linux工程师比较少,所以很多公司想用嵌入式Linux但又怕没有嵌入式Linux的工程师,但是我想会好起来的。大家不要认为Linux是不要钱就可以用的,其实也可以,如果你是高高手,下载一个标准的Linux内核(不用钱!)自己开发来用不就的了,还要买吗? 如果你要买,别人在标准内核上做了大量的工作,还提供技术支持,那你就得付款,否则只有上面的那种方法,至于谁的Linux便宜,谁的贵,那要拿提供的技术和服务等等一些客户很关心的因素来衡量了。   h:我想,Linux在技术上的领先是较MS有过之而无不及的,所以,如果爱好者们有能力驾驭它,不收取费用是可以的。但在嵌入式领域,如果是工业或通信方面,Linux的实时内核是不可以与商用的WindRiver产品相比的。因为VxWorks的内核稳定性是有目共睹的,更因为有许多的商家的测试和开发,完整性是不言而喻的。但在一般的IA或要求不高的情况下,2M完整系统还是可以完成很多场合的任务的。我知道国内也有公司出钱委托国内的公司为其专门开发专业的Embedded Linux,主要还是用于一般情况下的控制。但在服务器方面,Linux就大有作为了,当然光靠Free的组织的力量还是不够的,没有IBM,Sun,Oracle等公司的"别有用心"的帮助,还是发展不起来,但有一点是可以肯定的,在中型数据应用领域,MS Windows[NT]是难赶上了。Windows内核的图形Message系统的完整性防碍了整个系统的健壮性。现在Linux在超大规模的并行计算领域还较之AIX,MVS等有一定的差距。而这时,Free与否已经不重要了,因为大型机的硬件已够你受了。   所以,我还是同意国内的Linux嵌入式开发商收取$20,000左右的系统费用。但要物有所值。很直接地说,有些公司根本就没有能力将内核全消化下去。   BluePoint有一点值得称道的是:在视频方面有突出表现。其实HOPEN的内核较稳定,但应用水平较差些。各位,商业公司要发展,当然要有基金的,没有经济基础支撑,就没有精力去创造了。这不可搞核弹。 但作为一个中国人,我还是希望我们自己有我们自己的系统,国人可免费,老外不行。但我可没钱来开发,如果有一天我有老比那么多钱的话,可能CCIOS就会比MSWindows好N*1024倍了。 5.5实时操作系统与通用操作系统的一些比较   嵌入式实时系统中采用的操作系统我们称为嵌入式实时操作系统,它既是嵌入式操作系统,又是实时操作系统。作为一种嵌入式操作系统,它具有嵌入式软件共有的可裁剪、低资源占用、低功耗等特点;而作为一种实时操作系统(本文对实时操作系统特性的讨论仅限于强实时操作系统,下面提到的实时操作系统也均指强实时操作系统),它与通用操作系统(如 DOS、Windows、Unix等)相比有很大的差别,下面我们将通过比较这两种操作系统之间的差别来逐步描述实时操作系统的主要特点。   我们在日常工作学习环境中接触最多的是通用操作系统,通用操作系统是由分时操作系统发展而来,大部分都支持多用户和多进程,负责管理众多的进程并为它们分配系统资源。   分时操作系统的基本设计原则是:尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。由此可以看出,分时操作系统注重平均表现性能,不注重个体表现性能。如对于整个系统来说,注重所有任务的平均响应时间而不关心单个任务的响应时间,对于某个单个任务来说,注重每次执行的平均响应时间而不关心某次特定执行的响应时间。通用操作系统中采用的很多策略和技巧都体现出了这种设计原则,如虚存管理机制中由于采用了LRU等页替换算法,使得大部分的访存需求能够快速地通过物理内存完成,只有很小一部分的访存需求需要通过调页完成,但从总体上来看,平均访存时间与不采用虚存技术相比没有很大的提高,同时又获得了虚空间可以远大于物理内存容量等好处,因此虚存技术在通用操作系统中得到了十分广泛的应用。   类似的例子还有很多,如Unix文件系统中文件存放位置的间接索引查询机制等,甚至硬件设计中的Cache技术以及CPU的动态分支预测技术等也都体现出了这种设计原则。由此可见,这种注重平均表现,即统计型表现特性的设计原则的影响是十分深远的。   而对于实时操作系统,前面我们已经提到,它除了要满足应用的功能需求以外,更重要的是还要满足应用提出的实时性要求,而组成一个应用的众多实时任务对于实时性的要求是各不相同的,此外实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等,这就为系统实时性的保证带来了很大的困难。因此,实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。   可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求,也就是说,实时操作系统注重的是个体表现,更准确地讲是个体最坏情况表现。   举例来说,如果实时操作系统采用标准的虚存技术,则一个实时任务执行的最坏情况是每次访存都需要调页,如此累计起来的该任务在最坏情况下的运行时间是不可预测的,因此该任务的实时性无法得到保证。从而可以看出在通用操作系统中广泛采用的虚存技术在实时操作系统中不宜直接采用。   由于实时操作系统与通用操作系统的基本设计原则差别很大,因此在很多资源调度策略的选择上以及操作系统实现的方法上两者都具有较大的差异,这些差异主要体现在以下几点:   (1) 任务调度策略:    通用操作系统中的任务调度策略一般采用基于优先级的抢先式调度策略,对于优先级相同的进程则采用时间片轮转调度方式,用户进程可以通过系统调用动态地调整自己的优先级,操作系统也可根据情况调整某些进程的优先级。 实时操作系统中的任务调度策略目前使用最广泛的主要可分为两种,一种是静态表驱动方式,另一种是固定优先级抢先式调度方式。 静态表驱动方式是指在系统运行前工程师根据各任务的实时要求用手工的方式或在辅助工具的帮助下生成一张任务的运行时间表,这张时间表与列车的运行时刻表类似,指明了各任务的起始运行时间以及运行长度,运行时间表一旦生成就不再变化了,在运行时调度器只需根据这张表在指定的时刻启动相应的任务即可。   静态表驱动方式的主要优点是: 运行时间表是在系统运行前生成的,因此可以采用较复杂的搜索算法找到较优的调度方案; 运行时调度器开销较小; 系统具有非常好的可预测性,实时性验证也比较方便; 这种方式主要缺点是不灵活,需求一旦发生变化,就要重新生成整个运行时间表。 由于具有非常好的可预测性,这种方式主要用于航空航天、军事等对系统的实时性要求十分严格的领域。 固定优先级抢先式调度方式则与通用操作系统中采用的基于优先级的调度方式基本类似,但在固定优先级抢先式调度方式中,进程的优先级是固定不变的,并且该优先级是在运行前通过某种优先级分配策略(如Rate-Monotonic、Deadline-Monotonic等)来指定的。这种方式的优缺点与静态表驱动方式的优缺点正好完全相反,它主要应用于一些较简单、较独立的嵌入式系统,但随着调度理论的不断成熟和完善,这种方式也会逐渐在一些对实时性要求十分严格的领域中得到应用。目前市场上大部分的实时操作系统采用的都是这种调度方式。   (2) 内存管理:   关于虚存管理机制我们在上面已经进行了一些讨论。为解决虚存给系统带来的不可预测性,实时操作系统一般采用如下两种方式: 在原有虚存管理机制的基础上增加页面锁功能,用户可将关键页面锁定在内存中,从而不会被swap程序将该页面交换出内存。这种方式的优点是既得到了虚存管理机制为软件开发带来的好处,又提高了系统的可预测性。缺点是由于TLB等机制的设计也是按照注重平均表现的原则进行的,因此系统的可预测性并不能完全得到保障; 采用静态内存划分的方式,为每个实时任务划分固定的内存区域。这种方式的优点是系统具有较好的可预测性,缺点是灵活性不够好,任务对存储器的需求一旦有变化就需要重新对内存进行划分,此外虚存管理机制所带来的好处也丧失了。 目前市场上的实时操作系统一般都采用第一种管理方式。   (3) 中断处理: 在通用操作系统中,大部分外部中断都是开启的,中断处理一般由设备驱动程序来完成。由于通用操作系统中的用户进程一般都没有实时性要求,而中断处理程序直接跟硬件设备交互,可能有实时性要求,因此中断处理程序的优先级被设定为高于任何用户进程。 但对于实时操作系统采用上述的中断处理机制是不合适的。首先,外部中断是环境向实时操作系统进行的输入,它的频度是与环境变化的速率相关的,而与实时操作系统无关。如果外部中断产生的频度不可预测,则一个实时任务在运行时被中断处理程序阻塞的时间开销也是不可预测的,从而使任务的实时性得不到保证;如果外部中断产生的频度是可预测的,一旦某外部中断产生的频度超出其预测值(如硬件故障产生的虚假中断信号或预测值本身有误)就可能会破坏整个系统的可预测性。其次,实时操作系统中的各用户进程一般都有实时性要求,因此中断处理程序优先级高于所有用户进程的优先级分配方式是不合适的。   一种较适合实时操作系统的中断处理方式为:除时钟中断外,屏蔽所有其它中断,中断处理程序变为周期性的轮询操作,这些操作由核心态的设备驱动程序或由用户态的设备支持库来完成。采用这种方式的主要好处是充分保证了系统的可预测性,主要缺点是对环境变化的响应可能不如上述中断处理方式快,另外轮询操作在一定程度上降低了CPU的有效利用率。另一种可行的方式是:对于采用轮询方式无法满足需求的外部事件,采用中断方式,其它时间仍然采用轮询方式。但此时中断处理程序与所以其它任务一样拥有优先级,调度器根据优先级对处于就绪态的任务和中断处理程序统一进行处理器调度。这种方式使外部事件的响应速度加快,并避免了上述中断方式带来第二个问题,但第一个问题仍然存在。 此外为提高时钟中断响应时间的可预测性,实时操作系统应尽可能少地屏蔽中断。   (4) 共享资源的互斥访问: 通用操作系统一般采用信号量机制来解决共享资源的互斥访问问题。 对于实时操作系统,如果任务调度采用静态表驱动方式,共享资源的互斥访问问题在生成运行时间表时已经考虑到了,在运行时无需再考虑。如果任务调度采用基于优先级的方式,则传统的信号量机制在系统运行时很容易造成优先级倒置问题(Priority Inversion),即当一个高优先级任务通过信号量机制访问共享资源时,该信号量已被一低优先级任务占有,而这个低优先级任务在访问共享资源时可能又被其它一些中等优先级的任务抢先,因此造成高优先级任务被许多具有较低优先级的任务阻塞,实时性难以得到保证。因此在实时操作系统中,往往对传统的信号量机制进行了一些扩展,引入了如优先级继承协议(Priority Inheritance Protocol)、优先级顶置协议(Priority Ceiling Protocol)以及Stack Resource Policy等机制,较好地解决了优先级倒置的问题。 系统调用以及系统内部操作的时间开销: 进程通过系统调用得到操作系统提供的服务,操作系统通过内部操作(如上下文切换等)来完成一些内部管理工作。为保证系统的可预测性,实时操作系统中的所有系统调用以及系统内部操作的时间开销都应是有界的,并且该界限是一个具体的量化数值。而在通用操作系统中对这些时间开销则未做如此限制。   (6) 系统的可重入性: 在通用操作系统中,核心态系统调用往往是不可重入的,当一低优先级任务调用核心态系统调用时,在该时间段内到达的高优先级任务必须等到低优先级的系统调用完成才能获得CPU,这就降低了系统的可预测性。因此,实时操作系统中的核心态系统调用往往设计为可重入的。   (7) 辅助工具: 实时操作系统额外提供了一些辅助工具,如实时任务在最坏情况下的执行时间估算工具、系统的实时性验证工具等,可帮助工程师进行系统的实时性验证工作。   此外,实时操作系统对系统硬件设计也提出了一些要求,其中一些要求为:    (1) DMA DMA是一种数据交换协议,主要作用是在无需CPU参与的情况下将数据在内存与其它外部设备间进行交换。DMA最常用的一种实现方式被称为周期窃取(Cycle Stealing)方式,即首先通过总线仲裁协议与CPU竞争总线控制权,在获得控制权后再根据用户预设的操作指令进行数据交换。由于这种周期窃取方式会给用户任务带来不可预测的额外阻塞开销,所以实时操作系统往往要求系统设计时不采用DMA或采取一些可预测性更好的DMA实现方式,如Time-slice method等。   (2) Cache Cache的主要作用是采用容量相对较小的快速存储部件来弥补高性能CPU与相对来说性能较低的存储器之间的性能差异,由于它可以使系统的平均表现性能得到大幅提高,因此在硬件设计中得到了极为广泛的应用。 但实时操作系统注重的不是平均表现性能,而是个体最坏情况表现,因此在对系统进行实时性验证时必须考虑实时任务运行的最坏情况,即每次访存都没有命中Cache情况下的运行时间,所以在利用辅助工具估算实时任务在最坏情况下的执行时间时,应将系统中所有的Cache功能暂时关闭,在系统实际运行时再将Cache功能激活。除此以外,另一种较极端的做法则是在硬件设计中完全不采用Cache技术。



关键词: 嵌入式     技术     手册     实时     操作系统     系统     调用         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]