嵌入式系统是以应用为中心,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。具有软件代码小、高度手动化、响应速率快等特性,非常适宜于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。一、嵌入式操作系统的发展作为嵌入式系统(包括硬、软件系统)极为重要的组成部份的嵌入式操作系统,一般包括与硬件相关的底层驱动软件、系统内核、设备驱动插口、通信合同、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特性,如才能有效管理越来越复杂的系统资源;才能把硬件虚拟化,致使开发人员从忙碌的驱动程序移植和维护中解脱下来;才能提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特征。嵌入式操作系统伴随着嵌入式系统的发展经历了四个比较显著的阶段:第一阶段:无操作系统的嵌入算法阶段,以单芯片为核心的可编程控制器方式的系统,具有与检测、伺服、指示设备相配合的功能。应用于一些专业性极强的工业控制系统中嵌入式操作系统分为,通过汇编语言编程对系统进行直接控制,运行结束后清理显存。
系统结构和功能都相对单一,处理效率较低,储存容量较小,几乎没有用户插口。第二阶段:以嵌人式CPU为基础、简单操作系统为核心的嵌入式系统。CPU种类繁杂,通用性比较差;系统开支小,效率高;通常配备系统仿真器,操作系统具有一定的兼容性和扩充性;应用软件较专业,用户界面不够友好;系统主要拿来控制系统负载以及监控应用程序运行。第三阶段:通用的嵌人式实时操作系统阶段,以嵌入式操作系统为核心的嵌入式系统。能运行于各种类型的微处理器上,兼容性好;内核精小、效率高,具有高度的模块化和扩充性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序插口(APl);嵌入式应用软件丰富。第四阶段:以基于Intemet为标志的嵌入式系统。这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于lnlemet之外,但随着Intemet的发展以及Intemet技术与信息电器、工业控制技术等结合日渐密切,嵌入式设备与Intemet的结合将代表着嵌入式技术的真正未来。二、使用实时操作系统的必要性嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中变得愈来愈重要。
1.嵌人式实时操作系统增强了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统至少不能崩溃,并且还要有自愈能力。除了要求在硬件设计方面提升系统的可靠性和抗干扰性,但是也应在软件设计方面提升系统的抗干扰性,尽可能地降低安全漏洞和不可靠的隐患。常年以来的前后台系统软件设计在碰到强干扰时,致使运行的程序形成异常、出错、跑飞,甚至死循环linux培训,导致了系统的崩溃。而实时操作系统管理的系统,这些干扰可能只是造成若干进程中的一个被破坏,可以通过系统运行的系统监控进程对其进行修补。一般情况下,这个系统监视进程拿来监视各进程运行状况,遇见异常情况时采取一些利于系统稳定可靠的举措,如把有问题的任务清理掉。2.提升了开发效率,减短了开发周期。在嵌入式实时操作系统环境下,开发一个复杂的应用程序,一般可以根据软件工程中的前馈原则将整个程序分解为多个任务模块。每位任务模块的调试、修改几乎不影响其他模块。商业软件通常都提供了良好的多任务调试环境。3.嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。32位CPU比8、16位CPU快,另外它原本是为运行多用户、多任务操作系统而设计的,非常易于运行多任务实时系统。
32位CPU采用利于提升系统可靠性和稳定性的设计,使其更容易做到不崩溃。诸如,CPU运行状态分为系统态和用户态。将系统堆栈和用户堆栈分开,以及实时地给出CPU的运行状态等,容许用户在系统设计中从硬件和软件两方面对实时内核的运行施行保护。假如还是采用先前的前后台形式,则难以发挥32位CPU的优势。从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。三、嵌入式操作系统选型当我们在设计信息家电、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。通常而言,在选择嵌入式操作系统时,可以依循以下原则。总的来说,就是“做减法还是做加法”的问题。(一)市场步入时间制订产品时间表与选择操作系统有关系,实际产品和通常演示是不同的。目前是Windows程序员可能是人力资源最丰富的。现成资源最多的也就可能是WinCE。使用WinCE就能很快进入市场。由于WinCE+X86做产品实际上是在做除法,去除你不要的功能,能很快出产品,但伴随的可能是成本高,核心竞争力差。而个别高效的操作系统可能因为编程人员欠缺,或因为这方面的技术积累不够,影响开发进度。
(二)可移植性操作系统相关性。当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应当比较好,可以在不同平台、不同系统上运行,跟操作系统无关。软件的通用性和软件的性能一般是矛盾的。即通用以损失个别特定情况下的优化性能为代价。很难构想开发一个嵌入式浏览器而仅能在某一特定环境下应用。反过来说,当产品与平台和操作系统紧密结合时,常常你的产品的特色就蕴藏其中。(三)可借助资源产品开发不同于学术课题研究,它是以快速、低成本、高质量的推出适宜用户需求的产品为目的的。集中精力研制出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因而操作系统的可借助资源对于选型是一个重要参考条件。Linux和WinCE都有大量的资源可以借助,这是她们被看好的重要诱因。其他有些实时操作系统因为比较封闭,开发时可以借助的资源比较少,因而多数功能须要自己独立开发。进而影响开发进度。最近的市场需求显示,越来越多的嵌入式系统,均要求提供全功能的Web浏览器。而这要求有一个高性能、高可靠的GUI的支持。(四)系统订制能力信息产品不同于传统PC的Wintel结构的单纯性,用户的需求是千差万别的,硬件平台也都不一样,所以对系统的订制能力提出了要求。
要剖析产品是否对系统底层有改动的需求,这些改动是否伴随着产品特色?Linux因为其源代码开放的天生魅力linux空间,在订制能力方面具有优势。随着W[工业家电网-cnelc]inCE3.0补码的开放,以及谷歌在嵌入式领域力度的加大,其订制能力会有所提高。(五)成本成本是所有产品不得不考虑的问题。操作系统的选择会对成本有哪些影响呢?Linux免费,WinCE等商业系统须要支付许可证使用费,但这都不是问题的答案。成本是须要综合权衡之后进行考虑的——选择某一系统可能会对其他一系列的诱因形成影响,如对硬件设备的选型、人员投入、以及公司管理和与其他合作伙伴的共同开发之间的沟通等许多方面的影响。(六)英文内核支持国外产品须要对英文的支持。因为操作系统多数是采用西文形式,是否支持双字节编码方法,是否遵守GBK,GBl8030等各类国家标准,是否支持英文输入与处理,是否提供第三方英文输入插口是针对国外用户的嵌入式产品的必需考虑的重要诱因。里面提及用WinCE+x86出产品是加法,这实际上就是所谓PC电器化;另外一种做法是乘法,借助电器行业的硬件解决方案(绝大部份是非x86的)加以改进,加上嵌入式操作系统,再加上应用软件。
这是所谓电器PC化的做法,这些乘法的优势是成本低,特色突出,缺点是产品研制周期长,难度大(须要深入了解硬件和操作系统)。假如选择这些做法,Linux是一个好选择,它让你才能深入到系统底层,假如你乐意而且有能力。四、几种代表性嵌入式操作系统比较(一)VxWorksVxWorks操作系统是俄罗斯WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部份。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域渐渐抢占一席之地。VxWorks具有可剪裁微内核结构;高效的任务管理;灵活的任务间通信;毫秒级的中断处理;支持POSIX1003.1b实时扩充标准;支持多种化学介质及标准的、完整的TCP/IP网路合同等。但是其价位高昂。因为操作系统本身以及开发环境都是专有的,价钱通常都比较高,一般需耗费10亿元人民币以上才会垒砌一个可用的开发环境,对每一个应用通常还要另外缴纳版税。通常不通供源代码,只提供二补码代码。因为它们都是专用操作系统,须要专门的技术人员把握开发技术和维护,所以软件的开发和维护成本都十分高。
支持的硬件数目有限。WindowsCE与Windows系列有较好的兼容性,无疑是WindowsCE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。为构建针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,但是一般适用于这些对显存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计容许它对从掌上笔记本到专用的工业控制器的用户电子设备进行订制。操作系统的基本内核须要起码200KB的ROM。因为嵌入式产品的容积、成本等方面有较严格的要求,所以处理器部份占用空间应尽可能的小。系统的可用显存和外存数目也要受限制,而嵌入式操作系统就运行在有限的显存(通常在ROM或快闪储存器)中,因而就对操作系统的规模、效率等提出了较高的要求。从技术角度上讲,WindowsCE作为嵌入式操作系统有好多的缺陷:没有开放源代码,使应用开发人员很难实现产品的订制;在效率、功耗方面的表现并不出众,但是和Windows一样占用过的系统显存,运用程序庞大;版权许可费也是厂商不得不考虑的诱因。
(三)嵌入式Linux这是嵌入式操作系统的一个新成员,其最大的特征是源代码公开但是遵守GPL合同,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来五年的嵌入式操作系统份额的50%。因为其源代码公开,人们可以任意更改,以满足自己的应用,但是查错也很容易。遵照GPL,无须为每例应用收取许可证费。有大量的应用软件可用。其中大部份都遵照GPL嵌入式操作系统分为,是开放源代码和免费的。可以稍加更改后应用于用户自己的系统。有大量的免费的优秀的开发工具,且都遵照GPL,是开放源代码的。有庞大的开发人员群体。无需专门的人才,只要懂Unix/Linux和C语言即可。随着Linux在中国的普及,这类人才越来越多。所以软件的开发和维护成本很低。优秀的网路功能,这在Internet时代尤其重要。稳定——这是Linux本身具备的一个很大优点。内核精悍,运行所需资源少,非常适宜嵌入式应用。支持的硬件数目庞大。嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件嵌入式Linux几乎都支持。并且各类硬件的驱动程序源代码都可以得到,为用户编撰自己专有硬件的驱动程序带来很大便捷。在嵌入式系统上运行Linux的一个缺点是Linux体系提供实时性能须要添加实时软件模块。
而这种模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部份。因为这种实时软件模块是在内核空间运行的,因而代码错误可能会破坏操作系统进而影响整个系统的可靠性,这对于实时应用将是一个极其严重的弱点。(四)μC/OS一ⅡμC/OS一Ⅱ是知名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位,16位和32位单片机或数字讯号处理器(DSP)。它是在原版本μC/OS的基础上做了重大改进与升级,并有了近六年的使用实践,有许多成功应用该实时内核的实例。它的主要特性如下:公开源代码,容易能够把操作系统移植到各个不同的硬件平台上;可移植性,绝大部份源代码是用C语言写的,易于移植到其他微处理器上;可固化;可剪裁性,有选择的使用须要的系统服务,以减轻斗所需的储存空间;占先式,完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务;多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法;可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少;实用性和可靠性,成功应用该实时内核的实例,是虽然用性和可靠性的最好证据。因为μC/OS一Ⅱ仅是一个实时内核,这就意味着它不像其他实时存在系统那样提供给用户的只是一些API函数插口,还有好多工作须要用户自己去完成。五、结束语在嵌入式应用中,使用实时操作系统(RTOS)是当前嵌入式应用的一个特征,一种趋势,也是单片机应用从低水平向高水平的一个进步。在实际的应用中,依照不同的要求和条件选择合适的操作系统,使开发工作更容易,设计出更完美的嵌入式系统。