https://mp.weixin.qq.com/s/GyGriFyeq_7Z3xOjKn56Mg
简单介绍TLDebugModuleInner中DMSTATUS寄存器的实现。
1. DMSTATUSRdData
从DMSTATUS寄存器读取时,使用DMSTATUSRdData作为数据源:
2. authenticated
认证功能没有实现:
3. version
当前版本号值为2,代表Version 0.13:
4. any & all
规范中定义为:
代码实现为:
1) nonexistent
某个或者全部被选中的核心不存在:
在实现中:
a. anynonexistent只表示hartsel选择的核心是否存在,并且认为小于nComponents的核心都存在;
b. allnonexistent则表示hartsel和hamask选择的核心都不存在;
2) unavail
某个或者全部被选中的核心不可用:
其实现依赖于io.debugUnavail,而io.debugUnavail目前未实现:
3) halted
某个或者全部被选中的核心被暂停:
使用记录核心暂停请求的寄存器haltedBitRegs实现。
4) running
某个或者全部被选中的核心正在运行:
使用记录核心暂停请求的寄存器haltedBitRegs实现。
5) havereset
某个或者全部被选中的核心被复位:
使用记录核心复位状态的寄存器haveResetBitRegs实现。
6) resumeack
某个或者全部被选中的核心确认了针对他们的最近一个恢复运行的请求:
使用记录核心恢复状态的寄存器haveResetBitRegs实现。
5. haveResetBitRegs
记录针对每个核心的复位请求状态。默认值为真:
如果有相应的ackhavereset信号,则清除状态:
6. impebreak
是否实现隐式的ebreak指令:
7. haltedBitRegs
记录核心的暂停请求状态。默认值为假:
根据halt/resume请求,决定其值: