使用Tracealyzer调试Zephyr中的优先级反转

2025-04-21

Percepio Tracealyzer已经在600多个支持Zephyr的开发板上完成了验证,可以帮助开发人员改进Zephyr应用的调试和性能分析。

Zephyr结构良好的构建系统和配置框架使得跨硬件平台的调试和跟踪变得更加容易。最新的测试表明,Tracealyzer与我们测试的649块电路板中的617块兼容。不兼容的主板大多有内存限制(可用于跟踪的内存少于32KB),或者是需要额外主机编译器配置的模拟系统。

开发板列表:https://docs.zephyrproject.org/latest/boards/index.html#

对于Zephyr开发者来说,如果你正在使用的开发板已在支持列表中,那么现在就可以使用Tracealyzer在基于时间轴的直观界面可视化系统运行行为,包括线程执行、CPU使用情况及内核事件。

在Zephyr中使用Tracealyzer

为Zephyr设置Tracealyzer跟踪很简单,在Zephyr应用中启用Tracealyzer快照跟踪的步骤如下:

• 确保硬件有足够的内存。为了有效跟踪,建议至少使用32KB。

• 修改Zephyr配置,在project.conf添加:

CONFIG_TRACING=y CONFIG_PERCEPIO_TRACERECORDER=y CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER=y CONFIG_PERCEPIO_TRC_START_MODE_START=y

• 如果内存紧张,可以减少RingBuffer的大小:

CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER_SIZE = 5120

• 构建并运行应用程序,Tracealyzer将收集分析数据,后续可以分析这些数据了解系统行为。

有关更详细的指南,可以查看Zephyr设置文档:https://percepio.com/getstarted/latest/html/zephyr.html#using-the-syscall-extension-zephyr-3-4-0-and-later。

用Tracealyzer调试

Zephyr中的优先级反转

在像Zephyr这样的实时系统中,一个常见的问题是优先级反转,因为低优先级的任务占用了高优先级任务需要的资源导致高优先级任务被阻塞。如果任务调度和同步行为不可见,很难检测到这个问题。

诊断优先级反转示例

在一个基于Zephyr的应用程序中,其中高优先级的DataProcessingTask任务应该立即运行,但意外地延迟了。低优先级的SensorTask持有互斥信号量,阻止了DataProcessingTask任务的执行。

使用Tracealyzer调试Zephyr中的优先级反转 (https://ic.work/) 技术资料 第1张

原则上,高优先级任务(上图的H)不应该被低优先级任务阻塞。在实践中,某些设计决策无论可能会导致这种情况发生,这种情况被称为优先级反转。

通过Tracealyzer跟踪调试

1 捕获跟踪数据:运行启用了Tracealyzer跟踪功能的应用程序,收集系统执行的快照信息。

2 分析执行时间轴:在Tracealyzer中打开跟踪文件并查看任务执行图。

3 识别阻塞依赖:使用Tracealyzer可视化工具查找DataProcessingTask任务正在等待的位置,并查看哪个低优先级任务正在占用资源。

4 确认优先级反转:如果低优先级任务(SensorTask)阻塞了高优先级任务(DataProcessingTask),检查是否启用了优先级继承机制。

5 解决问题

启用互斥信号量的优先级继承(在prj.conf中设置CONFIG_PRIORITY_CEILING=y)。

优化任务调度,减少阻塞时间。

考虑分解长时间运行的低优先级任务。

使用Tracealyzer,这种类型的分析变得简单明了,帮助用户快速查明和解决优先级反转问题。

使用Tracealyzer调试Zephyr中的优先级反转 (https://ic.work/) 技术资料 第2张

多任务软件系统在运行时的实际行为,取决于许多因素,比如任务和中断的时间、它们的相互作用和输入。凭借Zephyr的强大架构和我们验证的开发板支持,通过Tracealyzer跟踪工具,用户可以更好地了解Zephyr系统的运行时世界。

麦克泰技术代理Tracealyzer,具有丰富的RTOS分析软件与调试工具使用方面的知识和经验,欢迎咨询[email protected]

文章推荐

相关推荐

  • 小安派BW21 UNO从机

    作为一款本地AI图象识别开发板,BW21-CBV-Kit它能够独自运行目标识别模型。2.4GHz+5GHz的双频Wi-Fi,提供高性能的无线传输能 ...

    2025-05-21
  • IGBT模块吸收回路分析模型

    IGBT模块吸收回路分析模型 一、IGBT模块吸收电路的模型 尽管开关器件内部工作机理不同,但对于吸收电路的分析而 ...

    2025-05-21
  • BLDC电机的基本结构和控制方式

    来源:攻城狮原创之设计分享 直流无刷电机(Brushless DC Motor,BLDC)是一种基于电子换向技术的高效电机,具有长寿命 ...

    2025-05-21
  • 联通智家通通:聚四方守护之力,筑万家AI通途

    “神兽镇宅”,是深植于中国人心中的居家智慧。朱雀、玄武等神兽,站立在紫禁城之巅,也悬于普通百姓门上,寄托着镇守四方风雨 ...

    2025-05-21
  • FinFET与GAA结构的差异及其影响

    文章来源:老虎说芯 原文作者:老虎说芯 本文介绍了当半导体技术从FinFET转向GAA(Gate-All-Around)时工艺面临 ...

    2025-05-21
  • 一文详解球栅阵列封装技术

    文章来源:学习那些事 原文作者:前路漫漫 本文介绍了球栅阵列封装的结构、分类、应用和发展趋势。 概述 ...

    2025-05-21
  • 智能车电磁组——基本控制篇

    智能车电磁组——基本控制篇 前言 电磁车的控制比较简单,可以分为信号采集,舵机控制和电机控制三部分, ...

    2025-05-21
  • 低成本电源排序器解决方案

    绝大多数负载点DC-DC转换器可以将上一个转换器的电源就绪输出连接至下一个转换器的使能输入,实现上电排序。这种方法只适合 ...

    2025-05-21
  • 注入增强型IGBT学习笔记

    来源:星际浮尘 注入增强型IGBT 1、结构特点与典型工艺 1.1结构提出与发展 为了协调 ...

    2025-05-21
  • 解析RZ/N2L CANFD模块的缓冲区机制(3)

    在工业自动化、智能交通、机器人等领域,CANFD(CAN with Flexible Data-Rate)技术正逐步取代传统CAN,以适应更高的数据速 ...

    2025-05-21