从开发界面来看,桌面操作系统试图给开发人员提供一个“黑箱”,让开发人员通过一系列标准的系统调用来使用操作系统中的功能,而嵌入式试图为开发人员提供一个“白箱”,让开发人员可以自主控制系统的所有资源。
桌面操作系统的研究开发指导思想是尽可能在不改变自身的前提下具有广泛的适应性。也就是说:不论应用环境怎么变化,好都不要对自身内部产生什么影响,也不要求自身做太多的变化。反过来,应用于嵌入式环境的RTOS,在研发的时候就必须立足于改变自身、开放自身,让开发人员可以根据硬件环境和应用环境的不同而对操作系统进行灵活的裁剪和配置,因为对于任何一个具体的嵌入式设备,它的功能是确定的,因此只要从原有操作系统中把这个特定应用所需的功能拿进来即可。
应当指出的是:如果一个操作系统平台只能依靠手工的方式去掉一些代码,这根本就不是可裁剪性。所谓可裁剪性是在软件工程阶段利用软件配置方法实现软件构件的“即插即用”。
可裁剪性带给用户的一个直接的好处是硬件成本降低,这对于成本敏感的应用,如消费电子类设备,具有重要的现实意义。由于设备中只包含应用程序用到的那部分操作系统功能,这就使得系统变得简单、易把握,从而提高系统的可靠性。
到位——实时性
许多人都把实时性理解为速度快。那么,速度快到什么程度才算是达到实时性呢?其实,所谓实时性,其核心含义在于确定性,而不是单纯的速度快。也就是说,RTOS所要求的是在规定的时间内做完应该做的事情,并且操作系统的行为(执行线索)是确定的,这是写出高可靠性程序的基础。如果完成同样的动作,有的时候快,有的时候慢,且执行线索千差万别,程序员无法把握,可靠性就无从保证。
嵌入式系统为什么对实时性要求那么高呢?因为嵌入式系统主要是对仪器设备的动作进行监测控制的,而一般的桌面操作系统基本上是根据人在键盘和鼠标发出的命令进行工作。相对而言,仪器设备的动作具有严格的、机械的时序要求,而人的动作和反应在时序上并不那么严格。比如,用于控制火箭发动机的嵌入式系统,它所发出的指令不仅要速度快,而且多个发动机之间的时序要求严格,否则就会差之毫厘、谬之千里。在这样的应用环境中,非实时的普通操作系统无论如何是无法适应的。
如果我们所开发的设备并不是像航空航天器那样生命攸关或者生产控制那样的关键任务系统,而是像消费电子类那样,即使出现错误也不会造成灾难性后果的设备,那么实时性(严格地讲是确定性)是否还具有现实意义呢?答案是肯定的!设备的高可靠性可以有效地降低维护成本;软件运行效率高也会降低对的要求,从而降低硬件成本。对于消费电子产品这类价格十分敏感的产品,实时性、可靠性仍然是值得重视的问题。
坚如磐石――可靠性
桌面操作系统与RTOS相比,另一个差别就是对于稳定性、可靠性方面的设计思路。一方面,桌面操作系统比较庞大、复杂,而RTOS比较小巧、简捷,而“越简单、越可靠,越复杂、故障概率越大”这又是一个常理。另一方面,更重要的是:桌面操作环境与嵌入式环境在设计思路上有一个重大的不同——桌面环境假定应用软件与操作系统相比而言可以是不可靠的,而嵌入式环境假定应用软件与操作系统一样可靠。
运行于嵌入式环境中的RTOS要求应用软件具有与操作系统同样的可靠性,这种设计思路对应用开发人员提出了更高的要求,同时也要求操作系统自身足够开放。
的“木桶原理”告诉我们,局部的不足会导致整体的缺陷。要保证系统的可靠性,必须保证系统中每一个部分都是可靠的,任何部分的不可靠都会导致系统整体的不可靠。大多数桌面系统都是上千万行代码的庞大而复杂的系统,即使有源代码程序员也难以把握。而且对开发人员来说,桌面系统庞杂的细节是隐蔽在一个个的固定的接口下的,是一个黑箱,很难把握具体执行的线索。即便其内核是足够可靠的,但它的应用环境复杂多样、千差万别,其中常常有一些应用并不是那么稳定可靠,从而破坏了整体系统的可靠性。相反,RTOS对软件开发人员来说是完全开放的,是一个白箱,允许开发人员清楚地了解和掌握操作系统内部情况,对存储器中的每一位和每一个I/O接口进行操作控制,从而可以设计出高效稳定的应用软件。
ITE Gould BBC ABB K1600 S K1600S 1600A Air Breaker LSIG
Allen Bradley AB 1336S-B125-AN-EN-L6 125/150 HP Drive
Reliance 65C500/9101-2160 QUIQ Servo Positioning Module
Siemens SBS 2016 SBS2016 SBS2016DV 1600 Amp SB16TP02G
Siemens SBH 2016 SBH2016 SBH2016DV 1600 Amp SB16TP02G
Siemens SBH 2016 SBH2016 SBH2016DV 1600 Amp SB16TP02G
Square D 2500 Amp 2500A SE SEDG25E1C1T1G2 SED362500
Westinghouse PC 2000 Amp 2000A A PC32000WK 2000A
ITE Circuit Breaker Type LG 3000 Amp A Siemens RMS Trip
Allen Bradley AB 150-A360NBRB SMC Plus 300HP Soft Start
GE Limitamp Multilin Starter 176 Amp 2.5 kV CR194A147B2
Siemens 6SE7231-8EF00-3AB0-Z VT 125/150 HP VS AC Drive
Telemecanique Altivar 66 ATV66C19N4U AC Drive 200 HP
Square D NHL361200 NHL 1200 Amp A 1200A 600vac NIB
Allen Bradley AB 1336F-B050-AA-EN 50 HP VF VS Drive NIB
GE AKR-7D-100 4000 A Amp Low Voltage Air Breaker 635 V
Sew Eurodrive R107R77D 2 HP Ratio:284 Gear Reducer NEW
Sew Eurodrive R107R77D 2 HP Ratio:369 Gear Reducer NEW
GE AKR-10D-100 4000 A Amp Low Voltage Air Breaker 635V
Telemecanique Altivar 71 ATV71HC11N4 Drive 150HP/110kW
Telemecanique 5600 Motor Control Center 600 Amp A NEW
Siemens ITE Sentron SHND69120ANGT 1200A 1200 Amp A
GE Power Break PowerBreak TPMMF86 3000 Amp 3000A A
Waukesha 030U2AP 030 Positive Displacement PD Pump NEW
Westinghouse SPB 65 Disconnect Breaker Panel 1600 Amp A