TRACE32调试:基础调试技巧之SystemMode、SNOOPer

发布于 2023-9-6 14:57
浏览
0收藏

汽车嵌入式开发,调试必不可少,丰富的调试手段意味着排查问题时,可事半功倍。本文讨论一下TRACE32使用中的两个基础技巧。

  • SystemMode
  • SNOOPer变量采集、分析及数据导出

1、系统(System)模式理解

使用TRACE32调试过程中,大家经常使用系统模式,比如:Attach、Up等。这里主要说一下Up模式:

  • Up模式:CPU执行复位动作,指向链接文件(*.lsl)定义的初始化地址,即:RESET标号指向的地址,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

上图使能了Cached,0x80000020和0xA0000020指向同一块物理地址,在Trace32中执行Up动作,程序自动复位,并指向启动地址,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

如上可以看出,Up模式与执行复位动作功能类似。

2、SNOOPer

SNOOPer主要作用:程序在运行过程中,进行周期性采样。所以,利用这个特性,在Debug过程中,可以对目标参数的运行状态进行时时监控。具体操作如下:


(一)打开SNOOPer面板


Trace->Configuration...->在"METHOD"中,选择SNOOPer,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

(二)参数配置


参数配置界面如下:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

A:采样频率设置,如上设置参数的采样频率为10ms

B:选择需要采样的参数

如果要采样的数据是结构体成员,可以直接在"Select"中输入,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

如果要采样的数据是数组成员,可以直接在"Select"中输入,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

C:采样的最大次数

D:数据存储模式

FIFO:如果数据采样到了最大次数,则保存最新的数据,eg:SIZE = 10保存最后采样的10次数据。

Stack:如果数据采样到了最大次数,保存最开始的数据。eg:SIZE = 10保存最开始的10次数据。

E:可以选择数据采样的模式,如上:当数据改变时采样。

提示:也可以采样PC(Program Counter)寄存器的变化,记录程序的运行时序。

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

通过命令Trace.List DEFault /SplitCORE 查看各Core的运行状况,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区


(三)采样示例

选择采样参数,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

运行程序,开始采样,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

(四)采样数据分析


单击Break按钮,暂停程序。可以通过观测数据的变换进行问题分析,

  • 单个变量采样分析如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

对于采样的变量,也可以使用命令的方式直接作图,命令所示:

SNOOPer.DRAW.Var %Decimal Window_State /ZoomTrack

解释:

  1. %Decimal表示用十进制显示参数Window_State
  2. /ZoomTrack表示数据显示时,自适应窗口大小。
  • 多个变量采样分析,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

SNOOPer最多可以采样16个变量

3、采样数据输出

如果觉得SNOOPer的图形分析不是很理想,也可以将采样的数据导出,使用第三方工具进行分析。


(一)输出设置


本文设置保存的格式为*.csv,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

提示:选中Append,则下一次记录的数据追加在文件后面,如果不勾选,则每次采样时,覆盖之前的数据。


(二)开始数据采样


数据采样如上第二小节。


(三)导出采样数据


1、对如下的SNOOPer.List数据进行输出

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

2、设置输出内容

本文数据记录ti.back、address、data、symbol四项内容,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

3、查看保存的数据

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

如上使用的命令如下:


PRinTer.FILE C:\Users\SongXin\Desktop\DataLog.csv CSV
WinPrint.SNOOP.List ti.back address data symbol


如果使用第三方工具分析,可能需要时间基准,而ti.back记录的是两个参数之间的采样间隔时间,不便于作图,可以在Trace中添加Time.ZERO参数,操作如下:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

再次输出*.csv文件,如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

命令如下所示:

;将ti.ZERO作为列表的第一个参数
Trace.List TIme.ZERO DEFault /Track
;保存数据到*.csv文件,同时指定文件路径
PRinTer.FILE C:\Users\SongXin\Desktop\DataLog.csv CSV
;设置要保存的参数
WinPrint.SNOOP.List ti.ZERO address data symbol ti.back

4、自定义数据导出及作图

数据分析时,如果仅想捕获需要的信息,并将其图形化处理,如何操作?

举例:仅提取参数Window_State、State_Cnt,将两者数据导出到*.csv文件,并分析两者随时间的变化趋势。采样数据如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

使用自定义命令:

;保存数据到*.csv文件,同时指定文件路径
PRinTer.FILE C:\Users\SongXin\Desktop\DataLog.csv CSV
;设置要保存的参数
WinPrint.SNOOP.List TIme.ZERO Var

数据保存到指定路径下的*.csv文件,保存的数据内容如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区

使用Excel作图,相比于Trace32的Draw,数据变化更容易分析。数据变化如下所示:

TRACE32调试:基础调试技巧之SystemMode、SNOOPer -汽车开发者社区


文章转载自公众号:开心果 Need Car

分类
收藏
回复
举报
回复