T/BDT 004-2024 RISC-V 单线调试接口技术要求

文档天下 图书评论7阅读模式
T/BDT 004-2024 RISC-V 单线调试接口技术要求 ,该文件为pdf格式 ,请用户放心下载!
尊敬的用户你们好,你们的支持是我们前进的动力,网站收集的文件并免费分享都是不容易,如果你觉得本站不错的话,可以收藏并分享给你周围的朋友。
如果你觉得网站不错,找不到本网站,可以百度、360搜搜,搜狗, 神马搜索关键词“文档天下”,就可以找到本网站。也可以保存到浏览器书签里。
收费文件即表明收集不易,也是你们支持,信任本网站的理由!真心非常感谢大家一直以来的理解和支持!
资源简介
ICS 35.240.01
CCS L 70
中国半导体行业协会团体标准
T/BDT 004—2024
RISC-V 单线调试接口技术要求
Technical specification for RISC-V 1-line debug interface
2024-1 0-09发布2024-10-10实施
中国半导体行业协会 发布

目次
前言................................................................................. III
1 范围................................................................................ 1
2 规范性引用文件...................................................................... 1
3 术语和定义.......................................................................... 1
4 缩略语.............................................................................. 2
5 基本结构............................................................................ 2
5.1 调试模块(DM) .................................................................. 2
5.2 调试模块接口(DMI) ............................................................. 2
5.3 调试传输模块(DTM) ............................................................. 3
5.4 调试系统简易框图................................................................ 3
6 调试传输协议规范.................................................................... 3
6.1 概述............................................................................ 3
6.2 数据包格式...................................................................... 3
6.2.1 New Packet .................................................................. 3
6.2.2 Byp Packet .................................................................. 3
6.2.3 数据包访问格式.............................................................. 4
6.3 位定义.......................................................................... 4
6.3.1 位定义的判断依据............................................................ 4
6.3.2 速度模式.................................................................... 4
6.4 调试接口寄存器.................................................................. 5
6.4.1 调试接口寄存器类型.......................................................... 5
6.4.2 能力寄存器(CPBR) .......................................................... 5
6.4.3 配置寄存器(CFGR) .......................................................... 6
6.4.4 影子配置寄存器(SHDWCFGR) .................................................. 6
6.5 配置实例........................................................................ 7
7 调试模块............................................................................ 7
7.1 调试操作........................................................................ 7
7.2 调试模块寄存器类型.............................................................. 7
7.2.1 概述........................................................................ 7
7.2.2 数据寄存器0(data0) ....................................................... 8
7.2.3 数据寄存器1(data1) ....................................................... 8
7.2.4 调试模块控制寄存器(dmcontrol) ............................................. 8
7.2.5 调试模块状态寄存器(dmstatus) .............................................. 9
7.2.6 微处理器状态寄存器(hartinfo) .............................................. 9
7.2.7 抽象命令控制与状态寄存器(abstractcs) ...................................... 9
7.2.8 抽象命令寄存器(command) .................................................. 10
7.2.9 抽象命令自动执行寄存器(abstractauto) ..................................... 10
7.2.10 指令缓存寄存器(progbufx) ................................................ 11
T/BDT 004—2024
II
7.2.11 暂停状态寄存器(haltsum0) ................................................ 11
7.2.12 调试控制和状态寄存器(dcsr) .............................................. 11
7.2.13 调试模式程序指针(dpc) ................................................... 12
7.3 操作实例....................................................................... 12
附录A(资料性) 配置实例.............................................................13
A.1 配置实例描述................................................................... 13
A.1.1 使能从机输出............................................................... 13
A.1.2 配置时基分频系数为1 分频................................................... 13
A.1.3 复位调试接口............................................................... 13
附录B(资料性) 操作实例.............................................................14
B.1 暂停微处理器................................................................... 14
B.2 恢复微处理器................................................................... 14
B.3 复位微处理器................................................................... 14
B.3.1 复位后微处理器重新运行..................................................... 14
B.3.2 复位后微处理器立即暂停..................................................... 14
B.4 复位调试模块................................................................... 15
B.5 读/写通用寄存器(GPR) ......................................................... 15
B.5.1 读GPR,以x16 为例........................................................ 15
B.5.2 写GPR,以x16 为例........................................................ 15
B.6 读/写控制和状态寄存器(CSR) ................................................... 16
B.6.1 读CSR,以mepc 为例,其CSR 地址为0x341 .................................. 16
B.6.2 写CSR,以mepc 为例,其CSR 地址为0x341 .................................. 16
B.7 读/写存储器.................................................................... 16
B.7.1 描述....................................................................... 16
B.7.2 存储器读................................................................... 16
B.7.3 存储器写................................................................... 17
B.8 单步执行....................................................................... 18
B.9 设置软件断点................................................................... 18
参考文献.............................................................................. 20
T/BDT 004—2024
III
前言
本文件按照GB/T 1.1—2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规定
起草。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由中国半导体行业协会提出并归口。
本文件起草单位:南京沁恒微电子股份有限公司、东南大学、南京大学、中国科学院软件研究所、
宏晶微电子科技股份有限公司、深圳前沿标准技术服务有限公司。
本文件主要起草人:杨勇、李天培、阙庆河、凌明、杜力、邢明杰、张宏达、何睿、刘伟、宇伟。

