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

文章目录

    • T32MARM 介绍
    • Trace32 .t32 和 .cmm 差异
    • veloce 下启动TRACE32
      • 1.1.3 TAP 状态机操作命令
        • 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...”找到对应的脚本执行。

执行脚本之后如下状态:
在这里插入图片描述
在这里插入图片描述
脚本内容如下:

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 寄存器,调试主机可以识别和验证连接的目标设备的类型和版本,从而选择适当的调试策略。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch 高级查询语法Query DSL实战

ES倒排索引 当数据写入 ES 时,数据将会通过 分词 被切分为不同的 term,ES 将 term 与其对应的文 档列表建立一种映射关系,这种结构就是 倒排索引。如下图所示: 为了进一步提升索引的效率,ES 在 term 的基础上利用 ter…

Redis中的渐进式遍历-Scan命令

之前我们学习过遍历命令keys,而keys *是一次性的把整个redis中所有的key都获取到.在不知道当前redis中有多少key的情况下,这个操作是非常危险的,可能会一下子得到太多的key而阻塞redis服务器.从而使其他redis客户端卡顿. 通过渐进式遍历,就可以做到,既可以获取到所有的key,同时…

linux服务器添置一块新硬盘操作

之前有一台ubuntu服务器,考虑未来存储容量可能不够,添加了一块新的硬盘,这是本次添置硬盘过程。 首次接上硬盘,提示: 没有找到新接入设备,查看接线,主板有个硬盘接线端子坏了,更换一…

【MySQL事务篇】多版本并发控制(MVCC)

多版本并发控制(MVCC) 文章目录 多版本并发控制(MVCC)1. 概述2. 快照读与当前读2.1 快照读2.2 当前读 3. MVCC实现原理之ReadView3.1 ReadView概述3.2 设计思路3.3 ReadView的规则3.4 MVCC整体操作流程 4. 举例说明4.1 READ COMMITTED隔离级别下4.2 REPEATABLE READ隔离级别下 …

C# wpf 实现任意控件(包括窗口)更多拖动功能

系列文章目录 第一章 Grid内控件拖动 第二章 Canvas内控件拖动 第三章 任意控件拖动 第四章 窗口拖动 第五章 附加属性实现任意拖动 第六章 拓展更多拖动功能(本章) 文章目录 系列文章目录前言一、添加的功能1、任意控件MoveTo2、任意控件DragMove3、边…

【计算机网络笔记】网络层服务与核心功能

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

[云原生案例2.1 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】节点部分

文章目录 1. 常见的K8S安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署 2. Kubernetes单master集群架构 ---- (二进制安装部署)2.1 前置准备2.2 操作系统初始化2.3 部署 docker引擎 ---- (所有 node 节点)2.4 部署 etcd 集…

Windows 下编译 TensorFlow 2.9.1 CC库

参考 Intel 的 tensorflow 编译指导,不过项目还是可以用 TF原本的,不是一定要选择Intel 的TF版本。 安装 MSVC 2019 安装 Intel OneDNN OneMKL 似乎也可以不安装 ( & ) https://www.intel.cn/content/www/cn/zh/developer/articles/tool/one…

Linux的常见指令(三)

目录 一、管道 | 二、find 三、which 四、grep 五、zip/unzip 六、alias 七、输出重定向与输入重定向 1、echo 2、输出重定向 3、输入重定向 八、tar 九、bc 十、uname -r 十一、热键 一、管道 | 我们首先创建一个下面这样的文件 前面我们知道了使用head和tail分…

【T690 之十二】基于方寸EVB2开发板(T690芯片)构建基于GMSSL的文件系统的方式

备注: 1,假设您已对方寸微电子的T690系列芯片的使用方式都有了一定的了解,然后需要构建基于GMSSL的文件系统,此文才对您有意义; 2,若您对方寸微电子的T690芯片不了解,但想进一步了解它&#xff…

YOLOv8-Cls推理详解及部署实现

目录 前言一、YOLOv8-Cls推理(Python)1. YOLOv8-Cls预测2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 二、YOLOv8-Cls推理(C)1. ONNX导出2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 三、YOLOv8-Cls部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出4. 源码修…

GoLong的学习之路(二十一)进阶,语法之并发(go最重要的特点)(协程的主要用法)

并发编程在当前软件领域是一个非常重要的概念,随着CPU等硬件的发展,我们无一例外的想让我们的程序运行的快一点、再快一点。Go语言在语言层面天生支持并发,充分利用现代CPU的多核优势,这也是Go语言能够大范围流行的一个很重要的原…

云闪付支付接口的技术实现方式

(一)整体框架。      云闪付的整体架构如图 1 所示,总体与原有的支付清算体系相同,只是增加了云端支付平台、移动应用平台和移动应用。云端支付平台主要对移动应用端的限制密钥进行更新和管理,同时对云端支付账户进…

k8s存储卷

目录 1、emptyDir存储卷 2、hostPath存储卷 3、nfs共享存储卷 4、PVC 和 PV 4.1 PV和PVC之间的相互作用遵循这个生命周期: 4.2 PV的状态 4.3 一个PV从创建到销毁的具体流程如下: 静态PVC: 动态PVC 1、emptyDir存储卷 当Pod被分配给节…

把wpf的窗体保存为png图片

昨晚在stack overflow刷问题时看到有这个问题,今天早上刚好来尝试学习一下 stack overflow的链接如下: c# - How to render a WPF UserControl to a bitmap without creating a window - Stack Overflow 测试步骤如下: 1 新建.net frame…

Banana Pi BPI-M6开源硬件开发板介绍以及与 Raspberry Pi 5 的比较

Banana Pi BPI-M6 Banana Pi BPI-M6是Banana-Pi组织最新开发的一款类似于Raspberry Pi的单板计算机,具有相同的尺寸格式和相似的功能。 今天我想向您介绍这些功能,并将它们与新的 Raspberry 5 提供的功能进行一些比较。 Raspberry Pi是英国 Raspberry P…

黑马程序员项目-黑马点评

黑马点评1 短信登录 基于Session实现登录流程 发送验证码: 用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号 如果手机号合法,后台此时生成对应的验证码,同时将验证码进行…

计算机毕业设计java+springboot+vue的旅游攻略平台

项目介绍 本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。员工管理系统主要包括个人中心、用户管理、攻略管理、审核信息管理、积分…

群晖管家+内网穿透实现公网远程访问本地黑群晖

白嫖怪狂喜!黑群晖也能使用群晖管家啦! 文章目录 白嫖怪狂喜!黑群晖也能使用群晖管家啦!1.使用环境要求:2.下载安装群晖管家app3.随机地址登陆群晖管家app4.固定地址登陆群晖管家app 自己组装nas的白嫖怪们虽然也可以通…

3.JMeter高级使用-让你与众不同

目录 概述插件下载与安装插件下载配置插件 服务器硬件资源监控(精简版)配置服务端代理JMeter配置监控CPU监控网络 JMeter下载结束 概述 今日目标: 插件下载与安装Basic Graphs 主要点 Average Response Time 平均响应时间Active Threads 活动线程数Successful/Fai…