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. 你离高薪 offer 只差一个Redis入门,我是认真的

    说起来,可能有些小伙伴会不相信,我是第一次用 Redis,真的.因为公司小,业务量小,Redis 根本派不上用场.不过,最近打算把系统升级一下,顺带把当下时髦的技术入个门,"与时俱进&quo ...

  2. 如何使用apt-get在ubuntu系统上安装OpenJDK 8

    文章目录 添加ppa仓库 设置openjdk版本 查看java 版本 Android 8.1 系统编译的时候需要安装OpenJDK 8,这里如果可以自己下载源码编译安装,当然本想编译Android系统 ...

  3. python语法学习第五天--lambda表达式、filter()、map()

    lambda表达式 python使用lamda表达式来创建匿名函数 lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数 语法: lambda [arg1 [,arg ...

  4. [codeforces-315D div2]模拟

    题目:给两个字符串a.b,问从a中删去若干字符后最多可以得到多少个b串的重复串(bb...b的形式,b的长度不超过100),其中a串是由一个长度不超过100的字符串s重复k次得到的 思路: 暴力匹配a ...

  5. [hdu1023]递推

    http://acm.hdu.edu.cn/showproblem.php?pid=1023 如果把栈里面的元素个数表示成状态,每一步(共2 * n步)的状态构成的状态序列的种数就是答案,令dp[i] ...

  6. [zoj3593]扩展欧几里得+三分

    题意:给一个数A,有6种操作,+a,-a,+b,-b,+(a+b),-(a+b),每次选择一种,用最少的次数变成B. 思路:由于不同的操作先后顺序对最后的结果没有影响,并且加一个数与减一个相同的数不能 ...

  7. centos下mysql 看不到mysql数据库(密码无法更改)

    1.这可能是因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的 2.解决方案 2.1.关闭mysql service mysql ...

  8. 解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑

    问题一.请求 /hystrix.stream 报错,我这里以端口9001为例 请求 http://localhost:9001/hystrix.stream 报404 是因为Srping Boot 2 ...

  9. jbpm4.4 timer的使用

    今天学习了jbpm4 的timer使用,一直测试都不成功:配置如下: <?xml version="1.0" encoding="UTF-8"?> ...

  10. Wfuzz使用学习

    工具用了不总结,使用命令很容易生疏,今天就把笔记梳理总结一下. 0x01 简介 WFuzz是用于Python的Web应用程序安全性模糊工具和库.它基于一个简单的概念:它将给定有效负载的值替换对FUZZ ...