Rocket - debug - TLDebugModuleInner - ABSTRACTCS
https://mp.weixin.qq.com/s/dF_0sE5ZakyY569wlppVHA
简单介绍TLDebugModuleInner中ABSTRACTCS寄存器的实现。
1. ABSTRACTCSReset
寄存器复位时使用的值:
其定义如下:
其中,datacount和progbufsize的值从配置中获取。
2. ABSTRACTCSReg
带结构的寄存器:
3. 写
1) ABSTRACTCSWrDataVal
ABSTRACTCSWrDataVal是一个不带结构的32位值:
用于接收写寄存器时传入的数据:
2) ABSTRACTCSWrData
ABSTRACTCSWrData是把写入的32位值解析之后的带结构的变量:
3) ABSTRACTCSWrEnMaybe
ABSTRACTCSWrEnMaybe是一个标志位:
用于指示是否正在写入寄存器:
4) ABSTRACTCSWrEnLegal
ABSTRACTCSWrEnLegal是一个标志位:
用于表明ABSTRACTCSWrEnMaybe中的Maybe是否合法。
5) ABSTRACTCSWrEn
ABSTRACTCSWrEn标志着是否正在合法写入:
4. 读
1) ABSTRACTCSRdData
ABSTRACTCSRdData是读取寄存器时使用的数据源:
其值又来自于ABSTRACTCSReg:
2) ABSTRACTCSRdEn
用于标志是否正在读取寄存器:
其值在写入时为真:
5. cmderr
1) 设置
根据errorBusy等的值,决定abstractcs.cmderr的值:
2) 清除
写1清零:把写入值中的cmderr取反再与原值相与,即可清除写1的位,保留写0的位:
6. busy
busy位标志着是否有抽象命令正在执行,从abstractCommandBusy中取值:
而abstractCommandBusy的值则根据状态机确定。