1.概述
自动化与控制行业中有很多场景需要循环周期控制,而运动控制领域对循环周期控制的时间确定性要求尤为严格,周期抖动的时间确定性和周期控制的极限范围直接影响运动控制产品的质量和性能。
SylixOS作为一款嵌入式实时操作系统,针对不同循环周期和不同程度的时间确定性要求均有对应的周期控制方式,其中就有为周期性任务解决多任务调度冲突并且时间确定性良好的速率单调调度(Rate Monotonic Scheduling RMS),还有传统的以硬件平台定时器作为中断源,以中断服务程序作为实时任务运行载体的周期控制方式。
2.周期定时方式
本文档主要针对SylixOS实时周期任务进行时间确定性的测试,为贴近真实场景,除了实时周期任务,还有多个普通线程以及不间断的串口中断、网络中断等干扰项,以此保证本文档测试数据以及抖动分析有实际参考价值。
2.1 SMP模式的RMS方式
2.1.1 测试模型
测试平台有两个CPU,在应用程序中将实时任务绑定到CPU1上,其他任务则在CPU0上运行,其中SylixOS中断的绑核不提供应用层的接口,因此我们编写了一个.ko文件用于绑定中断(包括串口中断、网络中断、定时器中断等)到CPU0上,测试时加载此.ko模块即可,具体测试模型如图 2-1所示。
图 2-1 SMP模式的RMS方式测试模型
2.1.2 抖动分析
RMS实现说明:基于操作系统tick的软件定时,循环周期高于tick的部分以tick来实现,循环周期低于tick的部分以CPU忙等待处理实现,以此保证时间延时精度。
SylixOS在高精度时间的CPU忙等待处理中会使用自旋锁,在这一过程中,操作系统不停地获取CPU的时间计数值,每次获取值的过程需要自旋锁加锁、解锁的操作,多核竞争下共享资源使用自旋锁进行互斥访问会对RMS有影响,存在一个极限情况,CPU0在CPU1上的实时任务延时完成之前抢先占有自旋锁,自旋锁被占有的时间会导致SMP模式的RMS最大抖动极限值。
2.1.3 优点
- SylixOS提供了RMS应用层接口,用户使用方便;
- RMS有助于解决多个实时任务调度冲突的问题,RMS基于任务的周期指定优先级,周期越短优先级越高。
2.1.4 缺点
- SMP模式下的自旋锁机制会影响实时任务的抖动;
- 实时任务周期低于时钟tick周期时会独占CPU运行。
2.2 SMP模式的ISR方式
2.2.1 测试模型
以硬件平台定时器作为中断源,以中断服务程序作为实时任务运行载体,这种SMP模式的ISR方式,将实时线程转化为中断任务,可有效提高任务的响应速度和任务循环周期的时间确定性,具体测试模型如图 2-2所示。
图 2-2 SMP模式的ISR方式测试模型
2.2.2 抖动分析
SMP模式的ISR周期控制方式,SylixOS使用双核平台的私有定时器产生定时中断到中断处理程序开始执行存在一定时间间隔,不可避免。这段时间间隔就是中断响应时间,稳定的中断响应时间可以保证ISR方式的稳定循环周期。存在一个极限情况,前后两次的定时中断分别以最小的中断响应时间和最大的中断响应时间让中断处理程序开始执行,就会导致ISR周期控制方式的最大抖动极限值。SylixOS在双核平台的中断响应时间集中在2-3μs,因此ISR周期控制方式的最大抖动极限值为±1μs。
2.2.3 优点
周期控制方式中时间确定性最好的一种方式。
2.2.4 缺点
因为任务在中断服务程序中执行,要求任务代码短小精悍且不允许有耗时操作,需要根据具体情况决定是否采用此方法,不具备通用性。
2.3 AMP模式的RMS方式
2.3.1 测试模型
SylixOS支持AMP模式,在双核平台的两个CPU上分别运行SylixOS,测试模型与SMP模式的RMS方式类似,具体的测试模型如图 2-3所示。
图 2-3 AMP模式的RMS方式测试模型
2.3.2 抖动分析
AMP模式的RMS周期控制方式相对SMP模式的RMS周期控制方式避免了多核竞争下共享资源使用自旋锁互斥访问的影响,最大抖动主要是和前后两次实时任务运行之前的任务上下文切换时间有关,存在一个极限情况,前后两次任务上下文切换分别以最小切换时间和最大切换时间来完成任务调度,会造成AMP模式的RMS方式的最大抖动极限值。
2.3.3 优点
由于每个CPU单独运行一个操作系统,相比SMP模式下的RMS方式,避免了多核竞争下共享资源使用自旋锁互斥访问的影响,提高了时间确定性。
2.3.4 缺点
AMP模式的RMS方式可能会出现RMS任务独占CPU的情况,SylixOS在双核平台的时钟周期为100μs,当任务延时时间低于100μs(时钟周期)时就会出现任务独占CPU的情况。
3.总结
AMP模式的ISR周期控制方式和SMP模式的ISR控制方式结果类似,不单独列出。
SylixOS有多种循环周期控制方式可供选择,在对较小循环周期的控制场景下,SylixOS可以以针对性的控制方式保证实时任务的时间确定性,本文档测试场景模拟了一些干扰任务和中断任务,用户可根据自身实际场景选择合适的周期控制方式。