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的更多相关文章

  1. Rocket - devices - bootrom

    https://mp.weixin.qq.com/s/PylfNmJDRasTUj9fGp7gLQ 简单介绍bootrom目录中各个文件的实现. 1. Makefile 1) make过程 Makef ...

  2. Rocket - devices - CLINT

    https://mp.weixin.qq.com/s/4LfZZDKCTQhiKIUjvbDKEg 简单介绍CLINT的实现. 1. 概述 CLINT即是Core Local Interrupter的 ...

  3. Rocket - devices - BasicBusBlocker

    https://mp.weixin.qq.com/s/m1zfFQeSoGZZduJGbxEqdQ 简单介绍BasicBusBlocker的实现. 1. BasicBusBlockerParams B ...

  4. Rocket - devices - TLBusBypass

    https://mp.weixin.qq.com/s/WviVHxlZvsNm8mea2VpfTw 简单介绍TLBusBypass的实现. 1. TLBypassNode TLBypassNode定义 ...

  5. Rocket - devices - CanHaveBuiltInDevices

    https://mp.weixin.qq.com/s/C9iktVr4hnQ8lM0CiWtedQ 简单介绍CanHaveBuiltInDevices的实现. 1. HasBuiltInDeviceP ...

  6. Rocket - devices - TLError

    https://mp.weixin.qq.com/s/s_6qPkT2zwdqYLw5iK7_8g 简单介绍TLError的实现. 1. 继承自DevNullDevice TLError继承自DevN ...

  7. Rocket - devices - TLZero

    https://mp.weixin.qq.com/s/JHjUZncEcoZpRxIS1ECV5g 简单介绍TLZero的实现. 1. /dev/null /dev/null最主要的特点是写入的数据被 ...

  8. Rocket - devices - TLDeadlock

    https://mp.weixin.qq.com/s/Zv4HE7zMBzHbsWGg3pa9fg 简单介绍TLDeadlock的实现. 1. TLDeadlock TLDeadlock是抽象类Dev ...

  9. Rocket - devices - DevNullDevice

    https://mp.weixin.qq.com/s/rAmXl-0gDAJqWmy1R3KrlA 简单介绍DevNullDevice的实现. 1. DevNullParams DevNullPara ...

随机推荐

  1. spring mvc实现转发和重定向

    转发:服务器端请求的跳转 同一个请求之内 重定向:客户端请求的跳转 两次请求 转发和重定向的区别: 1,转发地址栏不会发生变化,重定向地址栏会发生变化. 2,转发请求的参数不会丢失 重定向参数会丢失. ...

  2. Spring官网阅读(十六)Spring中的数据绑定

    文章目录 DataBinder UML类图 使用示例 源码分析 bind方法 doBind方法 applyPropertyValues方法 获取一个属性访问器 通过属性访问器直接set属性值 1.se ...

  3. Vant 顶部导航栏【van-tabs】Bug

    Vant 顶部导航栏[van-tabs]Bug 如果在外面包裹div控制显示隐藏会出现导航条不准确的bug 代码 <div class="selWrap" v-show=&q ...

  4. Git使用教程之在github上创建项目(三)

    继续~ 登录你的github账号,创建一个新项目 1. 2. 至此,github的项目也创建完成了.

  5. 使用Optional,不再头疼NPE

    前言 在 Java 语言开发中,可能大多数程序员遇到最多的异常就是 NullPointException 空指针异常了.这个当初语言的开发者"仅仅因为这样实现起来更容易"而允许空引 ...

  6. Linux --常见Linux目录名称

    Linux文件系统结构是从Unix文件结构演进过来的,在Linux文件系统中,通用的文件系统中,通用的目录名用于表示一些常见的功能.如下所示: 目录 用途 / 虚拟目录的根目录,通常不会再这里存储文件 ...

  7. 常用header头

    // ok 正常访问header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在 header('HTTP/1.1 200 OK'); //设置地址被永久的重定向 3 ...

  8. MFC带参数启动指令发送与接收

    MFC带参数启动指令发送与接收 发送 使用ShellExecute函数打开文件或执行程序. 函数原型: HINSTANCE ShellExecute( _In_opt_ HWND hwnd,//父窗口 ...

  9. 【Python】【第二节】【时间与日期处理模块】

    转载至https://blog.csdn.net/p9bl5bxp/article/details/54945920 Python中提供了多个用于对日期和时间进行操作的内置模块:time模块.date ...

  10. python控制台实现打印带颜色的字体

    控制台颜色分类: 数值表示的参数含义: 显示方式: 0(默认值).1(高亮).22(非粗体).4(下划线).24(非下划线). 5(闪烁).25(非闪烁).7(反显).27(非反显)前景色: 30(黑 ...