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 ...
随机推荐
- 记忆化搜索 E - Loppinha, the boy who likes sopinha Gym - 101875E
E - Loppinha, the boy who likes sopinha Gym - 101875E 这个题目是一个dp,这个应该很容易看出来,但是对于状态的定义其实有点难去想, 看了题解dp[ ...
- mysql优化–explain分析sql语句执行效率
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...
- 【Scala】Actor并发编程实现单机版wordCount
文章目录 对单个文本文件进行单词计数 对多个文本文件进行单词计数 对单个文本文件进行单词计数 import scala.actors.Actor import scala.io.Source //读取 ...
- 网站主机技术+linux教程
一.Linux 云服务器 自己安装服务器还是麻烦了些,现在一般都推荐大家使用云服务器,比较方便,价格也不贵. 目前市场上的云服务器很多,这边比较下腾讯云跟阿里云的服务器优惠活动,现在看来腾讯云性价比会 ...
- NOI Online #2 赛后题解
color 题意 \(\;\) 给定\(p_1,p_2\),要求\(p_1\)的倍数格子填红色,\(p_2\)的倍数格子填蓝色,既是\(p_1\)又是\(p_2\)倍数的格子颜色任选.求是否存在一种填 ...
- Spring初学笔记(二):Bean的注入
关于Bean的注入 在上一篇中,已经说到虽然注入确实可以降低类与类之间的耦合,但并没有解决调用者必须知道类的创建方法的问题,也可以说是没有实现调用者与类实现的解耦,我们也提到,为了实现两者的解耦,可以 ...
- 【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行
1.hello micropython #MicroPython动手做(04)——零基础学MaixPy之基本示例 #程序之一:hello micropython #MicroPython动手做(04) ...
- 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- redis主从同步及手动处理故障
redis主从同步 redis主库机器故障,手动切换主从库
- MVC4.0 上传文件
Views/Import/ImportExcel.cshtml @{ Layout = null;} <!DOCTYPE html> <html><head> &l ...