如何在i.MX RT11xx系列上使能ETM Trace

简介

ETM trace是一种高速Trace,并提供强大的调试模式,可帮助客户解决最困难的问题。本文旨在介绍如何为i.MX RT11xx芯片启用ETM Trace以及使用uTrace调试器的基本步骤。

安装软件
用户可以从https://www.lauterbach.com/frames.html?download_overview.html找到TRACE32安装软件包,将TRACE32_201909.7z下载到计算机上并进行安装。注意以下两点:

1)由于安装包比较大,可以根据目标处理器安装软件组件,以节省硬盘空间;

2)可以在C:\ T32 \ bin \ windows64 \ drivers文件夹中找到安装的驱动程序。

连接硬件

TRACE32调试器硬件包括:

• 通用调试器硬件

• 特定于处理器体系结构的调试电缆                                       

1.png

图1. 硬件连接示意图

1. 以i.MX RT1170验证板为例,图2 i.MX RT1170验证板硬件连接图。      

2.png

图2  i.MX RT1170 EVK Board 硬件连接图

2. i.MX RT1170不需要通过烧写efuse来更改调试模式。

3. 焊接Trace 信号线相关的电阻,TRACE_CLK(R1885),TRACE_D0(R1881),TRACE_D1(R1882),TRACE_D2(R1883),TRACE_D3(R1884),并删除和网口复用的电阻,R1290, R1293, R1295, R1294, R1296(图3);Trace的连接器(图4)。

3.png

图3 Trace相关电阻

4.png

图4 Trace信号的连接器

使用软件
点击"CPU-> System settings", 再点击"CPU" 以选择CPU类型,如图5所示。

5.png

图5 选择CPU类型

并将调试端口类型设置为SWD,如图6所示:

6.png


图6 调试端口类型设置为JTAG

最后在“Mode”中选择“Up”以调试模拟重启CPU,并在调试器和CPU之间建立通信。

加载应用以SDK_2.6.1_EVK-MIMX i.MX RT1170为例,打开IAR hello_world项目,然后将其设置为debug mode,然后将生成的文件后缀设置为.elf,如图7所示,您可以在debug文件夹中找到生成的hello_world.elf文件。

7.png

 图 7 在IAR中生成.elf文件

创建脚本

将以下脚本命令另存为.cmm格式文件,并将其命名为hello_world.cmm,WinCLEAR

; --------------------------------------------------------------------------------
; initialize and start the debugger
RESet
SYStem.RESet
SYStem.CPU IMXRT1176-CM7
SYStem.CONFIG.DEBUGPORTTYPE JTAG
IF COMBIPROBE()||UTRACE()
(  
    SYStem.CONFIG.CONNECTOR MIPI20T
)
SYStem.Option DUALPORT ON
SYStem.MemAccess DAPSYStem.JtagClock 10MHz
Trace.DISable
ETM.OFF
ITM.OFF
system.attach
if run()
break

; --------------------------------------------------------------------------------
; load demo program (uses internal RAM only)
Data.LOAD.Elf "~~~~/hello_world_demo_cm7.elf"

; --------------------------------------------------------------------------------
; initialize OFFCHIP trace (ETM, ITM)
IF COMBIPROBE()||UTRACE()||Analyzer()
(  
    ; set PinMux and enable Clocks  
    Data.Set AD:0x400E821C %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_02.MUX_MODE = 0x3  
    Data.Set AD:0x400E8220 %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_03.MUX_MODE = 0x3  
    Data.Set AD:0x400E8224 %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_04.MUX_MODE = 0x3  
    Data.Set AD:0x400E8228 %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_05.MUX_MODE = 0x3  
    Data.Set AD:0x400E822C %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_06.MUX_MODE = 0x3
    Data.Set AD:0x40c08028 %Long 0x0000000a ; IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_10_GPIO12_IO10,0U);
  ; Switch clock multiplexer for the CoreSight trace  
  Data.Set AD:0x40CC0300 %Long 0x00000400     ; CCM.CLOCK_ROOT[6].CLOCK_ROOT_CONTROL.MUX = 0x4
  
  ; Disable the Effect of SWO on TPIU  
  Data.Set EDAP:0x80048EF0 %LE %Long 0x00000001  
  Data.Set EDAP:0x80048F00 %LE %Long 0x00000001
  
  TPIU.PortSize 4  
  TPIU.PortMode Continuous  
  ITM.DataTrace CorrelatedData  
  ITM.ON  
  ETM.Trace ON  
  ETM.COND ALL  
  ETM.ON

)
IF Analyzer()
(  
    Trace.METHOD Analyzer  
    Trace.AutoInit ON  
    Trace.AutoFocus
)
ELSE IF COMBIPROBE()||UTRACE()
(  
    Trace.METHOD CAnalyzer  
    Trace.AutoInit ON  
    CAnalyzer.AutoFocus
)

; --------------------------------------------------------------------------------
; start program execution
Go.direct main
WAIT !STATE.RUN()


; --------------------------------------------------------------------------------
; open some windows
WinCLEAR
Mode.Hll
WinPOS 0. 0. 116. 26.
List.auto
WinPOS 120. 0. 100. 8.
Frame.view
WinPOS 120. 14.
Var.Watch
Var.AddWatch %SpotLight ast flagsWinPOS 120. 25.
Trace.List
;WinPOS 0. 32.
;Trace.DRAW.Var %DEFault plot1

ENDDO

加载应用

打开TRACE32 软件, 单击"File-> Load File". 找到上面生成的hello_world.elf文件并运行它。

1. 单击"View-> List Source" 打开代码调试窗口

2. 单击"Step"或按"F2" 单步执行程序

3. 单击"Go"或按"F7"直接运行程序

4. 单击"Break"或按 "F8" 暂停程序

Trace调试

TRACE32提供了一个称为Trace.ShowFocus的强大功能,可以分析跟踪端口的信号完整性。水平轴以纳秒为单位反映时间线。左侧显示了每个跟踪信号的当前延迟。红线显示采样点。每个信号可能有所不同。如果设置的值小于零或不是所有采样点都相等,则数据线会延迟。如果值大于零,则时钟线被延迟。

按下“Scan”按钮将执行Analyzer.ShowFocus以更新窗口。在最佳情况下,它应类似于图8所示:    

8.png  图8 窗口更新图例

TRACE32 PowerView提供了一个时序图,该时序显示了program counters 何时处于哪个function/symbol 范围内。

在图9中点击“ Chart”按钮将打开“图10 Trace.Chart.sYmbol”窗口。

9.png

图9 Trace.List窗口

10.png

图10. Chart.sYmbol 窗口

来源:恩智浦MCU加油站

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。