基于AURIX™ Emulation device (ED)功能实现On-Chip Trace 对OS 进行分析

220 阅读3分钟
1. Trace功能简介

Trace 功能用于跟踪记录cpu内部程序运行情况,进行实现代码覆盖率统计,CPU 负载分析,历史代码回溯,OS 调度分析等功能。其实现方式分为Off-Chip Trace 和On-Chip Trace 两种,Off-Chip Trace是指借助外部trace 工具连接目标控制器实现Trace 功能,On-Chip Trace 是指通过MCU 自身进行Trace功能的实现, 该方法的优点在于无需外接trace 设备即可实现Trace功能,便于调试的同时也节约了成本。那么是否所有的芯片都支持On-Chip Trace呢?显然并不是。On-Chip Trace的实现需要依赖于芯片本身的Emulation device (ED)功能,下面我们以AURIX™ TC39x ED为例来简单介绍一下其功能及具体使用方式。

2. AURIX™ TC39x ED简介

AURIX™  TC39x Emulation Devices提供了与TC39x标准系列相同的功能集,并具有额外的调试和跟踪功能。TC39xXE支持校准、快速原型设计和调试/仿真。其具有的4 MB扩展内存(EMEM),其中2MB可用于校准和跟踪,支持Multi-Core Debug Solution (MCDS)多核调试方案,支持Aurora Gigabit Trace (AGBT) ,CPU可以完全访问所有仿真资源,使所有类型的接口(如以太网)都能作为工具连接。

AURIX 其余系列 Emulation Devices 描述参考英飞凌官网的如下链接:

AURIX™ TC2xx Emulation Devices - Infineon Technologies

AURIX™ TC37x Emulation devices - Infineon Technologies

3. On-Chip Trace实战演示

下面基于TC39x ED 型号的芯片演示On-Chip Trace 功能,调试器使用目前主流的Aurix调试器劳特巴赫, 397 上运行的操作系统采用车规级的CP Autosar OS。最终实现Task 调度分析,CPU 负载分析。

1) Trace 功能菜单介绍

Trace功能相关的菜单选项位于劳特巴赫主菜单的中间部分,各个下拉框的选项和含义如下图所示:

Trigger_0-1703788349021.png

2 Trace 功能的配置

Trace Configuration打开后的窗口如下图所示,如果使用OnChip Trace 功能,需要将METHOD 选为Onchip.

State 用于设置/显示 Trace 的状态,OFF是停止跟踪,ARM 是开始跟踪, Disable 是禁用, 若选中Disable ,则无法自动打开或者配置Trace 功能。

SZIE 用于设置/显示存储大小(若为EMEM ,则最大空间为2MB), Mode用于设置/显示Trace 数据的存储模式。

Trigger_1-1703788349030.png

3 Trace MCDS 设置

MCDS 用于设置跟踪哪个CPU 的数据,以及跟踪哪些数据。时间戳的开启也是在这个页面设置。

Trigger_2-1703788349033.png

4 ORTI 文件导入

ORTI由Autosar OS 配置工具生成,本文中我们使用Vector 的davinci configurator进行生成,将该文件导入到劳特巴赫软件中可以用于解析OS 对应的符号表。导入Trace 后会多出一些如下图所示的跟OS Task 相关的功能选项。如采用命令行的方式导入,可采用如下命令:TASK.ORTI D:\ORTI_Path\Os_Trace.ORT

Trigger_3-1703788349038.png

 

5 Task Switches 断点的设置

设置Task 切换时的断点,将断点发生时的动作设置TraceEnable, 即可利用Trace 功能记录每次Task的切换。

Trigger_4-1703788349043.png

6) Trace 数据的录取

通过点击Arm开始录取Trace 数据, used 里面的蓝色进度调显示实际的Trace 数据占用的存储空间,如需停止录取,可点击OFF.

Trigger_5-1703788349048.png

7) CPU 负载和 Task 调度的查看

在Trace 数据录取完毕后,通过Perf 选项Task Runtime 可以查看CPU 负载和调度状态,并基于此来进行OS 性能的分析以及相关问题的排查

Trigger_6-1703788349052.png

Trigger_7-1703788349063.png

:戴墨镜微笑: 劳特巴赫 CMM 脚本的运用

可采用以下的脚本实现上述操作的自动化配置

print "initializing ORTI support..."
TASK.ORTI D:\ORTI_Path\Os_Trace.ORT
system.memAccess.CPU ; allow to access to other memory while running
SYstem.CpuAccess.Enable ; allow to access cpu memory while running
Targetsystem
PRINT "load complete."
PRINT TASK.CONFIG(magic)
MCDS.SOURCE.Set CpuMux0.Core TriCore0
MCDS.SOURCE.Set CpuMux1.Core TriCore2
Break.Set TASK.CONFIG(magic[0]) /Write /TraceEnable
Break.Set TASK.CONFIG(magic[2]) /Write /TraceEnable
MCDS.TimeStamp ON
CLOCK.ON
MCDS.SOURCE.Set CpuMux0.Program OFF
MCDS.SOURCE.Set CpuMux1.Program OFF
MCDS.SOURCE.Set CpuMux0.WriteAddr ON
MCDS.SOURCE.Set CpuMux0.WriteData ON
MCDS.SOURCE.Set CpuMux1.WriteAddr ON
MCDS.SOURCE.Set CpuMux1.WriteData ON
ENDDO(买电子元器件就上唯样商城)