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 ...
随机推荐
- Vue列表实现滚动到指定位置样式改变
这个需求大概是这样子: 我做的一个聊天Demo,在搜索框搜索用户,可以滚动到指定的用户.然后成选中状态. 这是目前状态,我搜索 南宫仆射 ,想要下面的用户列表直接滚动到 南宫仆射 并改变CSS样式. ...
- node常用插件使用
1.nodemon 用于热更新,随时监控文件的变化 安装npm i -g nodemon 使用nodemon index.js 2.nvm nvm用于nodejs版本管理,我们在开发过程中,不同的项目 ...
- python地图投影转换
一.投影包osr与proj4的使用 1.osr投影转换示例 from osgeo import osr,ogr#定义投影#wgs84source=osr.SpatialReference()sourc ...
- Java的Object.wait(long)在等待时间过去后会继续往后执行吗
Java的Object.wait(long)在等待时间过去后会继续往后执行吗 Object.wait(long)方法相比于wait,多了个等待时长,那么当等待时长过去后,线程会继续往下执行吗? 单个线 ...
- 武装你的WEBAPI-OData便捷查询
本文属于OData系列 目录(可能会有后续修改) 武装你的WEBAPI-OData入门 武装你的WEBAPI-OData便捷查询 武装你的WEBAPI-OData分页查询 武装你的WEBAPI-ODa ...
- 《ES6标准入门》读书笔记 第5章 - 正则增强
第五章 - 正则增强 构造函数增强 允许覆写修饰符,如new RegExp(someRegex, 'ig') 字符串上的正则方法 原先match.replace等可以调用正则的方法在String的原型 ...
- ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出
Magicodes.IE Csv导入导出 说明 本章主要说明如何使用Magicodes.IE.Csv进行Csv导入导出. 主要步骤 1.安装包Magicodes.IE.Csv Install-Pack ...
- 【5min+】美化API,包装AspNetCore的返回结果
系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...
- PHP带标签的字符串去除标签,计算字符串长度的两种格式,截取字符串
$str = "<p>看地方撒地方<i>fdsafsdfsd</i><img src="/static/img/fdsf.jpg" ...
- bootstrap基本页面
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...