zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/jkiHceU0HaJbHGvHiU-QOA

     

    简单介绍TLDebugModuleInner的实现。

     

     

    1. 引入全局配置

     

    1) cfg

     

    引入DebugModulePrams:

     

    2) hartSelFuncs

     

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

     

    2. 多个diplomacy node

     

    1) dmiNode

     

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

     

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

     

    2) tlNode

     

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

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

     

    3) customNode

     

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

     

    3. 内部包含一个LazyModule: sb2tlOpt

     

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

     

    4. lazy module实现

     

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

     

    1) io

     

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

     

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

    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

     

  • 相关阅读:
    Delphi TWebBrowser[11] 读写html代码
    Nginx 配置反向代理
    清除git中缓存的凭证(用户名及密码)
    python 摄像头
    a 链接控制打开新窗口 无地址栏
    树形多级菜单数据源嵌套结构与扁平结构互转
    使用 git 的正确姿势
    JavaScript this
    JavaScript Scope Chain
    JavaScript Scope Context
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12433046.html
Copyright © 2011-2022 走看看