1. TraceX 简介
Azure RTOS TraceX 是微软的主机分析工具,为开发人员提供实时系统事件的图形化视图,使他们能够可视化并更好地理解其实时系统的行为。借助 Azure RTOS TraceX,开发人员可以清晰地看到标准调试工具无法捕获的系统事件(如中断和上下文切换)的发生。
本文介绍如何使用 CUXpresso SDK 启动 TraceX 调试功能
硬件:MIMXRT1060-EVK 和 1 根 Micro-USB 线
软件:SDK_2_10_1_EVK-MIMXRT1060
2. 安装 TraceX
您可以通过在 Microsoft App Store 中搜索 TraceX 来获取 TraceX 应用,或者直接访问 TraceX 页面。随后按照弹出窗口中的说明安装 TraceX。
3. 在应用程序中启用跟踪功能
3.1 添加必要的预处理器符号
需使用 TX_ENABLE_EVENT_TRACE 宏定义激活依赖跟踪的代码该宏必须添加到编译器的预处理器部分此操作需同时针对应用程序本身及其链接的库文件执行(例如:ThreadX 库)
3.2 声明跟踪缓冲区
必须指定一个缓冲区区域用于存储运行时发生的跟踪事件,并进一步指示 ThreadX 跟踪子系统使用该缓冲区缓冲区可以是全局变量,如下例所示:
/*跟踪缓冲区*/
#ifdef TX_ENABLE_EVENT_TRACE
UCHAR trace_buffer[64000];
#endif
3.3 启用跟踪
必须在应用程序内部通过调用 tx_trace_enable() 显式启用跟踪功能可以通过添加以下代码来实现。
#ifdef TX_ENABLE_EVENT_TRACE
/*
* 使用全局“trace buffer”启用事件跟踪。
* 允许在注册表中最多有 30 个 ThreadX 对象。
*/
UINT status = tx_trace_enable(&trace_buffer, sizeof(trace_buffer), 30);
如果 (status != TX_SUCCESS)
{
for (; ; ) { }
}
#endif
建议在 tx_application_define() 内部启用跟踪功能。
3.4 编译
编译 ThreadX 库(编译后的库文件将位于 Debug 文件夹)。
成功构建和编译后,Debug/Release 目录中会出现一个新库。它的名称类似于 libevkimixrt1060_threadx_lib.a。
请将其重命名为 libthreadx.a,并复制到 evkmimxrt1060_threadx_demo 项目中的 azure-rtos/binary/threadx/mcux/ 目录下,替换原有文件。
替换 threadx_demo 项目中的 libthreadx.a 文件。
4 导出跟踪
4.1 跟踪导出功能的配置
跟踪导出功能由一组首选项控制,可通过“窗口”→“首选项”页面访问并修改这些设置。
4.2 跟踪导出按钮
暂停您的应用程序,Trace Export 按钮位于 Debug 视图的工具栏中,如下图所示。
4.3 导出跟踪
单击 “Trace Expert” 按钮后,将弹出模态对话框窗口。必须指定文件路径,然后单击“导出”按钮。导出的文件可在后续导入 Azure RTOS TraceX 工具中使用。
5. 使用 Azure RTOS TraceX 工具显示
在 Azure RTOS TraceX 中,我们可以打开导入的文件。
系统摘要行包含上下文摘要信息,其下方显示对应的事件摘要。
Azure RTOS TraceX 为所有已执行的上下文提供内置执行分析报告。
Azure RTOS TraceX 为当前加载的跟踪文件提供内置性能统计报告。
参考文档:
https://docs.microsoft.com/en-us/azure/rtos/