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

  1. Rocket - debug - TLDebugModuleInner

    https://mp.weixin.qq.com/s/jkiHceU0HaJbHGvHiU-QOA 简单介绍TLDebugModuleInner的实现. 1. 引入全局配置 1) cfg 引入Debu ...

  2. Rocket - debug - Example: DMI

    https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI. 1. dm Debug Module实现了调 ...

  3. Rocket - debug - TLDebugModuleInner - Hart Bus Access

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

  4. Rocket - debug - TLDebugModuleInner - Abstract Command State Machine

    https://mp.weixin.qq.com/s/RcXI8uEHvZHGCvX3DoVR4Q 简单介绍TLDebugModuleInner中处理抽象命令时的状态机. 1. CtrlState 定 ...

  5. Rocket - debug - TLDebugModuleInner - Program Buffer Access

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

  6. Rocket - debug - TLDebugModuleInner - Program Buffer

    https://mp.weixin.qq.com/s/kjhJJ3moRQzxHt6pJOXEgg 简单介绍TLDebugModuleInner中Program Buffer寄存器的实现. 1. pr ...

  7. Rocket - debug - TLDebugModuleInner - Abstract Data

    https://mp.weixin.qq.com/s/DOLkEi-_qQt6lWOhJ2hxVQ 简单介绍TLDebugModuleInner中抽象数据寄存器的实现. 1. abstractData ...

  8. Rocket - debug - TLDebugModuleInner - Drive Custom Access

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

  9. Rocket - debug - TLDebugModuleInner - ROM Generation

    https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...

随机推荐

  1. lammps 学习之:系统压力太大,导致原子丢失

    体系压力太大:146981.52bar,体系压强太大 会把原子挤跑 出现原子丢失的情况(lost atoms). 原子丢失: 解决方法:增大体系体积.增加z方向的距离.

  2. 12_JavaScript基础入门(2)

    运算符 运算符(Operators,也翻译为操作符),是发起运算的最简单形式. 运算符的分类见仁见智,我们的课程对运算符进行如下分类: 数学运算符(Arithmetic operators)      ...

  3. Coursera课程笔记----计算导论与C语言基础----Week 7

    C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...

  4. 【Hadoop离线基础总结】Apache Hadoop的三种运行环境介绍及standAlone环境搭建

    Apache Hadoop的三种运行环境介绍及standAlone环境搭建 三种运行环境 standAlone环境 单机版的hadoop运行环境 伪分布式环境 主节点都在一台机器上,从节点分开到其他机 ...

  5. 【Hadoop离线基础总结】zookeeper的介绍以及集群环境搭建、网络编程和RPC的简单了解

    ZooKeeper的介绍以及集群环境搭建.网络编程和RPC的简单了解 ZooKeeper介绍 概述 ZooKeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题.例如 ...

  6. [hdu4358]树状数组

    思路:用一个数组记录最近k次的出现位置,然后在其附近更新答案.具体见代码: #pragma comment(linker, "/STACK:10240000,10240000") ...

  7. Jmeter-函数助手之${__RandomString(,,)}使用

    ${__RandomString(,,)}使用方法 1.在日常写脚本中,可以随机生成指定的几个字符串作为入参的value,那么jmeter 的这个工具就特别好用.  应用: 2.填写接口入参, 3.运 ...

  8. CentOS6.5x64采用静默模式安装64位oracle11g

    1.下载oracle11g64位版本的源文件,并上传到Linux服务器,下载地址自行百度,若实在找不到请留言. 2.Package安装检查安装: 通过yum工具直接安装: yum -y install ...

  9. 数独c++

    #include <bits/stdc++.h> using namespace std; const int maxn = 10; bool maps[maxn][maxn], row[ ...

  10. 数据结构----栈stack

    栈的概念与数据结构 栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端.这一端通常称为“顶部”.与顶部对应的端称为“底部”.栈的底部很重要,因为在栈中靠近底部的元素是存 ...