目录

  • 内核本地中断(CLINT)
  • CLINT 优先级和抢占
  • CLINT向量表
  • CLINT 中断源
  • CLINT中断属性
  • CLINT内存映射
  • 相关寄存器
    • MSIP Registers
    • Timer Registers
  • 特权模式委托

RISC-V SiFive U54内核的有两个中断控制器:CLINT和PLIC。CLINT用于本地中断(软件中断和定时器中断),PLIC用于全局中断。

下面对CLINT进行详细说明。

内核本地中断(CLINT)

下图为CLINT示意图,CLINT通过固定的中断号和优先级,可将软件中断或定时器中断直接发送给指定的hart,该过程没有仲裁。

CLINT 占地面积小,可直接向 hart 提供软件、定时器和外部中断。 CLINT 块还保存与软件和定时器中断相关的内存映射控制和状态寄存器。

CLINT 优先级和抢占

CLINT 具有固定的优先级方案,但不支持给定特权级别内的嵌套中断(抢占)。 然而,较高的特权级别可能会抢占较低的特权级别。 CLINT 提供两种操作模式,直接模式向量模式

直接模式下,所有中断和异常都会捕获到 mtvec.BASE

向量模式下,异常trap到 mtvec.BASE,但中断将直接跳转到它们的向量表索引。

CLINT向量表

CLINT向量表如下:

CLINT 向量表填充有跳转指令,因为硬件首先跳转到向量表中的索引,然后再跳转到处理程序。 所有异常类型都trap到表中的第一个条目是 mtvec.BASE

下面是CLINT 向量表的示例:

CLINT 中断源

下图是CLINT 中断 ID:

CLINT中断属性

为了帮助提高保存和恢复上下文的效率,可以将中断属性应用于用于中断处理的函数。

void __attribute__((interrupt))
software_handler (void) {
// handler code
}

此属性将保存和恢复处理程序中使用的寄存器,并在处理程序的末尾插入一条 mret 指令。

CLINT内存映射

下图是U54 内核上 CLINT 的内存映射:

注意,在 CLINT 内存映射中没有用于特定中断的启用位,因为这些中断的启用位于每个中断的 mie CSRmstatus.mie CSR 位中,它全局启用所有机器中断.

相关寄存器

MSIP Registers

机器模式软件中断是通过写入内存映射控制寄存器 msip 来生成的。

msip 寄存器是一个 32 位宽的 WARL 寄存器,其中高 31 位绑定为 0。最低有效位反映在 mip CSR 的 MSIP 位中。 msip 寄存器中的其他位被硬连线为零。 复位时,每个 msip 寄存器都清零。

软件中断对于多 hart 系统中的处理器间通信最有用,因为 harts 可能会写入彼此的 msip 位以影响处理器间中断。

软件中断其实更多的用于多核之间,也就是所谓的核间通信。

Timer Registers

与timer有关的寄存器主要是两个:mtimemtimecmp

mtime 是一个 64 位读写寄存器,包含从 rtc_toggle 信号计数的周期数。

只要 mtime 大于或等于 mtimecmp 寄存器中的值,定时器中断就会挂起。 定时器中断反映在 mip 寄存器的 mtip 位中。

复位时,mtime 清零。 mtimecmp 不会重置。

特权模式委托

默认情况下,所有中断都会陷入机器模式,包括定时器和软件中断。

为了让定时器和软件中断直接进入管理员模式,定时器中断和软件中断必须首先委托给管理员模式

