Rocket - debug - Example: Quick Access
https://mp.weixin.qq.com/s/SxmX-CY2tqvEqZuAg-EXiQ
介绍riscv-debug的使用实例:配置Quick Access功能。
1. Quick Access
快速访问,即暂停核心执行Program Buffer中的一段短的代码,然后再恢复核心运行。
具体流程如下:
需要注意的是,Program Buffer一般以ebreak指令结束。执行完Program Buffer最后的ebreak后,才执行第4步恢复核心的执行。所以正常情况下,快速访问抽象命令执行完成后,核心还是在正常运行状态。这也是第3步中,"the program buffer execution ends, but the quick access command continues"的意思,第3步中断后,"continue"继续执行第4步。
寄存器的格式如下:
所以执行快速访问抽象命令时,command寄存器的值为0x1000_0000.
2. 实例1:a single memory write
A. 首先准备好Program Buffer:
a. 写寄存器progbuf0: transfer arg2, s0:把s0的值保存到arg2寄存器;
b. 写寄存器progbuf1: transfer s0, arg0:读arg0中保存的目标内存地址;
c. 写寄存器progbuf2: transfer arg0, s1:把s1的值保存到arg0寄存器;
d. 写寄存器progbuf3: transfer s1, arg1:把arg1中保存的待写数据读到s1中;
e. 写寄存器progbuf4: sw s1, 0(s0):写目标内存地址为待存数据;
f. 写寄存器progbuf5: transfer s1, arg0
g. 写寄存器progbuf6: transfer s0, arg2
h. 写寄存器progbuf7: ebreak: 退出执行返回调试环境;
B. 写data0寄存器:写为目标内存地址;也就是Program Buffer中的arg0;
C. 写data1寄存器:写为待存数据;也就是Program Buffer中的arg1;
D. 写command寄存器:
a. cmdtype=1:抽象命令为快速访问命令;
3. 实例2:setting the m bit in mcontrol
这里只提示要点:
a. tdata1就是mcontrol寄存器,两者的地址是一样的:
b. mcontrol的bit6是m bit:
c. progbuf3中写的指令是错误的,应该是:transfer s0, arg0. 因为s0保存在arg0而不是arg2中。
Rocket - debug - Example: Quick Access的更多相关文章
- RCP:如何移除Toolbar中的Quick Access
问题 自4.x开始,Quick Access搜索框成为Toolbar的"标准装备",一般删除Actionset的方式似乎不起作用,通过Quick Access,用户很容易访问到RC ...
- WPF 4 Ribbon 开发 之 快捷工具栏(Quick Access Toolbar)
转自 http://www.cnblogs.com/gnielee/archive/2010/05/10/wpf4-ribbon-quick-access-toolbar.html 在Office 2 ...
- Rocket - debug - TLDebugModuleInner - Abstract Command Decoding & Generation
https://mp.weixin.qq.com/s/0zKSTktxgzo5uCUphqaWSQ 介绍抽象命令的解码和生成. 1. accessRegisterCommandReg accessRe ...
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - TLDebugModuleInner - Drive Custom Access
https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw 简单介绍TLDebugModuleInner中的针对Custom的访问. 1. customNode ...
- Rocket - debug - TLDebugModuleInner - Program Buffer Access
https://mp.weixin.qq.com/s/EJVqw7JPjjaib68tENl5AQ 简单介绍TLDebugModuleInner中的Program Buffer Access. 1. ...
- Rocket - debug - DebugTransport
https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...
- Rocket - debug - Example: Accessing Registers Using Abstract Command
https://mp.weixin.qq.com/s/RdJzE06mMkh2x__vVj_fEA 介绍riscv debug接口的使用实例:使用抽象命令读取寄存器. 1. Read s0 using ...
- Remove “Quick Access” entry in Eclipse Juno
Here is a quick hack which doesn't require any plugin installation, instead you just need to add a f ...
随机推荐
- Web框架,Hibernate向数据库插入数据,数据库没有值怎么办?
用web框架技术,使用Hibernate向数据库添加信息,控制台显示插入成功的语句,可是数据库却没有值:错误如下: (1)不要自己创建数据库!!,Web框架可以自己自动生成,自己创建可能会报错! (2 ...
- SSM整合案例:图书管理系统
目录 SSM整合案例:图书管理系统 1.搭建数据库环境 2.基本环境搭建 2.1.新建一个Maven项目,起名为:ssmbuild,添加web的支持 2.2.导入pom的相关依赖 2.3.Maven静 ...
- vue-双向响应数据底层原理分析
总所周知,vue的一个大特色就是实现了双向数据响应,数据改变,视图中引用该数据的部分也会自动更新 一.双向数据绑定基本思路 “数据改变,视图中引用该数据的部分也会自动更新“,从这句话,我们可以分析出以 ...
- LeetCode--LinkedList--160. Intersection of Two Linked Lists(Easy)
160. Intersection of Two Linked Lists(Easy) 题目地址https://leetcode.com/problems/intersection-of-two-li ...
- LeetCode寻找两个有序数组的中位数
题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nu ...
- [zoj3632]线段树的应用
题意:f[i] = min(f[i+L]~f[i+R]) + x,计算f数组.从大到小计算即可,用线段树维护一下. #pragma comment(linker, "/STACK:10240 ...
- Gulp的代理转发插件
需求背景 前后端分开部署时,需要单独为前端启动一个服务,如果使用gulp-connect的话,那么代理需要额外的插件来配置.首先说下为什么需要代理,gulp-connect是静态web的server( ...
- Nginx下的location,upstream,rewrite 和 proxy_pass使用总计大全
一 . location: 顾名思义-->地址,也叫路由. nginx服务器非常核心的配置,一般nginx运维人员在修改nginx配置时,大部分也是围绕着location这个配置进行修改. 下面 ...
- iview input 禁止输入特殊字符 ,解决中文输入法中input把拼音输入
tips:解决了e.target中输入中文 会把拼音也输入的情况 1 html <FormItem label="角色名称" prop="roleName" ...
- 华为的快服务智慧平台是牛皮还是牛B?
华为快服务智慧平台是牛皮还是牛B? 来到快服务论坛专区的老铁们想必对快服务有一定的了解,那么作为华为快服务统一接入分发核心的华为快服务智慧平台是怎样的存在呢?想必带着眼睛阅读的小伙伴都已经看出来了 ...