查看: 805|回复: 0

[分享] 如何在i.MX RT11xx系列上使能ETM Trace

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32035
    最后登录
    2024-4-26
    发表于 2023-10-23 10:35:35 | 显示全部楼层 |阅读模式
    如何在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调试器硬件包括:
    • 通用调试器硬件
    • 特定于处理器体系结构的调试电缆               
    12.png                
    图1. 硬件连接示意图
    1. 以i.MX RT1170验证板为例,图2 i.MX RT1170验证板硬件连接图。
       13.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)。
    14.png


    图3 Trace相关电阻
           15.png    
    图4 Trace信号的连接器

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


    图5 选择CPU类型


    并将调试端口类型设置为SWD,如图6所示:
    17.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文件。
    18.png


    图 7 在IAR中生成.elf文件



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

    1. ; --------------------------------------------------------------------------------
    2. ; initialize and start the debugger
    3. RESet
    4. SYStem.RESet
    5. SYStem.CPU IMXRT1176-CM7
    6. SYStem.CONFIG.DEBUGPORTTYPE JTAG
    7. IF COMBIPROBE()||UTRACE()
    8. (
    9.   SYStem.CONFIG.CONNECTOR MIPI20T
    10. )
    11. SYStem.Option DUALPORT ON
    12. SYStem.MemAccess DAP
    13. SYStem.JtagClock 10MHz
    14. Trace.DISable
    15. ETM.OFF
    16. ITM.OFF
    17. system.attach
    18. if run()
    19. break

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

    23. ; --------------------------------------------------------------------------------
    24. ; initialize OFFCHIP trace (ETM, ITM)
    25. IF COMBIPROBE()||UTRACE()||Analyzer()
    26. (
    27.   ; set PinMux and enable Clocks
    28.   Data.Set AD:0x400E821C %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_02.MUX_MODE = 0x3
    29.   Data.Set AD:0x400E8220 %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_03.MUX_MODE = 0x3
    30.   Data.Set AD:0x400E8224 %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_04.MUX_MODE = 0x3
    31.   Data.Set AD:0x400E8228 %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_05.MUX_MODE = 0x3
    32.   Data.Set AD:0x400E822C %Long 0x00000003     ; IOMUXC.SW_MUX_CTL_PAD_GPIO_DISP_B2_06.MUX_MODE = 0x3
    33. Data.Set AD:0x40c08028 %Long 0x0000000a ; IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_10_GPIO12_IO10,0U);

    34.   ; Switch clock multiplexer for the CoreSight trace
    35.   Data.Set AD:0x40CC0300 %Long 0x00000400     ; CCM.CLOCK_ROOT[6].CLOCK_ROOT_CONTROL.MUX = 0x4

    36.     ; Disable the Effect of SWO on TPIU
    37.   Data.Set EDAP:0x80048EF0 %LE %Long 0x00000001
    38.   Data.Set EDAP:0x80048F00 %LE %Long 0x00000001

    39.   TPIU.PortSize 4
    40.   TPIU.PortMode Continuous
    41.   ITM.DataTrace CorrelatedData
    42.   ITM.ON
    43.   ETM.Trace ON
    44.   ETM.COND ALL
    45.   ETM.ON
    46. )
    47. IF Analyzer()
    48. (
    49.   Trace.METHOD Analyzer
    50.   Trace.AutoInit ON
    51.   Trace.AutoFocus
    52. )
    53. ELSE IF COMBIPROBE()||UTRACE()
    54. (
    55.   Trace.METHOD CAnalyzer
    56.   Trace.AutoInit ON
    57.   CAnalyzer.AutoFocus
    58. )

    59. ; --------------------------------------------------------------------------------
    60. ; start program execution
    61. Go.direct main
    62. WAIT !STATE.RUN()


    63. ; --------------------------------------------------------------------------------
    64. ; open some windows
    65. WinCLEAR
    66. Mode.Hll
    67. WinPOS 0. 0. 116. 26.
    68. List.auto
    69. WinPOS 120. 0. 100. 8.
    70. Frame.view
    71. WinPOS 120. 14.
    72. Var.Watch
    73. Var.AddWatch %SpotLight ast flags
    74. WinPOS 120. 25.
    75. Trace.List
    76. ;WinPOS 0. 32.
    77. ;Trace.DRAW.Var %DEFault plot1

    78. 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所示:
    19.png

    图8 窗口更新图例


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

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

    图9 Trace.List窗口

    21.png               

    图10. Chart.sYmbol 窗口







    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-28 08:20 , Processed in 0.128171 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表