【ARM Trace32(劳特巴赫) 使用介绍 2.2 1 - Veloce 环境中使用 Trace32 介绍】

本文介绍了在Veloce FPGA仿真器中使用Trace32进行ARM芯片调试的方法,包括Trace启动、配置设置、常用命令如加载bin文件、操作寄存器及内存修改等。通过CMM脚本实现自动化调试流程。
摘要由CSDN通过智能技术生成


请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】


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

背景

Veloce是一款基于FPGA的高速仿真器,可用于验证芯片设计和软件开发, 它和 Trace32 都可以用于仿真联调。具体使用方法需要根据应用场景和需求进行设置和调试。一般来说,可以在Veloce中加载Trace32调试器,并通过Trace32对仿真过程进行监控和调试。同时,也可以在Trace32中加载Veloce仿真器,并通过Veloce对芯片设计和软件开发进行验证和测试。

1.1 Trace 启动

在芯片开发前期阶段(pre silicon) 也需要使用Trace32 来debug一些问题,这个时候通常是veloce与Trace32 simulation进行联合调试,其中 trace32的使用可以参考下面内容:

  • 需要在veloce中保证cpu已经上电,并开始执行程序之后才可以启动trace32,如下:
    在这里插入图片描述

  • Veloce 执行成功后,保持 cpu running 状态,然后执行命令 busb /veloce/xxx/tm32marm -c t32_xxx_jtag.t32 来启动 trace32, 打开trace32 后其界面如 图-1

    在这里插入图片描述

图-1

  • 在 trace32启动后,把启动的配置写成 cmm 格式的脚本,这样打开 trace32 软件后点击 File --> Run Script 打开你的启动脚本,如下图1-2 所示:

    在这里插入图片描述
图 1 - 2

在这里插入图片描述

图 1 - 3

  • 在配置脚本执行完成后,可以看到此时trace32 还不能使用,这个时候需要先进行 attach 操作,如下图 1-4:
    在这里插入图片描述
图 1 - 4

  • 在attach完成之后可以看到此时已经处于running 状态了, 如图 1-5
    在这里插入图片描述
图 1 - 5

  • 在执行trace32的命令时需要先将cpu stop住,如下图 1-6
    在这里插入图片描述
图 1- 6

1.1.1 Trace32 系统相关设置

可以在cmm脚本中进行系统的一些配置,如下简单列出一些:

  • system.cpu cortex-m7 – 设置CPU型号;
  • system.memaccess nexus – 运行时访问内存;
  • system.cpuaccess enable – 运行时访问cpu;
  • system.reset – 复位目标芯片;
  • system.up – 连接目标芯片(目标芯片会复位重启);
  • system.down – 断开目标芯片;
  • system.attach – 连接已经运行的目标芯片,不复位,常用于死机调试。

1.2 Trace 常用命令

1.2.2 加在bin文件

(1) 加载binary文件命令,把指定文件加载到指定地址,比如我们抓取到的故障现场的快照 ramdump。除了起始地址外,还可以加上一个range参数,作为加载范围。加载时会以binary的大小和range之间选小值作为限制。

data.load.binary DDRCS0_0.BIN 0x80000000

(2) 加载elf文件命令,把指定的elf文件加载到目标设备或者仿真设备的0x1488800000地址上去。elf文件在编译时会把源文件的路径加入到elf文件中,我们后面加上/nocode代表没有对应的sourcecode,trace32就不会去对应目录去查找源文件了。当然我们也可以通过/path来指定sourcecode目录。比如:

data.load.elf ../../vmlinux 0x1488800000 /nocode

(3) 加载elf文件到指定地址,并且指定了和该 elf 对应的 source code目录。

data.load.elf ../../vmlinux 0x1488800000 /path  /home/xie/linux-4.4/

1.2.3 寄存器常用命令

(1)打印 D0 寄存器中的值。

PRINT Register(D0)

(2) 设置寄存器的值。这条的含义是设置 Non-secure bit1

Register.Set NS 1

如 设置CPSR寄存器为0x3C5Register.Set CPSR 0x3C5, r.sregister.set 的缩写。

(3) 查看常用寄存器的值: Register.view

1.2.4 内存(寄存器)数据修改

data.set e:0xFFFC132C 0x0100

per.set e:0xFFFC132C 0x0100  //寄存器实际上也是映射到内存地址的

注意运行时修改需要加 e 参数

1.3 变量相关命令

Trace32 观察变量有多种方式,注意 e 参数 表示允许运行时读取内存:

  • 方法一:
    var.watch %e var1 … varn 观察,e 为 cpu 运行期间允许读取

  • 方法二:
    var.view %e var1 … varn 观察,e 为 cpu 运行期间允许读取

  • 方法三:
    data.dump e:(var1) 观察,e为cpu运行期间允许读取
    此方法不算很友好,因为观察的是内存地址里的数据


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


推荐阅读
https://blog.csdn.net/u010875635/article/details/84875567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值