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的更多相关文章

  1. RCP:如何移除Toolbar中的Quick Access

    问题 自4.x开始,Quick Access搜索框成为Toolbar的"标准装备",一般删除Actionset的方式似乎不起作用,通过Quick Access,用户很容易访问到RC ...

  2. WPF 4 Ribbon 开发 之 快捷工具栏(Quick Access Toolbar)

    转自 http://www.cnblogs.com/gnielee/archive/2010/05/10/wpf4-ribbon-quick-access-toolbar.html 在Office 2 ...

  3. Rocket - debug - TLDebugModuleInner - Abstract Command Decoding & Generation

    https://mp.weixin.qq.com/s/0zKSTktxgzo5uCUphqaWSQ 介绍抽象命令的解码和生成. 1. accessRegisterCommandReg accessRe ...

  4. Rocket - debug - TLDebugModuleInner - Hart Bus Access

    https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...

  5. Rocket - debug - TLDebugModuleInner - Drive Custom Access

    https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw 简单介绍TLDebugModuleInner中的针对Custom的访问. 1. customNode ...

  6. Rocket - debug - TLDebugModuleInner - Program Buffer Access

    https://mp.weixin.qq.com/s/EJVqw7JPjjaib68tENl5AQ 简单介绍TLDebugModuleInner中的Program Buffer Access. 1. ...

  7. Rocket - debug - DebugTransport

    https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...

  8. Rocket - debug - Example: Accessing Registers Using Abstract Command

    https://mp.weixin.qq.com/s/RdJzE06mMkh2x__vVj_fEA 介绍riscv debug接口的使用实例:使用抽象命令读取寄存器. 1. Read s0 using ...

  9. 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 ...

随机推荐

  1. Linux目录、文件的管理

    centos目录结构 ls / 查看根目录下有哪些文件或者目录 bin 可执行文件的目录 sbin 存放root用户可执行文件目录 etc 配置文件 boot 引导文件 home 普通用户宿主目录 l ...

  2. java基础篇 之 异常丢失

    我们看如下代码: @Slf4j public class Test { public static void main(String[] args) { try { try { test(); } f ...

  3. 201771010113 李婷华 《面向对象程序设计(java)》

    一.理论知识部分 设计模式(Design pattern)是设计者一种流行的思考设计问题的方法,是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结.使用设计模式是为了可重用代码.让代码 ...

  4. java使用window builder图形界面开发简易计算器

    界面效果: /** * */ package calculator; import java.awt.BorderLayout; import java.awt.EventQueue; import ...

  5. IDEA打包JavaWeb项目

    IDEA打包JavaWeb项目 步骤: 1.配置项目->2.Build Artifacts->3.找到.war文件 具体操作: 首先,单击顶部工具栏的“File”选项,在弹出选项中选择“P ...

  6. [hdu5195]线段树

    题意:给一个DAG,最多可以删去k条边,求字典序最大的拓扑序列.思路:贪心选取当前可选的最大编号即可,同时用线段树维护下.一个节点可以被选,当且仅当没有指向它的边. #include <iost ...

  7. C#winform跨窗体传值和调用事件的办法

    有三个窗体,分别是Main主窗体,Form1窗体1,From2窗体2,其中Main是主窗体,Form1窗体1是一个消息通知窗体,Form2窗体2主窗体的一个子窗体,程序启动时,消息框窗体1弹出,通过消 ...

  8. Redis学习笔记(八) RDB持久化

    Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不想办法将存储在内存中的数据库状态保存到磁盘,那么服务器 进程一旦退出,服务器中的数据库状态也会消失不见. 为了解决这个问题,Red ...

  9. python--封装Redis

    Redis封装 import redis class MyRedis():    def __init__(self,ip,password,port=6379,db=1):#构造函数         ...

  10. Node.js服务器创建和使用

    1.使用zlib模块对服务器端响应压缩 //1.1引入zlib模块 const zlib=require('zlib'); //1.2 设置内容的压缩形式 'Content-Encoding': 'g ...