T/BDT 004—2024
1
RISC-V 单线调试接口技术要求
1 范围
本文件规定了RISC-V单线调试接口的调试传输协议,调试模块及其操作方法。
本文件适用于RISC-V 单线调试的规范和对微处理器的在线调试。
2 规范性引用文件
本文件没有规范性引用文件。
3 术语和定义
下列术语和定义适用于本文件。
3.1
调试模块debug module
可实现抽象的调试操作和特定实现转换的模块,能够实现微处理器的暂停和运行,可通过抽象命
令、program buffer 部署指令等方式访问微处理器的GPRs、CSRs、储存器、外部设备等。
3.2
调试模块控制寄存器dmcontrol
用于控制调试模块及当前选定内核的一种寄存器。
3.3
调试模块状态寄存器dmstatus
用于指示调试模块及当前选定内核状态的一种寄存器
3.4
微处理器状态寄存器hartinfo
用于向调试主机提供微处理器的信息的一种只读寄存器。
3.5
抽象命令控制与状态寄存器abstractcs
用于指示抽象命令执行的情况的一种寄存器,调试主机可通过读取该寄存器,了解上一个抽象命
令是否执行完毕,并且可检查抽象命令执行过程中是否产生错误以及错误的类型。
3.6
抽象命令寄存器command
调试主机可通过抽象命令寄存器中写入不同的配置值,生成对应的抽象命令,实现对寄存器及存
储器的访问。
3.7
抽象命令自动执行寄存器abstractauto
用于配置抽象命令自动执行的一种寄存器,当对调试模块的progbufx 和datax 进行读写时,抽
象命令可再次被执行。
3.8
指令缓存寄存器progbufx
用于存放任意指令,部署相应操作的一种寄存器,最后一条执行需要是“ebreak” 或者
“c.ebreak”。
3.9
暂停状态寄存器haltsum0
用于指示微处理器是否暂停,每一位指示一个微处理器的暂停状态的一种寄存器,当只有一个核
时,仅用该寄存器最低位表示。
T/BDT 004—2024
2
3.10
调试控制和状态寄存器dcsr
用于控制和指示调试模式下的动作和状态的一种寄存器。
3.11
调试模式程序指针dpc
用于保存微处理器进入调试模式之后将要执行的下一条指令的地址的一种寄存器。
3.12
读/写通用寄存器GPR
抽象命令支持对微处理器进行读写的一种通用寄存器。
3.13
读/写控制和状态寄存器CSR
抽象命令支持对微处理器进行读写的控制和状态寄存器。
4 缩略语
下列缩略语适用于本文件。
abstractauto:抽象命令自动执行(abstract command autoexec)
abstractcs:抽象命令状态寄存器(abstract control and status register)
CFGR:配置寄存器(configuration register)
CPBR:能力寄存器(capability register)
command:抽象命令寄存器(abstract command register)
DM:调试模块(Debug Module)
DMI:调试模块接口(Debug Module Interface)
DTM:调试传输模块(Debug Transport Module)
data0:数据寄存器0(data register 0)
data1:数据寄存器1(data register 1)
dcsr:调试控制和状态寄存器(debug control and status register)
dmcontrol:调试模块控制寄存器(debug module control register)
dmstatus:调试模块状态寄存器(debug module status register)
dpc:调试模式程序指针(debug PC)
haltsum0:暂停状态寄存器(halt summary 0)
hartinfo:微处理器状态寄存器(hart info register)
progbufx:指令缓存寄存器(program buffer x)
RISC:精简指令集(Reduced Instruction Set Computer)
RISC-V:第五代精简指令集(Fifth generation Reduced Instruction Set Computing)
SHDWCFGR:影子配置寄存器(shadow configuration register)
5 基本结构
5.1 调试模块(DM)
5.1.1 调试模块应用于实现抽象的调试操作和特定实现之间的转换。调试模块是称为调试模块接口
(DMI)的总线的从设备,总线主设备是调试传输模块(DTM)。
5.1.2 调试模块可实现微处理器的暂停、复位、恢复等功能。
5.1.3 调试模块应通过单线调试接口和调试传输设备通讯。
5.1.4 应通过DMI 访问DM 寄存器,通过寄存器的访问完成整个调试过程。
5.2 调试模块接口(DMI)
T/BDT 004—2024
3
调试模块接口可以是包含一个主总线和一个从总线的普通总线,也可以使用功能更齐全的总线,
DMI应使用7到32个地址位,它支持读写操作。
5.3 调试传输模块(DTM)
5.3.1 调试传输模块通过一种或多种传输方式(例如:JTAG 或者USB)对调试模块提供访问。
5.3.2 调试传输设备和调试主机应使用接口通讯,并通过单线接口和调试模块通讯,以控制和查询微
处理器状态,实现调试功能。示例框图见5.4。
5.3.3 可通过抽象命令或者Program Buffer 的方式访问处理器内部,处理器内部包括:
a) 通用寄存器(GPRs);
b) 控制状态寄存器(CSRs);
c) 存储器或映射为特定功能的外设等。
5.4 调试系统简易框图
以支持RISC-V 单线调试的微处理器为例。见图1所示。
图1 调试系统框图
6 调试传输协议规范
6.1 概述
6.1.1 调试传输设备和调试模块之间应采用单线传输的方式进行通讯。
6.1.2 传输协议定义了访问调试模块相关寄存器的数据包格式,其结构应符合6.2 的格式要求。
6.2 数据包格式
6.2.1 New Packet
New Packet结构组成应符合以下要求:
d) 1bit 起始位,固定为数据1;
e) 7bit 地址位,设置访问寄存器地址,MSB 优先;
f) 1bit 读写控制位,1 主机写,0 主机读;
g) 32bit 数据,MSB 优先;
h) 1bit 偶校验位,该位为可选数据位,若数据位最后一位后直接发送停止符,则不进行校验位
传输。
6.2.2 Byp Packet
T/BDT 004—2024
4
Byp Packet结构组成应符合以下要求:
a) 1bit 起始位,固定为数据0;
b) 32bit 数据位,MSB 优先,读写位和寄存器地址与最近一次的New Packet 传输相同;
c) 1bit 偶校验位,该位为可选数据位,若数据位最后一位后直接发送停止符,则不进行校验
位传输。
6.2.3 数据包访问格式
对调试模块寄存器操作应按照图2所示格式进行访问。New Packet和Byp Packet组合实现对某个寄
存器的读写,连续读或写等操作。
图2 数据包格式
6.3 位定义
6.3.1 位定义的判断依据
单线接口应使用电平的高低和持续时间来表示数据位、停止位。总线空闲时为高电平,当总线低
电平持续一定时间,应表示复位信号。
6.3.2 速度模式
6.3.2.1 快速模式1X
设从机调试接口时钟周期为T,时序应如图3所示:
a) 停止位:持续高电平10T,将产生停止位;
b) 数据1:低电平时间(T,2T),高电平时间(T,8T);
c) 数据0:低电平时间(4T,32T),高电平时间(T,8T)。
图3 快速模式信号时序
6.3.2.2 普通模式2X
设从机调试接口时钟周期为T,时序应如图4所示,该模式为复位后默认模式:
a) 停止位:持续高电平18T,将产生停止位;
b) 数据1:低电平时间(T,4T),高电平时间(T,16T);
c) 数据0:低电平时间(6T,64T),高电平时间(T,16T)。
T/BDT 004—2024
5
图4 中速模式信号时序
6.4 调试接口寄存器
6.4.1 调试接口寄存器类型
6.3.2中规定的调试接口速度模式及使能应由相关寄存器进行配置。
寄存器应使用7位地址进行编码,分类见表1。
表1 调试接口寄存器
名称访问地址描述详细要求
CPBR 0x7C 能力寄存器定义应符合6.4.2的规定
CFGR 0x7D 配置寄存器定义应符合6.4.3的规定
SHDWCFGR 0x7E 影子配置寄存器定义应符合6.4.4的规定
6.4.2 能力寄存器(CPBR)
能力寄存器定义应符合表2规定。
位名称访问描述复位值
[31:16] VERSION RO 版本号。0x0001
[15:13] Reserve RO 保留。0
[12:11] IOMODE R0
调试IO 口支持模式:
00:IO_FREE 模式;
01:IO_FREE 和Single_IO 模式;
10:IO_FREE、Single_ IO、Dual_IO 模式
11 : IO_FREE 、Single_IO 、Dual_ IO 、
Quad_IO 模式。
0
10 OUTSTA RO
输出功能状态:
0:调试从机不具有输出功能;
1:调试从机具有输出功能。
0
9 CMDEXTENSTA R0
命令码扩展功能:
0:调试从机不具有命令码扩展功能;
1:调试从机具有命令码扩展功能。
0
8 CHECKSTA RO
CRC8 校验功能:
0:调试从机不具有CRC8 校验功能,仅偶校
验;
1:调试从机支持CRC8 和偶校验。
0
[7:6] Reserve RO 保留。
[5:4] SOPN RO
停止符系数:
00:至少8 倍时基;
01:至少16 倍时基;
10:至少32 倍时基;
11:至少64 倍时基。
0
[3:2] Reserve RO 保留。0
[1:0] TDIV RO 时钟分频系数: 0b01
T/BDT 004—2024
6
表2 能力寄存器(CPBR)
6.4.3 配置寄存器(CFGR)
配置寄存器定义应符合表3规定。
表3 配置寄存器(CFGR)
位名称访问描述复位值
[31:16] KEY RW
健值寄存器:
写寄存器时需同步写入0×5AA5
0
[15:13] Reserve RO 保留。0
[12:11] IOMODECFG RW
调试IO 口支持模式:
00:IO_FREE 模式;
01:IO_FREE 和Single_IO 模式;
10:IO_FREE、Single_ IO、Dual_IO 模式
11 : IO_FREE 、Single_IO 、Dual_ IO 、
Quad_IO 模式。
0
10 OUTEN RW
输出功能状态:
0:调试从机不具有输出功能;
1:调试从机具有输出功能
0
9 CMDEXTEN RW
命令码扩展功能:
0:调试从机不具有命令码扩展功能;
1:调试从机具有命令码扩展功能。
0
8 CHECKEN RW
CRC8 校验功能:
0:调试从机不具有CRC8 校验功能,仅偶校
验; 1:调试从机支持CRC8 和偶校验。
0
[7:6] Reserve R0 保留。
[5:4] SOPNCFG RO
停止符系数:
00:至少8 倍时基;
01:至少16 倍时基;
10:至少32 倍时基;
11:至少64 倍时基。
0
[3:2] Reserve RO 保留。0
[1:0] TDIVCFG RO
时钟分频系数:
00:1 分频;
01:2 分频;
其他:保留
0
6.4.4 影子配置寄存器(SHDWCFGR)
影子配置寄存器定义应符合表4规定。
表4 影子配置寄存器(SHDWCFGR)
位名称访问描述复位值
[31:16] KEY RW
键值寄存器:
写寄存器时需同步写入0x5AA5。
0
[15:13] Reserve RO 保留。0
[12:11] IOMODECFG RW
调试IO 口支持模式:
00:IO_FREE 模式;
01:IO_FREE 和Single_IO 模式;
10:IO_FREE、Single_ IO、Dual_IO 模式
11:IO_FREE、Single_IO、Dual_ IO、Quad_IO
模式。
0
10 OUTEN RW 输出功能状态: 0
00:1 分频;
01:2 分频;
其他:保留。
T/BDT 004—2024
7
位名称访问描述复位值
0:调试从机不具有输出功能;
1:调试从机具有输出功能。
9 CMDEXTEN RW
命令码扩展功能:
0:调试从机不具有命令码扩展功能;
1:调试从机具有命令码扩展功能。
0
8 CHECKEN RW
CRC8 校验功能:
0:调试从机不具有CRC8 校验功能, 仅偶校
验;
1:调试从机支持CRC8 和偶校验。
0
[7:6] Reserve RO 保留。
[5:4] SOPNCFG RO
停止符系数:
00:至少8 倍时基;
01:至少16 倍时基;
10:至少32 倍时基;
11:至少64 倍时基。
0
[3:2] Reserve RO 保留。0
[1:0] TDIVCFG RO
时钟分频系数:
00:1 分频;
01:2 分频;
其他:保留。
0
6.5 配置实例
6.5.1 主机可通过6.4.3 中规定的配置寄存器CFGR 和6.4.4 中规定的影子配置寄存器SHDWCFGR,配
合设置调试接口的能力,并通过6.4.2 中定义的能力寄存器CPBR 查询是否生效。
6.5.2 设置时应先设置SHDWCFGR 对应位,再将CFGR 对应位域置位,即可设置影子配置寄存器的对应
配置位生效,其他配置位不变。
6.5.3 相关实例详见附录A。
7 调试模块
7.1 调试操作流程
调试模块能执行调试主机下发的调试操作,包括:
a) 通过调试接口访问寄存器;
b) 通过调试接口可使微处理器复位、暂停、恢复;
c) 通过调试接口读写存储器、指令寄存器以及外部设备;
d) 通过调试接口可部署多条任意指令;
e) 通过调试接口设置软件断点;
f) 支持抽象命令自动执行;
g) 支持单步调试。
7.2 调试模块寄存器类型
7.2.1 概述
7.2.1.1 调试模块内部寄存器应使用7 位地址编码。
7.2.1.2 微处理器内部实现了以下寄存器,调试模块寄存器种类应符合表5 的规定。
表5 调试模块寄存器列表
名称访问地址描述详细要求
data0 0x04 数据寄存器0,可用于暂存
数据
应符合7.2.2定义规定
data1 0x05 数据寄存器1,可用于暂存
数据
应符合7.2.3定义规定
T/BDT 004—2024
8
名称访问地址描述详细要求
dmcontrol 0x10 调试模块控制寄存器应符合7.2.4定义规定
dmstatus 0x11 调试模块状态寄存器应符合7.2.5定义规定
hartinfo 0x12 微处理器状态寄存器应符合7.2.6定义规定
abstractcs 0x16 抽象命令状态寄存器应符合7.2.7定义规定
command 0x17 抽象命令寄存器应符合7.2.8定义规定
abstractauto 0x18 抽象命令自动执行应符合7.2.9定义规定
progbuf0-7 0x20-0x27 指令缓存寄存器0-7 应符合7.2.10定义规定
haltsum0 0x40 暂停状态寄存器应符合7.2.11定义规定
7.2.1.3 调试主机可通过配置dmcontrol 寄存器控制微处理器的暂停、恢复、复位等,也可通过
command 寄存器触发调试模块生成抽象命令。
7.2.1.4 RISC-V 标准定义三种抽象命令类型:访问寄存器、快速访问、访问存储器。
7.2.1.5 调试模块内部实现了八个指令缓存寄存器progbuf0-7,调试主机可向缓冲区缓存多条指令
(可以是压缩指令),可选择执行完抽象命令后继续执行指令缓存寄存器中的指令,也可直接执行缓
存的指令。
7.2.1.6 progbufs 中指令小于32 字节,则需要最后一条指令是一条“ebreak”或“c.ebreak”指令,
若指令填满32 字节,调试模块自动添加一条“ebreak”指令。调试主机也可通过抽象命令和
progbufs 中缓存的指令,实现储存器、外设等的访问。
7.2.2 数据寄存器0(data0)
数据寄存器0的定义应符合表6规定。
表6 data0 寄存器定义
位名称访问描述复位值
[31:0] data0 RW 数据寄存器0,用于暂存数据0
7.2.3 数据寄存器1(data1)
数据寄存器1的定义应符合表7规定。
表7 data1 寄存器定义
位名称访问描述复位值
[31:0] data1 RW 数据寄存器1,用于暂存数据0
7.2.4 调试模块控制寄存器(dmcontrol)
调试主机向对应的字段写数据,即可实现5.2.4 中调试模块对寄存器的暂停(haltreq)、复位
(ndmreset)、恢复(resumereq)的功能。各位描述应符合表8 规定。
表8 dmcontrol 寄存器定义
位名称访问描述复位值
31 haltreq WO
0:清除暂停请求
1:发出暂停请求
0
30 resumereq
W1 0:无效
1:恢复当前微处理器
0
29 Reserve R0 保留0
28 ackhavereset W1
0:无效
1:清除微处理器的haverest 状态位
0
[27:2] Reserve R0 保留0
1 ndmreset RW
0:清除复位
1:复位调试模块以外的整个系统
0
0 dmactive RW 0:复位调试模块0
T/BDT 004—2024
9
位名称访问描述复位值
1:调试模块正常工作
7.2.5 调试模块状态寄存器(dmstatus)
描述应符合表9规定。
表9 dmstatus 寄存器定义
位名称访问描述复位值
[31:20] Reserve RO 保留0
19 allhavereset RO
0:无效
1:微处理器复位
0
18 anyhavereset RO
0:无效
1:微处理器复位
0
17 allresumeack RO
0:无效
1:微处理器已经恢复
0
16 anyresumeack RO
0:无效
1:微处理器已经恢复
0
[15:14] Reserve RO 保留0
13 allavail RO
0:无效
1:微处理器不可用
0
12 anyavail RO
0:无效
1:微处理器不可用
0
11 allrunning RO
0:无效
1:微处理器正在运行
0
10 anyrunning RO
0:无效
1:微处理器正在运行
0
9 allhalted RO
0:无效
1:微处理器处于暂停
0
8 anyhalted RO
0:无效
1:微处理器出暂停
0
7 authenticated RO
0:使用调试模块前需要认证
1:调试模块已经通过认证
0x1
[6:4] Reserve RO 保留0
[3:0] version RO
调试系统支持架构版本
0010:V0.13
0x2
7.2.6 微处理器状态寄存器(hartinfo)
各个位描述应符合表10规定。
表10 hartinfo 寄存器定义
位名称访问描述复位值
[31:24] Reserve RO 保留0
[23:20] nscratch RO 支持的dscratch 寄存器数量0x2
[19:17] Reserve R0 保留0
16 dataaccess RO
0:数据寄存器映射为CSR 地址
1:数据寄存器映射为存储器地址
0x1
[15:12] datasize R0 数据寄存器数量0x2
[11:0] dataaddr RO
数据寄存器data0 偏移地址,其基地址为
0xe0000000
0x0f4
7.2.7 抽象命令控制与状态寄存器(abstractcs)
详细描述应符合表11的规定。
表11 abstractcs 寄存器定义
T/BDT 004—2024
10
位名称访问描述复位值
[31:29] Reserve RO 保留0
[28:24] progbufsize RO 表示program buffer 程序缓存寄存器数量0x8
[23:13] Reserve R0 保留0
12 busy R0 0:无抽象命令执行
1:有抽象命令正在执行
0
11 Reserve R0 保留0
[10:8] cmder RW
抽象命令错误类型
000:无错误
001 : 抽象命令执行时对command 、
abstractcs、abstractauto 寄存器进行写或者
对data 和progbuf 寄存器进行读写操作
010:不支持当前抽象命令
011:执行抽象命令出现异常
100:微处理器未暂停或不可用,而不能执行抽
象命令
101:总线出错
110:通讯时奇偶校验位错误
111:其他错误
0
[7:4] Reserve R0 保留0
[3:0] datacount R0 数据寄存器数量0x2
7.2.8 抽象命令寄存器(command)
调试操作应符合7.1中的b)说明。当对寄存器访问时command 寄存器各位定义应符合表12规定。
表12 访问寄存器时command 寄存器定义
位名称访问描述复位值
[31:24] cmdtype WO
抽象命令类型
0:访问寄存器
1:快速访问
2:访问存储器
0
23 Reserve WO 保留0
[22:20] aarsize WO
访问寄存器数据位宽
000:8 位
001:16 位
010:32 位
011:64 位
100:128 位
0
19 aarpostincrement WO
0:无影响
1:访问寄存器后自动增加regno 的值
0
18 postexec WO
0:无影响
1:执行抽象命令后执行progbuf 中的命令
0
17 transfer WO
0:不执行write 指定的操作
1:执行write 指令的操纵
0
16 write WO
0:从指定的寄存器拷贝数据至data0
1:从data0 寄存器拷贝数据至指定的寄存器
0
[15:0] regno WO
指定访问寄存器
0x0000-0x0fff 为CSRs
0x1000-0x101f 为GPRs
0x1020-0x103f 为FPRs
0
7.2.9 抽象命令自动执行寄存器(abstractauto)
该寄存器的描述应符合表13规定。
表13 abstractauto 寄存器定义
T/BDT 004—2024
11
位名称访问描述复位值
[31:16] autoexecprogbuf RW
若某位置1,相应对progbufx 的读写将
导致command 寄存器中抽象命令再次被执

