zoukankan      html  css  js  c++  java
  • Rocket

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

     

    简单介绍TLDebugModuleInner中处理抽象命令时的状态机。

     

     

    1. CtrlState

     

    定义抽象命令相关的四个状态:

     

    1) ctrlStateReg

     

    ctrlStateReg是一个寄存器,记录了当前的状态:

     

    2) ctrlStateNxt

     

    ctrlStateNxt记录了ctrlStateReg的下一个状态:

     

    其值会输出到ctrlStateReg寄存器中:

     

    3) reset

     

    当io.dmactive为假时,ctrlStateReg的值设置为Wating。

     

    2. hartHalted

     

    表示选择的核心是否处于暂停状态:

     

    3. Waiting

     

    等待执行抽象命令的状态:

    a. 如果存在命令输入,则进入CheckGenerate状态;

    b. 如果输入的抽象命令类型不支持(目前仅支持access register),则不改变状态,把errorUnsupported置为真;

    c. 如果要自动执行抽象命令,但是命令不支持,则不改变状态,而把errorUnsupported置为真;

     

    4. CheckGenerate

     

    在CheckGenerate状态检查生成的抽象命令:

    a. 如果抽象命令不支持,则返回Waiting状态,而把errorUnsupported置为真;

    b. 如果命令合法,而核心不在暂停状态,则返回Waiting状态,而把errorUnsupported置为真;

    c. 抽象命令没有问题,则根据访问的寄存器是在Custom节点,还是GPR,把状态转为Custom或者Exec;

     

    5. Exec

     

    在这个状态下,抽象命令正在执行:

    a. goReg === false: 核心在执行抽象命令之前,会写地址GOING,进而goReg的值变为false。表示核心已经在执行抽象命令了;

    b. hartHaltedWrEn && (hartSelFuncs.hartIdToHartSel(hartHaltedId) === selectedHartReg)表示选择的核心又进入了暂停状态;

    c. 两者结合,表明抽象名录执行结束了。可以返回Waiting状态;

     

    如果在执行抽象命令过程中,发生了异常,则返回Waiting状态,把errorException置为真:

     

    6. Custom

     

    表示正在读Custom源节点中的寄存器:

    如果读取结束(custom.ready && custom.valid),则返回Waiting状态。

     

  • 相关阅读:
    C# 获取命名空间对应的程序集位置
    启用/禁用以太网的批处理,用于一个网卡切换本地网络和wifi使用(Win10)
    Gogs/Gitea 在 docker 中部署
    bash echo color
    python运行httpserver
    更改当前启动项,开关Hyper-V
    Win10更改CMD控制台的代码页和字体和字号
    ubuntu 编译 vim+lua
    CPU Usage (C#) 测试
    单击改变input的边框颜色
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12595303.html
Copyright © 2011-2022 走看看