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 ...
随机推荐
- Phoenix and Distribution(字典序贪心)
\(给定一串字母,分成k份,使得最大字典序最小.(字母可以任意组合)\) \(------------------------------issue~------------------------\ ...
- D. Ehab the Xorcist(纯构造方法)
\(如果觉得下面难以理解,可以去这里看一种较为简单的解法\):saf \(这个题嘛,首先要明确异或的性质:相同为0,不同为1.\) \(举个例子,我们来构造u=15和v=127的情况\) \(注意到, ...
- E. Count The Blocks(找数学规律)
\(\color{Red}{先说一下自己的歪解(找规律)}\) \(n=1是答案是10\) \(n=2时答案是180\) \(n=3时模拟一下,很容易发现答案是2610\ \ 180\ \ 10\) ...
- LateX公式表
转载自xkgjfl 话说为什么LateX公式这么难记 markdown最全数学公式 我们在用markdown写文档时有时候少不了需要插入一些公式,然而markdown公式输入远没有word这么直观,有 ...
- 简单ajax跨域请求
最近遇到需要ajax跨域的需求 首先看下不做任何处理特别处理的ajax跨域请求会出现什么样的错误 客户端代码: <script type="text/javascript"& ...
- 软路由OpenWrt(LEDE)2020.5.10更新 UPnP+NAS+多拨+网盘+DNS优化
近期更新:2020.05.10更新-基于OpenWrt R2020.5.9版本,源码截止2020.05.10. 交流群:QQ 1030484865 电报 t.me/t_homelede 版本说 ...
- 【Spark】SparkStreaming与flume进行整合
文章目录 注意事项 SparkStreaming从flume中poll数据 步骤 一.开发flume配置文件 二.启动flume 三.开发sparkStreaming代码 1.创建maven工程,导入 ...
- 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发
目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...
- calc less 下不起作用
在 less中不能使用css3 calc属性不能 css3 新增长度计算属性 可以根据不同单位计算宽度 .test{ width: calc(100% - 150px); } 但是当我们在less中使 ...
- 聊聊 TypeScript 中的类型保护
聊聊 TypeScript 中的类型保护 在 TypeScript 中使用联合类型时,往往会碰到这种尴尬的情况: interface Bird { // 独有方法 fly(); // 共有方法 lay ...