0
[15:12] Reserve RO 保留0
[11:0] autoexecdata RW
若某位置1,相应对datax 寄存器的读写
将导致command 寄存器中的抽象命令再次
被执行
0
7.2.10 指令缓存寄存器(progbufx)
当progbufx 共8个,能够存储共32B 字节指令,当不满32B 时,需要最后一条指令是“break”
指令,当存满32B 时,模块自动在最后添加“ebreak”指令。
寄存器定义应符合表14规定。
表14 progbuf 寄存器定义
位名称访问描述复位值
[31:0] progbuf RW 缓存操作的指令编码,可以包括压缩指令0
7.2.11 暂停状态寄存器(haltsum0)
寄存器定义应符合表15规定。
表15 haltsum0 寄存器定义
位名称访问描述复位值
[31:1] Reserve RO 保留0
0 haltsum0 RO
0:微处理器正常运行
1:微处理器停止
0
7.2.12 调试控制和状态寄存器(dcsr)
详细描述应符合表16规定。
表16 dcsr 寄存器定义
位名称访问描述复位值
[31:28] xdebugver DRO
0000:不支持外部调试
0100:支持标准的外部调试
1111:支持外部调试,但是不符合规范
0x4
[27:16] Reserve DRO 保留
15 ebreakm DRW
0:机器模式下的ebreak 指令的行为如特权
文档所述
1:机器模式下的ebreak 指令能够进入调试
模式
0
[14:13] Reserve DRO 保留0
12 ebreaku DRW
0:用户模式下的ebreak 指令的行为如特权
文档所述
1:用户模式下的ebreak 指令能够进入调试
模式
0
11 step ie DRW
0:单步调试下禁止中断
1:单步调试下启用中断
0
10 Reserve DRO 保留0
9 stoptime DRW
0:调试模式下系统定时器运行
1:调试模式下系统定时器停止
0
[8:6] cause DRO
进入调试的原因001:以ebreak 指令方式进
入调试(优先级为3)
010:以trigger module 形式进入调试(优
0
T/BDT 004—2024
12
位名称访问描述复位值
先级为4,最高)
011:以暂停请求形式进入调试(优先级为
1)
100:以单步调试形式进入调试(优先级为
0, 最低)
101:微处理器复位之后直接停止进入调试模
式(优先级为2)
其他:保留
[5:3] Reserve DRO 保留0
2 step DRW
0:关闭单步调试
1:开启单步调试
0
[1:0] prv DRW
特权模式
00:用户模式
01:监督模式
10:保留
11:机器模式
0
7.2.13 调试模式程序指针(dpc)
7.2.13.1 dpc 寄存器定义
dpc寄存器定义描述应符合表17规定。
表17 dpc 寄存器定义
位名称访问描述复位值
[31:0] dpc DRW 指令地址0
7.2.13.2 dpc 更新规则
更新规则应符合表18 规定。
表18 dpc 更新规则
进入调试方式dpc 更新规则
ebreak Ebreak 指令的地址
single step 当前指令的下一条指令的指令地址
trigger module 暂不支持
halt request 进入调试时,下一条将要被执行的指令地址
7.3 操作实例
调试主机发起暂停、恢复、复位等读写寄存器,推荐的操作流程,相关实例见附录B。
T/BDT 004—2024
13
A
A
附录A
(资料性)
配置实例
A.1 配置实例描述
A.1.1 使能从机输出
a) 设置SHDWCFGR为0x5AA50400,将影子配置寄存器输出使能位置1;
b) 设置CFGR为0x5AA50400,将影子配置寄存器输出使能位更新至配置寄存器,配置寄存器其他
位不变。
A.1.2 配置时基分频系数为1分频
a) 设置SHDWCFGR 为0x5AA50000,设置影子配置寄存器TDIVCFG 为0b00;
b) 设置CFGR 为0x5AA50003,将影子配置寄存器TDIVCFG 位域更新至配置寄存器,配置寄存
器中其他位不变。
A.1.3 复位调试接口
IO_FREE 模式下,复位时序为总线拉低超过32 倍的时基,且不管何种模式下,总线拉低超过
256 倍时基时,固定可将调试接口复位。复位后速度改为两分频模式,即普通模式2x。
不同的硬件平台调试接口时钟可能不同,例如CH32V003 默认为内部高速时钟24MHz 的3 分频
为其时钟,即8MHz。
T/BDT 004—2024
14
B
B
附录B
(资料性)
操作实例
B.1 暂停微处理器
该流程应用于将微处理器暂停,步骤如表B.1所示。
表B.1 微处理器暂停流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmstatus(0x11) R-0 rdata
获取调试模块状态信息,检查rdata[9:8],如值为0b11,
则表示处理器正常进入暂停状态,否则表示未进入暂停状
态,需要继续发送暂停请求, 查询状态。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求位。
B.2 恢复微处理器
该流程应用于将处于暂停的微处理器恢复,步骤如表B.2所示。
表B.2 微处理器恢复流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求位。
Dmcontrol(0x10) W-1 0x40000001 发起恢复请求。恢复请求位写1 有效, 恢复后硬件清0。
Dmstatus(0x11) R-0 rdata
获取调试模块状态信息, 检查rdata[17:16] , 如值为
0b11,则表示处理器已经恢复。
B.3 复位微处理器
B.3.1 复位后微处理器重新运行
如表B.3所示。
表B.3 微处理器复位并运行流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求位。
Dmcontrol(0x10) W-1 0x00000003 发起内核复位请求。
Dmstatus(0x11) R-0 rdata
获取调试模块状态信息,检查rdata[19:18],如值为
0b11,则表示处理器已经复位,否则复位失败。
Dmcontrol(0x10) W-1 0x00000001 清除复位信号。
Dmcontrol(0x10) W-1 0x10000001 清除复位状态信号,该位写1 有效,读恒为0。
Dmstatus(0x11) R-0 rdata
获取调试模块状态信息,检查rdata[19:18],如值为
0b00,则表示处理器复位状态已清除,否则清除失败。
B.3.2 复位后微处理器立即暂停
如表B.4所示。
表B.4 微处理器复位后继续暂停流程
调试寄存器地址R/W 值描述
T/BDT 004—2024
15
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x80000003 发起内核复位请求,并保持暂停请求。
Dmstatus(0x11) R-0 rdata
获取调试模块状态信息,检查rdata[19:18],如值为
0b11,则表示处理器已经复位,否则复位失败。
Dmcontrol(0x10) W-1 0x80000001 清除复位信号,并保持暂停请求。
Dmcontrol(0x10) W-1 0x90000001 清除复位状态信号,保持暂停请求。
Dmstatus(0x11) R-0 rdata
获取调试模块状态信息,检查rdata[19:18],如值为
0b00,则表示处理器复位状态已清除, 否则清除失败。
Dmcontrol(0x10) W-1 0x00000001 待处理器复位并再次暂停时,清除暂停请求。
B.4 复位调试模块
该流程应用于复位调试模块,详细如表B.5所示。
表B.5 调试模块复位流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Dmcontrol(0x10) W-1 0x00000003 写命令。
Dmcontrol(0x10) R-0 rdata 检查rdata 是否为上步写入的值。
Dmcontrol(0x10) W-1 0x00000002 写调试模块复位命令。
Dmcontrol(0x10) R-0 rdata
检查rdata[1]是否为0b0,如果是则复位成功,否则复
位失败。
B.5 读/写通用寄存器(GPR)
B.5.1 读GPR,以x16 为例
如表B.6所示。
表B.6 读GPR 流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Data0(0x04) W-1 0x00000000 将Data0 寄存器清除。
Command(0x17) W-1
CMD
(0x00221006)
设置抽象命令,将x6 数据拷贝至Data0 寄存器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行, 否则表示无抽象命令执
行;检查rdata[10:8],即cmderr 值是否为0b000,如
果是,则抽象命令执行正常,否则抽象命令执行错误,根
据错误类型检查修正错误。
Data0(0x04) R-0 rdata 读出Data0 数据rdata,即为x6 寄存器值。
B.5.2 写GPR,以x16 为例
如表B.7所示。
表B.7 写GPR 流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
T/BDT 004—2024
16
调试寄存器地址R/W 值描述
Data0(0x04) W-1 wdata 将代写数据wdata 写入Data0。
Command(0x17) W-1
CMD
(0x00231006)
设置抽象命令,将Data0 数据拷贝至x6 寄存器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果是,
则表示抽象命令正在执行, 否则表示无抽象命令执行;
检查rdata[10:8],即cmderr 值是否为0b000,如果
是,则抽象命令执行正常,否则抽象命令执行错误,根据
错误类型检查修正错误。
B.6 读/写控制和状态寄存器(CSR)
B.6.1 读CSR,以mepc 为例,其CSR 地址为0x341
如表B.8所示。
表B.8 读CSR 流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Data0(0x04) W-1 0x00000000 将Data0 寄存器清除。
Command(0x17) W-1
CMD
(0x00220341)
设置抽象命令,将CSR 0x341 中数据拷贝至Data0 寄存
器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果是,
则表示抽象命令正在执行,否则表示无抽象命令执行;检
查rdata[10:8],即cmderr 值是否为0b000,如果是,
则抽象命令执行正常,否则抽象命令执行错误,根据错误
类型检查修正错误。
Data0(0x04) R-0 rdata 读出Data0 数据rdata,即为CSR 0x341 寄存器值。
B.6.2 写CSR,以mepc 为例,其CSR 地址为0x341
如表B.9所示。
表B.9 写CSR 流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Data0(0x04) W-1 wdata 将待写数据wdata 写入Data0。
Command(0x17) W-1
CMD
(0x00230341)
设置抽象命令,将Data0 数据拷贝至CSR 0x341 寄存
器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行,否则表示无抽象命令执
行;检查rdata[10:8],即cmderr 值是否为0b000,
如果是,则抽象命令执行正常,否则抽象命令执行错
误,根据错误类型检查修正错误。
B.7 读/写存储器
B.7.1 描述
微处理器的调试模块可通过抽象命令访问寄存器和存储器,可利用抽象命令和预置progbufx 指
令的方式,对某存储器地址进行读写。
B.7.2 存储器读
T/BDT 004—2024
17
针对FLASH、RAM、MCU 外设寄存器等,均可采用存储器读方式读取数据。以地址0x20000000 为
例。如表B.10所示。
表B.10 读存储器流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Progbuf0(0x20) W-1 wcode
将待执行的指令机器码wcode 写入progbuf0,例如
“lw x6,0(x5)”wcode 为0x0002a303。
Progbuf1(0x21) W-1 0x00100073 不满32B,补充“ebreak”指令至progbuf1 中。
Data0(0x04) W-1 0x20000000 将待读取地址写入Data0。
Command(0x17) W-1
CMD
(0x00271005)
设置抽象命令,将Data0 数据拷贝至x5 寄存器,并
设置抽象命令执行后执行progbufx 中指令。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行, 否则表示无抽象命令
执行; 检查rdata[10:8] , 即cmderr 值是否为
0b000,如果是,则抽象命令执行正常,否则抽象命令
执行错误,根据错误类型检查修正错误。
Command(0x17) W-1
CMD
(0x00221006)
设置抽象命令,将x6 寄存器值拷贝至Data0。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行, 否则表示无抽象命令
执行; 检查rdata[10:8] , 即cmderr 值是否为
0b000,如果是,则抽象命令执行正常,否则抽象命令
执行错误,根据错误类型检查修正错误。
Data0(0x04) R-0 rdata
读出Data0 数据rdata,即为0x20000000 地址值。
需要注意该方法操作了寄存器值,操作前应保存相应寄
存器值,操作结束后进行恢复。
B.7.3 存储器写
B.7.3.1 针对RAM、MCU 外设寄存器等可直接按照如下流程进行写。
B.7.3.2 针对FLASH 写,需要按照不同芯片的FLASH 控制器要求对其寄存器按步骤进行操作编程。
如表B.11 所示。
表B.11 写存储器流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Progbuf0(0x20) W-1 wcode
将待执行的指令机器码wcode 写入progbuf0,例如
“sw x7,0(x5)”wcode 为0x0072a023。
Progbuf1(0x21) W-1 0x00100073 不满32B,补充“ebreak”指令至progbuf1 中。
Data0(0x04) W-1 wdata 将待写地址,写入Data0 中,例如0x20000000。
Command(0x17) W-1
CMD
(0x00231005)
设置抽象命令,将Data0 数据拷贝至x5 寄存器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行,否则表示无抽象命令执
行;检查rdata[10:8],即cmderr 值是否为0b000,
如果是,则抽象命令执行正常,否则抽象命令执行错
误,根据错误类型检查修正错误。
Data0(0x04) W-1 wdata 将待写入数据wdata,写入Data0 寄存器。
Command(0x17) W-1
CMD
(0x00271007)
设置抽象命令,将Data0 数据写入x7 寄存器,并设
置抽象命令执行完毕后自动执行progbufx 中程序。
T/BDT 004—2024
18
调试寄存器地址R/W 值描述
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行, 否则表示无抽象命令
执行; 检查rdata[10:8] , 即cmderr 值是否为
0b000,如果是,则抽象命令执行正常,否则抽象命令
执行错误,根据错误类型检查修正错误。
B.8 单步执行
通过设置调试下状态和控制寄存器,可实现调试模式下单步执行。并可控制单步下是否使能中断,
详细如表B.12所示。
表B.12 单步执行流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Data0(0x04) W-1 0x00008007
将待写入DCSR 寄存器值写入Data0 寄存器,这里设
置dcsr.breakm=1,dcsr.step ie=0,
dcsr.step=1 , dcsr.prv=3 , 即使能机器模式下执行
ebreak 进调试,单步下禁止中断,设置单步执行。
Command(0x17) W-1 0x002307b0 将Data0 中数据拷贝至DCSR 寄存器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行,否则表示无抽象命令执
行;检查rdata[10:8],即cmderr 值是否为0b000,
如果是,则抽象命令执行正常,否则抽象命令执行错
误,根据错误类型检查修正错误。
Dmcontrol(0x10) W-1 0x40000001
发起恢复请求。恢复请求位写1 有效,恢复后硬件清
0。
Dmstatus(0x11) R-0 rdata 获取调试模块状态信息。
Data0(0x04) W-1 0x00000003
当微处理器再次进入暂停后,将关闭单步调试的DCSR
配置值写入Data0 中。
Command(0x17) W-1 0x002307b0 将Data0 中数据拷贝至DCSR 寄存器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行,否则表示无抽象命令执
行;检查rdata[10:8],即cmderr 值是否为0b000,
如果是,则抽象命令执行正常,否则抽象命令执行错
误,根据错误类型检查修正错误。
Dmcontrol(0x10) W-1 0x40000001
发起恢复请求。恢复请求位写1 有效,恢复后硬件清
0。
B.9 设置软件断点
微处理器在线调试时,可通过在程序中插入“ebreak”指令的方式,插入断点。参考流程如表
B.13所示。
表B.13 设置软件断点流程
调试寄存器地址R/W 值描述
Dmcontrol(0x10) W-1 0x80000001 使调试模块正常工作。
Dmcontrol(0x10) W-1 0x80000001 发起暂停请求。
Dmcontrol(0x10) W-1 0x00000001 清除暂停请求。
Data0(0x04) W-1 0x00008003 将软件断点DCSR 配置值写入Data0 寄存器。
Command(0x17) W-1 0x002307b0 将Data0 中数据拷贝至DCSR 寄存器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行, 否则表示无抽象命令
执行; 检查rdata[10:8] , 即cmderr 值是否为
T/BDT 004—2024
19
0b000,如果是,则抽象命令执行正常,否则抽象命令
执行错误,根据错误类型检查修正错误。
Dmcontrol(0x10) W-1 0x40000001
发起恢复请求,运行至插入断点ebreak 处自动暂停,
进入调试模式。
Dmstatus(0x11) R-0 rdata
获取调试模块状态信息,直到执行到断点后再次进入暂
停。
Data0(0x04) W-1 0x00000003
当微处理器再次进入暂停后,将关闭单步调试的DCSR
配置值写入Data0 中。
Command(0x17) W-1 0x002307b0 将Data0 中数据拷贝至DCSR 寄存器。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行, 否则表示无抽象命令
执行; 检查rdata[10:8] , 即cmderr 值是否为
0b000,如果是,则抽象命令执行正常,否则抽象命令
执行错误,根据错误类型检查修正错误。
Data0(0x04) W-1 wpc
将断点后需要继续执行的下一条程序指针wpc 值写入
Data0 寄存器。
Command(0x17) W-1 0x002307b1 将Data0 数据拷贝指针DPC 寄存器中。
Abstracts(0x16) R-0 rdata
检查rdata[12],即查询busy 位是否为0b1,如果
是,则表示抽象命令正在执行,否则表示无抽象命令执
行;检查rdata[10:8],即cmderr 值是否为0b000,
如果是,则抽象命令执行正常,否则抽象命令执行错
误,根据错误类型检查修正错误。
Dmcontrol(0x10) W-1 0x40000001 发起恢复请求,程序从DPC 指针位置开始继续运行。
T/BDT 004—2024
20
参考文献
[1]《RISC-V External Debug Support Version 0.13.2》

