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 ...
随机推荐
- LeetCode #188场周赛题解
A题链接 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2,3..., n} 中依序读取一个数字. 请使用下述操作来构建目标数组 target : Push:从 ...
- 超简单笔记本改造nas--一个萌新的摸爬滚打
最近好久没更新,你们有没有想我啊(手动滑稽)咳咳,言归正传,如同标题,最近闲来无事,打算利用家里的闲置笔记本电脑搭建一个nas.**注意:本文不涉及群晖以及相关专业NAS服务供应商!!!**nas分两 ...
- 这些Kubernetes常见安全问题,你遇到过几个?
导语:在 Threat Stack 公布的2020年第一季度安全报告中,列举了在AWS Web服务部署Kubernetes的组织所遇到的最常见安全问题. 该报告建议已部署Kubernetes的IT组织 ...
- python之导入模块的方法
一.导入标准库模块 1.第一种方式: 可以通过以下方法导入 import time 当使用时间模块的sleep方法时可以使用 time.sleep(2) 2.第二种方式: 当只想使用sleep函数时, ...
- Python内置函数列表
函数 用途 abs() 返回数字绝对值 all() 判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False any() 判断给定的可迭代参数 ...
- strut2 自定义文件上传错误信息
在文件上传过程中我们可以指定拦截器对文件类型.后缀名.大小进行设定,action中的配置: <interceptor-ref name="fileUpload"> &l ...
- 当Tomcat遇上Netty
故事背景 嘀嘀嘀~,生产事故,内存泄漏! 昨天下午,突然收到运维的消息,分部某系统生产环境内存泄漏了,帮忙排查一下. 排查过程 第一步,要日志 分部给到的异常日志大概是这样(鉴于公司规定禁止截图禁止拍 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先
上一篇文章(https://www.cnblogs.com/meowv/p/12909558.html)完善了项目中的代码,接入了Swagger.本篇主要使用Entity Framework Core ...
- 【Leetcode】164. Maximum Gap 【基数排序】
Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...
- 案例(一) 利用机器算法RFM模型做用户价值分析
一.案例背景 在产品迭代过程中,通常需要根据用户的属性进行归类,也就是通过分析数据,对用户进行归类,以便于在推送及转化过程中获得更大的收益. 本案例是基于某互联网公司的实际用户购票数据为研究对象, ...