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

审核编辑:郭婷

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

    关注

    5186

    文章

    20146

    浏览量

    328794
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11216

    浏览量

    222930
  • RTOS
    +关注

    关注

    25

    文章

    862

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    【干货分享】RT-Trace国产调试工具 | 技术集结

    专为嵌入式开发者打造的一款高性能、多功能的调试工具。它集成了实时系统跟踪、数据监控、GDB远程调试、Flash程序烧录、虚拟终端等多种功能于一体,支持通过WebU
    的头像 发表于 09-16 08:07 571次阅读
    【干货分享】RT-Trace国产<b class='flag-5'>调试工具</b> | 技术集结

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

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

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

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

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

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

    施工安全系类半导体晶圆制造高架地板开孔-江苏泊苏系统集成有限公司

    施工安全系类半导体晶圆制造高架地板开孔-江苏泊苏系统集成有限公司1,使用专用工具打开高架地板2,打开高架地板前应设置硬围护(钢性),围护上悬挂相应的安全警示标识并配置专职监护人3,对照《高架开孔作业
    的头像 发表于 06-13 14:36 712次阅读
    施工安全系类半导体晶圆制造高架地板开孔-江苏泊苏<b class='flag-5'>系统</b>集成有限公司

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

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

    如何在Eclipse ThreadX RTOS中集成SystemView

    SEGGER实时软件分析工具SystemView已经在ThreadX v6.4.2上进行了测试。SystemView从v3.60c版本支持Eclipse ThreadX(Azure RTOS),用户
    的头像 发表于 05-06 17:11 1171次阅读

    Segger RTT调试工具的使用方法

    上一期已经跟着小编介绍的安装步骤,相信大家都已经开始使用了Segger Ozone调试工具。那么今天小编继续趁热打铁,给大家介绍另一个Segger推出的调试辅助工具Segger RTT。
    的头像 发表于 03-28 14:21 2690次阅读
    Segger RTT<b class='flag-5'>调试工具</b>的使用方法

    使用工具套件2020.2从ncappzoo运行模型和演示OpenVINO™报错怎么解决?

    使用工具套件 2020.2 从 ncappzoo 运行模型和演示OpenVINO™报错
    发表于 03-05 10:22

    ADC的静态指标有专用的分析工具吗?

    请问:ADC的静态指标有专用的分析工具吗?该指标很少在评估ADC指标时使用,是否该指标不重要,应用中什么情况下需要评估该指标? 另外ADC的SNR = 6.02*N + 1.76 +10*log10(fs/2BW) 当被采样信号为单音时 该BW
    发表于 02-08 08:13

    调试TCP协议连接的常用工具

    在网络通信中,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。调试TCP连接问题对于网络工程师和开发者来说是一项必备技能。 1. 网络抓包工具 1.1 Wireshark
    的头像 发表于 01-22 09:59 5154次阅读