【ARM Trace32(劳特巴赫) 使用介绍 2 - Veloce 环境中使用trace32 连接 Cortex-M33】

文章目录

    • [T32MARM 介绍](#T32MARM 介绍)
    • [Trace32 .t32 和 .cmm 差异](#Trace32 .t32 和 .cmm 差异)
    • [veloce 下启动TRACE32](#veloce 下启动TRACE32)
      • [1.1.3 TAP 状态机操作命令](#1.1.3 TAP 状态机操作命令)
        • [1.1.3.1 IDCODE(Identification Code)寄存器 介绍](#1.1.3.1 IDCODE(Identification Code)寄存器 介绍)

T32MARM 介绍

T32MARM 是 Lauterbach 的 Trace32 软件包的一部分,专门用于 ARM 基础架构的微处理器。Trace32 是一款强大的系统级调试器,广泛用于嵌入式系统和微处理器的开发。

T32MARM 提供了对 ARM 核心和多核心设备的全面支持,支持各种不同的 ARM 核心,包括 Cortex-A、Cortex-R 和 Cortex-M 系列,以及旧的 ARM7 和 ARM9 核心。T32MARM 提供了丰富的功能,包括源代码级调试、汇编级调试、系统级调试、实时追踪、性能分析等。

T32MARM 通过一个图形用户界面(GUI)来操作,提供了直观的操作界面和丰富的可视化功能。同时,T32MARM 也提供了命令行接口,用户可以编写脚本来自动化调试过程。

在使用 T32MARM 时,你需要连接到一个 Lauterbach 的硬件调试探针,例如 PowerTrace 或者 PowerDebug。这些调试探针通过 JTAG、SWD 或者 cJTAG 接口连接到你的目标设备,并通过 USB 或者以太网连接到你的主机计算机。

Trace32 .t32 和 .cmm 差异

Trace32 是由 Lauterbach 公司开发的一套强大的嵌入式系统调试工具。它支持. CMM脚本和 .t32 配置文件,这两种文件在 Trace32 调试环境中扮演着不同的角色。

  • .t32 文件:这种文件类型是用来配置 Trace32 调试器的。它包含了一系列用于初始化调试器的配置命令,例如设置调试器的工作目录、加载目标板的配置文件,以及设置各种用户界面选项等。通常在打开 Trace32 调试器时加载这个文件。
  • .cmm 文件:这种文件类型是 Trace32 的脚本文件,使用了 CMM 脚本语言。CMM 是一种由 Lauterbach 开发的脚本语言,用于编写控制 Trace32 调试器的自动化脚本。这些脚本可以用于执行各种复杂的调试任务,如下载和运行代码、设置断点、读写内存和寄存器、控制执行流程、记录和分析数据等。在调试过程中可以加载和运行这个文件。

总的来说,.t32 文件主要用于配置 Trace32 调试器,而 .cmm 文件用于编写和执行自动化调试脚本

veloce 下启动TRACE32

首先在veloce run目录下执行 t32marm 命令,可以通过 -c 指令配置文件,其它参数如下(执行 t32marm -h):

然后会出现如下界面,然后再点击 "File->Run Script..."找到对应的脚本执行。

执行脚本之后如下状态:

脚本内容如下:

shell 复制代码
SYStem.CPU STAR
SYStem.OPTION WAITRESET OFF
SYStem.OPTION ENRESET OFF
SYStem.OPTION RESBREAK OFF
SYStem.CONFIG SLAVE OFF
SYStem.CONFIG.ahbap1.base dp:0x80000000
SYStem.CONFIG.COREBASE E:0xe000e000
SYStem.CONFIG.ITMBASE E:0xe0000000
SYStem.CONFIG.DWTBASE E:0xe0010000
SYStem.CONFIG.DWTBASE E:0xe0410000
;SYStem.CONFIG.TPIUBASE DAP:0xXXXXXXXX
SYStem.CONFIG.DAPIRPOST 4.
  • system.option waiterset:这条命令设置了在等待目标系统复位时的等待时间。例如,system.option waiterset 5s 将等待时间设置为5秒。
  • system.option enreseset:这条命令启用或禁用系统复位。如果启用 (ON), 在执行复位命令时,将会复位整个系统。如果禁用 (OFF), 复位命令将不会影响系统。
  • system.option resbreak:这条命令设置了在系统复位后是否立即进行断点。如果启用 (ON), 在系统复位后,会立即进行断点,即使没有设置断点。如果禁用 (OFF), 则不会。
  • system.option slave:这条命令用于设置是否透明地将调试命令传递给从设备。当设置为 ON 时,调试命令会被透明地传递给从设备。当设置为 OFF 时,将不会传递。
  • system.option ahbap1.base:这条命令设置了AHB-AP(AMBA Advanced High-performance Bus Access Port)的基地址。例如, system.option ahbap1.base 0x80000000 将AHB-AP的基地址设置为0x80000000

请注意,以上解释可能会根据目标系统和调试适配器的具体配置有所不同,建议参考 Lauterbach 的官方文档以获取更准确的信息。

1.1.3 TAP 状态机操作命令

  • jtag.pin enable:这条命令用于使能 JTAG 模式。JTAG(Joint Test Action Group)是一种用于测试集成电路连续性的技术,也常用于嵌入式设备的调试。当你想让你的设备进入 JTAG 模式时,你可以用这条命令。
  • jtag.shifttms:这条命令用于在 JTAG 的 TMS(Test Mode Select)引脚上进行位操作。这个命令需要你提供一个包含要移位的二进制数字的字符串,例如:
    • jtag.shifttms "1 1 1 1 1":复位 JTAG interface,让 TAP 状态机进入 Test-Logic Reset 状态;
    • jtag.shifttms "0 1 1 0 0":让 TAP 状态机进入 Shift-IR 状态;
    • jtag.shifttms "0 1 1 1 1 1 1 1":shift in IDCODE instruction;
    • jtag.shifttms "1 1 0 0":让 TAP 状态机进入 Shift-DR 状态;
    • jtag.shifttms "0 0 0 0....0 0":shift in 32 dummy bits to get the IDCODE;在执行 &ID_CODE=JTAG.SHIFT()此命令从 JTAG 的 TDO(Test Data Out) 引脚读取数据,并将读取的数据分配给 id_code 变量。
  • jtag.shiftreg:这条命令用于在 JTAG 的数据寄存器上 进行位操作。这个命令也需要你提供一个包含要移位的二进制数字的字符串,例如:jtag.shiftreg "1011"
  • jtag.shift:这条命令用于在 JTAG 的 TDI(Test Data In)引脚上进行位操作。这个命令也需要你提供一个包含要移位的二进制数字的字符串。
  • jtag.shift() :是在 JTAG 的 TDI(Test Data In)引脚上进行位操作的命令。在此种情况下,它将从 JTAG 的 TDI 引脚中移出并返回数据。
1.1.3.1 IDCODE(Identification Code)寄存器 介绍

IDCODE(Identification Code)寄存器是 DP 中的一个重要寄存器,用于储存关于目标设备的关键信息,包括制造商 ID、部件编号和版本信息。

IDCODE 寄存器的位布局如下(从最高位到最低位):

  • Bits 31:28 - Version:4位字段,表示 ARM 的版本号。
  • Bits 27:12 - Part number:DP的Part Number是一个16位的字段,位于IDCODE寄存器的第12到27位。它是ARM用来标识具体的DP类型的编号。例如,对于SW-DP,Part Number通常为0xBA00 ,对于JTAG-DP,Part Number通常为0xBA10 。。
  • Bits 11:1 - JEDEC(Joint Electron Device Engineering Council)manufacturer identity:11位字段,表示 JEDEC 标准制造商身份代码。
  • Bit 0 - Always 1:这一位总是被设置为 1。

通过读取 IDCODE 寄存器,调试主机可以识别和验证连接的目标设备的类型和版本,从而选择适当的调试策略。

相关推荐
徐同保9 分钟前
nginx转发,指向一个可以正常访问的网站
linux·服务器·nginx
HIT_Weston11 分钟前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
实心儿儿42 分钟前
Linux —— 基础开发工具5
linux·运维·算法
oMcLin1 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
王阿巴和王咕噜5 小时前
【WSL】安装并配置适用于Linux的Windows子系统(WSL)
linux·运维·windows
布史5 小时前
Tailscale虚拟私有网络指南
linux·网络
水天需0105 小时前
shift 命令详解
linux
wdfk_prog5 小时前
[Linux]学习笔记系列 -- 内核支持与数据
linux·笔记·学习
Xの哲學6 小时前
深入剖析Linux文件系统数据结构实现机制
linux·运维·网络·数据结构·算法
深圳市恒讯科技6 小时前
Linux 文件权限指南:chmod 755、644、drwxr-xr-x 解析
linux·服务器·xr