zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/FR3yeLLBqy0n-fflw-ATgg

     

    简单介绍TLPLIC的实现。

     

     

    1. GatewayPLICIO

     

    PLIC是Platform-Level Interrupt Controller的缩写:

     

    GatewayPLICIO定义Gateway的IO接口,这是面向PLIC Core的接口:

    其中:

    a. valid:表示是否向PLIC Core产生合法输出;

    b. ready:表示PLIC Core是否可以接收新的中断信号;

    c. complete:表示中断是否处理完成;

     

    2. LevelGateway

     

    LevelGateway定义电平触发中断的Gateway模块:

    1) io

     

    io定义了LevelGateway模块的输入输出接口:

    其中:

    a. interrupt:表示上游中断源的中断输入;

    b. plic:是面向PLIC Core的输入输出接口;

     

    需要注意的是:这里并没有使用IO(...)包裹io定义。

     

    2) inFlight

     

    inFlight是一个寄存器,表示是否已经有中断请求在处理:

    a. 如果有中断信号输入,并且PLIC Core可以接收,则inFlight为true;

    b. 如果处理完成,则inFlight为false;

     

    3) io.plic.valid

     

    io.plic.valid表示是否有中断请求向PLIC Core发起:

    a. 如果已经有中断在处理,则不会发起新的请求;

    b. 如果没有中断信号输入,也不会发起新的请求;

     

    3. PLICConsts

     

    PLICConsts定义PLIC使用到的常量:

    其中:

    a. maxDevices:最多支持多少个设备输入中断信号;

    b. maxHarts:最多支持向多少个核心(interrupt target)发起中断请求;

    c. priorityBase:中断优先级配置寄存器的基地址;

    d. pendingBase:中断等待信号寄存器的基地址;

    e. enableBase:各个核心的中断使能寄存器的基地址;

    f. hartBase:各个核心中断优先级门槛及claim/complete寄存器的基地址;

     

    这里的require的意义在于确保预留的空间足够使用。

     

    4. PLICParams

     

    PLICParams定义PLIC使用的参数:

    其中:

    a. baseAddress:定义PLIC地址空间的基地址;

    b. maxPriorities:定义中断的最大优先级;

    c. intStages:定义中断需要缓存多少个时钟周期;

     

    5. PLICKey

     

    PLICKey是用于查找PLICParams的关键字:

     

    定义示例:

    -----------------------------------------------------------------------------
    这是一篇付费文章,请移步付费阅读全文,谢谢!
    文章链接:https://mp.weixin.qq.com/s/FR3yeLLBqy0n-fflw-ATgg

  • 相关阅读:
    socket用法以及tomcat静态动态页面的加载
    SQL2000的三种“故障还原模型”
    杀毒软件拦截的,看不懂,留作纪念
    TOMCAT如何建立两个端口或服务
    非正常关机后造成数据库 置疑 状态的解决办法
    各数据表的空间使用量
    SQL Server 2008维护计划 出错 无法实现自动备份
    SQL2008安装自动退出
    oracle自动备份
    吐槽一下金山卫士
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12872969.html
Copyright © 2011-2022 走看看