RISC-V怎么实现核间中断?核心本地中断控制器(CLINT)深度解析

全称为 Core Local Interruptor(核心本地中断控制器),是 RISC-V 特权架构规范(Privileged Architecture Specification)中明确定义的内建于每个核心 / 硬件线程(hart)的中断控制器,专门处理「核心本地、非共享」的中断类型,区别于处理外设共享中断的 PLIC(Platform-Level Interrupt Controller,平台级中断控制器)。

1、为什么需要 CLINT?

RISC-V 核心在运行时,需要处理两类截然不同的中断需求:

一类是全局共享中断(如 UART 收发、GPIO 电平变化、SPI 通信完成等),这类中断来自外部外设,需多个核心共享处理;

另一类是核心本地中断(如定时任务、核心间通信),这类中断仅属于单个核心,要求极低的响应延迟,无需总线仲裁。

CLINT 的设计初衷正是为了解决第二类需求 ------ 通过将中断控制器 "内嵌" 到每个 hart 中,避免总线传输带来的延迟,确保核心对本地关键事件(如定时器到期、核心间唤醒)的快速响应,这也是其 "Core Local"(核心本地)命名的由来。

CLINT 模块产生 CSR 寄存器的定时器中断、软件中断和计时器。

CLINT的系统架构示意图

2、CLINT 功能说明

CLINT 由软件中断触发器、定时器中断触发器、计数器组成。 软件中断触发器由一个寄存器构成,直连 CPU 的机器级软件中断。 计数器负责提供 CPU 的 TIME 与 TIMEH,并参与定时器中断的触发。 定时器中断触发器用于定时器中断 的触发,当计数器值大于配置的值时会触发定时器中断,定时器中断是嵌入式系统中最常用的中断类型,几乎所有 RTOS(如 FreeRTOS、RT-Thread)的任务调度都依赖定时器中断提供的 "时钟节拍"。

2.1 CLINT初始化

2.2 软件中断:

写 0 则清除中断挂起状态

2.3定时器中断:

中断处理函数中,更新比较阈值(实现周期性触发),并执行调度逻辑(如 RTOS 的任务切换)。

2.3读取CLINT计数器:

2.4延时函数通过计数器功能计算延时时间

CLINT 的 64 位全局计数器time/timeh提供了高精度的时间基准,可直接用于实现微秒级 / 毫秒级精准延时,无需依赖外部定时器。

延时函数实现原理:

进入延时函数时,读取当前计数器值told;

计算需要的总时钟节拍数(ticks = 延时时间(us) × 时钟频率(MHz));

循环读取当前计数器值tnow,计算累计节拍数tcnt;

当tcnt >= ticks时,延时结束。

3、CLINT 的常见应用场景

① RTOS 时钟节拍生成

FreeRTOS 等 RTOS 的任务调度依赖固定周期的时钟节拍,通常将 CLINT 定时器中断配置为 1ms 触发一次,在中断处理函数中调用vTaskIncrementTick(),实现任务就绪状态更新和调度器切换。

② 多核系统启动

在 RISC-V 多核芯片中,主核心启动后,通过向从核心的SOFTICR寄存器写 1,触发从核心的软件中断,从核心在中断处理函数中完成栈初始化、应用加载,实现多核心协同工作。

③ 精准数据采样

在工业控制、传感器采集等场景中,需按固定时间间隔(如 100us)采集数据,通过 CLINT 定时器中断触发采样函数,确保采样周期的稳定性和精准度。

相关推荐
以太浮标1 天前
华为eNSP模拟器综合实验之- ACL控制列表核心命令全解析及场景应用
运维·网络·网络协议·华为·信息与通信
短剑重铸之日1 天前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
_Ningye1 天前
STM32 — 2.2 新建工程
stm32·单片机·嵌入式硬件
AI+程序员在路上1 天前
CANopen 协议:介绍、调试命令与应用
linux·c语言·开发语言·网络
江畔何人初1 天前
kube-apiserver、kube-proxy、Calico 关系
运维·服务器·网络·云原生·kubernetes
森利威尔电子-1 天前
森利威尔SL3062替代 LM3485 60V降压恒压芯片
单片机·嵌入式硬件·集成电路·芯片·电源芯片
网安Ruler1 天前
UDS 协议分析及模拟测试
网络
_Ningye1 天前
STM32 — 3.1 GPIO输出
stm32·单片机·嵌入式硬件
学嵌入式的小杨同学1 天前
STM32 进阶封神之路(十九):ADC 深度解析 —— 从模拟信号到数字转换(底层原理 + 寄存器配置)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
C澒1 天前
微前端容器标准化 —— 公共能力篇:通用打印
前端·架构