riscv debug包括
非侵入式性调试(即trace)
侵入式调试
1. halt(debug mode) 模式
2. debug 异常处理函数模式
mcause 其中有一个异常原因 为 Breakpoint
怎么进入 Breakpoint 异常 ?
只有 Trigger 会导致 进入 Breakpoint 异常
riscv 的 trigger 可以导致的 action
1. breakpoint exception
2. 进入 debug mode
3. trace function 1
4. trace function 2
5. trace function ...
riscv debug架构
图中
一般来说 , DM 与 hart 的对应关系 为 1:1 , 但 也可以是 1:n
一个芯片设计中,可以有多个 DTM , 例如 JTAG-DTM , USB-DTM , 两者不可同时使用,但是一个芯片中可以同时存在
不能同时使用 是 由 芯片使用者 保障的.
riscv debug 与 jtag 的关系
riscv debug 实现了 "jtag" 定义的 jtag状态机
riscv debug 实现了 "jtag" 定义的 硬件接口
riscv debug 实现了 "jtag" 定义的 IDCODE BYPASS
riscv debug 还定义 了 jtag 未定义的
1. DMI 寄存器
2. program buffer
3. Abstract Command 中的 Quick Access
4. Abstract Command 中的 Access Register 的 postexec
5. Abstract Command 中的 Access Register 的 transfer
riscv debug 可以访问什么
hart 的运行控制 : DM负责
hart 的停止控制 : DM负责,Trigger Module 负责
GPR的 访问 : Abstract commands 负责,也可以 进行(Additional registers(CSR/FPR)的访问)
Additional registers(CSR/FPR)的访问 : Program Buffer 负责
访问内存 : Program Buffer 负责/需要hart参与运行
访问内存 : 系统总线(可选) 负责
访问内存 : Abstract Commands 负责
互联网资料
- 仿真riscv 逻辑的stm32工程
- riscv debug 系列文章
- RISC-V-Reader-Chinese-v2p1.pdf
- debugger_riscv.pdf
- riscv-debug-release.pdf
- riscv-debug-stable.pdf
- riscv-privileged-20190608.pdf
- riscv-spec-20191213.pdf