Trace32中文网站 > 新手入门 > TRACE32硬件跟踪怎么使用 TRACE32跟踪数据不完整是什么原因
教程中心分类
TRACE32硬件跟踪怎么使用 TRACE32跟踪数据不完整是什么原因
发布时间:2026/07/31 17:56:16

  普通断点只能观察程序停止时的状态,硬件跟踪则可以连续记录分支跳转、函数调用、中断和任务切换,更适合排查偶发死机、执行路径异常以及实时性下降。围绕“TRACE32硬件跟踪怎么使用TRACE32跟踪数据不完整是什么原因”,配置时要先确认芯片提供的跟踪模块,再根据片上缓冲区或外部跟踪设备选择采集方式。

  一、TRACE32硬件跟踪怎么使用

 

  TRACE32可以接收Arm ETM、Infineon MCDS、Nexus等硬件跟踪数据。记录位置既可能是芯片内部的ETB、ETF或专用存储区,也可能是PowerTrace等外部设备。两种方式的设置思路接近,但可记录时长、跟踪端口和带宽要求存在差异。

 

  1、确认跟踪源和采集方式

 

  ①连接PowerDebug与目标板;需要采集外部跟踪数据时,再连接PowerTrace、CombiProbe或对应的Trace Probe。

 

  ②运行目标芯片配套的启动脚本,完成处理器、调试接口、存储器和程序符号初始化。

 

  ③执行Trace.METHOD查看当前跟踪方法。使用芯片内部缓冲区时通常选择Onchip,连接外部跟踪设备时根据硬件选择Analyzer或相应方法。

 

  ④执行Trace.state检查当前方法、缓冲区容量、记录状态和跟踪通道。显示为NONE时,需要先重新指定采集方式。

 

  ⑤结合芯片手册确认当前器件支持ETM、MCDS、Nexus还是其他跟踪模块,避免套用不匹配的配置脚本。

 

  TRACE32的Trace.METHOD用于选择跟踪方法,Trace.Init用于初始化记录缓冲区。片上跟踪和外部Analyzer所需的硬件条件不同,不能只根据软件菜单判断。

 

  2、启用跟踪并开始采集

 

  ①开启芯片跟踪模块所在的时钟和电源域。Arm平台按器件配置ETM,AURIX平台配置MCDS,Nexus器件则启用对应消息输出。

 

  ②使用外部跟踪端口时,检查引脚复用、端口宽度、串行通道、输出时钟和协议模式。

 

  ③执行Trace.Init清除旧记录,重新初始化跟踪缓冲区和采集逻辑。

 

  ④首次测试先关闭地址、任务和事件过滤,只启用程序流跟踪,减少配置干扰。

 

  ⑤需要保留最近一段运行数据时使用循环记录;需要从采集起点保留完整数据时,改用写满停止或接近写满时暂停程序的模式。

 

  ⑥启动采集后执行Go运行程序,完成测试场景再执行Break,随后查看记录状态。

 

  TRACE32的Fifo模式会用新记录覆盖旧记录,Stack模式会在缓冲区写满后停止记录,Leash模式还会在接近写满时停止程序。模式选择不合适,很容易让需要的前半段数据被覆盖。

 

  3、查看并保存跟踪结果

 

  ①打开【Trace】→【List】,按照指令、源代码、函数或时间顺序查看执行记录。

 

  ②打开【Trace】→【Chart】,分析函数执行时间、中断间隔和任务切换分布。

 

  ③使用Trace.Find搜索目标函数、地址、事件或错误标记,缩小异常发生范围。

 

  ④执行Trace.SAVE"trace_result.ad"保存当前记录,同时保留对应的ELF、MAP文件和启动脚本。

 

  ⑤重新分析历史数据时,执行Trace.LOAD加载记录,再加载采集时使用的程序符号。

 

  保存的跟踪文件可以在其他TRACE32环境中重新加载分析,但用于解码的程序映像和符号必须与采集时保持一致。

  二、TRACE32跟踪数据不完整是什么原因

 

  跟踪数据不完整通常表现为记录突然结束、前半段消失、程序流出现异常跳转、某个核心没有内容,或者记录中出现HARDERROR、FIFOFULL和FLOWERROR。缓冲区写满只是其中一种原因,端口采样失败、数据速率过高、过滤条件错误和程序映像不一致也会造成类似现象。

 

  1、检查缓冲区和跟踪带宽

 

  ①执行Trace.state,确认记录是正常停止、触发停止,还是因缓冲区写满结束。

 

  ②检查当前是否使用Fifo循环模式。只有前段数据消失时,要判断它是否已经被后续记录覆盖。

 

  ③执行Trace.Find FLOWERROR/ALL,并检查FIFOFULL和HARDERROR首次出现的位置。

 

  ④暂时关闭数据访问、总线跟踪和不需要的多核通道,只保留单核程序流。

 

  ⑤缩短采集时长,或者设置更精确的开始与结束触发条件后重新测试。

 

  ⑥需要长时间连续记录时,评估更大容量的外部跟踪设备或流式采集方式。

 

  FIFOFULL表示数据产生速度超过内部处理能力;HARDERROR表示采集到的跟踪数据无效;FLOWERROR则说明记录内容无法与目标代码正确对应。

 

  2、检查端口时钟和信号质量

 

  ①核对跟踪端口宽度、串行通道数量和输出时钟是否与目标芯片配置一致。

 

  ②暂时降低处理器频率或跟踪时钟,再观察HARDERROR数量是否减少。

 

  ③重新检查Trace Probe方向、连接器接触、供电、接地和线缆状态。

 

  ④并行跟踪设备支持AutoFocus时,重新执行采样点校准。

 

  ⑤使用PowerTrace Serial时查看链路状态,出现串行连接错误后检查通道速率、链路锁定和CRC。

 

  串行跟踪连接错误表示目标端与TRACE32之间的链路在记录过程中至少发生过一次不稳定。使用支持的PowerTrace Serial设备时,还可以通过Analyzer.ShowFocusEye辅助检查信号质量。

 

  3、检查过滤、符号和运行状态

 

  ①清除地址范围、任务、上下文和事件过滤,完成一次不带过滤的基准采集。

 

  ②重新加载本次固件对应的ELF文件,并使用MAP文件核对缺失函数的实际地址。

 

  ③检查程序是否发生复位、低功耗切换或跟踪电源域关闭,发生后重新初始化跟踪模块。

 

  ④多核系统逐核检查跟踪源、通道编号和时间同步,确认没有只启用其中一个核心。

 

  ⑤选择性跟踪出现时间偏差时,适当扩大记录范围后复测。

 

  当选择性跟踪每次只产生少量数据时,数据包可能暂时停留在芯片内部FIFO中,导致外部时间戳与真实事件时间之间出现明显偏差。

 

  三、怎样验证TRACE32跟踪配置已经恢复

 

  修改完成后,不宜直接用大型RTOS工程或复杂业务场景判断结果。先建立执行路径固定的基准,才能判断数据缺失来自采集环境还是程序本身。

 

  1、建立最小跟踪基准

 

  ①选择一段包含固定循环、函数调用和周期中断的测试程序。

 

  ②只启用单核程序流跟踪,清空全部过滤条件和历史记录。

 

  ③完成一次完整采集,对照源码和反汇编检查函数入口、循环次数及中断返回。

 

  ④确认记录连续后,逐项恢复多核、数据访问、任务过滤和时间戳。

 

  ⑤每恢复一项就重新采集,并记录首次出现数据缺失的配置。

 

  2、保存正常配置用于复测

 

  ①保存启动脚本、跟踪配置、ELF、MAP和正常采集样本。

 

  ②记录芯片频率、跟踪时钟、端口宽度、探针型号和TRACE32版本。

 

  ③更换目标板、芯片版本或TRACE32软件后,先运行相同的基准程序。

 

  ④出现差异时,每次只修改一个参数,避免同时调整时钟、过滤和触发条件。

 

  ⑤确认基础记录稳定后,再恢复正式项目的完整采集范围。

  总结

 

  “TRACE32硬件跟踪怎么使用TRACE32跟踪数据不完整是什么原因”的关键,是让芯片跟踪源、采集设备、端口参数和程序映像保持一致。数据缺失时,应先检查缓冲区与带宽,再排查信号质量、过滤条件、符号版本、多核通道和复位状态。通过最小程序逐项恢复配置,通常可以较快找到数据丢失发生在哪个环节。希望本文对大家使用TRACE32分析程序运行轨迹有所帮助,如需进一步了解,可联系咨询。

135 2431 0251