1 一种实现亚毫秒定时分辨率的RTOS新方法-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种实现亚毫秒定时分辨率的RTOS新方法

麦克泰技术 来源:麦克泰技术 2024-12-17 13:58 次阅读

你在使用实时操作系统(RTOS)时是否发现无法将任务调度或延迟精度降到毫秒以下?你可能不得不在RTOS之外编写大量应用代码。虽然这种方式可行,但这会让你怀疑应用程序是否满足其截止期限,是否可维护和可扩展。RTOS不应该能够管理整个应用程序的时间吗,不管这个时间是一秒还是一微秒?

对于嵌入式系统领域的开发和管理人员来说,平衡时间精度和能源效率可能是一项持续的斗争。随着应用的发展,无论是在汽车、物联网、医疗设备还是工业自动化领域,对精确定时控制的需求都在增长。虽然传统的RTOS解决方案在管理实时任务方面很有效,但在这两个关键领域往往存在不足。

1. 传统RTOS的不足

首先,传统RTOS有精度限制。基于滴答的系统不能提供超出滴答(Tick)间隔(如1毫秒)的时间粒度。这种限制影响了执行超精细定时操作的能力,例如精密传感器读数或先进机器人的高分辨率控制。事实上,如果不仔细,你甚至可能任务时序中注入抖动,从而破坏系统的实时性能!

其次,基于滴答的RTOS能效低!即使没有任务调度,周期系统滴答中断也会使CPU保持活动状态,从而导致能源浪费,这在电池供电和低功耗设备中尤为严重。虽然一些RTOS试图通过引入tickless省电模式来克服这个缺陷,但这些解决方案更多的是权宜之计,而不是完整的功能。

这些限制迫使开发人员采用效率低下的解决方案,例如轮询硬件计时器或使用特定于目标的技术来实现更高的分辨率和更低的功耗,这种方法使开发过程复杂化,降低了软件的可移植性和可维护性。

本文中,我们将探索一种新的机制来精确地调度低于一毫秒的任务,这种机制可以提高应用程序的实时性能,同时提高能效,其好处来自于利用周期精度定时的新RTOS实现。

2. 从基于滴答的调度到基于周期的调度

传统的RTOS使用周期性的系统滴答来跟踪时间和调度任务。例如,大多数RTOS,如FreeRTOS、Zephyr和embOS-Base,默认使用1毫秒的滴答间隔。这个间隔依赖于每毫秒产生一次中断的计时器。所有时间相关的操作(任务延迟、超时和软件计时器)都与滴答对齐。如果我们使用SEGGER SystemView这样的工具来记录和分析应用程序的运行时行为,将看到类似图1所示的内容。

98cfd856-b8ff-11ef-8732-92fbcf53809c.png

图1:使用周期滴答来跟踪系统时间的传统RTOS

如图所示,系统每隔一毫秒就会中断一次应用,如果系统处于睡眠状态并且没有其他的工作要做,它也会被唤醒以增加计数并返回睡眠状态!

基于滴答的设计限制了计时精度,并引入了延迟,因为不能以比滴答间隔更细的粒度调度任务,这是我在许多应用中遇到的一个问题,它迫使你思考RTOS之外的实现。

基于周期的调度通过用单次硬件定时器(single-shot hardware timer)代替周期滴答中断消除了这种约束。计时器只在需要时产生中断,而非每毫秒唤醒CPU,从而允许将事件调度精确到微秒或CPU周期。这种方法提高了精度,减少了CPU的活动,节约了能源。

让我们来看一个例子。考虑一个需要持续4.7毫秒的任务延迟。在拥有1毫秒滴答间隔的RTOS中,延迟要么提前结束(4毫秒),要么延长(5毫秒),具体取决于滴答计时。使用基于周期的调度可以实现精确的4.7毫秒延迟,因为它不再依赖于滴答间隔。

3. embOS-Ultra:高精度和高效率的技术解决方案

如果调查当今的RTOS市场,你会发现SEGGER的embOS-Ultra是唯一支持基于周期调度的RTOS。因此,我们将关注embOS-Ultra如何通过引入周期分辨率定时来解决精度和效率方面的挑战,以及这种创新方法如何改善应用。

