如何在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. 硬件连接示意图 1. 以i.MX RT1170验证板为例,图2 i.MX RT1170验证板硬件连接图。
图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 Trace相关电阻 图4 Trace信号的连接器
使用软件
点击"CPU-> System settings", 再点击"CPU" 以选择CPU类型,如图5所示。
图5 选择CPU类型
并将调试端口类型设置为SWD,如图6所示:
图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 在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 DAP
- SYStem.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 flags
- WinPOS 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 窗口更新图例
TRACE32 PowerView提供了一个时序图,该时序显示了program counters 何时处于哪个function/symbol 范围内。
在图9中点击“ Chart”按钮将打开“图10 Trace.Chart.sYmbol”窗口。
图9 Trace.List窗口
图10. Chart.sYmbol 窗口
|