Rocket – debug – TLDebugModuleInner – Program Buffer Access

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

 

简单介绍TLDebugModuleInner中的Program Buffer Access。

 

 

1. implementation-specific bits set by harts executing code

 

 

1) haltedBitRegs/resumeReqRegs

 

haltedBitRegs和resumeReqRegs在dmactive为假的情况下,值为0。在dmactive为真的情况下,其值由hartHaltedId和hartResumingId确定:

 

2) haltedBitRegs

 

hartHaltedWrEn为真时,hartHaltedId对应的比特为真;

hartResumingWrEn为真时,hartResumingId对应的比特为假;

 

3) resumeReqRegs

 

hartResumingWrEn为真时,hartResumingId对应的比特为假;

resumereq为真时,hamaskWrSel(component)选中的核心,对应的比特为真;

 

4) hartHaltedWrEn/hartHaltedId

 

hartHaltedId接收写寄存器的数据,hartHaltedWrEn是写寄存器的标志:

 

谁写呢?核心写:

核心如何写?想必是通过读写指令。

 

5) hartResumingWrEn/hartResumingId

 

hartResumingId接收写寄存器的数据,hartResumingWrEn是写寄存器的标志:

这个寄存器也是由核心来写。

 

2. sbcsFields, sbAddrFields, sbDataFields

 

通过SystemBusAccessModule生成系统总线相关的寄存器:

 

3. Program Buffer Access

 

生成通过dmi接口访问寄存器的逻辑:

 

包括除了由outer实现的dmcontrol/hawindow/hawindowsel寄存器之外的,其他寄存器:

 

4. 附录

 

相关文章