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. B. Sorted Adjacent Differences(思维构造)

    \(给出n个数字,要求构造一个由这n个数组成的序列,使得|a_1-a_2|<=|a_2-a_3|...<=|a_{n-1}-a_n|\) \(排序后,从数列中间取个数,然后从左右分别循环取 ...

  2. spring学习笔记(八)webSocket

    知识储备 什么是stomp? 我们可以类比TCP与Http协议,我们知道Http协议是基于TCP协议的,Http协议解决了 web 浏览器发起请求以及 web 服务器响应请求的细节,我们在编码时候只要 ...

  3. 【Spark】如何用Spark查询IP地址?

    文章目录 需求 思路 ip地址转换为Long类型的两种方法 ip地址转换数字地址的原理 第一种方法 第二种方法 步骤 一.在mysql创建数据库表 二.开发代码 需求 日常生活中,当我们打开地图时,会 ...

  4. 【HBase】Java实现过滤器查询

    目录 概述 代码实现 rowKey过滤器RowFilter 列族过滤器FamilyFilter 列过滤器QualifierFilter 列值过滤器ValueFilter 专用过滤器 单列值过滤器 Si ...

  5. 【Hadoop离线基础总结】oozie任务串联

    目录 需求 1.准备工作目录 2.准备调度文件 3.开发调度的配置文件 4.上传资源文件夹到hdfs对应路径 5.执行调度任务 需求 执行shell脚本 → 执行MR程序 → 执行hive程序 1.准 ...

  6. CF#633 C. Powered Addition 思维

    Powered Addition 题意 给出n个数字,现在你可以在第x秒,选择任意数量的下标,让这些位置上的数加上\(2^{x-1}\),问最快需要几秒使得数列变成一个非递减的序列. 思路 让求x的最 ...

  7. [hdu4609]计数方法,FFT

    题目:给一个数组a,从里面任选三个数,求以这三个数为三条边能构成三角形的概率. 思路:由于每个数只能用一次,所以考虑枚举三边中的最大边.先将a数组排序,然后枚举它的每个数x作为最大边,那么问题就是要求 ...

  8. DOM的使用

    1. 修改: 3样: 1. 内容: 3个属性: 1. 获取或修改原始HTML片段: 元素.innerHTML 2. 获取或修改纯文本内容: 元素.textContent vs innerHTML 1. ...

  9. Django之JSON数据格式

    JSON简介: o    JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) o    JSON 是轻量级的文本数据交换格式 o    JSON ...

  10. SpringBoot之整合MongoDB

    MongoDB官网安装:https://www.mongodb.com/download-center/community MongoDB客户端工具(Mongo Management Studio)安 ...