专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

对实时操作系统的理解

作者:佚名   来源:本站原创   点击数:  更新时间:2011年02月24日   【字体:

首先硬实时系统不是硬实时操作系统,

硬实时系统描叙的是一个结果,而硬实时操作系统纯粹是软件。

硬实时系统本质是确定性,100%的确定性,任务在某个条件下开始,多长时间执行完,都必须100%确定,例如继电器控制逻辑。

实际上没有所谓的软实时,软实时的概念在不同的人和不同的环境,其意义不一样,例如3D射击游戏,它的实时就是人眼不能感到有明显抖动,而在控制行业,软实时系统要求是尽可能的达标,达不到标准也没有太大关系(不会有设备损坏,人员安全,功能没有完成),这样说来,任何系统都可以是软实时,软实时本质就是几率,例如,达到1us的响应有99%的,达到1ms的响应有99.9%的几率,可以认为window也是软实时系统。

硬实时操作系统的很多特点(抢占任务调度,优先级等),都是为了实现确定性而提供的实现手段,实时操作系统只是提供了一种方便实现实时系统的平台可能性(裸机也可以达到)

而要保证系统硬实时,要
1)足够强大的硬件平台,也就是是输入、处理、输出都是确定性的,性能是满足的
2)任务的划分是合理的,要确保硬实时任务的确定性,例如最高硬实时任务是最高优先级
如果没有上面2点,无论怎样单片机还是操作系统都不能达到硬实时的效果。这里有一个优秀的51实时系统RTX51原理分析与移植大家可参考下:http://www.51hei.com/mcu/254.html

单片机裸机是否可以实现硬实时?
单片机裸机当然可以实现硬实时,而且单片机裸机是响应最快、最确定性、开发最简单直接的硬实时系统开发平台,单片机裸机的缺点是系统大了之后,会导致开发任务过大,任务间通讯工作量大,任务只能简单的轮询,没有优先级概念,如果系统任务划分简单,没有太多的外部依赖,完全可以采用单片机做硬实时系统。

何时使用实时操作系统?
系统复杂度比较大,有很多的任务,而且任务可能是不同的人在开发,任务间有较多的通讯,操作系统或者第三方提供很多的库,不必从头开发。

实时系统和嵌入式有关系么?
根本是不同的概念,实时系统着重在确定性,嵌入式着重在系统的体积

硬实时系统是否一定是通过软件系统实现?
硬实时系统实现方式很多种,机械方式,继电器方式,FPGA方式,单片机方式,操作系统方式,很多的实现方式运行时根本没有软件

系统的好坏,首先是总体设计,在基于了解业务的基础上才能做出好的设计,如果,业务都不了解,就关注在实现手段上,就舍本逐末了。
如果了解了业务,可以比较好的划分任务,例如,将人机交互任务放置在普通的PC机上,将控制任务或者对时间要求高的任务放置在下位机上(PCI板子或者通讯连接的外部板子),这样即使是很搓的系统,其结果组合起来也是相当好的。
至于具体实时系统的实现,类型太多,对于大部分系统,只要了解即可,对于很核心的几个系统,其类型分别为
硬件级别的FPGA
单片机级别的
强实时系统级别的,UCOS,VXWORKS,RTAI
弱实时系统级别的,wince

另外一个系统,肯定有实时的部分和非实时部分,所以实际系统并不一定要全部是实时的,如果上下位机或者双内核系统,就比较符合实际的情况

即使在usos中,界面部分一般也是非实时任务

对于方案的选择,其实大部分是在和工作量和复杂度做斗争,
如果在PC机上,由于微软和其他厂商提供的现成的东西,所以无需自底开发,除非,自己做了自己的板子,需要写驱动。
而对于SOC,由于开发商提供的东西并不多,大部分都是都是数据手册,然后开发工具基本就是编译器和烧写器,所以对其的开发基本要自底开始,首先要会底,然后才可以考虑操作系统、协议栈移植等问题。对于单片机提供商提供的api封装,用户最好自己验证,可能有错误。
PC机扩展方式多种,PCI,USB,以太网等等,根据需要而定

window做实时控制缺点
包袱太重,系统任务基本是不能定制的,
这些任务可能会导致系统资源的消耗的不确定性
系统不能裁剪,大小不能定制
内核不开发,系统接口不开放,除了问题无法定位
虽然有缺点但还是可以通过一些方法来补救的,
方法详见我的另一篇文章“如何提高window实时性能

linux做实时控制基本没有上面缺点,

但是相对ucos,这些操作系统还是包袱过重,做简单控制要熟悉的上下文太多,工控机系统适合做大数据处理、复杂耦合处理、人机操作复杂、原型试验性质、对体积不敏感的东西

 

关闭窗口

相关文章