Rocket - debug - Example: Selecting Harts
https://mp.weixin.qq.com/s/HjG5S9binyniG_amC3Dr5Q
介绍riscv-debug的使用实例:如何选择核心,执行Halt/Resume请求。
1. Selecting Harts
可以有多个核心连接在一个调试模块上,如果要让一个核心暂停、重新执行、复位,或者执行调试命令,需要先选择目标核心。
A. Selecting a Single Hart
可以在hartsel中填入目标核心的编号,选择单个核心:
B. Selecting Multiple Harts
也可以使用核心数组窗口(hart array window)编号(hawindowsel)来选择一组核心,再使用掩码(hawindow)来选择窗口中的核心,来选择多个核心:
2. dmcontrol
选择核心,需要使用dmcontrol寄存器:
其中:
A. hartsello/hartselhi组成20位的hartsel,用于填入目标核心编号选择核心:
B. hasel用于区分是使用hartsel单选一个核心,还是使用hartsel和hawindow多选多个核心:
C. haltreq:用于请求被选中的核心暂停;
D. resumereq:用于请求被选中的核心继续执行;
E. hartreset:用于请求被选中的核心复位;
F. setresethaltreq:用于请求被选中的核心在复位时暂停;
3. halt summary
用于确定某个核心是否处于暂停状态。顾名思义,这里只是一个摘要。
A. halt summary 0
以hartsel的高15位选择一个窗口,低5位选择一个比特,每个比特代表一个核心是否暂停。
haltsum0可以确定一个核心是否处于暂停状态。
B. halt summary 1
以hartsel高10位选择一个窗口,低5位选择一个比特,该比特代表最低5位表示的32个核心中是否有核心暂停。
haltsum1可以用于快速确定某核心是否处于暂停状态。因为一个比特代表32个核心,所以如果haltsum1无法做出判断,需要继续使用haltsum0进行判断。
C. halt summary 2
以高5位选择一个窗口,低5位选择一个比特,该比特代表最低10位表示的1024个核心中,是否有核心处于暂停状态。
D. halt summary 3
以高5位选择一个比特,该比特代表低15位表示的32768个核心中,是否有一个核心处于暂停状态。
4. Checking for Halted Harts
若要确定某一个核心是否暂停,还是使用hartsel&haltsum0最快。
若要确定一个范围的核心是否暂停,可以使用hartsel&haltsum3/haltsum2/haltsum1来进行确定。
5. Halting
6. Running
7. Single Step
Rocket - debug - Example: Selecting Harts的更多相关文章
- Rocket - debug - TLDebugModuleInner - Hart Bus Access
https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...
- Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...
- 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 - TLDebugModuleInner - Program Buffer Access
https://mp.weixin.qq.com/s/EJVqw7JPjjaib68tENl5AQ 简单介绍TLDebugModuleInner中的Program Buffer Access. 1. ...
- 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 ...
随机推荐
- Spring官网阅读(十七)Spring中的数据校验
文章目录 Java中的数据校验 Bean Validation(JSR 380) 使用示例 Spring对Bean Validation的支持 Spring中的Validator 接口定义 UML类图 ...
- shell 循环结构
前言 循环结构在编程中十分常见,也是程序中是较为重要的一部分,在bash中有 for,until,while 这三种语句可以进行重复执行部分程序流程,下面会进一步讨论这三个指令的使用以及注意事项 fo ...
- web概念简述,HTML学习笔记
今日内容 1. web概念概述 2. HTML web概念概述 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务 ...
- Git管理修改、撤销修改、删除文件
什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. a.管理修改 对于提交修改, ...
- python入门及数字、字符串类型
目录 python开发框架 开发 1. 开发语言 2. 语言比对 3. python安装 4. Python开发IDE:pycharm ,eclipse python入门 1. 第一句Python 2 ...
- Python3+Pycharm+PyQt5环境搭建步骤
搭建环境: 操作系统:Win10 64bit Python版本:3.7 Pycharm:社区免费版 一.Python3.7安装 下载链接:官网 https://www.python.org/downl ...
- opengl简单入门实例
实现任务目标: 使用纹理贴图,增强可视效果 应用坐标变换,实现场景中不同物体重建 采用双缓冲技术,实现场景实时绘制 具有一定的鼠标.键盘交互功能 先放效果 鼠标的交互功能有:右键暂停转动,左键继续转动 ...
- ASP.NET Core Blazor 初探之 Blazor Server
上周初步对Blazor WebAssembly进行了初步的探索(ASP.NET Core Blazor 初探之 Blazor WebAssembly).这次来看看Blazor Server该怎么玩. ...
- mysql计算
select @csum := 0;select create_time,merchant_id,award as 奖励,total_count as 数量,(@csum := @csum + awa ...
- Linux vim 常用命令(不定时update)
1.退出 先esc 再:q 2.保存退出 先Esc 再:wq 3.强制退出 先Esc 再:q! 4.寻找关键字 先 shift+ 再/keyword 5.查看行数 set nu 6.跳到指定行(例如 ...