Rocket

https://mp.weixin.qq.com/s/kjhJJ3moRQzxHt6pJOXEgg

 

简单介绍TLDebugModuleInner中Program Buffer寄存器的实现。

 

 

1. programBufferMem

 

1) 定义

 

以字节为单位的Program Buffer寄存器:

 

2) 复位值

 

dmactive为假时,其值为0:

 

2. programBufferNxt

 

用于存放programBufferMem寄存器的将要使用的值。

 

3. 寄存器组

 

programBufferMem是一组寄存器,使用RegFieldGroup来定义:

这段代码针对programBufferMem中的每一个字节生成一个读写逻辑:

a. 读直接使用programBufferMem中相应字节作为数据源;

b. dmiProgramBufferRdEn(i)读指示标志;

c. 写的数据先存入programBufferNxt中的相应字节中;

d. dmiProgramBufferWrEnMaybe(i)为写指示标志;

 

4. dmi写入

 

Program Buffer寄存器可以使用dmi接口访问:

只有正在写入,并且针对Program Buffer的访问合法时,才可以把programBufferNxt中的值存入对应的Program Buffer寄存器中。

 

5. shadow

 

Program Buffer同样可以使用核心总线访问,也就是映射到核心可以访问的地址空间中:

核心针对PROGBUF的读写,直接针对programBufferMem进行。

 

6. 附录

 

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