让我们来分析一下embOS-Ultra是如何在不增加不必要复杂性的情况下解决精度和效率问题。

通过单次计时器提高能效

通过移除周期滴答,embOS-Ultra显著降低了CPU负载。即使没有待处理的工作,传统的RTOS也会在每个滴答唤醒CPU,这种行为增加了功耗,因为CPU必须保存其当前状态,处理中断,并恢复其状态,这些不必要的CPU周期消耗了能量。

embOS-Ultra的单次计时器仅在特定事件发生时唤醒CPU,使系统长时间处于低功耗状态。这一特性对于低功耗和电池供电的应用尤其有利,例如可穿戴设备或远程物联网传感器,在这些应用中,节省的每一点能量都将延长运行时间。然而,即使是连接到恒定电源的设备也可以通过降低其整体能量配置和减少对电网的需求而受益。

在许多微控制器架构中,计时器可以配置为各种模式。EmbOS-Ultra利用定时器计数到零或到指定值的模式,在需要时触发中断。这种灵活性使开发人员能够精确地控制时间事件,而不依赖于周期滴答。正如想象的那样,允许计时器自由计数用于调度,比计数为零后重置更有好处。

维护系统的长期稳定性

你可能会认为,虽然使用单个计时器来提供高分辨率、亚毫秒级的调度听起来很棒,但丢失系统滴答将破坏应用程序。好消息是它不会,embOS-Ultra使用两个硬件计时器。一个计时器用于长期连续运行而不产生中断。第二个计时器,即我们在前一节中讨论的单次计时器,用于任务调度。

这意味着没有复杂的算法在后台运行,试图确定自系统启动以来已经过了多少毫秒。诚实地说:我们大多数人都利用系统滴答来提供时间戳、计算过滤器和执行其他日常活动。如果从RTOS中删除它,我们的开发将变得更加困难。

添加第二个计时器似乎会增加系统的复杂性和能效,但事实并非如此。如今,大多数32位微控制器拥有多个计时器,而且与CPU相比,计数器使用的电流很少。使用第二计时器的权衡仍然确保我们最大限度地减少能耗,同时保持系统实时性能的长期稳定性。

4. 基于周期调度的应用

