Rocket - debug - TLDebugModuleInner - DMI Register Control and Status
https://mp.weixin.qq.com/s/tI41wu0xaIQ5PRq6F82tNw
简单介绍TLDebugModuleInner中生成DMI控制和状态寄存器使用到的状态。
1. abstractCommandBusy
表示是否处于等待状态,如果不是在等待状态,则视为Busy:
2. ABSTRACTCSWrEnLegal
如果正处于等待状态,则可以合法写入ABSTRACTCS寄存器:
3. COMMANDWrEnLegal
如果正处于等待状态,则可以合法写入COMMAND寄存器:
4. ABSTRACTAUTOWrEnLegal
如果正处于等待状态,则可以合法写入ABSTRACTAUTO寄存器:
5. dmiAbstractDataAccessLegal
如果正处于等待状态,则可以合法写入Abstract Data寄存器:
6. dmiProgramBufferAccessLegal
如果正处于等待状态,则可以合法写入Program Buffer寄存器:
7. errorBusy
如果写寄存器的时候不是等待状态,则出现错误,错误在于调试模块正忙,置位errorBusy:
8. commandWrIsAccessRegister
表示调试器写入的抽象命令的类型是不是AccessRegister:
9. commandRegIsAccessRegister
表示当前抽象命令寄存器中的抽象命令的类型是不是AccessRegister:
10. commandWrIsUnsupported
表示调试器写入的抽象命令不是AccessRegister,当前仅支持这一种命令类型:
11. commandRegIsUnsupported
commandRegIsUnsupported是一个标志位,如果没有更改其值,则为真:
如果抽象命令寄存器中的命令是AccessRegister,考虑把commandRegIsUnsupported的值置为假,也就是支持该命令:
这分为三种情况:
a. 读Custom源节点的寄存器:当命令为read transfer时,命令被支持;亦即write transfer不支持;
b. 如果transfer为0,命令也支持;
这是一种特殊情况,也就是直接执行Program Buffer中的指令。需要配置transfer为0,postexec为真:
这种情况下,生成的抽象命令是两条nop指令。
c. 根据截断式或的特性,此时transfer为真。在transfer为真的情况下,无论write是何值,当访问的是GPR时是支持的。亦即,访问其他寄存器是不被支持的:
12. commandRegBadHaltResume
commandRegBadHaltResume是一个标志位:
表示核心的halt/resume状态是否是错误的:
如果抽象命令是AccessRegister:
a. 如果核心处于暂停状态,则不是错误的;
b. 如果核心不处于暂停状态,则是错误的;
13. accessRegIsGPR
accessRegIsGPR表示访问的寄存器是GPR:
仅支持访问GPR寄存器:
14. accessRegIsCustom
accessRegIsCustom表示访问的是Custom源节点的寄存器:
15. wrAccessRegisterCommand
表示向抽象命令寄存器中合法写入了命令,将要生成抽象命令并执行:
16. regAccessRegisterCommand
如果抽象命令寄存器中的是合法指令,并且触发了执行抽象命令(autoexec),就像刚写入抽象命令一样:
可以生成抽象命令并执行:
Rocket - debug - TLDebugModuleInner - DMI Register Control and Status的更多相关文章
- Rocket - debug - TLDebugModuleInner
https://mp.weixin.qq.com/s/jkiHceU0HaJbHGvHiU-QOA 简单介绍TLDebugModuleInner的实现. 1. 引入全局配置 1) cfg 引入Debu ...
- Rocket - debug - Example: DMI
https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI. 1. dm Debug Module实现了调 ...
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - TLDebugModuleInner - Abstract Command State Machine
https://mp.weixin.qq.com/s/RcXI8uEHvZHGCvX3DoVR4Q 简单介绍TLDebugModuleInner中处理抽象命令时的状态机. 1. CtrlState 定 ...
- Rocket - debug - TLDebugModuleInner - Program Buffer Access
https://mp.weixin.qq.com/s/EJVqw7JPjjaib68tENl5AQ 简单介绍TLDebugModuleInner中的Program Buffer Access. 1. ...
- Rocket - debug - TLDebugModuleInner - Program Buffer
https://mp.weixin.qq.com/s/kjhJJ3moRQzxHt6pJOXEgg 简单介绍TLDebugModuleInner中Program Buffer寄存器的实现. 1. pr ...
- Rocket - debug - TLDebugModuleInner - Abstract Data
https://mp.weixin.qq.com/s/DOLkEi-_qQt6lWOhJ2hxVQ 简单介绍TLDebugModuleInner中抽象数据寄存器的实现. 1. abstractData ...
- Rocket - debug - TLDebugModuleInner - Drive Custom Access
https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw 简单介绍TLDebugModuleInner中的针对Custom的访问. 1. customNode ...
- Rocket - debug - TLDebugModuleInner - ROM Generation
https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...
随机推荐
- lammps 学习之:系统压力太大,导致原子丢失
体系压力太大:146981.52bar,体系压强太大 会把原子挤跑 出现原子丢失的情况(lost atoms). 原子丢失: 解决方法:增大体系体积.增加z方向的距离.
- 12_JavaScript基础入门(2)
运算符 运算符(Operators,也翻译为操作符),是发起运算的最简单形式. 运算符的分类见仁见智,我们的课程对运算符进行如下分类: 数学运算符(Arithmetic operators) ...
- Coursera课程笔记----计算导论与C语言基础----Week 7
C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...
- 【Hadoop离线基础总结】Apache Hadoop的三种运行环境介绍及standAlone环境搭建
Apache Hadoop的三种运行环境介绍及standAlone环境搭建 三种运行环境 standAlone环境 单机版的hadoop运行环境 伪分布式环境 主节点都在一台机器上,从节点分开到其他机 ...
- 【Hadoop离线基础总结】zookeeper的介绍以及集群环境搭建、网络编程和RPC的简单了解
ZooKeeper的介绍以及集群环境搭建.网络编程和RPC的简单了解 ZooKeeper介绍 概述 ZooKeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题.例如 ...
- [hdu4358]树状数组
思路:用一个数组记录最近k次的出现位置,然后在其附近更新答案.具体见代码: #pragma comment(linker, "/STACK:10240000,10240000") ...
- Jmeter-函数助手之${__RandomString(,,)}使用
${__RandomString(,,)}使用方法 1.在日常写脚本中,可以随机生成指定的几个字符串作为入参的value,那么jmeter 的这个工具就特别好用. 应用: 2.填写接口入参, 3.运 ...
- CentOS6.5x64采用静默模式安装64位oracle11g
1.下载oracle11g64位版本的源文件,并上传到Linux服务器,下载地址自行百度,若实在找不到请留言. 2.Package安装检查安装: 通过yum工具直接安装: yum -y install ...
- 数独c++
#include <bits/stdc++.h> using namespace std; const int maxn = 10; bool maps[maxn][maxn], row[ ...
- 数据结构----栈stack
栈的概念与数据结构 栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端.这一端通常称为“顶部”.与顶部对应的端称为“底部”.栈的底部很重要,因为在栈中靠近底部的元素是存 ...