桌面操作系统的研究开发指导思想是尽可能在不改变自身的前提下具有广泛的适应。也就是说:不论应用环境怎么变化,好都不要对自身内部产生什么影响,也不要求自身做太多的变化。反过来,应用于嵌入式环境的RTOS,在研发的时候就必须立足于改变自身、开放自身,让开发可以根据硬件环境和应用环境的不同而对操作系统进行灵活的裁剪和配置,因为对于任何一个具体的嵌入式设备,它的功能是确定的,因此只要从原有操作系统中把这个特定应用所需的功能拿进来即可。
应当指出的是:如果一个操作系统平台只能依靠手工的方式去掉一些代码,这根本就不是可裁剪。所谓可裁剪是在软件工程阶段利用软件配置方法实现软件构件的“即插即用”。
可裁剪带给用户的一个直接的好处是硬件成本降低,这对于成本敏感的应用,如消费电子类设备,具有重要的现实意义。由于设备中只包含应用程序用到的那部分操作系统功能,这就使得系统变得简单、易把握,从而提高系统的可靠。
到位——实时
许多人都把实时理解为速度快。那么,速度快到什么程度才算是达到实时呢?其实,所谓实时,其核心含义在于确定,而不是单纯的速度快。也就是说,RTOS所要求的是在规定的时间内做完应该做的事情,并且操作系统的行为(执行线索)是确定的,这是写出高可靠程序的基础。如果完成同样的动作,有的时候快,有的时候慢,且执行线索千差万别,程序员无法把握,可靠就无从保证。
嵌入式系统为什么对实时要求那么高呢?因为嵌入式系统主要是对仪器设备的动作进行监测控制的,而一般的桌面操作系统基本上是根据人在键盘和鼠标发出的命令进行工作。相对而言,仪器设备的动作具有严格的、机械的时序要求,而人的动作和反应在时序上并不那么严格。比如,用于控制火箭发动机的嵌入式系统,它所发出的指令不仅要速度快,而且多个发动机之间的时序要求严格,否则就会差之毫厘、谬之千里。在这样的应用环境中,非实时的普通操作系统无论如何是无法适应的。
如果我们所开发的设备并不是像航空航天器那样生命攸关或者生产控制那样的关键任务系统,而是像消费电子类那样,即使出现错误也不会造成灾难后果的设备,那么实时(严格地讲是确定)是否还具有现实意义呢?答案是肯定的!设备的高可靠可以有效地降低维护成本;软件运行效率高也会降低对的要求,从而降低硬件成本。对于消费电子产品这类价格十分敏感的产品,实时、可靠仍然是值得重视的问题。
坚如磐石――可靠
桌面操作系统与RTOS相比,另一个差别就是对于稳定、可靠方面的设计思路。一方面,桌面操作系统比较庞大、复杂,而RTOS比较小巧、简捷,而“越简单、越可靠,越复杂、故障概率越大”这又是一个常理。另一方面,更重要的是:桌面操作环境与嵌入式环境在设计思路上有一个重大的不同——桌面环境假定应用软件与操作系统相比而言可以是不可靠的,而嵌入式环境假定应用软件与操作系统一样可靠。
运行于嵌入式环境中的RTOS要求应用软件具有与操作系统同样的可靠,这种设计思路对应用开发提出了更高的要求,同时也要求操作系统自身足够开放。
木桶原理”告诉我们,局部的不足会导致整体的缺陷。要保证系统的可靠,必须保证系统中每一个部分都是可靠的,任何部分的不可靠都会导致系统整体的不可靠。大多数桌面系统都是上千万行代码的庞大而复杂的系统,即使有源代码程序员也难以把握。而且对开发来说,桌面系统庞杂的细节是隐蔽在一个个的固定的接口下的,是一个黑箱,很难把握具体执行的线索。即便其内核是足够可靠的,但它的应用环境复杂多样、千差万别,其中常常有一些应用并不是那么稳定可靠,从而破坏了整体系统的可靠。相反,RTOS对软件开发来说是完全开放的,是一个白箱,允许开发清楚地了解和掌握操作系统内部情况,对存储器中的每一位和每一个I/O接口进行操作控制,从而可以设计出高效稳定的应用软件。
NI PCI-6036E 200 kS/s 16-Bit 16-Analog-Input Multi DAQ
AB SLC 500 8 Ch Analog input module
Allen Bradley 1756-IF16 | Analog Input Module *LNC*
Extron model SW2 AR 2 Input Analog Video Switcher
NEW BEHRINGER XENYX XL1600 ANALOG 16 INPUT 4 BUS MIXER
Allen Bradley 1746-NI8 Analog
Johnson Controls FM-IAN101-0 Analog Input Module NIB
Allen Bradley 1769-IF8 Analog Input Module
Bailey Controls NIAI04 ABB analog input termination NEW
New Hitachi J-AG 2B021477-2 Analog Input/Output Board
Allen Bradley 1769-IF8 Analog Input Module
NEW Extron SW2 ARxi Analog RGBS 2 Input Video Switcher
6ES7331-7NF00-0?AB0 SIMATIC S7-300, ANALOG INPUT CARD
Red Lion PAXT0000 Analog Input Panel Meter NEW PAXT
Allen Bradley 1746-NI8
Red Lion PAXT0000 Analog Input Panel Meter PAXT
Allen Bradley 1769-IF4 Analog Input Module NIB – Sealed
TAZ Eclipse Metron Tech Analog Input PCB 882-70-000 New
Allen Bradley 1746-NI8 Analog Input Ser A SLC 500 I/O
Lot of 4 M12-4E Analog Input Signal Modules
Allen Bradley SLC 500 PLC
A&B Compact I/O 4 Channel Analog Input #1769-IF4
Analog Devices 3B18-00 Strain Gage Input Lot of 2
GE FANUC 90-30 INPUT ANALOG MODULE #IC693ALG220C *NEW*
Beckhoff Analog Input Module KL3052 NIB
SIEMENS INPUT MOD ANALOG 8PT 12BIT SI 505-6108A QTY 2
Beckhoff Analog Input Module Part # KL3064 NIB
ALLEN BRADLEY MICROLOGIX ANALOG INPUT MODULE 1762-IF4
Beckhoff Analog Input Module Part # KL3202
SQUARE D 8030 RIM125 SY/MAX ANALOG INPUT MODULE
Beckhoff Analog Input Module Part # KL3204
Allen Bradley 1746-NI4 Ser A Analog Input Unit (331)
Beckhoff Analog Input Module Part # KL3454 NIB
NIB SIEMENS SIMATIC S5 ANALOG INPUT MODULE 6ES54648MA21
BEHRINGER XENYX1002 10-INPUT 2-BUS ANALOG MIXER 2
Beckhoff Analog Input Module Part # KL3464 NIB
BEHRINGER XENYX1002 10-INPUT 2-BUS ANALOG MIXER NEW
Yamaha MY8AD96 (8-Ch Analog Input Card)
Allen Bradley Flex I/O 1794-IE8 Analog Input Card
Analog Board Main Input SAMSUNG HL-R4266W BP41-00214B
Allen Bradley 1771-IFE-A Analog Input Module
TEKTRONIX 671-3081-01 Analog Input Board V9C-1803-00
ABB BAILEY IMFEC12 Analog Input Module INFI 90
NEW Honeywell TC-IAH161
Allen Bredly PLC-5 1771
Analog Devices Isolated Wideband Volt Input 5B41-03 NEW
New Reliance Automate 0-54214-2 Analog Input Card
NUDAQ PCI-9113A 32CH ISOLATED ANALOG INPUT CARD
Vintage CH Analog Input 8-Bit ISA Joystick Game PC Card
EXTRON SW2 ARxi Two Input Analog RGBS Video Switcher
Fluke 2680A-FAI Fast Analog Input (FAI) module with 1,0
Allen Bradley 1794-IE8 Flex I/O Analog Input Module
Advantech Analog Input CPCI Card MIC-3714 (MIC3714)
NEW BEHRINGER XENYX XL2400 ANALOG 24 INPUT 4 BUS MIXER
Facts Engineering Analog Input F0-04AD-1 ______J27
MKS Tenta cPCI AIAO-0700 3U Analog Input/Output Card