logo资料库

RISC-V debug手册中文版.pdf

第1页 / 共69页
第2页 / 共69页
第3页 / 共69页
第4页 / 共69页
第5页 / 共69页
第6页 / 共69页
第7页 / 共69页
第8页 / 共69页
资料共69页,剩余部分请下载后查看
简介
术语
上下文
版本
本文内容
结构
寄存器定义格式
Long Name(shortname, at 0x123)
背景
支持的功能
系统介绍
Debug模块(DM)
调试模块接口(DMI)
重置控制
选择hart
选择单个hart
选择多个hart
Hart状态
运行控制
抽象命令
抽象命令清单
访问寄存器
快速访问
存储器访问
程序缓冲区
总的状态机
系统总线访问
最小程度的干扰调试
安全
调试模块寄存器
Debug Module Status (dmstatus, at 0x11)
Debug Module Control (dmcontrol, at 0x10)
Hart Info (hartinfo, at 0x12)
Hart Array Window Select (hawindowsel, at 0x14)
Hart Array Window (hawindow, at 0x15)
Abstract Control and Status (abstractcs, at 0x16)
Abstract Command (command, at 0x17)
Abstract Command Autoexec (abstractauto, at 0x18)
Conguration String Pointer 0 (confstrptr0, at 0x19
Next Debug Module (nextdm, at 0x1d)
Abstract Data 0 (data0, at 0x04)
Program Buffer 0 (progbuf0, at 0x20)
Authentication Data (authdata, at 0x30)
Halt Summary 0 (haltsum0, at 0x40)
Halt Summary 1 (haltsum1, at 0x13)
Halt Summary 2 (haltsum2, at 0x34)
Halt Summary 3 (haltsum3, at 0x35)
System Bus Access Control and Status (sbcs, at 0x3
System Bus Address 31:0 (sbaddress0, at 0x39)
System Bus Address 63:32 (sbaddress1, at 0x3a)
System Bus Address 95:64 (sbaddress2, at 0x3b)
System Bus Address 127:96 (sbaddress3, at 0x37)
System Bus Data 31:0 (sbdata0, at 0x3c)
System Bus Data 63:32 (sbdata1, at 0x3d)
System Bus Data 95:64 (sbdata2, at 0x3e)
System Bus Data 127:96 (sbdata3, at 0x3f)
RISC-V调试
调试模式
Load-Reserved/Store-Conditional指令
WFI指令
Single Step
复位
dret指令
XLEN
核心调试寄存器
Debug Control and Status (dcsr, at 0x7b0)
Debug PC (dpc, at 0x7b1)
Debug Scratch Register 0 (dscratch0, at 0x7b2)
Debug Scratch Register 1 (dscratch1, at 0x7b3)
虚拟调试寄存器
Privilege Level (priv, at virtual)
Trigger模块
Native M-Mode触发器
触发器寄存器
Trigger Select (tselect, at 0x7a0)
Trigger Data 1 (tdata1, at 0x7a1)
Trigger Data 2 (tdata2, at 0x7a2)
Trigger Data 3 (tdata3, at 0x7a3)
Trigger Info (tinfo, at 0x7a4)
Trigger Control (tcontrol, at 0x7a5)
Machine Context (mcontext, at 0x7a8)
Supervisor Context (scontext, at 0x7aa)
Match Control (mcontrol, at 0x7a1)
Instruction Count (icount, at 0x7a1)
Interrupt Trigger (itrigger, at 0x7a1)
Exception Trigger (etrigger, at 0x7a1)
Trigger Extra (RV32) (textra32, at 0x7a3)
Trigger Extra (RV64) (textra64, at 0x7a3)
调试传输模块DTM
JTAG调试传输模块
JTAG背景
JTAG DTM寄存器
IDCODE (at 0x01)
DTM Control and Status (dtmcs, at 0x10)
Debug Module Interface Access (dmi, at 0x11)
BYPASS (at 0x1f)
Recommended JTAG Connector(推荐的jtag连接器)
附录A 硬件实现
A.1基于抽象命令
A.2基于执行
附录B 调试器实现
B.1调试模块接口访问
B.2检查停机
B.3暂停
B.4运行
B.5单步调试
B.6访问寄存器
B.6.1使用抽象命令
B.6.2使用程序缓冲区
B.7读取memory
B.7.1使用系统总线访问
B.7.2使用程序缓冲区
B.7.3使用抽象内存访问
B.8写memory
B.8.1使用系统总线访问
B.8.2使用程序缓冲区
B.8.3使用抽象内存访问
B.9触发器
B.10异常处理
B.11快速访问
RISC-V Debug 调试 JMJ (直译和意译) 可能有不准确的地方,可提供建议
目录 1 简介............................................................................................................................1 1.1 术语........................................................................................................................1 1.1.1 上下文........................................................................................................1 1.1.2 版本............................................................................................................1 1.2 本文内容................................................................................................................2 1.2.1 结构............................................................................................................2 1.2.2 寄存器定义格式........................................................................................2 1.2.3 Long Name(shortname, at 0x123)........................................................ 2 1.3 背景........................................................................................................................2 1.4 支持的功能............................................................................................................3 2 系统介绍....................................................................................................................4 3 Debug 模块(DM)..................................................................................................6 3.1 调试模块接口(DMI)........................................................................................ 7 3.2 重置控制................................................................................................................8 3.3 选择 hart.................................................................................................................9 3.3.1 选择单个 hart.............................................................................................9 3.3.2 选择多个 hart.............................................................................................9 3.4 Hart 状态................................................................................................................9 3.5 运行控制..............................................................................................................10 3.6 抽象命令.............................................................................................................. 11 3.6.1 抽象命令清单..........................................................................................12 3.7 程序缓冲区..........................................................................................................15 3.8 总的状态机..........................................................................................................16 3.9 系统总线访问......................................................................................................17 3.10 最小程度的干扰调试........................................................................................18 3.11 安全....................................................................................................................18 3.12 调试模块寄存器................................................................................................19 3.12.1 Debug Module Status (dmstatus, at 0x11)............................................. 20
3.12.2 Debug Module Control (dmcontrol, at 0x10).........................................21 3.12.3 Hart Info (hartinfo, at 0x12)...................................................................22 3.12.4 Hart Array Window Select (hawindowsel, at 0x14)...............................23 3.12.5 Hart Array Window (hawindow, at 0x15).............................................. 23 3.12.6 Abstract Control and Status (abstractcs, at 0x16).................................. 24 3.12.7 Abstract Command (command, at 0x17)............................................... 24 3.12.8 Abstract Command Autoexec (abstractauto, at 0x18)............................25 3.12.9 Conguration String Pointer 0 (confstrptr0, at 0x19)...............................25 3.12.10 Next Debug Module (nextdm, at 0x1d)................................................25 3.12.11 Abstract Data 0 (data0, at 0x04)...........................................................26 3.12.12 Program Buffer 0 (progbuf0, at 0x20)..................................................26 3.12.13 Authentication Data (authdata, at 0x30)...............................................26 3.12.14 Halt Summary 0 (haltsum0, at 0x40)................................................... 27 3.12.15 Halt Summary 1 (haltsum1, at 0x13)................................................... 27 3.12.16 Halt Summary 2 (haltsum2, at 0x34)................................................... 27 3.12.17 Halt Summary 3 (haltsum3, at 0x35)................................................... 28 3.12.18 System Bus Access Control and Status (sbcs, at 0x38)........................28 3.12.19 System Bus Address 31:0 (sbaddress0, at 0x39)..................................29 3.12.20 System Bus Address 63:32 (sbaddress1, at 0x3a)................................ 30 3.12.21 System Bus Address 95:64 (sbaddress2, at 0x3b)................................30 3.12.22 System Bus Address 127:96 (sbaddress3, at 0x37)..............................30 3.12.23 System Bus Data 31:0 (sbdata0, at 0x3c).............................................31 3.12.24 System Bus Data 63:32 (sbdata1, at 0x3d)...........................................32 3.12.25 System Bus Data 95:64 (sbdata2, at 0x3e)...........................................32 3.12.26 System Bus Data 127:96 (sbdata3, at 0x3f)......................................... 32 4 RISC-V 调试............................................................................................................32 4.1 调试模式..............................................................................................................33 4.2 Load-Reserved/Store-Conditional 指令...............................................................34 4.3 WFI 指令..............................................................................................................34
4.4 Single Step............................................................................................................34 4.5 复位......................................................................................................................34 4.6 dret 指令...............................................................................................................35 4.7 XLEN................................................................................................................... 35 4.8 核心调试寄存器..................................................................................................35 4.8.1 Debug Control and Status (dcsr, at 0x7b0).............................................. 35 4.8.2 Debug PC (dpc, at 0x7b1)........................................................................ 36 4.8.3 Debug Scratch Register 0 (dscratch0, at 0x7b2)...................................... 37 4.8.4 Debug Scratch Register 1 (dscratch1, at 0x7b3)...................................... 37 4.9 虚拟调试寄存器..................................................................................................37 4.9.1 Privilege Level (priv, at virtual)............................................................... 37 5 Trigger 模块............................................................................................................. 38 5.1 Native M-Mode 触发器....................................................................................... 40 5.2 触发器寄存器......................................................................................................40 5.2.1 Trigger Select (tselect, at 0x7a0)..............................................................41 5.2.2 Trigger Data 1 (tdata1, at 0x7a1)............................................................. 42 5.2.3 Trigger Data 2 (tdata2, at 0x7a2)............................................................. 42 5.2.4 Trigger Data 3 (tdata3, at 0x7a3)............................................................. 42 5.2.5 Trigger Info (tinfo, at 0x7a4)....................................................................43 5.2.6 Trigger Control (tcontrol, at 0x7a5)......................................................... 43 5.2.7 Machine Context (mcontext, at 0x7a8).................................................... 43 5.2.8 Supervisor Context (scontext, at 0x7aa)...................................................44 5.2.9 Match Control (mcontrol, at 0x7a1).........................................................44 5.2.10 Instruction Count (icount, at 0x7a1).......................................................46 5.2.11 Interrupt Trigger (itrigger, at 0x7a1)...................................................... 47 5.2.12 Exception Trigger (etrigger, at 0x7a1)................................................... 47 5.2.13 Trigger Extra (RV32) (textra32, at 0x7a3)............................................. 48 5.2.14 Trigger Extra (RV64) (textra64, at 0x7a3)............................................. 48 6 调试传输模块 DTM................................................................................................ 48
6.1 JTAG 调试传输模块........................................................................................... 49 6.2 JTAG 背景........................................................................................................... 49 6.3 JTAG DTM 寄存器..............................................................................................49 6.3.1 IDCODE (at 0x01)................................................................................... 50 6.3.2 DTM Control and Status (dtmcs, at 0x10)............................................... 50 6.3.3 Debug Module Interface Access (dmi, at 0x11).......................................51 6.3.4 BYPASS (at 0x1f).................................................................................... 52 6.3.5 Recommended JTAG Connector(推荐的 jtag 连接器)......................52 附录 A 硬件实现........................................................................................................ 53 A.1 基于抽象命令....................................................................................................... 54 A.2 基于执行............................................................................................................... 54 附录 B 调试器实现.................................................................................................... 55 B.1 调试模块接口访问............................................................................................... 56 B.2 检查停机............................................................................................................... 56 B.3 暂停....................................................................................................................... 56 B.4 运行....................................................................................................................... 57 B.5 单步调试............................................................................................................... 57 B.6 访问寄存器........................................................................................................... 57 B.6.1 使用抽象命令............................................................................................ 57 B.6.2 使用程序缓冲区........................................................................................ 57 B.7 读取 memory.........................................................................................................58 B.7.1 使用系统总线访问.................................................................................... 58 B.7.2 使用程序缓冲区........................................................................................ 58 B.7.3 使用抽象内存访问.................................................................................... 59 B.8 写 memory.............................................................................................................59 B.8.1 使用系统总线访问.................................................................................... 59 B.8.2 使用程序缓冲区........................................................................................ 60 B.8.3 使用抽象内存访问.................................................................................... 60 B.9 触发器................................................................................................................... 61
B.10 异常处理............................................................................................................. 62 B.11 快速访问............................................................................................................. 62
1 简介 当设计从模拟发展到硬件实现时,用户对系统当前状态的控制和理解会急剧 下降。为了帮助开发和调试低级软件和硬件,在硬件中内置良好的调试支持是至 关重要的。当一个健壮的操作系统在内核上运行时,软件可以处理许多调试任务。 然而,在许多情况下,硬件支持是必不可少的。 本文概述了 RISC-V 平台上外部调试支持的标准体系结构。这种架构允许多 种实现和交易,这是对各种 RISC-V 实现的补充。同时,该规范定义了通用接口, 允许调试工具和组件可以基于 RISC-V ISA 的各种平台。 系统设计人员可以选择添加额外的硬件调试支持,但此规范定义了通用功能 的标准接口。 1.1 术语 平台是由一个或多个组件组成的单个集成电路。一些组件可能是 RISC-V 核 心,而其他组件可能有不同的功能。通常,他们都将连接到单个系统总线。单个 RISC-V 内核包含一个或多个硬件线程,称为 harts。 Hart 的 DXLEN 是它最广泛支持的 XLEN,忽略 misa 寄存器中的 MXL 的当 前值。 1.1.1 上下文 本文编写的工作环境: 1、 RISC-V 指令集手册,第一卷《User-Level ISA, Document Version 2.2》(ISA 规范) 2、 RISC-V 指令集手册,第二卷《Privileged Architecture, Version 1.10》(特权 规范) 1.1.2 版本 本文 0.13 版本是由 RISC-V 基金会董事会批准。版本 0.13.x 是针对一些 bug 的 fix 版本。 版本 0.14 将兼容版本 0.13。 1
1.2 本文内容 1.2.1 结构 本文由两部分组成。主要部分是规范,在编号章节部分给出。另一部分是一 套附录,附录中的信息旨在澄清和提供示例,但不是实际规格的一部分。 1.2.2 寄存器定义格式 本文中所有寄存器定义均遵从以下格式。有一个简单的图形显示哪些字段在 寄存器中。上下位宽索引显示在每个字段的左上角和右上角。字段的总位数也在 下面表示。 在图形后面是一个表格,其中列出了每个字段的名称,说明,允许访问的类 型和 reset 值。表 1.2 列出了允许的访问类型。Reset 值可以是常量也可以是“预 设值”,后者意味着它是一个特定于实现的合法值。 寄存器及其字段的名称是指向其定义的超链接。由于时间有限,本人 JMJ 可 能并不是所有超链接都做了,所以看得时候有没有超链接的,就自己前后翻看本 文。 1.2.3 Long Name(shortname, at 0x123) 名称 field 描述 描述这个字段的功能 1.3 背景 访问类型 R/W Reset 值 15 专用调试硬件有几种用例,既在 CPU 内核内部,也在外部连接中。本规范 解决了下面列出的用例。可以选择不实现所有功能,这意味着可能不支持某些用 2
分享到:
收藏