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. 组队训练 K K - The Stream of Corning 2

    K - The Stream of Corning 2 这个题目不是很难,因为给你的这个S是单调递增的,所以就用优先队列+权值线段树就可以很快的解决了. 这个+读入挂可以优化,不过不用也没关系. #i ...

  2. 字典树变形 A - Gaby And Addition Gym - 101466A

    A - Gaby And Addition Gym - 101466A 这个题目是一个字典树的变形,还是很难想到的. 因为这题目每一位都是独立的,不会进位,这个和01字典树求最大的异或和是不是很像. ...

  3. Node.js中模块加载机制

    1.模块查找规则-当模块拥有路径但没有后缀时:(require(‘./find’)) require方法根据模块路径查找模块,如果是完整路径,直接引入模块: 如果模块后缀省略,先找同名JS文件,再找同 ...

  4. 201771010113 李婷华 《面向对象程序设计(Java)》第八周总结

    一.理论知识部分 1.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个接口. 2.在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.接口 ...

  5. javaScript 添加和移除class类名的几种方法

    添加类属性: // 一次只能设置一个类值,如果当前属性本身存在类值,会被替换 element.className = '类名'; /* * .setAttribute 用来设置自定义属性和值的 * 自 ...

  6. 如何写好、管好单元测试?基于Roslyn+CI分析单元测试,严控产品提测质量

    上一篇文章中,我们谈到了通过Roslyn进行代码分析,通过自定义代码扫描规则,将有问题的代码.不符合编码规则的代码扫描出来,禁止签入,提升团队的代码质量. .NET Core技术研究-通过Roslyn ...

  7. Angular 从入坑到挖坑 - Router 路由使用入门指北

    一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...

  8. Python拆分一列为多列

    有的员工,没有公司开户行的银行卡,发放现金工资.有时人多,需要计算币数.现金工资表中,其中一列为实发工资,import pandas as pd,转化为pd.DataFrame. 面值[100,50, ...

  9. python --内建结构 汉诺塔结构

    规则: 1.每次移动一个盘子 2.任何时候大盘子在下面,小盘子在上面 方法: 1.n=1:直接将A上的盘子移动到c 上面,A->C 2.n=2: 1>A->B 2>A-> ...

  10. 《机器学习_07_01_svm_硬间隔支持向量机与SMO》

    一.简介 支持向量机(svm)的想法与前面介绍的感知机模型类似,找一个超平面将正负样本分开,但svm的想法要更深入了一步,它要求正负样本中离超平面最近的点的距离要尽可能的大,所以svm模型建模可以分为 ...