【本帖是安富莱电子原创贴】
RTOS三要素,实时性,可靠性,安全性。这次我们分享下实时系统中的硬实时性。
硬实时系统是必须在设置的截止时间内对环境中的事件做出反应的系统。
一、背景知识:
1、实时系统和非实时系统区别的几个显著特征:
(1)时间限制,每个任务都与一些些时间限制想关联,一种常见的时间限制是与任务相关的最后期限。 指定任务必须截止时间内完成。
(2)安全可靠性,特别是在安全关键领域的应用。
(3)高实时并发性:实时系统通常需要在非常短和严格的时间范围内响应多个独立的事件。
(4)任务关键性:根据任务的不同安全等级和实时性要求,保证关键性任务得到及时执行并且可靠。
还有很多其它特性,就不一 一列举了。
2、硬实时,强实时和软实时
RTOS实时系统的特点是在设定截止时间内完成所需的操作,根据是否在这个时间内完成此操作分为如下三种:
Hard real time system 硬实时系统
在设置的截止时间内可完成相应功能的,如果完不成,系统会崩溃。
Firm real time system 强实时系统
强实时性比硬实时要求弱一些,如果在截止时间内完不成,系统不会崩溃,忽略这次执行。
Soft real time system 软实时系统
软实时比强实时弱一些,如果在截止时间内没有完成,完全不受影响,继续运行。
二、纵览各种RTOS,哪家是硬实时系统
1、VxWorks:
https://www.windriver.com/products/vxworks
VxWorks官方描述:VxWorks is a deterministic, priority-based preemptive RTOS with low latency and minimal jitter :
VxWorks是确定性,基于优先级的抢占式RTOS,具有低延迟和最小抖动。
2、QNX:
https://blackberry.qnx.com/en
QNX官方描述:BlackBerry QNX delivers a time-tested real-time operating system (RTOS) QNX是久经考验的RTOS,汽车级系统是QNX主战场,全球市场份额也最大。
3、RTEMS
https://www.rtems.org/
RTEM官方描述:The Real-Time Executive for Multiprocessor Systems or RTEMS is
an open source Real Time Operating System (RTOS) that supports open
standard application programming interfaces (API) such as POSIX
面向多核处理器的实时执行系统或者支持标准编程接口如POSIX的开源实时操作系统。
4、ThreadX:
https://docs.microsoft.com/en-us/azure/rtos/threadx/overview-threadx
官方描述:Azure RTOS ThreadX is Microsoft's advanced industrial grade Real-Time Operating System (RTOS)
Azure RTOS ThreadX 是微软 的高级工业级实时操作系统 (RTOS)。 它专为深度嵌入式、实时和物联网应用而设计。
5、Green Hills:
https://www.ghs.com/products/rtos/integrity.html
绿色官方描述:INTEGRITY is a hard real-time operating system that never
sacrifices real-time performance for security and protection. INTEGRITY
can respond to events in nanoseconds, guaranteed
INTEGRITY 是一种硬实时操作系统,不以牺牲实时性能来保证安全和保护, INTEGRITY 可以保证在纳秒内响应事件。
绿山有些话说的略绝对,之前SEGGER还发过博文吐槽过,比如这个:
Green Hills Software is the only safe RTOS vendor,唯一安全的RTOS供应商
https://www.ghs.com/WhyChooseGreenHills.html
三、举例:
硬实时案例:
反导弹系统要求硬实时。反导弹系统由一系列硬实时任务组成。反导系统必须首先探测所有来袭导弹,正确定位反导炮,然后在导弹来袭之前将其摧毁。所有这些任务本质上都是硬实时的,如果反导弹系统有任何一个任务失败都将无法成功拦截来袭导弹。
强实时案例:
ADC + DMA + TIM的双缓冲数据采集并对数据做实时滤波分析。这种情况一般需要强实时处理,一个缓冲通过DMA存储ADC数据期间,另一个缓冲的数据可以提取出来做分析,如果不能再缓冲填满之前分析完,另一个缓冲数据将被覆盖。
又比如DS18B20这种对时序要求比较高的,如果没有在设置的时序内执行,读取结果都是错的,错误的数据我们丢弃即可,继续下一轮读取。
软实时案例:
GUI类的应用都是软实时的,有点延迟什么的并不影响,只是体验稍差点。还有网页浏览等。
最后留个小问题,欢迎交流,FPGA通过硬件逻辑实时系统是否是硬实时系统