0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

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

3天内不再提示

如何处理RTOS系统中的时序问题

星星科技指导员 来源:嵌入式计算设计 作者:Dr. Johan Kraft 2022-06-29 14:29 次阅读

毫无疑问,当您开始在开发中使用实时操作系统 (RTOS) 时,会有一条学习曲线。您将在更高的抽象级别上工作,使用或多或少的并行任务而不仅仅是子例程,并且您将需要考虑您的任务应如何共享数据和处理器时间。您需要为这些任务分配运行时优先级,最好的解决方案是什么并不是很明显。最后但同样重要的是,您需要学习如何使用 RTOS 本身,例如用于控制任务和在它们之间进行通信的配置和 API 函数。

一旦你掌握了所有这些并且你正在编写你的代码,就到了下一个学习曲线的时候了——你现在也必须学习如何调试你的代码。

调试 RTOS 系统(通常使用抢占式多任务处理)与调试您自己编写所有代码的单线程“超级循环”系统有几个不同的原因,但我想说两个主要原因是

由于多个任务交互并竞争共享资源,软件行为可能会受到软件时序和 RTOS 调度行为的影响,而在源代码中是不可见的。

您不再直接控制程序流程——任务切换可能随时随地发生。

这些问题真的没有办法解决。您将不得不处理它们,因为您必须信任操作系统来安排您的任务和管理计时器。一些任务切换可能是可预测的,因此是已知的,但通常您不知道它们会在程序流的哪个位置发生。随着系统中任务/线程数量的增加,组合的数量也在增加——可能存在大量可能的执行场景,具有不同的时间和执行顺序,其中大多数都可以正常工作。但是,您的一位客户报告了“噩梦错误”,只有在条件合适时才会出现,您无法重现。

下面的边栏列出了一些典型症状,如果您有与 RTOS 相关的时序错误,您可能会看到这些症状。请注意,其中许多问题通常具有一定程度的随机性;问题有时会出现,但并非总是如此。

依赖于时间的错误很难重现或发现,尤其是因为大多数调试工具对多任务问题的支持很少。在我看来,大多数工具仍然专注于静态停止系统,而不是动态软件行为。相比之下,许多系统具有实时要求,并且无法停止调试。

RTOS 相关时序错误的一些典型症状

任务可以单独工作,但不能作为一个完整的系统

性能缓慢

系统锁定,或有时停止响应

系统看起来很脆弱——微小的变化会导致奇怪的错误

输出时序的随机变化

有时数据损坏或输出错误

随机崩溃/硬故障

除了寻找症状之外,您当然应该使用您拥有的任何工具以及它们提供的工具来检查您的 RTOS 和应用程序是否存在错误和不当行为。例如,您的 IDE 可能支持在调试期间轻松检查 RTOS 对象(有时通过插件),甚至可以分析任务的堆栈使用情况。RTOS 可以让您在较高级别测量 CPU 使用率,让您了解每个任务平均需要多少 CPU 时间。一些调试器可以在系统执行时实时呈现变量(“实时监视”),尽管这可能不适合快速变化的变量。

如果您想查看应用程序和 RTOS 内部实际发生的事情的可靠时间线,您需要能够在事件发生时记录事情的 RTOS 感知跟踪,以及可以帮助您理解跟踪信息的工具。

审核编辑:郭婷

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

    关注

    68

    文章

    10338

    浏览量

    206235
  • RTOS
    +关注

    关注

    20

    文章

    765

    浏览量

    118678
收藏 人收藏

    评论

    相关推荐

    减速机渗油问题如何处理

    电子发烧友网站提供《减速机渗油问题如何处理.docx》资料免费下载
    发表于 03-05 09:18 0次下载

    请问RTOS USBSetuPcb回调函数是在中断还是单独线程处理的?

    解决这个问题,我需要知道的是:USBsetuPcb 是如何处理的。 - > 在处理 USB Setup 请求时,我的 RTOS AppThread 是否中断(并停止了? 还是在 RTO
    发表于 02-23 06:10

    AD8302输入信号如何处理

    在使用AD8302的时候,芯片手册上描述输入信号为-60dBm~0dBm在50Ω的系统,转换过来就是223.61uV~632.46mV的电压范围。 请问下,1. 如何控制输入信号在AD8302的要求范围内呢? 2.当信号高于这个范围呢,如2V,该如
    发表于 12-08 06:06

    何处理MOS管小电流发热?

    何处理MOS管小电流发热?
    的头像 发表于 12-07 15:13 245次阅读
    如<b class='flag-5'>何处理</b>MOS管小电流发热?

    什么是串扰?该如何处理它?

    什么是串扰?该如何处理它?
    的头像 发表于 12-05 16:39 357次阅读
    什么是串扰?该如<b class='flag-5'>何处理</b>它?

    请问FreeRTOSGPIO模拟SPI延时如何处理

    FreeRTOS想使用GPIO模拟SPI与设备进行通讯,SPI传输速度要求在100K以上,FreeRTOS的延时不能实现微妙级别的延时。模拟时的gpio翻转延时如何处理
    发表于 11-10 07:56

    广播系统出现噪音、啸叫如何处理

    公共广播系统目前是一个各行各业都会有需求的系统,酒店、商场、公园、景点等场所都会用到。现实使用中,我们会发现有的广播系统是电声悦耳、自然流畅,但是有一些则带有些噪音、啸叫。面对这种情况,我们该如
    发表于 11-08 09:41 560次阅读
    广播<b class='flag-5'>系统</b>出现噪音、啸叫如<b class='flag-5'>何处理</b>?

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗?

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗? RTOS代表实时操作系统,专门为需要高可靠性和可预测性的系统设计。相比之下,裸金属或
    的头像 发表于 10-29 16:33 886次阅读

    红外测温原理是什么,stm32是如何处理的?

    红外测温原理是什么,stm32如何处理
    发表于 10-10 07:11

    调试TrustZone时,如何处理HardFault?

    调试TrustZone时,如何处理HardFault?
    的头像 发表于 09-27 16:33 352次阅读
    调试TrustZone时,如<b class='flag-5'>何处理</b>HardFault?

    RTOS的中断是怎么处理的?

    RTOS的中断是怎么处理
    发表于 09-22 06:06

    NANO芯片系统,其对应的AVDD,VREF等引脚该如何处理呢?

    NANO芯片系统,如果用不到ADC模数转换模块,其对应的AVDD,VREF等引脚该如何处理呢?可以悬空或直接接地吗?假使能悬空或直接接地,这样能节省一部分不必要的功耗吗?
    发表于 08-25 06:46

    时序约束出现时序违例(Slack为负数),如何处理

    时序约束出现时序违例(Slack为负数),如何处理
    的头像 发表于 07-10 15:47 3187次阅读

    基于RTOS的应用程序的五个最佳实践技巧

    的嵌入式系统使用 RTOS,而且随着系统时序要求变得越来越复杂,这个数字只会随着时间的推移而增加。在今天的文章中,我们将研究设计基于 RTOS
    的头像 发表于 07-07 16:49 556次阅读
    基于<b class='flag-5'>RTOS</b>的应用程序的五个最佳实践技巧

    请问传输ESPCONN_TIMEOUT如何处理

    我们必须在弱噪声环境中使用 ESP8266 模块 ,并且在传输过程我们经常遇到错误代码为 ESPCONN_TIMEOUT 的重新连接回调。我们尝试连接增益天线,但没有明显改善。 如何处理这个问题?
    发表于 05-15 08:37