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

news2024/11/17 4:36:31

文章目录

    • 背景
    • 1.1 Trace 启动
      • 1.1.1 Trace32 系统相关设置
    • 1.2 Trace 常用命令
      • 1.2.2 加在bin文件
      • 1.2.3 寄存器常用命令
      • 1.2.4 内存(寄存器)数据修改
    • 1.3 变量相关命令

背景

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运行期间允许读取
    此方法不算很友好,因为观察的是内存地址里的数据

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

16.RocketMQ之消费重试以及原理

highlight: arduino-light 1.4 消费重试 对于顺序消息,当消费者消费消息失败后,消费者会在本地自动不断进行消息重试,每次间隔时间为 1 秒,重试最大值是 Integer.MAX_VALUE。 对于无序消息(普通、定时、延时、事务消息)当消费者消费消息失败时可以通过设置返回状态达到重试的目…

湿地环境监测物联网解决方案

湿地作为生态系统的关键组成部分,发挥着涵养水源、调节气候、改善环境、维护生物多样性等生态功能。湿地提供了独特的生境,为许多鸟类、鱼类和其他野生动物提供了栖息地和食物来源。此外,湿地还具有保持水量平衡和水质净化的重要功能&#xf…

最优控制:代数黎卡提方程ARE(Algebraic Riccati Equation)

本文介绍代数黎卡提方程的Matlab解法,包括直接求解和迭代求解 问题描述: 一、数值解法 可以看出,ARE方程是关于P的一个非线性方程,当系统矩阵维度较高时,难以求解,但是MATLAB给出了求解ARE的函数care % 系…

颜色聚合向量 Color Co-ccurrence Vector 介绍以及MATLAB代码实现

这件事情的起因是我想复习一下我在亚太杯数学建模当中使用过的CCV这种方法,但是CSDN平台上找了半天都没有,所以后来决定Google一下,终于找到了,甚至还有实现的代码,因此放上来。原文见Dr. Mahmoud Attia的博客。 一、…

JAVA中的伪共享与缓存行

一.伪共享与缓存行 1.CPU缓存架构 CPU 是计算机的心脏,所有运算和程序最终都要由它来执行。 主内存(RAM)是数据存放的地方,CPU 和主内存之间有好几级缓存,因为即使直接访问主内存也是非常慢的。 CPU的速度要远远大…

一图看懂CodeArts Board 5大特性,带你玩转看板服务

华为云看板服务CodeArts Board,通过构建研发效能度量体系,实现软件研发过程的可视化、软件交付的可管理可跟踪可量化,及时识别研发过程的堵塞点和改进点,通过数据驱动运营和治理,不断提升企业的软件能力和研发效能。

详解JAVA序列化

目录 1.什么是序列化 2.JAVA中的序列化 2.1.成员变量必须可序列化 2.2.transient关键字,可避免被序列化 2.3.无法更新状态 2.4.serialVersionUID 3.JDK序列化算法 4.序列化在实际中的一些应用 1.什么是序列化 序列化就是将对象转换为二进制格式的过程。对象…

Maven安装和配置详细教程

Maven安装和配置详细教程 1、Maven简介 Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。 2、Maven下载 点击Maven下载官方地址下载Maven。或者去…

postman持续集成-Jenkins自动构建

自动构建,就是设置一个定时器,定时时间到, Jenkins 自动执行测试用例 比如说,我设置下午五点,那么jenkins就是自动执行命令,自动生成报告,后续还可加上邮箱,会把报告发至邮箱 1. Jenkins 首页,点击任务名:如&#xff…

数据库—关系代数

传统的集合运算 在数据库中的关系代数运算有以下三种基本运算 并交差 必须满足两个表之间的属性个数必须一样。(必须具有相容性) 投影与选择运算 投影:π L _L L​( R ) 解释->π是投影符号,L是R表中的属性列,从…

临时文件中转服务的搭建-chfs软件的使用

因为经常用到远程桌面连接,所以本地pc和远程pc间的文件传输一直是个经常遇到的问题,尝试过用vftp搭建ftp服务,但是该服务在许多vps上被禁用,且windows上使用也要进行设置,比较麻烦。所幸发现了ods-im/CuteHttpFileServ…

接口测试如何做?你真的会做吗?全网超全整理实战案例...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 API测试的流程 准…

分布式事务Seate

一、Seata简介 1、Seata的核心组件 TC (Transaction Coordinator)事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。TM (Transaction Manager)事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。RM (Resourc…

2023下半年北京/上海/深圳软考(中/高级)认证招生

软考是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成…

Docker安装与启动

Docker安装与启动 文章目录 Docker安装与启动前言容器与虚拟机比较 1、安装Docker2、设置ustc的镜像3、Docker的启动与停止总结 前言 容器与虚拟机比较 虚拟机(VM)是计算机系统的仿真。简而言之,它可以在实际上是一台计算机的硬件上运行看起…

Docker教程

Docker 能解决的问题 ⾸先,我们先来看⼏个问题: 1. 合作开发的时候,在本机可以运⾏,在别⼈的电脑上跑不起来。 这⾥我们以 Java Web 应⽤程序为例,⼀个 Java Web 应⽤程序涉及很多东⻄,⽐如 JDK 、 Tomc…

机器学习 day21(Tensorflow代码实现)

Tensorflow代码实现 在tensorflow中训练神经网络模型的步骤:第一步:指定模型,并告诉tensorflow按何种方式计算。第二步:使用特定的损失函数编译模型。第三步:训练模型

企业知识管理要怎么做,才能清晰有序?

在当今快速变化的商业环境中,企业知识管理的重要性日益凸显。有效的知识管理可以帮助企业整理、保存和传递知识,提高员工的工作效率和创新能力,从而为企业获得竞争优势奠定基础。本文将介绍企业在进行知识管理时应采取的措施,以确…

微型导轨的使用寿命能达到多久?

微型导轨,顾名思义就是体积很小的导轨,一般是应用在小型化设备中的,像半导体设备,医疗设备,IC制造设备,X-Y table,精密测量及检测仪器,高速皮带驱动设备,高速移载设备等都…

传说中,让测试猿分分钟心酸的五大谣言

谣传1:测试无聊 综观现今软件测试的一些轶事,我对某些错误想法的频繁出现感到吃惊。尽管有很多可以罗列,但是我还是想分享测试的五个最常见的谣传(基于我短暂的经验)。我发现前三个盛行于一些主流的新闻文章&#xff…