riscv debug (一) 相关概念

riscv debug包括
	非侵入式性调试(即trace)
		// 没有实现, 于 2017-6-30 被 riscv debug 手册移除
		// 但是 另外开了一个手册 ,叫做 riscv-trace-spec.pdf
	侵入式调试
		1. halt(debug mode) 模式
			// jtag  连上将核 halt 住 , 进入 halt
			// ebreak 执行后 进入 halt // dret 退出 halt 模式
		2. debug 异常处理函数模式
			mcause 其中有一个异常原因 为  Breakpoint
			怎么进入 Breakpoint 异常 ?
				只有 Trigger 会导致 进入 Breakpoint 异常
				
			

riscv 的 trigger 可以导致的 action	// 类似于 arm中 的 (DWT&FPB的集合)
	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 负责 // 一旦停止,hart 将 通知 DM,表示hart已经停止

// 总述 : 任何属于(GPR/FPR/CSR)的寄存器 , 可以通过两种方式访问
GPR的 访问 							: Abstract commands 负责,也可以 进行(Additional registers(CSR/FPR)的访问)
Additional registers(CSR/FPR)的访问 	: Program Buffer 负责

// 总述 : 任何属于 system memory map 的内存  , 可以通过三种方式访问
访问内存 							: Program Buffer 负责/需要hart参与运行
访问内存 							: 系统总线(可选) 负责 // 不需要hart 参与运行
访问内存 							: Abstract Commands 负责


互联网资料

Guess you like

Origin blog.csdn.net/u011011827/article/details/121160532