【ARM Trace32(劳特巴赫) 使用介绍 3 - trace32 访问运行时的内存】
请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】
文章目录
- 1.1 trace32 访问运行时的内存
- 1.1.1 侵入式 运行时内存访问
- 1.1.2 非侵入式运行时访问
- 1.1.3 缓存一致性的非侵入式运行时访问
- 1.2 Trace32 侵入式和非侵入式 运行时访问
- 1.2.1 侵入式访问
- 1.2.2 非侵入式运行时访问
- 1.3 Trace32 缓存一致性的运行时访问
1.1 trace32 访问运行时的内存
1.1.1 侵入式 运行时内存访问
侵入式意思是CPU周期性的停止和启动,这样外部debugger才可以使用CPU的 load/store指令访问内存内容。
这种方式下,debugger和cpu看待内存的方式是一样的,但是这样方式限制了“运行时”的特点。
1.1.2 非侵入式运行时访问
非侵入式就意味着 CPU不用停止下来 当进行memory访问的时候。所以外部debugger就不能使用cpu来进行内存的访问了,所以debugger 必须使用 DAP的方式来进行访问,例如 通过 AHB 和 AXI 总线进行访问,前提是 AHB或者AXI 口必须映射到 memory上。
1.1.3 缓存一致性的非侵入式运行时访问
这种访问指的是 AHB/AXI 总线绕过 cache 进行访问,在下面的例子中 变量 myVar 只会在 cache 中更新并没有写入到memory中,它的当前状态对外部 debugger是不可见的。
下面的例子则不同,它的 cache 策略使用的是write-back 方式,当外部 debugger来读取这个变量时会通过 SCU(Snoop Control Unit) 告知 cache 先将其刷到 memory中,所以 debugger读到的数据和cache中的数是一样的。
上面这个例子中,cache的维护是通过 SCU进行的,在 AXI 访问的过程中,SCU会触发 cache将数据写入memory中。需要注意AHB没有这种功能。
1.2 Trace32 侵入式和非侵入式 运行时访问
使用Trace32 进行运行时访问的时候需要加上个前缀 E
类, E
表示运行访问,E 可以和其他访问类一块使用,如:Data.dump NSD:<address>
可修改成 Data.dump ENSD:<address>
1.2.1 侵入式访问
可以使用功下面的命令:
SYStem.MemAccess.StopAndGo
Data.dump E:0x100
Var.view %E myVar
1.2.2 非侵入式运行时访问
该访问方式也就是直接DAP访问,可以直接通过AHB或者 AXI来访问,并指定访问“类”。这种访问方式需要硬件定义好 AP(access port)。如果使用了一个常用的芯片,在 Trace32 的脚本中使用 SYStem.CPU
命令之后,Trace 就会将 AP 配置好。
SYStem.CONFIG MEMORYACCESSPORT 1 ; Define memory access port and AXI
SYStem.CONFIG AXIACCESSPORT 1. ; access port (e.g. port number 1)
Data.dump EAXI:<address> ; Run-time access via AXI. Prefix “E”
Data.dump EAXI:myVar ; is optional but recommended to read myVarn via the DAP
在 SoC-400 中可以存在 0-255 个 AP port, 所以需要使用 “AXIAPn.Port <port number>
” 来指定是哪个 AP PORT。
在 SoC-600 使用的不是 port number 而是地址,如:sys.config.axiap1.base dp:0x2b170000
。
使用 DAP的非侵入是运行时访问的例子如下:
SYStem.CONFIG MEMORYACCESSPORT 1. ; Define memory access port and AHB
// SYStem.CONFIG AHBACCESSPORT 1. ; or AXI access port
SYStem.CONFIG AXIACCESSPORT 1.SYStem.MemAccess DAP ; Non-intrusive access via AHB / AXIData.dump E:0x100 ; Run-time access via DAP. Prefix “E”
Var.view %E myVar ; is required to read 0x100 or myVar
1.3 Trace32 缓存一致性的运行时访问
使用命令: SYStem.Option.AXIACEEnable ON
SYStem.CONFIG.MEMORYACCESSPORT 1. ; Define memory access port and AXI
SYStem.CONFIG.AXIACCESSPORT 1. ; access port (e.g. port number 1)SYStem.Option.AXIACEEnable ON ; Enable cache coherent transactions
SYStem.MemAccess DAP ; Non-intrusive access via AXIData.dump E:0x100 ; Run-time access via AXI. Prefix “E”
Var.view %E myVar ; is required to read 0x100 or myVar
如果想通过Trace32 来访问下图中 VPU或者 NPU上的寄存器,那么需要怎么做?
sys.config.axiap1.base dp:0xxxxxxxxx
sys.up
d.dump eaxi:0xxxxxxxxx // 读 NI-700里的地址
system.attach 与 system.up 命令不同,system.attach 不会对目标系统进行复位。
相关文章:

【ARM Trace32(劳特巴赫) 使用介绍 3 - trace32 访问运行时的内存】
请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 1.1 trace32 访问运行时的内存1.1.1 侵入式 运行时内存访问1.1.2 非侵入式运行时访问1.1.3 缓存一致性的非侵入式运行时访问 1.2 Trace32 侵入式和非侵入式 运行时访问1.2.1 侵入式访问1.2.2 非侵入式运行时访问 1…...

VirtualBox网络地址转换(NAT),宿主机无法访问虚拟机的问题
问题:NAT模式下,默认只能从内访问外面,而不能从外部访问里面,所以只能单向ping通,虚拟机的ip只是内部ip。 PS:桥接则是与主机公用网卡,有独立的外部ip。 解决:NAT模式可以通过配置 …...

【操作系统】考研真题攻克与重点知识点剖析 - 第 2 篇:进程与线程
前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…...
总结:利用原生JDK封装工具类,解析properties配置文件以及MF清单文件
总结:利用原生JDK封装工具类,解析properties配置文件以及MF清单文件 一背景描述:1.在不同的项目中,项目使用的开发框架都不一样,甚至是JDK原生开发模式。此时解析配置文件以及jar包中的清单文件,就只能利用…...

openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略
文章目录 openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略119.1 背景信息119.2 数据库程序目录及文件权限119.3 建议 openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略 119.1 背景信息 数据库在安装过程中…...

不可否认程序员的护城河已经越来越浅了
文章目录 那些在冲击程序员护城河低代码/无代码开发平台自动化测试和部署工具AI辅助开发工具在线学习和教育平台 面临冲击,程序员应该怎么做深入专业知识:不断学习全栈技能开发解决问题的能力建立人际网络管理和领导技能 推荐阅读 技术和应用的不断发展对…...

黑客技术-小白自学
前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…...

ZYNQ_project:key_beep
通过按键控制蜂鸣器工作。 模块框图: 时序图: 代码: /*1位按键消抖 */ module key_filter (input wire sys_clk ,input wire sys_rst_n ,input wire key_in ,output …...

css3文字环绕旋转
目录 固定数量文字环绕旋转不固定数量文字环绕旋转效果图 固定数量文字环绕旋转 <!-- 文字旋转测试 --> <template><div class"page"><div><div v-for"(item, index) in [...Array(20).keys()]" :key"index" style&…...

Linux 进程优先级 | 环境变量
目录 进程优先级 基本概念 认识优先级 PRI and NI NI值的范围 查看进程优先级 用top命令更改已存在进程的nice: 如何修改优先级 其他概念 环境变量 基本概念 常见环境变量 和环境变量相关的命令 环境变量的组织方式 通过代码如何获取环境变量 环境变量通…...

Nginx(五)
负载均衡 官网文档 Using nginx as HTTP load balancer nginx中实现反向代理的方式 HTTP:通过nginx配置反向代理到后端服务器,nginx将接收到的HTTP请求转发给后端服务器。使用 proxy_pass 命令 HTTPS:通过nginx配置反向代理到后端服务器&…...

永达理简析:利用保险的“财务规划”功能维持退休后生活水平
现代社会环境背景下,“自养自老”已经是一种未来养老趋势,很多人会为自己准备一份长期、比较周全的保障,这样财务规划不仅会分担子女的压力,也让自己有一个长远的保障。在各种财务储蓄工具中,商业保险占据着不可取代的…...

拓展认知边界:如何给大语言模型添加额外的知识
Integrating Knowledge in Language Models P.s.这篇文章大部分内容来自Stanford CS224N这门课Integrating Knowledge in Language Models这一节😁 为什么需要给语言模型添加额外的知识 1.语言模型会输出看似make sense但实际上不符合事实的内容 语言模型在生成…...
C语言assert断言
断言是对某种假设条件进行检查。 C语言中,断言被定义成宏的形式,原型在<assert.h>中。 #include <assert.h> void assert( int expression );assert将通过检查表达式expression的值来决定是否需要终止执行程序。 如果expression的值为假&am…...

开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
🧸欢迎来到dream_ready的博客,📜相信您对这篇博客也感兴趣o (ˉ▽ˉ;) 震惊!测试人员对BUG的全方位解析,测试的执行和BUG管理! 原来测试人员遇到BUG是这样返回给开发的!什么是BUG&am…...

[蓝桥杯复盘] 第 3 场双周赛20231111
[蓝桥杯复盘] 第 3 场双周赛20231111 总结深秋的苹果1. 题目描述2. 思路分析3. 代码实现 鲜花之海1. 题目描述2. 思路分析3. 代码实现 斐波拉契跳跃2. 思路分析3. 代码实现 星石传送阵2. 思路分析3. 代码实现 六、参考链接 总结 做了后4题。https://www.lanqiao.cn/oj-contes…...

浅析移动端车牌识别技术的工作原理及其过程
随着社会经济的发展与汽车的日益普及带来巨大的城市交通压力,在此背景下,智能交通系统成为解决这一问题的关键。而在提出发展无线智能交通系统后,作为智能交通的核心,车牌识别系统需要开始面对车牌识别移动化的现实需求。基于实现车牌识别移动化这一目标,一种基于Android移动终…...

计算机网络期末复习-Part4
1、UDP和TCP的比较 TCP提供可靠传输;UDP提供不可靠传输。TCP有连接;UDP无连接(减小时延)。TCP提供流量控制;UDP不提供流量控制。TCP提供拥塞控制;UDP不提供拥塞控制(传输快)。TCP提…...

解决EnableKeyword(“_Emission“)运行状态不起作用
我使用的是Standard Shader,一开始“_Emission”没有开启 当我运行下面的代码,可以看到Inspector窗口已经生效,然而物体本身并没有重新开始渲染,反射没有开启 public GameObject go; // Start is called before the first frame…...

管理能力测评,如何提升管理能力?
管理能力是综合能力的体现,通常也解读为组织管理能力,如果要再细分的话,可能还包括有沟通能力,协调能力,组织能力,执行力和专业能力等等。不过没有办法说的太细节,因为每个部分铺开了都是一个独…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...