Rocket - debug - TLDebugModuleInner
https://mp.weixin.qq.com/s/jkiHceU0HaJbHGvHiU-QOA
简单介绍TLDebugModuleInner的实现。
1. 引入全局配置
1) cfg
引入DebugModulePrams:
2) hartSelFuncs
定义hartsel与hart id之间的映射函数:
2. 多个diplomacy node
1) dmiNode
dmiNode是一个寄存器节点,包含除了DMCONTROL/HAWINDOWSEL/HAWINDOW三个寄存器之外的0x000~0x1FF的地址空间:
DMCONTROL/HAWINDOWSEL/HAWINDOW这三个寄存器在TLDebugModuleOuter中实现:
2) tlNode
tlNode也是一个寄存器节点,提供对地址0x000~0xFFF的访问:
需要注意的是这段地址空间是可执行的:executable=true;
3) customNode
用于实现抽象命令对自定义寄存器的访问:
3. 内部包含一个LazyModule: sb2tlOpt
根据hasBusMaster的配置值决定是否包含一个SystemBusAccessModule:
4. lazy module实现
用于实现调试模块的主要功能,包括抽象命令(Abstract Command)和Program Buffer。
1) io
这些IO基本上都从Outer取得输入值:
因为内容过多,如下部分另文介绍:
2) Registers coming from 'CONTROL' in Outer
3) DMI Registers - DMSTATUS
4) DMI Registers - HARTINFO
5) DMI Registers - HALTSUM*
6) DMI Registers - ABSTRACTCS
7) DMI Registers - ABSTRACTAUTO
8) DMI Registers - COMMAND
9) DMI Registers - Abstract Data
10) DMI Registers - Program Buffer
11) Program Buffer Access
12) ROM Generation
13) Abstract Command Decoding & Generation
14) Drive Custom Access
15) Hart Bus Access
16) Abstract Command State Machine
17) DMI Register Control and Status
18) Variable ROM STATE MACHINE
最新文章
- Tomcat基本入门知识及发布,虚拟访问及启动碰到的错误,虚拟目录,虚拟路径,各种Tomcat的配置
- Google Zxing 二维码生成与解析
- [译]git rebase
- linux动态网络和静态网络和克隆后的网络配置
- jquery滚动到指定元素,模仿锚点
- protubuf在cocos2dx的应用安装
- 开发wordpress主题
- 20162321王彪-实验二-Java面向对象程序设计
- 微信小程序 canvas导出图片模糊
- leetcode-数组中只出现一次的数字
- ERROR in static/js/0.5d7325513eec31f1e291.js from UglifyJs
- C#项目中操作Excel文件——使用NPOI库
- 七、Json格式的对象都可以通过遍历来获得里面的value值
- PS调出春夏外景婚纱照
- JVM 学习集合
- Effective Objective-C 笔记之熟悉OC
- Maven报错找不到jre
- Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
- [AngularJS] Angular 1.3 ngMessages with ngAnimate
- php 计算本周星期一、本月第一天 本月最后一天 下个月第一天