Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw
简单介绍Periphery的实现。
1. ExportDebugDMI/ExportDebugJTAG
这是两个参数,用于进行参数查找:
ExportDebugDMI表示导出DMI接口;
ExportDebugJTAG表示导出JTAG接口;
2. DebugIO
定义系统调试模块接口:
其中:clockeddmi和systemjtag只有一个存在:
3. HasPeripheryDebug
HasPeripheryDebug是一个trait,引入该trait,即添加一个调试模块:
1) debug
生成一个调试模块:
将其连接到cbus上:
cbus是外设控制总线:
cbus.coupleTo则是把cbus.outwardNode作为上游节点,连接到TLFragmenter节点上,再连接到debug.node节点上:
debug.node即是dmInner.tlNode:
核心通过这一个连接访问ROMBASE等地址空间,示意图如下:
2) debugCustomXbar
用于连接custom sink/source节点:
示意图如下:
目前debugCustomXbar没有连接上游节点。
3) sb2tl
把sb2tl.node连接到fbus上:
示意图如下:
4) getOMDebugModule
用于获取调试设备的描述信息:
4. HasPeripheryDebugModuleImp
用于实现与调试模块的接口连接逻辑。根据要导出的接口类型,有两种情况:
1) 导出DMI接口
直接导出DMI接口,DTM由外部自行实现:
示意图如下:
2) 导出JTAG接口
引入一个DTM模块,外部直接使用JTAG接口连接:
instantiateJtagDTM中创建一个DTM模块,并与调试模块进行相关连接:
示意图如下:
3) 其他连接
连接ndreset/dmactive/debugUnavail信号:
示意图如下:
5. SimDTM
如果导出的是DMI接口,则使用SimDTM模块仿真一个DTM模块,与DMI接口相连接:
6. SimJTAG
如果导出的是JTAG接口,则使用SimJTAG仿真一个JTAG接口。
1) io
定义SimJTAG模块的IO接口:
其中:jtag是标准的JTAG接口:
2) connect
把SimJTAG的IO接口与系统debug接口相连接:
其中主要的是连接jtag接口,时钟和复位信号:
注:这里tbclock/tbreset中的tb,应该是testbench的意思。
7. Debug
Debug对象用于辅助连接调试模块,或者关闭调试模块:
1) 连接调试模块
根据导出的两种不同的接口,调用不同的连接方法:
在TestHarness中调用:
2) 关闭调试模块
如果不需要调试模块,则可以选择将其关闭:
8. 总体结构图
BaseSubSystem中调试模块部分的总体结构图如下(可以单独打开图片查看):
Rocket - debug - Periphery的更多相关文章
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - DebugTransport
https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...
- Rocket - debug - TLDebugModule
https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA 简单介绍TLDebugModule中的实现. 1. device device是一个设备描述符,包含 ...
- Rocket - debug - TLDebugModuleInner - ROM Generation
https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...
- Rocket - debug - Example: DMI
https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI. 1. dm Debug Module实现了调 ...
- Rocket - debug - Example: Triggers
https://mp.weixin.qq.com/s/zPNyrBOhsytkRrZTDTEvpw 介绍riscv-debug的使用实例:配置Triggers功能. 1. Trigger Trigge ...
- Rocket - debug - Example: Accessing Registers Using Program Buffer
https://mp.weixin.qq.com/s/8yYLVg-RXX3XX0T431lxeA 介绍riscv debug接口的使用实例:使用Program Buffer读取寄存器. 1. Wri ...
- Rocket - debug - Example: Accessing Registers Using Abstract Command
https://mp.weixin.qq.com/s/RdJzE06mMkh2x__vVj_fEA 介绍riscv debug接口的使用实例:使用抽象命令读取寄存器. 1. Read s0 using ...
- Rocket - debug - TLDebugModuleInnerAsync
https://mp.weixin.qq.com/s/Xf4VFTHIDFh1NHmfwlTX3w 简单介绍TLDebugModuleInnerAsync的实现. 1. dmInner dmInner ...
随机推荐
- Qt编程基础入门之二
QMainWindow 菜单栏 菜单栏 最多有一个 //菜单栏创建,一个 QMenuBar *menu = new QMenuBar(this); // this->setMenuBar(men ...
- 使用Android studio过程中发现的几个解决R变红的办法
刚开始使用Android studio的时候,好几次碰见新建了一个xml文件,或者new了一个activity之后,Android studio莫名其妙的报错了,而显示红色的地方就是常用的(R.id. ...
- 【FreeRTOS学习02】源码结构/数据类型/命名规则总结
个人不是很喜欢FreeRTOS的编程风格,但是没办法,白嫖人家的东西,只能忍了,这里先简单总结一下: 相关文章 [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 ...
- HBase Filter 过滤器之QualifierFilter详解
前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.QualifierFilter 基于列名进行过滤, ...
- MOS管、PCB、H桥、步进电机驱动电路、51单片机的IO口驱动能力、灌电流、拉电流、上拉电阻的选择
嵌入式开发PCB设计几点体会(转载):http://bbs.ednchina.com/BLOG_ARTICLE_3021801.HTMCollector-Emitter Saturation Volt ...
- python--正则表达式中(.)(*)(.*?)以及re.S的认识
https://yiyibooks.cn/xx/python_352/library/re.html 看command: #-*-coding:gb2312-*- __author__ = 'fuda ...
- layui select下拉菜单联动
做的比较简单,先从后台直接把第一级菜单输出,然后点击二级菜单的时候再动态展示 <div class="layui-inline"> <label class=&q ...
- 2020网鼎杯 白虎组reverse:hero
主函数,当bossexist的值不为0时,while循环dround()函数,循环结束输出flag outflag()函数的flag值由6段数据拼凑而成 while循环的dround()函数有三个选择 ...
- loadrunner Error -27985问题
错误提示:Error -27985: There is no context for HTML-based functions. A previous function may not have us ...
- Spring AOP实现接口验签
因项目需要与外部对接,为保证接口的安全性需要使用aop进行方法的验签; 在调用方法的时候,校验外部传入的参数进行验证, 验证通过就执行被调用的方法,验证失败返回错误信息: 不是所有的方法都需要进行验签 ...