下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

Legacy 跟踪实用程序

[本页面记录了 legacy 跟踪实用程序,此实用程序已从 FreeRTOS V7.1.0 中删除,用户会发现新版 Trace Hook 宏更容易使用,功能也更强大。]

您可以使用跟踪可视化实用程序检查 RTOS 活动。

该实用程序记录向任务分配微控制器处理时间的顺序。

要使用该实用程序,则在编译应用程序时,必须在 FreeRTOSConfig.h 中将 configUSE_TRACE_FACILITY 宏定义为 1。有关详细信息,请参阅 RTOS API 文档中的配置部分。

通过调用 vTaskStartTrace() 开始跟踪并调用 ulTaskEndTrace() 结束跟踪。如果缓冲区已满,将自动结束跟踪。

已完成的跟踪缓冲区可以存储到磁盘进行离线检查。DOS/Windows 实用程序 tracecon.exe 将存储的缓冲区转换为一个以制表符分割的文本文件。该文件可以在电子表格应用程序中打开和查看。

下方展示了从 AMD 186 演示应用程序收集的 10 毫秒输出示例。x 轴显示经过的时间,y 轴显示正在运行的任务数。

trace.gif

每个任务在创建时会自动分配一个编号。vTaskList() 可用于获取分配给每个任务的编号以及其他一些实用信息。执行演示应用程序时,vTaskList() 返回如下信息,其中:

  • Name - 任务创建时给定的名称。 请注意,演示应用程序会 创建多个特定任务的实例。
  • State - 显示任务的状态。 包括 'B'(阻塞)、'R'(就绪)、'S'(暂停)或 'D'(删除)。
  • Priority - 任务在创建时给定的优先级。
  • Stack - 显示任务堆栈的高水位线。 表示任务生命周期内可用免费堆栈的最小数量 。
  • Num - 自动分配给任务的编号。

log.gif

在此示例中,可见任务 6、7、8 和 14 均以优先级 0 运行。因此,它们在与其他优先级为 0 的任务(包括闲置任务)之间使用时间切片。任务 14 从队列读取消息(请参阅演示应用程序中的 BlockQ.c)。这样会释放队列中的空间。任务 13 在等待可用空间时受阻,因此目前处于唤醒、发布消息、再次受阻的状态中。

注意:在当前实施中,跟踪的时间分辨率等于滴答频率。上下文切换频率可能高于系统滴答频率(例如当任务受阻时)。此时,跟踪将显示已发生的上下文切换,并准确显示上下文切换的顺序。然而,在系统滴答之间发生的上下文切换的时间却无法准确记录。通过使用免费的运行定时器,您可以轻松修改移植,以提高时间戳分辨率。






Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.