Rocket - debug - Example: Write Memory
https://mp.weixin.qq.com/s/on1LugO9fTFJstMes3T2Xg
介绍riscv-debug的使用实例:使用三种方法写内存。
1. Using System Bus Access
1) Write a word to memory
A. 写sbaddress0寄存器:写入目标内存地址;
B. 写sbdata0寄存器:写入要写入目标内存地址处的值;触发写内存动作:
2) Write a block of memory
A. 写sbcs寄存器:
a. sbaccess=2:访问大小是32bit;
b. sbautoincrement=1:sbaddress is incremented by the access size (in bytes) selected in sbaccess after every system bus access;
B. 写sbaddress0寄存器:写入目标内存地址;
C. 写sbdata0寄存器:写入要写入目标内存地址处的值;触发写内存动作;
D. 写sbdata0寄存器:写入要写入目标内存地址处的值;触发写内存动作;
E. 如此即可逐个把数据写入内存;
2. Using Program Buffer
1) Write a word to memory
A. 准备好Program Buffer:把寄存器s1中的数据写入寄存器s0中的内存地址中;
B. 写data0寄存器:写入目标内存地址;
C. 写command寄存器:写入要执行的抽象命令:把data0寄存器的值拷贝到寄存器s0中;
D. 写data0寄存器:写入待存数据;
E. 写command寄存器:写入要执行的抽象命令:
a. 把data0中的值拷贝到s1中;
b. postexec=1:执行完抽象命令之后,触发Program Buffer的执行;
2) Write a block of memory
A. 准备好Program Buffer:把寄存器s1中的数据写入寄存器s0中的内存地址中,然后把s0中的地址加4;
B. 写data0寄存器:写入目标内存地址;
C. 写command寄存器:写入要执行的抽象命令:把data0寄存器的值拷贝到寄存器s0中;
D. 写data0寄存器:写入待写数据;
E. 写command寄存器:写入要执行的抽象命令:
a. 把data0中的值拷贝到s1中;
b. postexec=1:执行完抽象命令之后,触发Program Buffer的执行;
F. 写abstractauto寄存器:读data0寄存器触发抽象命令的执行;
a. autoexecdata=1: When a bit in this field is 1, read or write accesses to the corresponding data word cause the command in command to be executed again.
G. 写data0寄存器:写入待写数据;触发抽象命令的执行;进而触发Program Buffer的执行;如此循环即可写入全部数据;
H. 最后清除abstractauto寄存器中的autoexecdata位;
3. Using Abstract Memory Access
1) Write a word to memory
A. 写data1寄存器:存入目标内存地址;
B. 写data0寄存器:写入待存数据;
C. 写command寄存器:存入要执行的抽象命令:
a. cmdtype=2:表示命令的类型为Access Memory;
b. aamsize=2:Access the lowest 32 bits of the memory location.
c. aamvirtual=0:Addresses are physical (to the hart they are performed on).
d. write=1:Copy data from arg0 portion of data into the memory location specified in arg1.
这条命令的效果是:把data0寄存器中的数据,写入data1中的地址中;
2) Write a block of memory
这里只介绍一下要点:
a. aampostincrement=1:每次访问完内存之后,都把data1寄存器中的地址加4;
b. abstractauto.autoexecdata=1:读写data0寄存器会触发抽象命令的执行;
Rocket - debug - Example: Write Memory的更多相关文章
- Rocket - debug - Example: Read Memory
https://mp.weixin.qq.com/s/ChXNTbx94WDC72GvmE9bGA 介绍riscv-debug的使用实例:使用三种方法读取内存. 1. Using System Bus ...
- Xcode6 运行程序后,右侧Debug区域的Memory显示空白解决方法
http://chenyh-blog.com/%E8%9B%8B%E7%96%BC%E7%9A%84%E5%86%85%E5%AD%98-%E7%AC%AC%E4%B8%89%E7%AF%87-sdw ...
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - Example: Triggers
https://mp.weixin.qq.com/s/zPNyrBOhsytkRrZTDTEvpw 介绍riscv-debug的使用实例:配置Triggers功能. 1. Trigger Trigge ...
- Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...
- Rocket - debug - DebugTransport
https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...
- Rocket - debug - TLDebugModule
https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA 简单介绍TLDebugModule中的实现. 1. device device是一个设备描述符,包含 ...
- Rocket - debug - TLDebugModuleInner - ROM Generation
https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...
- Rocket - debug - Example: DMI
https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI. 1. dm Debug Module实现了调 ...
随机推荐
- Excel 函数 常见错误
excel公式出错的值. 常见错误值类型: #N/A #VALUE! #NAME? #REF! #NUM! #NULL! #N/A 找不到指定内容,比如查找根本不存在的内容,便显示该错误值 比如在使用 ...
- numpy数组的分割与合并
合并 np.newaxis import numpy as np a=np.array([1,2,3])[:,np.newaxis]#变成列向量 b=np.array([4,5,6])[:,np.ne ...
- Android 源码结构分析
源码版本:AOSP_7.1.1 硬件平台:Rockchip 由于工作要求,需要对rockchip平台的安卓系统进行剪裁.安卓源码比较庞大,会让人感到无从下手,对此,有必要了解一下源码的大致目录结构以及 ...
- Oracle JDK究竟从哪个版本开始商用收费?
经常被问到Oracle JDK是不是要钱了?收费了?从哪个版本开始商用收费? 木有错,Oracle JDK从2019年4月16号开始商用商用商用收费了!有图有真像: 2019年4月16日当天,Orac ...
- [hdu5215]无向图找奇偶环
题意:如标题 思路:对于奇环,一个二分图判定就ok了,有奇环<=>非二分图.对于偶环,考虑环必定出现在双联通分量里面,可以先求出图的双联通分量,对于一个双联通分量,对于双联通分量里面的每个 ...
- vim(vi)的常用快捷键
Vim 简介 vim是什么?听说它是编辑器之神!神一样的存在,而我却经常用上下左右箭头来移动光标,实在是有点对不起它,所以想着稍微学学一点神的技能吧! 一. vim的三种模式 Nomal mode:默 ...
- mysql连表查空,查询第二张表中没有第一张表中的数据
select consumer_id,user_name,mobile,invite_code from csr_consumer where invite_count<(select coun ...
- spring junit--基础配置
spring官方文档总提示要进行SpringJunit测试必须先配置两个信息: 1.使用Spring IOC功能配置 2.配置正确的JDBC或ORM框架连接数据库 下面进行spring3和hibern ...
- angular 实现依赖注入
1:首先获取module对象var myAppModule = angular.module('myApp', []); 2:定义对象(类似spring中xml声明bean对象<bean id= ...
- 小姐姐教你定制一个Logstash Java Filter
Logstash是用来收集数据,解析处理数据,最终输出数据到存储组件的处理引擎.数据处理流程为: Logstash Java Filter 就是基于Logstash的Filter扩展API开发一个用J ...