桌面操作系统的研究开发指导思想是尽可能在不改变自身的前提下具有广泛的适应。也就是说:不论应用环境怎么变化,好都不要对自身内部产生什么影响,也不要求自身做太多的变化。反过来,应用于嵌入式环境的RTOS,在研发的时候就必须立足于改变自身、开放自身,让开发可以根据硬件环境和应用环境的不同而对操作系统进行灵活的裁剪和配置,因为对于任何一个具体的嵌入式设备,它的功能是确定的,因此只要从原有操作系统中把这个特定应用所需的功能拿进来即可。
应当指出的是:如果一个操作系统平台只能依靠手工的方式去掉一些代码,这根本就不是可裁剪。所谓可裁剪是在软件工程阶段利用软件配置方法实现软件构件的“即插即用”。
可裁剪带给用户的一个直接的好处是硬件成本降低,这对于成本敏感的应用,如消费电子类设备,具有重要的现实意义。由于设备中只包含应用程序用到的那部分操作系统功能,这就使得系统变得简单、易把握,从而提高系统的可靠。
到位——实时
许多人都把实时理解为速度快。那么,速度快到什么程度才算是达到实时呢?其实,所谓实时,其核心含义在于确定,而不是单纯的速度快。也就是说,RTOS所要求的是在规定的时间内做完应该做的事情,并且操作系统的行为(执行线索)是确定的,这是写出高可靠程序的基础。如果完成同样的动作,有的时候快,有的时候慢,且执行线索千差万别,程序员无法把握,可靠就无从保证。
嵌入式系统为什么对实时要求那么高呢?因为嵌入式系统主要是对仪器设备的动作进行监测控制的,而一般的桌面操作系统基本上是根据人在键盘和鼠标发出的命令进行工作。相对而言,仪器设备的动作具有严格的、机械的时序要求,而人的动作和反应在时序上并不那么严格。比如,用于控制火箭发动机的嵌入式系统,它所发出的指令不仅要速度快,而且多个发动机之间的时序要求严格,否则就会差之毫厘、谬之千里。在这样的应用环境中,非实时的普通操作系统无论如何是无法适应的。
如果我们所开发的设备并不是像航空航天器那样生命攸关或者生产控制那样的关键任务系统,而是像消费电子类那样,即使出现错误也不会造成灾难后果的设备,那么实时(严格地讲是确定)是否还具有现实意义呢?答案是肯定的!设备的高可靠可以有效地降低维护成本;软件运行效率高也会降低对的要求,从而降低硬件成本。对于消费电子产品这类价格十分敏感的产品,实时、可靠仍然是值得重视的问题。
坚如磐石――可靠
桌面操作系统与RTOS相比,另一个差别就是对于稳定、可靠方面的设计思路。一方面,桌面操作系统比较庞大、复杂,而RTOS比较小巧、简捷,而“越简单、越可靠,越复杂、故障概率越大”这又是一个常理。另一方面,更重要的是:桌面操作环境与嵌入式环境在设计思路上有一个重大的不同——桌面环境假定应用软件与操作系统相比而言可以是不可靠的,而嵌入式环境假定应用软件与操作系统一样可靠。
DS200DSPAF1ABH
DS200DSPBF1ABD
DS200DSPBF1ABE
DS200DSPCF1AAF
DS200DSPCH1A
DS200DSPCH1ADA
DS200DSPDF1ABA
DS200DTBAG1A
DS200DTBBG1A
DS200DTBCG1A
DS200DTBDG1A
DS200EXDEG1A
DS200EXPSG1A
DS200FCGDH1ABA
DS200FCGDH1B
DS200FCRLG1A
DS200FCRRG1A
DS200FCSAG1A
DS200FCSAG2A
DS200FECBG1A
DS200FGPAG1A
DS200FHVAG1A
DS200FHVAG2A
DS200FPSAG1A
DS200FSAAG1A
DS200FSAAG2A
DS200GASCF1AEG
DS200GASCF1AEJ
DS200GASCF1AEL
DS200GASCF1AEO
DS200GASCF1AEP
DS200GASCF1AFB
DS200GASCF1AFE
DS200GASCF1BEL
DS200GASCF1BEM
DS200GASCF1BGB
DS200GASCF1BGC
DS200GASCF1BGD
DS200GASQF1AEJ
DS200GASQF1AEL
DS200GASQF1AEM
DS200GASQF1AEP
DS200GASQF1AFB
DS200GASQF1BEL
DS200GASQF1BEM
DS200GASQF1BGB
DS200GASQF1BGD
DS200GCACF1ACB
DS200GDPAG1A
DS200GENCF1ACA
DS200GENCF1ACB
DS200GENQF1ACB
DS200GGDAG1A
DS200GGIAF1BAC
DS200GGIAG1B
DS200GGXCG1A
DS200GHDCF1AAC
DS200GHDCF1AAH
DS200GHDCF1CBC
DS200GHDCF1CBE
DS200GHDCF1CBF
DS200GHDCF1CBG
DS200GHDCF1CBH
DS200GHDQF1AAB
DS200GHDQF1AAC
DS200GHDQF1AAH DS200GHDQF1AAH
DS200GHDQF1CBC
DS200GHDQF1CBD
DS200GHDQF1CBE
DS200GHDQF1CBF
DS200GHDQF1CBG
DS200GHDQF1CBH
DS200GLAAG1A
DS200GSIAG1B
DS200GSIAG1C
DS200GSNAG1A
DS200HSTIG1A
DS200IAXSG1A
DS200IAXSG3A
DS200IIBDG1A
DS200IMCPG1C
DS200IOEAG1A
DS200IOMAF1ACF
DS200IOMAF1ACH
DS200IOMAF1BDA
DS200IOMAF1BDD
DS200IOMAF1BDE
DS200IOMAF1BDF
DS200IPCDG1A
DS200IPCSG1A
DS200IPCSG2A
DS200IQXDG1A
DS200IQXSG1A
DS200ITXDG1A
DS200ITXSG1A
DS200KLDAF1DAA
DS200KLDAF1EAB
DS200KLDCF1AAB
DS200KLDCG1A
DS200LDCCH1A
DS200LMGCF1AEA
DS200LMGQF1ADD
DS200LPPAG1A
DS200LRPAF1ACC
DS200LRPAG1A
DS200LRPAG2B
DS200LRPBF1AAA
DS200LRPBG1A
DS200LSTCF1ABC
DS200LSTCF1ACC
DS200LSTCF1ACD
DS200LSTCF1ACE
DS200LSTCF1CEE
DS200LSTQF1ABC
DS200LSTQF1ACA
DS200LSTQF1ACC
DS200LSTQF1ACD
DS200LSTQF1ACE
DS200LSTQF1CEE
DS200LUVAF1AHA
DS200MBHAG1A
DS200MBHAG2A
DS200MSTCF1BFA
DS200MSTCF1BFC
DS200MSTCF1BFF
DS200MSTCF2BEL
DS200MSTCF2BEN
DS200MSTQF1BFA
DS200MSTQF1BFC
DS200MSTQF1BFF
DS200MSTQF1CHG
DS200NATOG1A
DS200NATOG2A
DS200NATOG3A
DS200PANAH2A
DS200PANAH2ADD
DS200PCCAG1A
DC200PWRCONN
DS200PCCAG2A
DS200PCCAG3A
DS200PCCAG5A
DS200PCCAG6A
DS200PCCAG7A
DS200PCCAG8A
DS200PCCAG9A
DS200PCTMG1A
DS200PLIBG1A
DS200PLIBG2A
DS200PTBAG1A
DS200PTBAG1B
DS200PTCTG1A
DS200PTCTG1B
DS200PTCTG2B
DS200QTBAG1A
DS200RCIAG1A
DS200RTBAG1A
DS200RTBAG2A
DS200RTBAG3A
DS200RTBAG4A
DS200RTBAG5A
DS200SBCAG1A
DS200SBCBG1A
DS200SDCCF0AAA
DS200SDCCF1AEB
DS200SDCCF1AIA
DS200SDCCF1AJC
DS200SDCCF1ALC
DS200SDCCF1AOC
DS200SDCCF1APC
DS200SDCCF1ATA
DS200SDCCF1AVC
DS200SDCCF1AXA
DS200SDCCF1BAA
DS200SDCCG1A
DS200SDCCG3A
DS200SDCCG4A
DS200SDCCG5A
DS200SDCIG1A
DS200SDCIG2A
DS200SDCIG2B
DS200SHCAG1B
DS200SHCAG1C
DS200SHCBG1A
DS200SHVIG1A
DS200SHVIG1B
DS200SHVMG1A
DS200SHVMG1B
DS200SHVMG1BB
DS200SIOBH1ABA
DS200SIOCG1A
DS200SLCCF1ADA
DS200SLCCF1AEB
DS200SLCCF1AEC
DS200SLCCF1AZZ
DS200SLCCG1A
DS200SLCCG2A
DS200SLCCG3A
DS200SPCBG1A
DS200SSBAG1ARP
DS200SSBAG1B
DS200SSBCG1A
DS200SSRAG1A
DS200STBAG1A
DS200STCAG1A
DS200STCAP1AAB
DS200SVAAG1A
DS200SVIAG1A
DS200SVMAG1A
DS200TBCAG1A
DS200TBCAG2A
DS200TBCBG1A
DS200TBPAG1A
DS200TBPXG1A
DS200TBQAG1A
DS200TBQBG1A
DS200TBQCG1A