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

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

3天内不再提示

专用工具为调试基于RTOS的系统设计

星星科技指导员 来源:嵌入式计算设计 作者:Jean Labrosse 2022-06-30 10:04 次阅读

死锁:

死锁(又名致命拥抱)是一种情况,其中(至少)两个任务都在不知不觉中等待另一个拥有的资源。死锁可能不会立即发生,因为很大程度上取决于两个任务何时需要彼此的资源。如下图所示,μC/Probe 的内核感知屏幕有一列显示每个任务执行的频率(即任务由 RTOS 切换的频率)。您可以通过监视此列来检测死锁,并注意您期望运行的任何任务是否实际上正在运行。换句话说,如果计数停止(μC/Probe 在 CPU 运行时更新这些计数器),那么您可能检测到死锁。但是,对于这种情况,您还会注意到至少有两个任务停止计数。您可能不需要使用像 μC/Probe 这样的工具来检测死锁,因为在任何情况下,您都应该注意应用程序中这些任务的锁定行为。但是,该工具使其更加明显。

poYBAGK9BMCAOxzlAAIkf9udrEY752.png

您可以通过以下方式避免死锁:

总是获取所有需要的资源,总是以相同的顺序获取它们并以相反的顺序释放它们。

在 RTOS API 调用上使用超时以避免永远等待资源可用。确保检查来自 RTOS API 的返回错误代码,以确保您对所需资源的请求确实成功。

饥饿:

当高优先级任务消耗所有 CPU 的带宽时,就会发生饥饿,为低优先级任务留下很少或没有 CPU 时间。饥饿的影响的特点是响应能力和产品功能的下降,例如嵌入式目标的显示更新缓慢、通信堆栈中的数据包丢失、操作员界面迟缓等。除了解决这些问题之外,您几乎无能为力至:

优化占用大部分 CPU 带宽的代码。

提高 CPU 的时钟速度。由于其他系统考虑,这很少是一种选择。

选择另一个 CPU。这也很少是一种选择,尤其是在开发周期的后期。

pYYBAGK9BMiARRRcAAPKnYNbEXI309.png

监控任务和 ISR 执行时间

了解任务和 ISR 的执行时间对于帮助基于 RTOS 的系统分析(例如速率单调分析 (RMA))通常很有用。具体来说,通过这些信息,您可以确定是否所有时间紧迫的任务都可以按时完成,并帮助您为任务分配优先级。不幸的是,这些信息只有在系统设计和运行后才真正准确和可用。换句话说,代码的实际执行时间通常要在实际目标上执行时才能准确知道。然而,一旦可用,任务和 ISR 执行时间对于确认系统设计期间所做的假设非常有用。

SystemView 提供任务和 ISR 的最小/最大执行时间,如下面的屏幕截图所示。

pYYBAGK9BNSASUkoAAMPHJBNBk8284.png

1 -上下文窗格中 的Max Run Time列显示所有任务和 ISR 的最大执行时间。在SysTick(即tick ISR)的情况下,最长的执行时间是0.5488 ms。我们可以通过搜索事件 #4016155 来确定何时(及时)发生了这个较长的执行时间。您只需从 Go 菜单中选择 Go to event 。.. 并键入 4016155,然后按 Enter。

2 - 事件窗口显示这对应于 ISR 出口。事实上,这是有道理的,因为只有在 ISR 退出时才知道 ISR 的最大执行时间。

3 - 双击事件窗口中显示事件 #4016155 的行会强制时间轴窗口显示该事件。可以看出,SysTick 的执行时间比其他执行时间要宽。

在大多数情况下,您不需要找到(及时)任务或 ISR 的最大执行时间发生在哪里,尤其是当您仅将该信息用于 RMA 时。但是,在某些情况下,您可能需要找出执行时间比预期或预期长得多的原因。不幸的是,SystemView 可能无法提供关于发生这种情况的原因的额外线索。您可能希望在此处使用代码执行跟踪工具(例如 Segger 的 J-Trace)并检查 ISR 在事件 #4016155 之前执行的代码。

测量用户代码的执行时间

有很多方法可以测量代码执行时间。一种方法是使用具有跟踪功能的调试探针。您只需运行代码、查看跟踪、计算增量时间(通常是手动)并将 CPU 周期转换为微秒。不幸的是,跟踪为您提供了一个执行实例,您可能需要进一步查看跟踪捕获以找到最坏情况下的执行时间。这可能是一个乏味的过程。另一种方法是检测您的代码并在代码的不同位置拍摄可用的自由运行计数器的快照,并计算快照读数之间的差异。这实际上在嵌入式计算设计[7]上发表的一篇论文中有所描述对于 Cortex-M MCU,但该概念同样适用于其他目标。该论文提供了 API 来测量经过的时间。您只需将要测量的代码包装如下:

elapsed_time_start(n);

// 测量代码

elapsed_time_stop(n);

其中“n”指定“n”个 bin(0 到 n-1)之一,其中最小和最大执行时间保存如下:

elapsed_time_tbl[n].min

elapsed_time_tbl[n].max

在 Cortex-M 的情况下,执行时间以 CPU 时钟频率单位保存。

如下图所示,您可以使用 Micrium 的 μC/Probe 轻松显示以微秒为单位的结果。μC/Probe 允许对数字进行缩放,在这种情况下,需要根据所用评估板的 CPU 时钟频率进行调整。

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzVjZDlkYzU1MWMzYTQucG5nJnZlcnNpb249MDAwMCZzaWc9YjI3ZDQzYTI3YWE3NjkxMDJiOGExMmZiYTNlOWE4NzU253D

概括

IDE 中内置的调试器通常不足以调试基于 RTOS 的实时系统。

