文档章节

SylixOS周期定时抖动分析

J
 Jackstraw瑞
发布于 2017/09/18 20:15
字数 1640
阅读 3
收藏 0

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可以以针对性的控制方式保证实时任务的时间确定性,本文档测试场景模拟了一些干扰任务和中断任务,用户可根据自身实际场景选择合适的周期控制方式。

 

© 著作权归作者所有

J
粉丝 2
博文 8
码字总数 10375
作品 0
南京
私信 提问
SylixOS-IgH系统平台搭建

1.参考手册 下面7个文件存放在本地服务器“\10.9.1.113.研发部9.ExchangeFolder郑磊”路径下 《RealEvo-IDE使用手册》 《SylixOS应用开发手册》 《SylixOSshell用户手册》 《SylixOS-IgH使用...

zhengleich
2018/05/15
0
0
SylixOS调试方法详解——性能分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
2018/06/26
0
0
SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍 目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的...

Jackstraw瑞
2017/11/01
0
0
SylixOS线程创建的流程分析

概述 本文档的主要内容是分析SylixOS线程创建的流程,详细介绍了SylixOS的线程创建函数API_ThreadCreate。 环境和参数检查 在SylixOS中,线程的创建函数不能在中断中调用。且在线程的创建时,...

wangyu123
2017/10/24
0
0
VxWorks驱动移植至SylixOS总结

本文档描述了将VxWorks中的驱动源码快速移植至SylixOS中的方法,使用时需要结合SylixOS中的VxWorks兼容层实现。 1. 驱动注册与初始化 1.1 VxWorks中驱动注册与初始化 1.1.1 初始化函数 VxWo...

zhywxyy
2018/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器中的JVM资源该如何被安全的限制?

前言 Java与Docker的结合,虽然更好的解决了application的封装问题。但也存在着不兼容,比如Java并不能自动的发现Docker设置的内存限制,CPU限制。 这将导致JVM不能稳定服务业务!容器会杀死你...

xiaomin0322
21分钟前
3
0
mysql查询最近连续登录和累计登录

这条sql写了一天,百度无数,终于摸到点门路 需求是查询从当前日期向前推的连续登录,比如一个用户他今天登录了,昨天没登,连续登录为1 他昨天前天都登录了,今天没登录,连续登录为0 SELEC...

七月大人
23分钟前
1
0
常用的一些Vip解析

无广告解析推荐(排行不分前后) 黑米免费解析   https://www.myxin.top/jx/api/?url= 随缘免费解析   http://www.syhbyl.tw/jx/api/?url= 快快免费解析   http://jx.kkqtv.com/jx/...

chenhongjiang
23分钟前
2
0
Netty 整合spring bean注入失败。

1.Netty整合spring bean注入为null的问题,自己折腾了好久,试过各种方式(@Component,@PostConstruct)这些都不行。 2.最后发现了关键的问题就是添加的回调类(处理类)/初始化的类也必须由s...

轻量级赤影
27分钟前
7
0
消息中间件

本文大概围绕如下几点进行阐述: 为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何...

石日天
30分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部