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状态。

     

  • 相关阅读:
    8.指针小结
    8.指针
    7.数组
    6.结构化程序设计
    python之迭代器
    1.python基础—有这篇文章足够
    python装饰器,细致讲解
    django客户管理系统-使用modelform对HTML标签统一添加样式
    python之md5使用方法
    git干货教程
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12595303.html
Copyright © 2011-2022 走看看