
TRACE32调试:基础调试技巧之SystemMode、SNOOPer
汽车嵌入式开发,调试必不可少,丰富的调试手段意味着排查问题时,可事半功倍。本文讨论一下TRACE32使用中的两个基础技巧。
- SystemMode
- SNOOPer变量采集、分析及数据导出
1、系统(System)模式理解
使用TRACE32调试过程中,大家经常使用系统模式,比如:Attach、Up等。这里主要说一下Up模式:
- Up模式:CPU执行复位动作,指向链接文件(*.lsl)定义的初始化地址,即:RESET标号指向的地址,如下所示:
上图使能了Cached,0x80000020和0xA0000020指向同一块物理地址,在Trace32中执行Up动作,程序自动复位,并指向启动地址,如下所示:
如上可以看出,Up模式与执行复位动作功能类似。
2、SNOOPer
SNOOPer主要作用:程序在运行过程中,进行周期性采样。所以,利用这个特性,在Debug过程中,可以对目标参数的运行状态进行时时监控。具体操作如下:
(一)打开SNOOPer面板
Trace->Configuration...->在"METHOD"中,选择SNOOPer,如下所示:
(二)参数配置
参数配置界面如下:
A:采样频率设置,如上设置参数的采样频率为10ms
B:选择需要采样的参数
如果要采样的数据是结构体成员,可以直接在"Select"中输入,如下所示:
如果要采样的数据是数组成员,可以直接在"Select"中输入,如下所示:
C:采样的最大次数
D:数据存储模式
FIFO:如果数据采样到了最大次数,则保存最新的数据,eg:SIZE = 10保存最后采样的10次数据。
Stack:如果数据采样到了最大次数,保存最开始的数据。eg:SIZE = 10保存最开始的10次数据。
E:可以选择数据采样的模式,如上:当数据改变时采样。
提示:也可以采样PC(Program Counter)寄存器的变化,记录程序的运行时序。
通过命令Trace.List DEFault /SplitCORE 查看各Core的运行状况,如下所示:
(三)采样示例
选择采样参数,如下所示:
运行程序,开始采样,如下所示:
(四)采样数据分析
单击Break按钮,暂停程序。可以通过观测数据的变换进行问题分析,
- 单个变量采样分析如下所示:
对于采样的变量,也可以使用命令的方式直接作图,命令所示:
SNOOPer.DRAW.Var %Decimal Window_State /ZoomTrack
解释:
- %Decimal表示用十进制显示参数Window_State
- /ZoomTrack表示数据显示时,自适应窗口大小。
- 多个变量采样分析,如下所示:
SNOOPer最多可以采样16个变量。
3、采样数据输出
如果觉得SNOOPer的图形分析不是很理想,也可以将采样的数据导出,使用第三方工具进行分析。
(一)输出设置
本文设置保存的格式为*.csv,如下所示:
提示:选中Append,则下一次记录的数据追加在文件后面,如果不勾选,则每次采样时,覆盖之前的数据。
(二)开始数据采样
数据采样如上第二小节。
(三)导出采样数据
1、对如下的SNOOPer.List数据进行输出
2、设置输出内容
本文数据记录ti.back、address、data、symbol四项内容,如下所示:
3、查看保存的数据
如上使用的命令如下:
PRinTer.FILE C:\Users\SongXin\Desktop\DataLog.csv CSV
WinPrint.SNOOP.List ti.back address data symbol
如果使用第三方工具分析,可能需要时间基准,而ti.back记录的是两个参数之间的采样间隔时间,不便于作图,可以在Trace中添加Time.ZERO参数,操作如下:
再次输出*.csv文件,如下所示:
命令如下所示:
;将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文件,并分析两者随时间的变化趋势。采样数据如下所示:
使用自定义命令:
;保存数据到*.csv文件,同时指定文件路径
PRinTer.FILE C:\Users\SongXin\Desktop\DataLog.csv CSV
;设置要保存的参数
WinPrint.SNOOP.List TIme.ZERO Var
数据保存到指定路径下的*.csv文件,保存的数据内容如下所示:
使用Excel作图,相比于Trace32的Draw,数据变化更容易分析。数据变化如下所示:
文章转载自公众号:开心果 Need Car
