Rocket - debug - TLDebugModuleInner

Rocket - debug - TLDebugModuleInner

 

简单介绍TLDebugModuleInner的实现。

 

Rocket - debug - TLDebugModuleInner

 

1. 引入全局配置

 

1) cfg

 

引入DebugModulePrams:

Rocket - debug - TLDebugModuleInner

 

2) hartSelFuncs

 

定义hartsel与hart id之间的映射函数:

Rocket - debug - TLDebugModuleInner

 

2. 多个diplomacy node

 

1) dmiNode

 

dmiNode是一个寄存器节点,包含除了DMCONTROL/HAWINDOWSEL/HAWINDOW三个寄存器之外的0x000~0x1FF的地址空间:

Rocket - debug - TLDebugModuleInner

 

DMCONTROL/HAWINDOWSEL/HAWINDOW这三个寄存器在TLDebugModuleOuter中实现:

Rocket - debug - TLDebugModuleInner

 

2) tlNode

 

tlNode也是一个寄存器节点,提供对地址0x000~0xFFF的访问:

Rocket - debug - TLDebugModuleInner

需要注意的是这段地址空间是可执行的:executable=true;

 

3) customNode

 

用于实现抽象命令对自定义寄存器的访问:

Rocket - debug - TLDebugModuleInner

 

3. 内部包含一个LazyModule: sb2tlOpt

 

根据hasBusMaster的配置值决定是否包含一个SystemBusAccessModule:

Rocket - debug - TLDebugModuleInner

 

4. lazy module实现

 

用于实现调试模块的主要功能,包括抽象命令(Abstract Command)和Program Buffer。

 

1) io

 

这些IO基本上都从Outer取得输入值:

Rocket - debug - TLDebugModuleInner

 

因为内容过多,如下部分另文介绍:

2) Registers coming from 'CONTROL' in Outer

3) DMI Registers - DMSTATUS

4) DMI Registers - HARTINFO

5) DMI Registers - HALTSUM*

6) DMI Registers - ABSTRACTCS

7) DMI Registers - ABSTRACTAUTO

8) DMI Registers - COMMAND

9) DMI Registers - Abstract Data

10) DMI Registers - Program Buffer

11) Program Buffer Access

12) ROM Generation

13) Abstract Command Decoding & Generation

14) Drive Custom Access

15) Hart Bus Access

16) Abstract Command State Machine

17) DMI Register Control and Status

18) Variable ROM STATE MACHINE

 

上一篇:[ASM教程]#6树API


下一篇:使用Angular reactive form发送HTTP请求的一个简单例子