【ARM Trace32(劳特巴赫) 使用介绍 14 -- Go.direct 介绍】


请阅读【Trace32 ARM 专栏导读】


文章目录

    • Trace32 Go.direct
      • Go配合程序断点使用
      • Go 配合读写断点使用
      • Go 快速回到上一层函数
    • System.Mode Go

Trace32 Go.direct

TRACE32调试过程中,会经常对芯片/内核进行控制,比如全速运行、暂停、单步等等。这篇文章先介绍全速运行Go.direct
在这里插入图片描述
Go命令一般用于控制芯片/内核的全速、实时运行,命令不区分大小写,也可以缩写成一个字母g

这边文章以测试函数t32_test 为例进行介绍,其反 C 代码如下:

struct t32_str {uint32_t        t32_val;uint32_t        t32_id;char*           t32_name;
};static volatile struct t32_str str_t32;
static uint32_t volatile g_t32;void t32_test(void)
{uint32_t t32_tmp;hal_printf("%s\n", __func__);t32_tmp = 0xdeadbeef;g_t32 = 0xdeadbeef;str_t32.t32_val = 0x5a5a5a5a;str_t32.t32_id = 0xacce55;str_t32.t32_name = "trace32";hal_printf("t32_tmp:0x%x, g_t32:0x%x, val:0x%x, id:0x%x, name:%s\n",t32_tmp, g_t32, str_t32.t32_val, str_t32.t32_id, str_t32.t32_name);
}

汇编代码如下:

38110 2001823c <t32_test>:
38111 2001823c:       b510            push    {r4, lr}
38112 2001823e:       b082            sub     sp, #8
38113 20018240:       490c            ldr     r1, [pc, #48]   ; (20018274 <t32_test+0x38>)
38114 20018242:       480d            ldr     r0, [pc, #52]   ; (20018278 <t32_test+0x3c>)
38115 20018244:       f7fa fa06       bl      20012654 <hal_printf>
38116 20018248:       480c            ldr     r0, [pc, #48]   ; (2001827c <t32_test+0x40>)
38117 2001824a:       490d            ldr     r1, [pc, #52]   ; (20018280 <t32_test+0x44>)
38118 2001824c:       6001            str     r1, [r0, #0]
38119 2001824e:       f04f 335a       mov.w   r3, #1515870810 ; 0x5a5a5a5a
38120 20018252:       6043            str     r3, [r0, #4]
38121 20018254:       4b0b            ldr     r3, [pc, #44]   ; (20018284 <t32_test+0x48>)
38122 20018256:       6083            str     r3, [r0, #8]
38123 20018258:       4b0b            ldr     r3, [pc, #44]   ; (20018288 <t32_test+0x4c>)
38124 2001825a:       60c3            str     r3, [r0, #12]
38125 2001825c:       6802            ldr     r2, [r0, #0]
38126 2001825e:       6843            ldr     r3, [r0, #4]
38127 20018260:       6884            ldr     r4, [r0, #8]
38128 20018262:       68c0            ldr     r0, [r0, #12]
38129 20018264:       9001            str     r0, [sp, #4]
38130 20018266:       9400            str     r4, [sp, #0]
38131 20018268:       4808            ldr     r0, [pc, #32]   ; (2001828c <t32_test+0x50>)
38132 2001826a:       f7fa f9f3       bl      20012654 <hal_printf>
38133 2001826e:       b002            add     sp, #8
38134 20018270:       bd10            pop     {r4, pc}
38135 20018272:       bf00            nop
38136 20018274:       2001e478        .word   0x2001e478
38137 20018278:       2001a5e8        .word   0x2001a5e8
38138 2001827c:       20021038        .word   0x20021038
38139 20018280:       deadbeef        .word   0xdeadbeef
38140 20018284:       00acce55        .word   0x00acce55
38141 20018288:       2001c8d8        .word   0x2001c8d8
38142 2001828c:       2001c8e0        .word   0x2001c8e0

Go配合程序断点使用

正常我们设置好断点后,都需要点击Go,来使CPU内核跑起来并达到断点处:

Break.set t32_test
Go

在这里插入图片描述

我们也可以把上面两个命令结合起来:

Go t32_test

这样我们可以把程序一直运行到t32_test函数的入口处。

当然,写地址效果是一样的:

Go 0x2001823C

Go 配合读写断点使用

命令 Var.go g_t32 /Write 便可以把程序运行到 g_t32 变量被改写的位置。
在这里插入图片描述

Go 快速回到上一层函数

有时,当程序正好停在某一个函数内,例如下图的 t32_test,我希望快速地执行完当前函数的所有代码,并返回到上一层调用者的位置:
在这里插入图片描述

我们可以使用命令 Go.up , 执行完后,可以看到 PC 指针已经跳出 t32_test
在这里插入图片描述

System.Mode Go

上面介绍的Go命令,不等同于 System.Mode Go ,也就是说不等同于如下窗口的Go按钮
在这里插入图片描述

此处Go按钮的完整作用是:

  • Step1:复位芯片(如果接有复位信号)
  • Step2:TRACE32尝试连上芯片内核并建立调试通信
  • Step3: 控制芯片内核全速运行

推荐阅读
https://blog.csdn.net/weixin_48120109/article/details/126167861

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

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

相关文章

Go——协程

协程 协程是Go语言最大的特色之一。 1、协程的概念 协程并不是Go发明的概念&#xff0c;支持协程的变成语言有很多。Go在语言层面直接提供对协程的支持称为goroutine。 1.1 基本概念 进程 进程是应用程序启动的实例&#xff0c;每个进程都有独立的内存空间&#xff0c;不同…

记录 | vscode禁止插件自动更新的方法

shift command p 打开然后输入 > setting.json&#xff0c;选择用户设置 在 settings.json 配置文件中增加一项&#xff1a; "extensions.autoUpdate": false,

ohpm : 无法将“ohpm”项识别为 cmdlet、函数...

这是因为没有在环境变量里配置 Ohpm. 左上角File->Settings,找到Ohpm放的路径 bin目录下&#xff0c;然后复制 此电脑->右键属性->高级系统设置->环境变量->系统变量找到Path,添加刚才复制的那一行 重启 DevEco ,在Terminal输入 ohpm -v ,出现版本号就欧了 如果…

Python中容易被忽视的核心功能

Python是一门富有魅力的编程语言&#xff0c;拥有丰富的功能和库&#xff0c;以及强大的社区支持。然而&#xff0c;有一些核心功能经常被忽视&#xff0c;而它们实际上可以极大地提高代码的质量、可读性和性能。 1. 解析命令行参数的argparse库 很多Python开发者在编写命令行…

开关电源测试之电源漏电流测试方法分享

一、外观检测 检查开关电源外观是否完好&#xff0c;是否有破损、变形、漏油等情况。 二、检测火线和零线的电流 实时测量火线和零线的电流&#xff0c;当两个电流值不相等且都不为零时断开零线&#xff0c;然后测火线的电流。当火线电流不为0时&#xff0c;判断电流为漏电流状…

02.尚医通 Mybatis-Plus

1、前期准备 a. 创建数据库 CREATE TABLE USER (id BIGINT(20)NOT NULL COMMENT 主键ID,NAME VARCHAR(30)NULL DEFAULT NULL COMMENT 姓名,age INT(11)NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50)NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id) );INSERT INTO user…

振弦采集仪:工程安全监测的“智能助手”

振弦采集仪&#xff1a;工程安全监测的“智能助手” 振弦采集仪是一种用于工程安全监测的设备&#xff0c;它可以被视为工程安全监测的“智能助手”。振弦采集仪通过测量结构物振动的频率和振幅来判断结构物的安全性&#xff0c;并实时监测结构物的变化。 振弦采集仪可以广泛…

番茄病虫害检测系统:融合感受野注意力卷积(RFAConv)改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 番茄是全球重要的蔬菜作物之一&#xff0c;具有广泛的经济和营养价值。然而&#xff0c;番茄病虫害的严重威胁导致了产量和质量的损失。因此&#xff0c;开发一种…

@RequestParam的使用

RequestParam使用 &#xff08;1&#xff09;不加RequestParam前端的参数名需要和后端控制器的变量名保持一致才能生效 &#xff08;2&#xff09;不加RequestParam参数为非必传&#xff0c;加RequestParam写法参数为必传。但RequestParam可以通过RequestParam(required fals…

Hadoop3.x完全分布式环境搭建Zookeeper和Hbase

集群规划 IP地址主机名集群身份192.168.138.100hadoop00主节点192.168.138.101hadoop01从节点192.168.138.102hadoop02从节点 Hadoop完全分布式环境搭建请移步传送门 先在主节点上进行安装和配置&#xff0c;随后分发到各个从节点上。 1. 安装zookeeper 1.1 解压zookeeper并…

spring 笔记三 Spring与Web环境集成

文章目录 Spring与Web环境集成ApplicationContext应用上下文获取方式导入Spring集成web的坐标置ContextLoaderListener监听器通过工具获得应用上下文对象SpringMVC概述SpringMVC快速入门 Spring与Web环境集成 ApplicationContext应用上下文获取方式 应用上下文对象是通过new …

RFID射频识别技术在鞋业中的应用

RFID射频识别技术在鞋业中的应用 在鞋业制造、入库、出库、货物运输的时候都会遇到一个大问题&#xff0c;货物的管理和盘点&#xff0c;传统的人工盘点不但费时费力&#xff0c;还会有人为统计出错的情况出现。十分不方便货物的管理&#xff0c;对货物的出入库和运输造成不少…

2021-2023年历年地震数据,shp矢量数据,含时间、位置、类型、震级等信息

基本信息. 数据名称: 历年地震数据 数据格式: Shp 数据时间: 2021-2023年 数据几何类型: 点 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1dzlx地震类型2zj震级3zysd震源深度&#xff08;米&#xff09;…

MidJourney笔记(7)-Seeds

我相信很多人在使用MidJourney的时候,都会遇到一个问题,就是如何保持生成图像的一致性,或者相对一致性,差异性不是很大。此时,我们就需要引入一个seed值,类似给这个提示词生成的图片做一个id标识。 那这个seed值怎么使用? 其实,在我们每次生成的图片,都有有一个seed值…

2006年全国水土流失防治区数据,shp/excel格式,多字段,包含防治区名称、类型、编码、二级编码等

基本信息. 数据名称: 全国水土流失防治区数据 数据格式: Shp、Excel 数据时间: 2006年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1city_dm城市代码2city城市名称3mc防治区名称4bhlx…

保姆级 Keras 实现 YOLO v3 三

保姆级 Keras 实现 YOLO v3 三 一. 分配 anchor box二. 正负样本匹配规则三. 为每一个 anchor box 打标签3.1 anchor box 长什么样?3.2 每一个 anchor box 标签需要填充的信息有哪些?3.3 ( Δ x , Δ y , Δ w , Δ h ) (\Delta x, \Delta y, \Delta w, \Delta h) (Δx,Δy,…

DC-DC变换集成电路B34063——工作电压范围宽,静态电流小

B34063为一单片DC-DC变换集成电路&#xff0c;内含温度补偿的参考电压源(1.25V)、比较器、能有效限制电流及控制工作周期的振荡器,驱动器及大电流输出开关管等&#xff0c;外配少量元件&#xff0c;就能组成升压、降压及电压反转型DC-DC变换器。 主要特点&#xff1a; ● 工作…

【wimdows电脑上管理员账户与管理员身份的区别】

管理员账户 在控制面板的用户账户中&#xff0c;点击更改账户类型&#xff0c;可以看到目前的账户是“管理员账户”还是“标准账户”。 管理员身份 在快捷方式上右击&#xff0c;可以看到&#xff0c;可以选择以管理员身份运行该软件。 如何查看某个应用是否以管理员身份…

OpenHarmony应用开发——更改应用名称和图标

一、前言 相比其他&#xff0c;可能学者更希望学到的就是更改应用名称和图标&#xff0c;当一个自己的程序运行在手机上的时候&#xff0c;或许更有成就感...... 二、详细步骤 首先&#xff0c;我们要先找到声明应用图标和应用名称的地方。如下图所示&#xff0c;在entry ->…

RocketMQ容器化最佳实践

前言 在上一篇文章基于RocketMQ实现分布式事务我们完成基于消息队列实现分布式事务&#xff0c;为了方便后续的开发和环境统一&#xff0c;我们决定将RocketMQ容器化部署到服务器上。所以这篇文章就来演示一下笔者基于docker-compose完成RocketMQ容器化的过程。 本篇文章为了…