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. 你应该知道的Vue高级特性

    本文使用的Vue版本:2.6.10 Vue为我们提供了很多高级特性,学习和掌握它们有助于提高你的代码水平. 一.watch进阶 从我们刚开始学习Vue的时候,对于侦听属性,都是简单地如下面一般使用: ...

  2. spring的aop的注解配置

    一.使用注解的方式配置后置通知 第一步,创建通知类LogAdvice 第二步,要在spring主配置文件中声明以注解的方式配置spring aop  第三步,测试 二.其他异常配置 package c ...

  3. 自动化运维工具Ansible之Roles测验详解

    Ansible Roles 详解与实战案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: 3. 该用 ...

  4. openshift 4.3 Istio的搭建(istio 系列一)

    openshift 4.3 Istio的搭建 本文档覆盖了官方文档的Setup的所有章节 目录 openshift 4.3 Istio的搭建 安装Istio openshift安装Istio 更新is ...

  5. Nacos系列(一):Nacos环境安装及Hello World示例

    现在微服务架构越来越火,微服务架构中比较重要的一项就是配置中心, Nacos是阿里巴巴的一个开源项目,它的其中一个功能就是可以作为配置中心,实现配置的动态变更.历史版本对比.配置回滚等功能. 更多的描 ...

  6. PAT数列排序

    19考研结束了 .. 还有11天PAT甲 题目链接:http://lx.lanqiao.cn/problem.page?gpid=T52 题目大意:训练排序 解题思路: 方法一: 直接用C++里的so ...

  7. Linux 命令行下搜索工具大盘点,效率提高不止一倍!

    在 Linux 命令行下进行文本关键字的搜索,大家肯定第一时间会想到 grep 命令.grep 命令确实十分强大,但如果需要用到它更加灵活的功能时,可能命令就会显得十分复杂. 于是,为了简化 grep ...

  8. java学习笔记之原型模式及深浅拷贝

    一.原型模式的基本介绍 在聊原型模式之前,我们来思考一个小问题,传统的方式我们是如何克隆对象呢? 那我们以多利羊(Sheep)为例,来说明上述这个问题,具体代码见下面: 多利羊(Sheep) publ ...

  9. Least Cost Bracket Sequence(贪心)

    Least Cost Bracket Sequence(贪心) Describe This is yet another problem on regular bracket sequences. A ...

  10. 【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉

    机器视觉 machine vision机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人完 ...