了解了周期调度如何工作后,我们来研究一个示例。SEGGER的网站上提供了一个live comparison示例(https://www.segger.com/products/rtos/embos/editions/embos-ultra/#live-comparison),vwin 滴答调度和周期调度行为。我建议尝试一下,获得一些实际操作经验。

Live comparison示例允许你通过print语句查看每秒产生了多少次滴答。测试应用包含两个任务:一个201毫秒的任务和一个50毫秒的任务。基于滴答的调度器,每秒1000个节拍。如果使用基于周期的调度来模拟相同的应用程序,则每秒只能获得24 - 25个节拍。

遗憾的是,对于模拟程序,无法使用SystemView来记录和分析应用程序行为,因此,我使用live comparison示例运行在开发板上来分析周期调度。结果如图2所示:

98e3c3de-b8ff-11ef-8732-92fbcf53809c.png

图2:图1所示的相同应用程序的基于周期调度实现

如果查看图2中分析窗口底部的计时差异,你将看到系统的滴答间隔不是固定的。只有在必要时才有一个滴答,在图2的底部可以看到,滴答之间有49.9毫秒的间隔,然后是16.9毫秒的延迟,以此类推。这是基于周期的计时!基于周期的调度应用程序每秒只有24 - 25个滴答,具体取决于任务的截止时限。

5. 使用基于周期的调度,同时保持向后兼容性

迁移到新的RTOS带来的风险和复杂性,可能是开发人员和管理人员非常关心的问题。embOS-Ultra通过在提供扩展功能的同时保持与现有API兼容来解决这个问题。

首先,对使用embOS-Base或其他滴答RTOS API的应用程序,可以在embOS-Ultra中继续发挥预期的作用。embOS-Ultra中保留了基于毫秒的计时功能,确保已有代码无需修改。如果使用的是embOS-Base,则API直接兼容。如果使用其它RTOS,你可能会有一天左右的时间将RTOS调用更新为embOS-Ultra。

其次,对于需要更高精度的开发人员,embOS-Ultra引入了扩展的API,例如用于微秒延迟的OS_TASK_Delay_us()或用于周期调度的OS_TASK_Delay_Cycles()。这些函数与传统API调用共存,允许开发人员在不修改整个代码库的情况下逐步采用高级功能。

让我们来看一个例子。假设我们想每1,000,000个周期向终端发送一次打印“Hello World!”,我可能会用下面的语法创建一个名为Hello的RTOS任务:

98f6ffe4-b8ff-11ef-8732-92fbcf53809c.png

OS_TASK_Delay_Cycles以周期方式指定了任务挂起操作的最小时间间隔,因此,当调用OS_TASK_Delay_Cycles时,如果系统周期计数为1,000,000,则100万周期的延迟将在系统周期计数为2,000,000时到期。

注意,作为开发人员,你可以控制单个周期所代表的时间间隔。它可以是单个CPU周期,也可以是更长的时间,这取决于你如何为使用的计时器配置时钟分频器。好消息是,SEGGER为各种微控制器提供了许多移植实现,所以你不必自己编写这些;只有当默认值不能满足需要时,才需要知道如何通过API来调整。

这种双重计时方法意味着工程师不必在传统实现和高精度之间做出选择,他们可以在同一应用中同时使用这两种方法。无论是从embOS-Base还是其他基于滴答的系统(如CMSIS-RTOS)迁移,开发人员都可以很方便的使用embOS-Ultra,因为必要的应用更改很小且简单。

6. 下一步工作

基于周期的调度代表了一种技术进步,它解决了开发人员和管理人员在当今嵌入式系统中面临的核心挑战,在实现微秒精度的同时最大限度地提高能效。通过消除传统的系统滴答,并提供灵活的、基于周期的方法,embOS-Ultra提供了一种精确、节能且与现有RTOS设置兼容的解决方案。

基于周期的调度为希望在没有复杂迁移风险的情况下提高系统的性能和能源配置的嵌入式专业人员提供了一种实用而先进的替代方案。你可以通过下列步骤了解更多关于周期调度的信息

首先,查看embOS-Ultra RTOS手册(https://www.segger.com/downloads/embos/UM01076_embOS_Ultra.pdf),它包含了许多示例,描述了高精度和周期调度如何工作。

接下来,可以下载并试用基于SEGGER的示例仿真项目(https://www.segger.com/products/rtos/embos/editions/embos-ultra/#live-comparison),你可以使用它来测试embOS-Base和embOS-Ultra之间的差异,甚至可以在开发板上尝试。

最后,确认了更精确的计时和节能的好处后,即可在嵌入式系统采用基于周期计时功能了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119585
  • 应用程序
    +关注

    关注

    37

    文章

    3264

    浏览量

    57677

原文标题:一种实现亚毫秒定时分辨率的RTOS新方法

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一种降低VIO/VSLAM系统漂移的新方法

    本文提出了一种新方法,通过使用点到平面匹配将VIO/VSLAM系统生成的稀疏3D点云与数字孪生体进行对齐,从而实现精确且全球致的定位,无需视觉数据关联。所提
    的头像 发表于 12-13 11:18 119次阅读
    <b class='flag-5'>一种</b>降低VIO/VSLAM系统漂移的<b class='flag-5'>新方法</b>

    HDMI接口支持哪些视频分辨率

    支持最大分辨率4K(3840x2160)@60Hz。与HDMI 1.4相比,HDMI 2.0在4K分辨率下的刷新提高了倍,达到每秒60帧,提供更流畅的视频体验。 也支持1080p
    的头像 发表于 11-27 14:14 874次阅读

    什么是高分辨率示波器?它有哪些优势?

    分辨率示波器是一种在信息与系统科学相关工程与技术领域中广泛应用的科学仪器,其设计旨在提供更高的信号分辨率和更精细的信号分析能力。以下是对高分辨率示波器的详细解析,包括其定义、优势以及
    的头像 发表于 08-08 11:49 940次阅读

    一种无透镜成像的新方法

    使用OAM-HHG EUV光束对高度周期性结构进行成像的EUV聚光显微镜 为了研究微电子或光子元件中的纳米级图案,一种基于无透镜成像的新方法可以实现近乎完美的高分辨率显微镜。 层析成像
    的头像 发表于 07-19 06:20 367次阅读
    <b class='flag-5'>一种</b>无透镜成像的<b class='flag-5'>新方法</b>

    用于波长分辨率的新型衍射成像仪

      研究人员提出了一种对相位和振幅物体进行波长分辨率成像的新方法。他们的技术依靠带有固体浸透层的衍射编码和解码来恢复与物体波长特征相对应
    的头像 发表于 06-28 06:32 210次阅读

    伺服编码器分辨率是什么意思

    。 伺服编码器分辨率的概念 伺服编码器是一种用于测量电机轴或负载位置和速度的传感器。它通过将机械位置转换为电信号,为伺服控制系统提供反馈信息。编码器的分辨率是指它能够检测到的最小角度或位置变化,通常以脉冲数或位表
    的头像 发表于 06-17 11:16 898次阅读

    只用STM32的RTC的话,如何读取到分辨率毫秒的时刻?

    设备要记录某个事件发生时的时刻,但如果只用STM32的RTC的话,如何读取到分辨率毫秒的时刻,大概看了下RTC的资料,基本上都是计时到1秒。
    发表于 05-10 06:48

    研究人员发现提高激光加工分辨率新方法

    通过透明玻璃聚焦定制激光束可以在材料内部形成个小光斑。东北大学的研究人员研发了一种利用这种小光斑改进激光材料加工、提高加工分辨率方法。 他们的研究成果发表在《光学通讯》(Optic
    的头像 发表于 04-18 06:30 336次阅读
    研究人员发现提高激光加工<b class='flag-5'>分辨率</b>的<b class='flag-5'>新方法</b>

    EVAL_PASCO2_SENSOR为什么无法从较低的分辨率高速获得更高的分辨率

    捕获,同时高速传输较低分辨率(640x480,1280x720,1920x1080)时,静止请求被触发,它正在从一种分辨率转移到另一种分辨率
    发表于 02-22 07:58

    台阶仪:埃级垂直分辨率,新材料纳米加工的测量利器!

    台阶仪埃级垂直分辨率能够实现纳米级别的测量和分析,仪器具备出色的精确性和稳定性。在纳米加工领域,台阶仪不仅能准确评估材料的表面形貌和结构,同时也为纳米加工过程的控制和优化提供了可靠的依据。利用台阶
    发表于 02-20 09:11 0次下载

    台阶仪:埃级垂直分辨率,领跑新材料纳米加工的测量利器!

    台阶仪具备埃级垂直分辨率,可实现纳米级别测量和分析。在纳米加工领域,台阶仪能评估材料表面形貌和结构,优化纳米加工过程。其线性可变差动电容传感器具有高分辨率,可测量蚀刻、溅射等多种工艺
    的头像 发表于 02-19 13:49 642次阅读
    台阶仪:<b class='flag-5'>亚</b>埃级垂直<b class='flag-5'>分辨率</b>,领跑新材料纳米加工的测量利器!

    镜头分辨率简述

    分辨率可以从显示分辨率与图像分辨率两个方向来分类。
    的头像 发表于 01-15 11:12 914次阅读

    浅谈相机的图像分辨率

    谈到显微成像系统,常常会用分辨率来评价成像能力的高低,那分辨率到底指的是什么,又怎样计算呢?其实对于个特定的显微成像系统,分辨率要从两个方面来考虑,
    的头像 发表于 01-09 09:54 1766次阅读
    浅谈相机的图像<b class='flag-5'>分辨率</b>

    adc电路的分辨率怎么算

    多个因素,包括ADC的位数、参考电压、信号噪声等。下面将详细介绍这些因素对分辨率的影响,并给出计算分辨率的示例方法。 首先,ADC的位数是最主要的影响因素之。位数越高,
    的头像 发表于 01-04 15:23 7057次阅读

    有什么方法可以进步提高AD7714的分辨率啊?

    级放大再加给AD7714时,测得人分辨率还要低些。由于是用干电池得到AD7714的输入信号,该信号相对来说很稳定,而且板上的噪声也不是太大。请问各位大虾,还有什么方法可以进步提高A
    发表于 12-25 06:33