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

news2024/12/24 2:32:40

文章目录

    • 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.coloradmin.cn/o/1181896.html

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

相关文章

kubernetes集群编排(6)

目录 k8s调度 nodename nodeselector nodeaffinity podaffinity podantiaffinity Taints cordon、drain、delete k8s调度 nodename [rootk8s2 node]# vim nodename.yaml apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: nginxspec:containers:- name: nginximage: n…

Markov Chain Fingerprinting to Classify Encrypted Traffic 论文笔记

0.Abstract 在本文中,提出了用于SSL/TLS会话中传输的应用程序流量的随机指纹。这个指纹基于一阶齐次马尔可夫链,模型识别应用程序的准确率,并提供了检测异常对话的可能性。 1.Introduction 通过SSL/TLS会话时的头部信息创建统计指纹&#xff…

贝塞尔曲线和曲面原理

文章目录 贝塞尔曲线1.伯恩斯坦多项式法2.德卡斯特里奥算法(de Casteljau Algorithm) 贝塞尔曲面实验结果 贝塞尔曲线 给出一系列点(一般称为控制点),贝塞尔曲线可以利用这些点得到一个平滑的曲线,贝塞尔曲…

机器学习模型,超级全面总结!

机器学习是一种通过让计算机自动从数据中学习规律和模式,从而完成特定任务的方法。按照模型类型,机器学习可以分为两大类:监督学习模型和无监督学习模型。 附注:除了以上两大类模型,还有半监督学习和强化学习等其他类…

MicroStation二次开发问题记录(1):打开项目时自动加载dll文件

环境配置 Windows10 MicroStation CE Update16 Visual Studio 2019 前言 开发好的dll文件若每次都需要在打开MS时单独加载,则过于繁琐,因此可以在确定的工程项目文件中进行一次设置,在打开该文件时自动加载 一、加载dll文件 1. 点击File—Se…

计算机找不到MSVCR120.dll,MSVCR120.dll丢失的三种解决方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“MSVCR120.dll丢失”。这个错误通常出现在运行某些程序时,导致程序无法正常启动。那么,如何解决MSVCR120.dll丢失的问题呢?小编将详细介绍解决方法&#…

Luatos Air700 改变BL0942串口波特率

LuatOs 改变模块串口波特率思路参照 luatos 改变AIR530串口波特率 BL0942默认串口波特率可以通过SCLK_BPS引脚接3.3V电源设置到9600bps 但如果调整到38400bps需要修改0x19寄存器 bl0942 v1.06版的特殊寄存器说明,注意早期版本特殊寄存器说明存在错误 完整代码 -- L…

Java进阶(再论线程)——线程的4种创建方式 线程的生命周期 线程的3大特性 集合中的线程安全问题

前言 多线程作为编程语言中的难点,虽然初级程序员可能很少遇到线程相关的开发任务,但是作为程序员,持续学习和保持对编程的热爱,要求我们对于线程也需要有一定的认识。 本篇博客介绍Java中创建线程的4种方式,并进行了…

【环境装配】Anaconda在启动时闪现黑框,闪几次后仍能正常使用,解决黑框问题

anaconda闪黑框这个问题遇到好久了,也没找到相关资料来解决,今天做了两个更新,刚好可以不闪黑框了,记录一下。 更新anaconda 在界面右上角的位置点击更新,更新完后再打开时只闪现两个黑框了,之前好像有五…

UE5 c++将自定义UserWdiget添加到对应菜单栏

前言: 为了实现与UserWidget一致的右键添加,便有了此章 注:这里使用的是UE5.3 目标内容: 这里可以参考UserWidget的源码,拷贝一份属于自己的就ok(本篇章只是全改成了属于自己的CommonUserWidget&#xff…

定时发圈怎么设置?

微信本身是不能定时发送朋友圈的。微信公众号可以定时发送,微博可以定时发送,那微信可不可以也定时发送呢?当然可以,只要用这个方法,微信也能实现定时发朋友圈,不用再守着时间发朋友圈了。

USB HID在系统下通信的一些总结

前言 这篇文章主要介绍在PC(上位机,Host)端,通过HID与硬件进行通信的一些总结,像很多同学肯定和我一样压根不想 去了解什么USB相关的资料,毕竟USB太复杂了,只想有个API给我们进行下数据就好了&…

3D视觉引导纸箱拆码垛,助力物流行业转型升级

近年来,自动化和智能化技术在各行业的应用越来越广泛,特别是在物流和仓储领域。纸箱拆码垛是物流仓储中的一个重要环节。 人工分拣效率低、错误率高、成本高,传统的拆码垛设备存在兼容性差,对纸箱的识别率不高、操作不灵活等问题…

【分布式事务】初步探索分布式事务的概率和理论,初识分布式事的解决方案 Seata,TC 服务的部署以及微服务集成 Seata

文章目录 一、分布式服务案例1.1 分布式服务 demo1.2 演示分布式事务问题 二、分布式事务的概念和理论2.1 什么是分布式事务2.2 CAP 定理2.3 BASE 理论2.4 分布式事务模型 三、分布式事务解决方案 —— Seata3.1 什么是 Seata3.2 Seata 的架构3.3 Seata 的四种分布式事务解决方…

渗透实战靶机2wp

0x00 简介 1、测试环境 目标IP:10.xxxx 测试IP:192.168.139.128 测试环境:win10、kali等 测试时间:2021.7.22-2021.7.22 测试人员:ruanruan 2、测试过程 本次实战主要通过对收集到的端口、目录等信息进行持续整…

​怎么测试websocket接口

在部分业务中,我们需要使用长连接,我们可以使用http长连接或者websocket,开发结束后难免会遇到测试问题,这里推荐2个,一个是postman,一个是网站 postman 测试网站 测这边推荐测试网站,支持ws/w…

赴日工作赴日IT 如何找到一份日本IT工作?

IT在日本属于普通白领工作,那些想靠IT工作发财就不必考虑了。但是靠IT工作能安安稳稳的过个自己的小日子没问题,买房买车问题不大,作为一个普通人,在日本可以过的比较舒服。对有在日本长期发展的打算的还算是一个比较好的方向&…

Vue创建浅层响应式数据

shallowReactive:只处理对象第一层数据的响应式(浅响应式)。 shallowRef:只处理基本数据类型的响应式,不处理对象类型的响应式。 shallowReactive 适用于:如果有一个对象类型的数据,结构比较深…

【软考】2023下半年系统集成项目管理工程师案例分析真题(第五批次)

2023下半年系统集成项目管理工程师案例分析真题(第五批次) 案例一 (17分)-配置管理案例二 (20分)-进度管理案例三 (18分)-风险管理案例四 - 人力资源管理 系列文章版本记录 案例一 (17分)-配置管理 某游戏公…

【Spring】@Component组件

大前提&#xff1a; 添加了相关的约束文件以及注解支持 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:…