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 ...
随机推荐
- apache反向代理和负载均衡
正向代理:正如我们用的游戏加速代理,大多的个人PC把请求发给正向代理服务器,代理服务器通常配置高端的带宽,替我们请求相应的服务 负载均衡中的反向代理:通常意义上,是一个请求转发的代理.类似一个收发室的 ...
- iOS的内存管理和引用计数规则、Block的用法以及三种形式(stack、malloc、global)
学习内容 iOS的内存管理和引用计数规则 内存管理的思考方式 自己生成的对象自己持有 非自己生成的对象自己也能持有 自己持有的对象不需要时释放 非自己持有的对象不能释放 ARC有效时,id类型和对象类 ...
- thrift的使用
简介 thrift 原来是facebook的rpc框架,根据数据结构和接口描述生成多种语言的接口,方便使用多种语言进行开发,详细信息这里不再赘述,下文以一个简单的代码(C++)示例来介绍使用方法. 示 ...
- SAP HTTP调用其他系统接口
1业务说明 ABAP系统通过HTTP方式调用其他系统发布的接口 2代码实现 2.1认证接口 根据访问的URL创建HTTP客户端 设置访问方式,并调用SEND和接收函数 有时需要专门验证用户名密码 获取 ...
- js判断数组(数组对象)中是否存在指定的值,如果存在就删除
数组中是否存在指定值,存在就删除 var str = ["a", "b", "c"]; var index = str.indexOf(&q ...
- sql 取值时将字符串类型数字转化成整形
select cast(a.Vchcode as int) as avchcode,a.ptypeid,a.assqty,unit,b.pfullname,b.standard,b.type from ...
- luoguP3121解题报告
p3121 本题首先利用一个手写栈,使元素可以快速出栈,再利用栈快速查询上一个元素在trie中的位置.
- python--封装Redis
Redis封装 import redis class MyRedis(): def __init__(self,ip,password,port=6379,db=1):#构造函数 ...
- SpringCloud Netflix (五) : Hystrix 服务熔断和服务降级
什么是Hystrix 在分布式环境中,许多服务依赖项中的一些服务依赖不可避免地会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助您控制这些分布式服务之间的交互.Hystrix通过隔离服务 ...
- percona 5.6的安装
yum 安装, 1 如果已经安装过mysql 的东西,先卸载了.yum remove mysql* 包括 /etc/my.cnf 这个东西卸载的时候不会删除. mv /etc/my.cnf /etc/ ...