Rocket

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的值则根据状态机确定。

 

原文地址:https://www.cnblogs.com/wjcdx/p/12492749.html