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


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

文章目录

    • 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.mzph.cn/news/136391.shtml

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

相关文章

Android ConstraintLayout

0dp 充满约束 to左侧是控件本身,to右边是约束条件 例如: app:layout_constraintBottom_toBottomOf"id/image_1" app:layout_constraintTop_toBottomOf"id/image_1" 指定权重: app:layout_constraintHorizontal_weight"" app:layout_constra…

调试 Mahony 滤波算法的思考 10

调试 Mahony 滤波算法的思考 1. 说在前面的2.Mahony滤波算法的核心思想3. 易懂的理解 Mahony 滤波算法的过程4. 其他的一些思考5. 民间 9轴评估板 1. 说在前面的 之前调试基于QMI8658 6轴姿态解算的时候,我对Mahony滤波的认识还比较浅薄。初次的学习和代码的移植让…

电路布线问题动态规划详解(做题思路)

对于电路布线问题,想必学过动态规划的大家都很清除。今天就来讲解一下这个动态规划经典题目。 目录 问题描述输入分析最优子结构代码 问题描述 在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导 线(i,π(i))将上端接线柱与下端接线柱相…

与set和map相关的OJ题练习

一、两个数组的交集 题目链接: 349. 两个数组的交集 - 力扣(LeetCode) 题目描述: 给两个数组,求在数组里面共同出现的部分,就是求两个数组的交集,返回顺序不做要求 解题思路: …

技术分享 | web自动化测试-PageObject 设计模式

为 UI 页面写测试用例时(比如 web 页面,移动端页面),测试用例会存在大量元素和操作细节。当 UI 变化时,测试用例也要跟着变化, PageObject 很好的解决了这个问题。 使用 UI 自动化测试工具时(包…

ppt聚光灯效果

1.放入三张图片内容或其他 2.全选复制成图片 3.设置黑色矩形,透明度30% 4.粘贴复制后的图片,制定图层 5.插入椭圆,先选中矩形,再选中椭圆,点击绘图工具,选择相交即可(关键)

Spring Boot 请求/actuator/beans 无法访问 返回404

问题复现 在保证项目加入了spring-boot-starter-actuator依赖,并成功启动后。通过浏览器进行访问,返回如下图结果: 问题排查 1. 查看日志 从日志中可以看到基于路径’/actuator’下只暴露了一个端点 2. 访问http://localhost:8080/actua…

C# OpenCvSharp 环形文字处理 直角坐标与极坐标转换

效果1 效果2 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_Demo {public partial class frmMain : Form{public frmMain(){InitializeComponent();}string fileFilter "*.*…

1. Collection,List, Map, Queue

1. java集合框架体系结构图 2. Collection派生的子接口 其中最重要的子接口是: 1)List 表示有序可重复列表,重要的实现类有:ArrayList, LinkedList ArrayList特点:底层数组实现,随机查找快,增删…

facebook分享-错误记录

无法拉起分享 "code":30000,"msg":"fail:API_ERROR: API_ERROR" 1.确认facebook的app_id是否一致 2.确认是否在app_id应用的白名单里,注册meta开发者,然后把主页的user_id给管理员加 A ContentProvider for this app was…

小程序发成绩

在这个数字化快速发展的时代,让学生能够方便快捷地获取自己的成绩已经成为一项基本的需求。那么,如何实现这一目标呢?对于许多老师来说,可能首先想到的是使用各种代码或者Excel来发布成绩查询。今天,我们就来探讨一下这…

基于SSM的劳务外包管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

RK3568平台开发系列讲解(音视频篇)RTMP 推流

🚀返回专栏总目录 文章目录 一、RTMP 的工作原理二、RTMP 流媒体服务框架2.1、Nginx 流媒体服务器2.2、FFmpeg 推流沉淀、分享、成长,让自己和他人都能有所收获!😄 📢目前常见的视频监控和视频直播都是使用了 RTMP、RTSP、HLS、MPEG-DASH、 WebRTC流媒体传输协议等。 R…

基于SSM的图书管理借阅系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

k8s configMap挂载(项目配置文件放到configMap中,不同环境不同配置)

背景说明 项目对接配置文件加密,比如数据库密码、redis密码等。但是密文只能放到指定的配置文件中(important.properties),该配置文件又不能接收环境变量,所以就很难区分不同环境的不同配置(不同环境的数据库密码、redis密码一般…

easyscholar配置秘钥连接Zotero-style,更方便的了解文献!

如果你不知道什么是easyScholar,以及怎么安装easyScholar? 请参见文章 easyScholar 一、easyscholar配置秘钥 1.首先打开easyscholar插件,并登录 2.点击自定义数据集 3.依次点击 用户信息-开放接口 4.点击刷新 5.在Zoter中 编辑-首选项-高级-编辑器 6.点击…

C语言中一维指针、二维指针和三维指针

指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、double *、char * 等。 如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。 假设…

[论文阅读]PV-RCNN++

PV-RCNN PV-RCNN: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection 论文网址:PV-RCNN 论文代码:PV-RCNN 简读论文 这篇论文提出了两个用于3D物体检测的新框架PV-RCNN和PV-RCNN,主要的贡献如下: 提出P…

虚拟机网络没有有效的ip配置

虚拟机网络没有有效的ip配置: 原因猜测:或许是之前使用的操作系统把网络给占了。 解决方法:点击虚拟机的 遍历->网络编辑器->移除不要的网络,然后添加网络。(下面的图就是我把虚拟网络全部移除,然后…