Rocket - devices - PLIC
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的更多相关文章
- Rocket - devices - bootrom
https://mp.weixin.qq.com/s/PylfNmJDRasTUj9fGp7gLQ 简单介绍bootrom目录中各个文件的实现. 1. Makefile 1) make过程 Makef ...
- Rocket - devices - CLINT
https://mp.weixin.qq.com/s/4LfZZDKCTQhiKIUjvbDKEg 简单介绍CLINT的实现. 1. 概述 CLINT即是Core Local Interrupter的 ...
- Rocket - devices - BasicBusBlocker
https://mp.weixin.qq.com/s/m1zfFQeSoGZZduJGbxEqdQ 简单介绍BasicBusBlocker的实现. 1. BasicBusBlockerParams B ...
- Rocket - devices - TLBusBypass
https://mp.weixin.qq.com/s/WviVHxlZvsNm8mea2VpfTw 简单介绍TLBusBypass的实现. 1. TLBypassNode TLBypassNode定义 ...
- Rocket - devices - CanHaveBuiltInDevices
https://mp.weixin.qq.com/s/C9iktVr4hnQ8lM0CiWtedQ 简单介绍CanHaveBuiltInDevices的实现. 1. HasBuiltInDeviceP ...
- Rocket - devices - TLError
https://mp.weixin.qq.com/s/s_6qPkT2zwdqYLw5iK7_8g 简单介绍TLError的实现. 1. 继承自DevNullDevice TLError继承自DevN ...
- Rocket - devices - TLZero
https://mp.weixin.qq.com/s/JHjUZncEcoZpRxIS1ECV5g 简单介绍TLZero的实现. 1. /dev/null /dev/null最主要的特点是写入的数据被 ...
- Rocket - devices - TLDeadlock
https://mp.weixin.qq.com/s/Zv4HE7zMBzHbsWGg3pa9fg 简单介绍TLDeadlock的实现. 1. TLDeadlock TLDeadlock是抽象类Dev ...
- Rocket - devices - DevNullDevice
https://mp.weixin.qq.com/s/rAmXl-0gDAJqWmy1R3KrlA 简单介绍DevNullDevice的实现. 1. DevNullParams DevNullPara ...
随机推荐
- B. Sorted Adjacent Differences(思维构造)
\(给出n个数字,要求构造一个由这n个数组成的序列,使得|a_1-a_2|<=|a_2-a_3|...<=|a_{n-1}-a_n|\) \(排序后,从数列中间取个数,然后从左右分别循环取 ...
- spring学习笔记(八)webSocket
知识储备 什么是stomp? 我们可以类比TCP与Http协议,我们知道Http协议是基于TCP协议的,Http协议解决了 web 浏览器发起请求以及 web 服务器响应请求的细节,我们在编码时候只要 ...
- 【Spark】如何用Spark查询IP地址?
文章目录 需求 思路 ip地址转换为Long类型的两种方法 ip地址转换数字地址的原理 第一种方法 第二种方法 步骤 一.在mysql创建数据库表 二.开发代码 需求 日常生活中,当我们打开地图时,会 ...
- 【HBase】Java实现过滤器查询
目录 概述 代码实现 rowKey过滤器RowFilter 列族过滤器FamilyFilter 列过滤器QualifierFilter 列值过滤器ValueFilter 专用过滤器 单列值过滤器 Si ...
- 【Hadoop离线基础总结】oozie任务串联
目录 需求 1.准备工作目录 2.准备调度文件 3.开发调度的配置文件 4.上传资源文件夹到hdfs对应路径 5.执行调度任务 需求 执行shell脚本 → 执行MR程序 → 执行hive程序 1.准 ...
- CF#633 C. Powered Addition 思维
Powered Addition 题意 给出n个数字,现在你可以在第x秒,选择任意数量的下标,让这些位置上的数加上\(2^{x-1}\),问最快需要几秒使得数列变成一个非递减的序列. 思路 让求x的最 ...
- [hdu4609]计数方法,FFT
题目:给一个数组a,从里面任选三个数,求以这三个数为三条边能构成三角形的概率. 思路:由于每个数只能用一次,所以考虑枚举三边中的最大边.先将a数组排序,然后枚举它的每个数x作为最大边,那么问题就是要求 ...
- DOM的使用
1. 修改: 3样: 1. 内容: 3个属性: 1. 获取或修改原始HTML片段: 元素.innerHTML 2. 获取或修改纯文本内容: 元素.textContent vs innerHTML 1. ...
- Django之JSON数据格式
JSON简介: o JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) o JSON 是轻量级的文本数据交换格式 o JSON ...
- SpringBoot之整合MongoDB
MongoDB官网安装:https://www.mongodb.com/download-center/community MongoDB客户端工具(Mongo Management Studio)安 ...