rawos 由于采用了特殊的系统处理方式,可以把系统最大关中断时间降到0us.
影响一个系统实时性最客观的参数是其系统的最大关中断时间。
在2440 板子上空跑一个实时操作系统的话,vxworks 的官方系统最大关中断时间为6us 以上, ucos 的话可以达到20us以上。但是raw os 是0.8us.
所以其实时性毫无疑问是超越这些系统的。
中断的处理对于实时性的提高也是很重要的一个手段。raw os 提供了中断下半部的手段,来处理中断。
所谓中断下半部意思是,中断的处理可以分成两部分:
上半部分中断是关闭的,主要处理是从硬件部分接收数据,然后触发中断下半部。
中断下半部主要是负责数据处理,这部分可能会占用比较长的时间,所以中断需要打开。
rawos 的中断下半部有raw_task_0 类似于linux 的software irq 或者tasklet, raw_task_0 是中端下半部里面优先级最高的,一出中断马上会被执行,所以里面可以放优先级高的中断处理函数,唯一需要注意的是, raw_task_0 的中断下半部处理是不能睡眠的,这个和linux 的software irq, 以及tasklet 原理是完全一致的。
rawos 的中断下半部处理还有workqueue, 类似于linux 的workqueue, workqueue是具有自己的优先级的,用户可以自定义优先级用来实现有优先级的中断下半部分处理。Workqueue 的一大优势是,下半部分处理允许睡眠。
综上所述,raw os把实时性发挥到淋漓尽致的状态,系统的0us 最大关中断时间,配合不同策略的中断下半部处理,使得用户的产品的实时性得到根本的保障。