幸运的是,有专门为调试基于 RTOS 的系统而设计的专用工具,但开发人员通常不知道这些工具。这些工具之一是 Segger 的 SystemView ,它在时间线上显示 ISR 和任务,并收集运行时统计信息,例如最小和最大执行时间、ISR 和任务之间的关系、CPU 负载等等。

另一个可以补充 SystemView 的工具是 Micrium 的 μC/Probe ,它是一种通用工具,允许开发人员在不干扰 CPU 的情况下可视化和更改正在运行的嵌入式目标的行为。μC/Probe 在裸机或基于 RTOS 的应用中同样适用。对于基于 RTOS 的应用程序,μC/Probe 包括非侵入式实时内核感知以及 TCP/IP 堆栈感知。两种类型的工具(SystemView 和 μC/Probe)都应该在早期和整个开发周期中使用,以提供有关嵌入式目标运行时行为的反馈。

审核编辑:郭婷

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

    关注

    5062

    文章

    18990

    浏览量

    302436
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10816

    浏览量

    210935
  • RTOS
    +关注

    关注

    21

    文章

    809

    浏览量

    119378
收藏 人收藏

    评论

    相关推荐

    Kali Linux常用工具介绍

    Kali Linux 虚拟机中自带了大量渗透测试工具,涵盖了信息收集、漏洞利用、口令破解、漏洞扫描等多个方面。 以下是按分类简要介绍一部分常用工具的使用方法: 使用方法只能当做参考,**详细
    的头像 发表于 11-11 09:29 167次阅读

    TCP&UDP调试工具

    TCP&UDP调试工具
    发表于 10-30 10:41 1次下载

    MODBUS调试工具(modscan32)

    MODBUS调试工具(modscan32)
    发表于 10-24 10:39 0次下载

    freertos和rtos区别是什么

    FreeRTOS 和 RTOS(实时操作系统)是两个不同的概念,但它们之间有紧密的联系。FreeRTOS 是一个特定的开源实时操作系统,而 RTOS 是实时操作
    的头像 发表于 09-02 14:18 874次阅读

    RTOS的特性和类型

    实时操作系统RTOS)是一种可运行实时计算应用程序的软件平台,用于处理具有明确时间约束的事件和数据。与通用操作系统(GPOS)不同,RTOS必须在有限的硬件资源上调度应用程序之间的处
    的头像 发表于 08-20 11:29 473次阅读

    简单认识RTOS实时操作系统

    RTOS(Real Time Operating System,实时操作系统)是一种专门设计用于在严格时间限制内处理任务的操作系统。它以其高实时性、多任务处理能力和资源管理能力在工业自动化、医疗设备、航空航天、汽车电子等众多领域
    的头像 发表于 08-20 11:20 2220次阅读

    使用cmsis-dap烧录器对芯片cy8c4148azi-s455进行烧录,一直失败的原因?

    我使用的烧录器是通用型的cmsis-dap烧录器,可以对6系芯片进行烧写,但是这个芯片为什么一直出错,是工具必须专用工具么?
    发表于 07-24 06:07

    远程抄表及能耗管理系统

    准确性和质量,更为环保节能战略的制订提供了强大的专用工具。2.功能特点2.1实时监控系统远程抄表系统能实时获取能源应用情况,不论是电力工程、水、气或是供热,都可以具体
    的头像 发表于 06-15 15:00 276次阅读
    远程抄表及能耗管理<b class='flag-5'>系统</b>

    请问CMSIS-RTOS怎么调试

    如果用的是MDK的RTX组件,调试倒是很简单,问题是用CUBEMX生成的CMSIS-RTOS就不知道有什么好办法调试了。 各位有什么好的方法
    发表于 05-14 06:40

    HarmonyOS开发案例:【生活健康app之编写通用工具类】(5)

    本节将介绍日志打印、时间换算等通用工具类的编写和使用,工具类可以简化应用代码编写和业务流程处理。
    的头像 发表于 05-11 09:58 497次阅读
    HarmonyOS开发案例:【生活健康app之编写通<b class='flag-5'>用工具</b>类】(5)

    如何正确安装精密M8航空插头3芯

    德索工程师说道在开始安装之前,需要准备一些专用工具和原材料,如电源插头、屏蔽电缆、助焊膏、医用镊子、锡线、剥线钳、电铬铁、热缩管、热风焊枪等。此外,还需要确保工作环境干净、整洁,避免灰尘和杂质进入连接器内部。
    的头像 发表于 04-08 10:52 1042次阅读
    如何正确安装精密M8航空插头3芯

    什么是CAN总线调试工具调试的内容主要包括哪几个方面?

    CAN总线调试工具是用于对CAN总线进行调试和故障排除的设备或软件工具,它们具有高速数据捕获能力、数据过滤和触发功能,以及用于解析和显示CAN帧的软件界面。
    的头像 发表于 04-03 11:23 986次阅读

    全志R128系统RTOS使用说明

    重置 CPU,查看输出。 这里可以看到 M33 核心运行频率 192MHz,DSP 运行频率 400MHz,C906 运行频率 480MHz 系统调试命令help code"
    发表于 01-05 10:22

    脚本调试工具有哪些?脚本调试工具怎么用?

    脚本调试是软件开发过程中非常重要的一环,它能帮助开发者快速定位并解决代码中的错误。大多数编程语言都提供了各种各样的脚本调试工具,本文将介绍一些常见的脚本调试工具以及它们的基本使用方法。 GDB
    的头像 发表于 12-01 14:40 803次阅读

    什么是实时操作系统(RTOS)

    实时操作系统RTOS)是一种专为实时应用程序设计的操作系统。实时应用程序需要在特定时间内做出预测的响应,因此 RTOS 专注于提供对时间约束的强调,以确保
    的头像 发表于 11-23 17:14 5513次阅读