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

Rocket - devices - PLIC的更多相关文章

  1. Rocket - devices - bootrom

    https://mp.weixin.qq.com/s/PylfNmJDRasTUj9fGp7gLQ 简单介绍bootrom目录中各个文件的实现. 1. Makefile 1) make过程 Makef ...

  2. Rocket - devices - CLINT

    https://mp.weixin.qq.com/s/4LfZZDKCTQhiKIUjvbDKEg 简单介绍CLINT的实现. 1. 概述 CLINT即是Core Local Interrupter的 ...

  3. Rocket - devices - BasicBusBlocker

    https://mp.weixin.qq.com/s/m1zfFQeSoGZZduJGbxEqdQ 简单介绍BasicBusBlocker的实现. 1. BasicBusBlockerParams B ...

  4. Rocket - devices - TLBusBypass

    https://mp.weixin.qq.com/s/WviVHxlZvsNm8mea2VpfTw 简单介绍TLBusBypass的实现. 1. TLBypassNode TLBypassNode定义 ...

  5. Rocket - devices - CanHaveBuiltInDevices

    https://mp.weixin.qq.com/s/C9iktVr4hnQ8lM0CiWtedQ 简单介绍CanHaveBuiltInDevices的实现. 1. HasBuiltInDeviceP ...

  6. Rocket - devices - TLError

    https://mp.weixin.qq.com/s/s_6qPkT2zwdqYLw5iK7_8g 简单介绍TLError的实现. 1. 继承自DevNullDevice TLError继承自DevN ...

  7. Rocket - devices - TLZero

    https://mp.weixin.qq.com/s/JHjUZncEcoZpRxIS1ECV5g 简单介绍TLZero的实现. 1. /dev/null /dev/null最主要的特点是写入的数据被 ...

  8. Rocket - devices - TLDeadlock

    https://mp.weixin.qq.com/s/Zv4HE7zMBzHbsWGg3pa9fg 简单介绍TLDeadlock的实现. 1. TLDeadlock TLDeadlock是抽象类Dev ...

  9. Rocket - devices - DevNullDevice

    https://mp.weixin.qq.com/s/rAmXl-0gDAJqWmy1R3KrlA 简单介绍DevNullDevice的实现. 1. DevNullParams DevNullPara ...

随机推荐

  1. Spring Cloud 学习 之 Spring Cloud Eureka(概述)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 前述: ​ 服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务 ...

  2. 谈谈Spring bean的生命周期(一)

    简介 本片文章主要讲Spring IOC容器中 bean 的生命周期 Spring bean 生命周期 Spring 中bean的声明周期 可以分为如下4个阶段: 实例化阶段--Instantiati ...

  3. node.js开发指南系列(1)partial is not defined

    ejs视图引擎中使用partial函数: <ul><%- partial('listitem', items) %></ul> 报错:partial is not ...

  4. 设计模式之GOF23责任链模式

    责任链模式chain of responsibility 将能够处理同一类请求的对象连成一条链,所提交的请求依次在链上传递,直到传递至有能力处理该请求的对象,不能则传给链上下一个 场景: -打牌时 - ...

  5. extract变量覆盖

    0x01 extract变量覆盖 <?php $flag='xxx'; extract($_GET); if(isset($shiyan)) { $content=trim(file_get_c ...

  6. Python单元测试框架:pytest

    (一)介绍 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手: 2.支持参数化: 3.能够支持简单的单元测试和复杂的功能测试,还可以用来做sele ...

  7. React:List and key

    在React中,可以通过数组方法返回一组 组件元素,并将该数组作为render()的js插值. function NumberList(props) { const numbers = props.n ...

  8. 理解javascript中的连续赋值

    之前在扒源码时经常看到类似的连续赋值操作:  var a = b = 1;  在某度搜了众多前辈的博客,总算对这骚操作有点眉目. Case analysis 首先,javascript中连续赋值最典型 ...

  9. 基于Javaee的影视创作论坛的设计与实现

    基于Javaee的影视创作论坛的设计与实现主要用功能包括: 首页推荐.用户管理.影片管理.评论管理. 预告片管理.海报管理.公告管理.数据检索.用户注册与登录等等功能.统结构如下 (1)后台管理: 管 ...

  10. F. Dominant Indices

    题意:求每个点的子树中哪一层节点数最多,如果有节点数最多不唯一,取层数最小的. 题解:dus on tree 基本想法是对每一个节点都构建一个deep数组,然后从底向上更新过来,但是这样空间复杂度和时 ...