资源下载此资源下载价格为5金币立即购买,VIP免费

1.本站大部份文档均属免费,部份收费文档,经过本站分类整理,花了精力和时间,收费文档是为了网站运营成本等费用开支;
2.所有收费文档都真实可靠,为了节约成本,文档在网站前台不做预览,如果付费后,与实际文档不符合,都可以加微信号:pdftj88申请退款;
3.购买会员(或单次下载)即视为对网站的的赞助、打赏,非商业交易行为(不认同此观点请勿支付)请慎重考虑;
4.付费下载过程中,如果遇到下载问题,都可以加微信号pdftj88解决;
5.手机支付,尽量选择支付宝支付;
6.如图集或者标准不清楚,在本站找不到您需要的规范和图集,希望增加资料等任何问题,可联系微信号:pdftj88解决;

文档天下
  • 本文由 发表于 2025年3月14日 09:39:31
  • 转载请务必保留本文链接:https://www.998pdf.com/54845.html
图书

T/ACCEM 135-2024 双组份聚氨酯导热结构胶

T/ACCEM 135-2024 双组份聚氨酯导热结构胶 ,该文件为pdf格式 ,请用户放心下载! 尊敬的用户你们好,你们的支持是我们前进的动力,网站收集的文件并免费分享都是不容易,如果你觉得本站不错...
图书

T/ACCEM 144-2024 智力竞技产品

T/ACCEM 144-2024 智力竞技产品 ,该文件为pdf格式 ,请用户放心下载! 尊敬的用户你们好,你们的支持是我们前进的动力,网站收集的文件并免费分享都是不容易,如果你觉得本站不错的话,可以...
图书

T/ACCEM 229-2024 反渗透膜

T/ACCEM 229-2024 反渗透膜 ,该文件为pdf格式 ,请用户放心下载! 尊敬的用户你们好,你们的支持是我们前进的动力,网站收集的文件并免费分享都是不容易,如果你觉得本站不错的话,可以收藏...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: