0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Tracealyzer的流模式来跟踪ThreadX应用

我快闭嘴 来源:麦克泰技术 作者:麦克泰技术 2022-09-16 11:14 次阅读

Tracealyzer是Percepio 公司开发的一款用于RTOS嵌入式软件系统的可视化跟踪工具,提供了30多种相互关联的可视化运行时行为视图,本文将介绍如何使用Tracealyzer的流模式来跟踪ThreadX应用。

添加Tracealyzer跟踪记录器库文件

使用Tracealyzer首先需要在工程中添加用于ThreadX的跟踪记录器库文件,包括源码,头文件、配置文件等。这些文件在Tracealyzer的安装目录下可以找到,默认的保存路径可以参考:C:Program FilesPercepioTracealyzer 4ThreadXTraceRecorder。

使用流模式,还需要添加流模式端口所用到的文件,以JLink RTT方式为例需要例如添加记录器库streamports下的Jlink_RTT文件夹中的文件。本文介绍时使用的是STM32CubeIDE,所有文件添加完成后的工程目录结构如下图所示:

29bb06d4-356c-11ed-ba43-dac502259ad0.png

注意在进行操作的时候出现的所有的文件夹名称及文件保存路径中均不包含空格和中文字符,以避免在编译过程中出现一些奇怪的错误,以及所有添加文件的头文件包含路径都需要在工程中进行设置。文件的添加过程也可以参考:快速入门| Tracealyzer跟踪记录库移植

工程相关宏和IDE选项设置

(1)要在项目中使用跟踪首先需要在ThreadX的tx_api.h头文件中包含记录器库的头文件。

29e6ec4a-356c-11ed-ba43-dac502259ad0.png

(2)在ThreadX的配置文件tx_user.h中开启跟踪功能和堆栈检测功能,需要通过修改头文件中的这两条宏来开启。

29f81a24-356c-11ed-ba43-dac502259ad0.png

2a10cfb0-356c-11ed-ba43-dac502259ad0.png

(3)在Tracealyzer的配置文件trcConfig.h文件中需要包含你所使用芯片系列所对应的头文件,以STM32F4系列芯片为例则是#include "stm32f4xx.h"。

在该文件中还需要指定你所使用的芯片内核,如果是使用M3/M4/M7内核的芯片则选择TRC_HARDWARE_PORT_ARM_Cortex_M即可。

2a2bdee0-356c-11ed-ba43-dac502259ad0.png

(4)在trcKernelPortConfig.h文件中,通过宏#define TRC_CFG_CPU_CLOCK_HZ设置所使用MCU运行的时钟主频,例如运行在25MHz。

2a410946-356c-11ed-ba43-dac502259ad0.png

(5)为了实现一些ThreadX自带的跟踪机制所未提供的更为强大的跟踪功能,Tracealyzer提供了一个头文件trcCTI.h,该文件需要被项目工程中的所有代码文件都包含。可以借助IDE提供的设置选项来实现。

在STM32CubeIDE的工程设置中,选择编译器Preprocessor选项的Define symbols(-D)一栏添加“__inside_$(notdir $(basename $(@)))”这一全局宏定义命令来实现。

2a63966e-356c-11ed-ba43-dac502259ad0.png

在该位置添加宏定义后还需在Miscellaneous选项中添加“-include trcCTI.h”命令。

2a8f3526-356c-11ed-ba43-dac502259ad0.png

在工程代码中启动跟踪

在ThreadX的入口函数tx_application_define()的入口位置调用vTraceEnable()函数开启Tracealyzer跟踪。vTraceEnable()函数根据函数参数的不同支持多种设置,此处TRC_START指初始化并直接开始跟踪。

2ae414a6-356c-11ed-ba43-dac502259ad0.png

Tracealyzer电脑端软件的设置

(1)开始实时跟踪。启动Tracealyzer,从File->Settings->J-Link Settings设置调试器所使用的接口和芯片型号。

2affe0aa-356c-11ed-ba43-dac502259ad0.png

(2)在PSF Streaming Settings,设置Target Connection为:SEGGER RTT,使用J-Link RTT通讯机制,将Trace数据从目标板经过J-Link调试器传送到PC端软件。

2b1cb4d2-356c-11ed-ba43-dac502259ad0.png

(3)运行目标平台程序,点“Start Recording”图标打开Live Stream窗口,点“Start Session”按钮即可开始实时跟踪。

(4)示例中创建了一个简单的优先级为10的循环打印任务 ,可以看到在Tracealyzer中成功显示了该任务中调用的延时函数,及执行过程中被系统中更高优先级的定时器任务System Timer Thread任务抢占的执行情况。

2b415c92-356c-11ed-ba43-dac502259ad0.png

2b5ca272-356c-11ed-ba43-dac502259ad0.png

作为一款功能强大的RTOS可视化跟踪工具,系统运行时的行为提供了前所未有的洞察方法。能够帮助开发人员加快固件的开发,减少对系统验证和性能优化所需要的时间。

审核编辑:汤梓红

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

    关注

    5017

    文章

    18497

    浏览量

    293262
  • threadx
    +关注

    关注

    0

    文章

    14

    浏览量

    13725
  • RTOS
    +关注

    关注

    20

    文章

    783

    浏览量

    118922

原文标题:如何使用Tracealyzer流模式跟踪ThreadX?

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何通过Tracealyzer实现Linux系统的跟踪

    Tracealyzer是Percepio 公司开发的一款可视化跟踪工具, 目前它提供了30多种相互关联的运行时行为视图,支持裸机、FreeRTOS、μC/OS-III、Zephyr、ThreadX、VxWorks、Linux系统
    的头像 发表于 12-08 14:08 817次阅读
    如何通过<b class='flag-5'>Tracealyzer</b>实现Linux系统的<b class='flag-5'>跟踪</b>?

    Tracealyzer 技术分享

    有两种方式1.Snapshot Mode(快照模式)特点:跟踪的数据保存在目标RAM中,几KB的跟踪缓冲区通常足以获得最新事件的可靠跟踪。基本上任何系统都可以使用。2.Streamin
    发表于 01-04 21:10

    教你快递入门-Tracealyzer跟踪记录库移植

    。使用Tracealyzer,可以查看到系统的真实运行情况,为开发人员节省排除错误的时间。Tracealyzer由PC应用程序和跟踪组件组成,Percepio提供了跟踪记录库(Trac
    发表于 07-31 14:08

    Tracealyzer利用CortexM的ITM实现跟踪

    通过EWARM实时获取跟踪数据。图 6 设置模式的连接方式九、开启实时跟踪。需要先启动Traceal
    发表于 12-05 15:34

    如何使用Tracealyzer预先定义的记录器扩展文件实现用户应用程序跟踪

    需要注意的是目前Tracealyzer V4.2.9版本仅支持模式,暂不支持快照模式。 请参考Tracealyzer用户手册在项目中集成
    发表于 12-18 13:37

    出现“丢失事件”?看Tracealyzer模式如何调优

    Tracealyzer 针对FreeRTOS和 Micrium µC/OS的记录器库可以配置成通过可用的通信接口(例如串口)传输跟踪数据。用户通过提供一个自定义的“端口”(stre
    发表于 02-19 10:06

    通过Tracealyzer用户事件来了解应用程序

    Tracealyzer跟踪记录器库的集成。可视化特定应用程序的自定义信息的第一步是创建一个用户事件通道。这是一个字符串输出通道,允许开发人员添加自己的自定义事件,在Tracealyzer中称为用户事件。例如,如果想要传输
    发表于 08-20 10:11

    使用Tracealyzer跟踪FreeRTOS内核

    Tracealyzer。我在几分钟内将FreeRTOS支持Tracealyzer运行的必要的几个功能函数集成到代码里面,工具链的安装以及通过 J-Link 模式连接到开发板的过程很
    发表于 12-01 14:57

    如何使用Tracealyzer理解多任务调度?

    任务使用了多少CPU时间?在运行时系统中实际发生了什么?Tracealyzer是一款记录RTOS运行时行为的可视化分析工具,通过30多个相互关联的视图对记录数据进行解析,向用户展示应用层级详细视图,作为
    发表于 12-17 16:01

    如何使用Tracealyzer模式跟踪ThreadX

    Tracealyzer是Percepio 公司开发的一款用于RTOS的嵌入式软件系统的可视化跟踪工具,提供了30多种相互关联的可视化运行时行为视图,本文将介绍如何使用Tracealyzer
    发表于 09-23 13:25

    是否需要在iMXRT1060 EVK板上执行任何特定操作才能使tracealyzer正常工作?

    我有 iMXRT1060EVK,想在 FreeRTOS 的模式下使用 Tracealyzer。我正在使用 IAR EW 和 I-jet 调试探针。我已按照以下链接中的步骤进行操作,但数据
    发表于 04-17 08:02

    Tracealyzer实现流跟踪最简单的方法

    Tracealyzer 实现流跟踪最简单的方法就是使用SEGGER J-Link调试器,通过RTT功能来实现数据的传送。RTT需要在RAM上建立一段缓存,在目标系统运行期间,由J-Link读取缓存中的数据。一般来说RTT的速度和可靠性比较高,但是如果您遇到了问题,可以参照
    的头像 发表于 09-02 11:11 1863次阅读

    Tracealyzer跟踪记录库移植

    使用Tracealyzer,首先要将跟踪记录库集成到工程。安装了Tracealyzer 4之后,在安装路径下找到以RTOS名称命名的文件夹,将TraceRecorder子文件夹复制到自己的工程目录中。以FreeRTOS为例:
    的头像 发表于 11-08 11:17 1415次阅读

    Tracealyzer利用CortexM的ITM实现流跟踪

    Tracealyzer快照模式,能够跟踪RTOS系统的运行时间受限于硬件可用的RAM大小,通常只能追踪几十秒的时间。使用流模式则不会存在这个问题,只要电脑硬盘空间足够,可用追踪几小时
    的头像 发表于 12-20 11:12 1344次阅读

    如何通过Tracealyzer导出的跟踪数据对任务进行分析?

    Tracealyzer是Percepio 公司开发的一款用于RTOS的可视化跟踪工具, 目前Tracealyzer提供了30多种相互关联的运行时行为视图,对系统运行时的行为提供了前所未有的洞察方法。能够帮助开发人员加快固件的开发
    的头像 发表于 02-06 14:13 830次阅读