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

strongerHuang 2024-12-16 08:20
关注+星标公众,不错过精彩内容
来源 | 麦克泰技术

你在使用实时操作系统(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所示的内容。

图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),模拟滴答调度和周期调度行为。我建议尝试一下,获得一些实际操作经验。

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

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

图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任务:

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手册(https://www.segger.com/downloads/embos/UM01076_embOS_Ultra.pdf),它包含了许多示例,描述了高精度和周期调度如何工作。


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

------------ END ------------



●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程


关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

点击“阅读原文”查看更多分享。

strongerHuang 作者黄工,高级嵌入式软件工程师,分享嵌入式软硬件、物联网、单片机、开发工具、电子等内容。
评论
  • 一、引言在数字化时代,芯片作为现代科技的核心,其制造过程却常被视作神秘的黑箱。菊地正典的《大话芯片制造》为我们揭开了这层神秘的面纱,以通俗易懂的方式,全面系统地介绍了芯片制造的各个环节。作为一名电子信息技术专业的教育工作者,我深感这本书不仅为学生提供了宝贵的知识资源,也让我对芯片制造及其在现代社会中的作用有了更深刻的理解。二、生活中的芯片印记芯片的影响渗透到我们日常生活的每一个角落。从智能手机的闹钟唤醒,到交通卡的便捷支付,再到智能家居的智能化功能,芯片以其强大的运算和处理能力,为我们的现代生活
    月光 2024-12-16 11:52 37浏览
  •        霍尔传感器是一种基于霍尔效应的传感器。霍尔效应指的是当通过一个导体的电流受到外部磁场的影响时,导体内部将会产生一种电场,使得在导体两端的电势差发生变化,这种电势差变化称为霍尔电势差。利用这种现象,可以设计出一种可以测量磁场强度和方向的传感器,即霍尔传感器。  霍尔传感器分为线型霍尔传感器和开关型霍尔传感器两种。  (一)开关型霍尔传感器由稳压器、霍尔元件、差分放大器,斯密特触发器和输出级组成,它输出数字量。开关型霍尔传感器还有一种特
    锦正茂科技 2024-12-14 10:58 58浏览
  • 光耦合器是一种重要的电子元件,其在电子信号隔离和传输中的作用不可替代。自20世纪60年代首次被研发以来,光耦合器经历了从基础隔离器件到高性能元件的不断演化,在现代电子设备中占据了重要地位。本文将深入探讨光耦合器的发展历程、技术特点以及在当今科技领域中的广泛应用。光耦合器的诞生背景光耦合器的诞生源于20世纪60年代,为了解决电子信号在不同电路之间传输时的隔离问题,科学家们设计了一种基于光信号传递的全新器件。光耦合器通过发光二极管(LED)将电信号转化为光信号,再由光敏器件接收并重新转换为电信号,从
    腾恩科技-彭工 2024-12-13 16:18 42浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-13 23:20 56浏览
  • 家用国产固态继电器(SSR)已成为各行各业的基石,性能可靠、设计紧凑、效率高。这些先进的开关设备取代了传统的机电继电器,具有静音运行、使用寿命更长、可靠性更高等诸多优点。家用SSR专为从工业自动化到家用电器等各种应用而设计,展示了本地制造商的独创性和竞争力。国产固态继电器特点和优势家用SSR采用半导体技术制造,与传统继电器相比,具有很强的耐磨性。主要特点包括:静音无振动运行:SSR使用半导体元件进行开关,消除了机械噪音。响应时间快:是工业控制系统中高速开关的理想选择。耐用性:没有移动部件,即使在
    克里雅半导体科技 2024-12-13 16:49 42浏览
  • 概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实却是更多的问题出现当在Cyclone 10 GX使用和Cyclone V同样策略实现TDC的时候。 本文主要记录在Cyclone 10 GX器件上实现TDC时的探索,并为后续TDC设计、测试等展开前期研究。Cyclone 10 GX ALM结构 如图1所示,Cyclone 10 GX器件的ALM结构
    coyoo 2024-12-14 17:15 55浏览
  • 串口调试助手软件:XCOM 也是一款专为嵌入式开发和硬件调试设计的强大工具,如正点原子串口调试助手 XCOM V2.6。这款软件支持多种串口参数配置,满足不同开发需求,广泛应用于嵌入式系统开发、硬件调试以及电子爱好者的项目开发中。XCOM在嵌入式开发和硬件调试中的作用主要体现在以下几个方面: 1. 串口通信测试:XCOM作为一款强大的串口调试工具,允许用户通过计算机的串口进行数据的发送与接收,从而实现对串口通信的测试。这对于验证硬件设备的通信协议、确保数据传输的正确性至关重要。 2. 数据发
    丙丁先生 2024-12-15 11:56 58浏览
  • 在现代软件开发领域,效率和可靠性是企业在竞争中取胜的关键。本文将深入探讨 ANA Systems 如何通过引入业界领先的 CI/CD 平台——CircleCI,克服传统开发流程的瓶颈,实现开发运营效率的全面提升。同时,本文还将详细解析 CircleCI 的核心优势,包括其强大的自动化功能、广泛的工具整合能力,以及为企业量身定制的支持服务,揭示其如何助力 ANA Systems 在「新一代国内旅客项目」中脱颖而出。这一案例将为企业优化开发流程、提升竞争力提供重要的实践参考。ANA Systems
    艾体宝IT 2024-12-16 16:44 34浏览
  • 霍尔传感器的原理        霍尔传感器是一种固体的传感器,其输出电压与磁场强度成比例。顾名思 义,这种器件是依赖于霍尔效应原理工作的。霍尔效应原理是在导体通电 和加有磁场的情况下,在导体的横向 上会产生电压。电子(在实践中多数载流子最常被使 用)在外部电场的驱动下会产生“漂移”,当暴露于磁场中时,这些运动 的带电粒子会受到一个垂直于电场和 磁场的力的作用。这个力会让导体的边缘充电,一边为正,一边为负。边
    锦正茂科技 2024-12-14 11:41 50浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-14 20:56 60浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