RISC-V SiFive U54内核——CLINT中断控制器相关推荐

  1. RISC-V SiFive U54内核——中断和异常详解

    目录 中断 中断优先级 异常 陷阱trap 本地中断 中断操作 中断进入和退出 中断控制和状态寄存器 Machine Status Register (mstatus) Machine Trap Ve ...

  2. RISC V (RV32+RV64) 架构 整体介绍

    文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...

  3. 一文读懂多架构的中断控制器

    在计算机中,中断控制器是一种集成电路,可帮助微处理器或CPU处理来自多个不同源(如外部I / O设备)的中断请求(Interrupt Request,以下简称IRQ),这些中断请求可能同时发生.中断控 ...

  4. 操作系统-ucore-lab1 Bootloader启动操作系统 A20 GDT全局描述符 使能和进入保护模式 ELF格式os 8259A中断控制器 8253定时器 函数调用堆栈跟踪函数

    操作系统-ucore-lab1 本文详细地址 实验一:系统软件启动过程 参考 重要文件 调用顺序 1. boot/bootasm.S | bootasm.asm(修改了名字,以便于彩色显示)a. 开启 ...

  5. 基于qemu-riscv从0开始构建嵌入式linux系统ch3. 添加中断控制器、串口、pflash支持

    基于qemu-riscv从0开始构建嵌入式linux系统ch3. 添加中断控制器.串口.pflash支持 添加串口支持 真实板卡的初期调试中,串口打印可谓神器,几乎所有的SOC都会带有串口这个外设,因 ...

  6. pci 中断冲突_Linux 内核PCI 中断

    对于中断, PCI 是容易处理的. 在 Linux 启动时, 计算机的固件已经分配一个唯一的中 断号给设备, 并且驱动只需要使用它. 中断号被存储于配置寄存器 60 (PCI_INTERRUPT_LI ...

  7. STM32震动感应控制继电器(使用循环VS使用外部中断EXTI和中断控制器NVIC)

    参考:stm32的外部中断 震动感应 控制 继电器 作者:点灯小哥 发布时间: 2021-03-05 22:37:01 网址:https://blog.csdn.net/weixin_46016743 ...

  8. 扩展中断控制器8259实验_「正点原子FPGA连载」第十三章双核AMP实验

    1)摘自[正点原子]领航者 ZYNQ 之嵌入式开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?&id= ...

  9. 扩展中断控制器8259实验_PCIe的中断机制

    出于向下兼容的需要,PCIe完全继承了PCI的所有的中断特性(包括INTx,MSI/MSIx).但是与PCI不同的是,PCIe使用串行总线尽量减少pin的使用,所以对于INTX类型的中断,它没有使用s ...

最新文章

  1. java流程控制图_Java流程控制
  2. Emscripten 单词_初一(上)掌握这 4 大类发音规律,英语记单词很轻松
  3. python 2/3 joblib.dump() 和 joblib.load()
  4. linux Hadoop HDFS NameNode进程重启脚本(linux进程通用)
  5. MATLAB机器学习系列-9:决策树和随机森林的原理及其例子代码实现
  6. 代码也浪漫:用Python放一场烟花秀!
  7. BZOJ 2668: [cqoi2012]交换棋子
  8. 平面设计师和ui设计师_游戏设计师的平面设计
  9. JavaSE——Java基础语法(二进制、变量、方法(函数)、运算符、转义字符)
  10. lcase和ucase_在SQL中使用UCASE(),LCASE()和MID()函数
  11. 什么是重绘repaint?什么是回流reflow?
  12. maven插件打包exec_Exec Maven插件–从Maven Build运行Java程序
  13. 作业要求 20181030-1 Alpha发布用户使用报告
  14. Cesium:添加按钮与原生按钮样式相同
  15. Mock 入门,分析stub . mock区别
  16. 科研学术论文搜索利器:Publish or Perish
  17. 图像特征提取(颜色,纹理,形状)
  18. 嵌入式OS的现状、智能的物联网与未来的机器人
  19. Windows 去除桌面烦人的小箭头
  20. 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (“@xx“): 对于类型特定的元数据,数据类型 0x62 (sql_variant)的类型无效。

热门文章

  1. Servlet的封装
  2. 计算机类科技创新项目课题,计算机学院第八期科技创新基金项目申报通知
  3. Shell高级练习脚本15个
  4. 兰州银行扫码取款1天被叫停,金融创新需要合规
  5. QQ邮箱贺卡flash提取 你懂的
  6. Win7驱动安装时的信任列表管理
  7. FSF 公布 2022 年自由软件获奖名单
  8. 绝地求生 服务器位置,绝地求生国服登陆界面地址入口 国服登陆界面地址在哪儿...
  9. 卸载 VirusScan 中的 ePolicy Orchestrator 代理
  10. 计算机考试应该注意些什么问题,全国计算机二级C考试要注意哪些问题?