openocd的源码学习2-----riscv芯片内部的DTM模块
openocd的源码学习2-----riscv芯片内部的DTM模块
·
我根据官方网站提供的debug手册,来对DTM模块进行分析。
下面我主要分析一下DTM的几个常用的寄存器。
1、IDCODE

version: 版本号
partnumber: 设计者的part number
manufld:设计师/制造商
最后一位是1,这个是固定不变的。
2、DTM Control and Status

dmihardreset:强制复位整个dtm,传输的数据丢失
dmireset:复位目前传输的错误,让dtm可以继续未完成的数据
idle:给debugger提示用
dmistat:目前dtm的状态(重要)
abits: dmi的address所占的bit数
version:0的时候,spec版本为0.11 。1的时候,spec版本为0.13
3、Debug Module Interface Access

address:用于DMI访问的地址
data: DMI把存放在这里的数据传递给DM
op:
为0时,当作nop使用
为1时,从address读取
为2时,把data写入address
4、BYPASS

将调试器不想与TAP通信的时候,需要设置这一位。
5、总结
经过上面的分析,可以看出
- 主要读取IDCODE这个寄存器,可以得到一些重要的信息
- 对dtmcs寄存器进行操作,可以对DTM进行控制,同样也可以得到某些所需的状态信息。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)