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 ...
随机推荐
- 远程登陆与数据CP
1 SSH登陆原理 SSH,Secure Shell,是一套协议标准,可以用来实现两台机器之间的安全登陆以及安全的数据传送,其保证数据安全的原理是非对称加密. 传统的对称加密方式使用的是一套密 ...
- Spring官网阅读(四)BeanDefinition(上)
前面几篇文章已经学习了官网中的1.2,1.3,1.4三小结,主要是容器,Bean的实例化及Bean之间的依赖关系等.这篇文章,我们继续官网的学习,主要是BeanDefinition的相关知识,这是Sp ...
- 1、Hbase原理分析
一.Hbase介绍 1.1.对Hbase的认识 HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随机读写操作,HBase正是为此而出现. HBase参考 Google 的 Bigtable ...
- 变分深度嵌入(Variational Deep Embedding, VaDE)
变分深度嵌入(Variational Deep Embedding, VaDE) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 这篇博文主要是对论文“ ...
- input输入框直接拉起九宫格数字键盘
<input type="number" pattern="\d*">
- 【图论算法】LCA最近公共祖先问题
LCA模板题https://www.luogu.com.cn/problem/P3379题意理解 对于有根树T的两个结点u.v,最近公共祖先LCA(u,v)表示一个结点x,满足x是u.v的祖先且x的深 ...
- ubuntu软件管理工具的使用——dpkg和apt
deb.rpm.tar.gz三种Linux软件包的区别在哪里呢,这种区别可能使安装进行不下去,那么我们应该下载什么格式的包呢?下面具体讲解一下. rpm包是在Redhat.Suse和Fedora可以直 ...
- ql的python学习之路-day2
python中所有字符串操作 , )))), ))))#返回50个长度的字符串,不够左边就以0补充,可以用在十六进制补位(不常用)运行结果: My name is qinjiaxi---------- ...
- Django数据库表初始化缓存清除
新建的django项目中没有应用app01??? models中也没有UserInfo表???? 但在migrate是却一直报错!!!!! 产生此种现象的原因: 之前的项目中肯定是用到过应用app01 ...
- 基于java的雷电游戏
基于java的雷电游戏基本功能包括:敌方飞机随机飞行.我方飞机手动控制飞行,射击比拼,游戏闯关等.本系统结构如下: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证. 若初始化成 ...