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)都应该在早期和整个开发周期中使用,以提供有关嵌入式目标运行时行为的反馈。

审核编辑:郭婷

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

    关注

    5209

    文章

    20645

    浏览量

    336911
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11326

    浏览量

    225863
  • RTOS
    +关注

    关注

    25

    文章

    869

    浏览量

    123209
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于纳芯微NSUC1610的汽车执行器节点LIN OTA实现方案

    什么是 OTA?OTA(空中升级技术)是通过无线网络(如蓝牙、Wi-Fi、蜂窝网络)设备远程更新程序的一种技术,无需连接电脑或专用工具即可完成软件升级。
    的头像 发表于 03-10 13:53 1894次阅读
    基于纳芯微NSUC1610的汽车执行器节点LIN OTA实现方案

    3562 单板机 Linux 系统固化完全指南:从 SD 卡启动到 eMMC 永久部署

    本文创龙科技 3562 单板机系统固化操作指南,核心涵盖 SD 启动卡、升级卡制作,以及 eMMC 芯片系统固化与启动验证。文档详细说明专用工具使用、镜像烧录参数配置、多方式启动测试
    的头像 发表于 02-04 10:34 2110次阅读
    3562 单板机 Linux <b class='flag-5'>系统</b>固化完全指南:从 SD 卡启动到 eMMC 永久部署

    Linux系统性能调试工具—strace

    今天给大家分享一个linux内核自带的调试工具,该工具可用于查看和定位系统问题,进程运行过程探索,进行进程监控,对每个系统调用都可以监测,有助于我们优化
    的头像 发表于 01-30 17:03 2019次阅读
    Linux<b class='flag-5'>系统</b>性能<b class='flag-5'>调试工具</b>—strace

    汽车照明专用工具LucidShape CAA中的光导设计功能

    近年来,汽车内饰照明系统在豪华车中的应用已成为一种显著趋势。此类应用通过导光条元件在车内营造均匀的照度与氛围,从氛围灯到功能性照明,光导技术正在重新定义驾乘体验。凭借其均匀柔和的光线分布、灵活
    的头像 发表于 01-22 09:46 2149次阅读
    汽车照明<b class='flag-5'>专用工具</b>LucidShape CAA中的光导设计功能

    RTOS在嵌入式开发中的作用

    每个任务可以被认为是一个项目。通过RTOS提供的资源(队列、信号量等)来定义输入输出。将系统定义一个个的任务,可以更容易的部署更多开发人员到一个项目。 易于调试和验证
    发表于 12-26 07:53

    使用RTOS时需要注意的几点内容分享

    两个方面:内核和设备驱动器调试以及操作系统感知。 内核调试对设备驱动器的创建和支持以及内核强化很重要。在许多情况,处理RTOS的内核,需
    发表于 12-23 06:34

    RTOS Crash 问题全维度分析与解决指南

    RTOS Crash 问题全维度分析与解决指南 RTOS(实时操作系统)的Crash(崩溃)是嵌入式实时系统中最致命的故障之一,直接破坏系统
    发表于 12-08 03:56

    RFID工具柜如何帮制造企业降低工具损耗30%?

    在大型制造工厂的车间里,工具是生产人员的“武器”。然而,工具的领用、归还、清点、保养等一系列管理工作,却常常让班组长头疼不已。工具莫名丢失、借用超期不还、定期盘点停产、专用工具被误用…
    的头像 发表于 11-27 15:13 391次阅读

    基于睿擎派的工业FOC无刷电机控制系统与WEB推流监看系统| 技术集结

    项目背景及功能在小型自动化调试或简易设备控制场景中,无刷电机的速度调控与运行状态监看存在明显不便:传统方案下,电机转速调节需依赖现场专用工具连接调试,无法远程操作;设备运行画面、电机工作状态的查看也
    的头像 发表于 11-26 18:25 3495次阅读
    基于睿擎派的工业FOC无刷电机控制<b class='flag-5'>系统</b>与WEB推流监看<b class='flag-5'>系统</b>| 技术集结

    CAN总线远程调试工具在工程机械领域的创新应用

    本文提出采用 PKCAN-WIFI 无线应用工具实现 CAN 总线通信无线化的解决方案。通过分析该工具的技术特点和工作原理,结合工程机械实际应用场景,详细阐述了其在远程调试、程序下载、数据监控等方面
    发表于 10-17 15:52 0次下载

    PKCAN-WIFI无线应用工具在工程机械远程调试领域的创新应用

    针对工程机械领域CAN总线有线连接方式存在的调试不便、维护成本高等问题,本文提出采用PKCAN-WIFI无线应用工具实现CAN总线通信无线化的解决方案。通过分析该工具的技术特点和工作原理,结合工程机械实际应用场景,详细阐述了其在
    的头像 发表于 10-17 09:22 598次阅读
    PKCAN-WIFI无线应<b class='flag-5'>用工具</b>在工程机械远程<b class='flag-5'>调试</b>领域的创新应用

    全场景气密性检测仪:从「专用工具」到「智能平台」的技术跃迁

    工厂产线的应用这种多设备困境正是现代制造业面临的典型痛点。而全场景应用的气密性检测仪的出现,这个困境提供了系统性解决方案。一、技术边界的重新定义什么是真正的「全场
    的头像 发表于 09-08 11:31 628次阅读
    全场景气密性检测仪:从「<b class='flag-5'>专用工具</b>」到「智能平台」的技术跃迁

    调试工具:Eclipse调试工具栏与窗口的深入分析

    摘要 :在嵌入式系统开发领域,高效的调试工具链对于项目的成功实施具有决定性意义。本文聚焦于 Eclipse 调试工具栏与窗口的功能特性,深入剖析其在嵌入式开发调试过程中的关键作用。以厦
    的头像 发表于 07-07 11:32 1051次阅读
    <b class='flag-5'>调试工具</b>:Eclipse<b class='flag-5'>调试工具</b>栏与窗口的深入分析

    RT-Trace调试工具正式发布!

    嵌入式开发者打造的高性能调试工具。RT-Trace支持SWD/JTAG高速连接,搭载板载显示屏离线交互系统与WebUI实时监控平台,助力代码调试、性能分析、故障排查全流程
    的头像 发表于 06-18 12:02 1669次阅读
    RT-Trace<b class='flag-5'>调试工具</b>正式发布!

    Lauterbach TRACE32开发工具现在支持PX5 RTOS

    Lauterbach TRACE32开发工具现在支持PX5 RTOS。这里TRACE32工具支持包括对PX5 RTOS内部结构和数据的访问,使开发人员能够更深入地了解其应用程序的行为方
    的头像 发表于 06-12 16:38 1183次阅读