0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

安芯 来源:jf_29981791 2025-12-13 14:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

全称为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 的机器级软件中断。 计数器负责提供 CPUTIMETIMEH ,并参与定时器中断的触发。 定时器中断触发器用于定时器中断 的触发,当计数器值大于配置的值时会触发定时器中断**,**定时器中断是嵌入式系统中最常用的中断类型,几乎所有 RTOS(如 FreeRTOSRT-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 定时器中断触发采样函数,确保采样周期的稳定性和精准度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18646

    浏览量

    388403
  • 中断控制器
    +关注

    关注

    0

    文章

    63

    浏览量

    9776
  • RISC-V
    +关注

    关注

    48

    文章

    2814

    浏览量

    52032
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    易灵思Sapphire SoC中RISC-V平台级中断控制器深度解析

    随着 RISC -V处理在 FPGA 领域的广泛应用,易灵思 FPGA 的 Sapphire RISC-V 内核凭借软硬核的灵活支持,为开发者提供多样选择。本文深入探讨 Sapph
    的头像 发表于 11-08 09:35 7179次阅读
    易灵思Sapphire SoC中<b class='flag-5'>RISC-V</b>平台级<b class='flag-5'>中断控制器</b><b class='flag-5'>深度</b><b class='flag-5'>解析</b>

    如何在RISC-V处理上使用FreeRTOS?

    芯片使用向量中断控制器,需为每个向量安装freertos_risc_v_trap_handler。7. 移植到新的32/64位RISC-V实现
    发表于 11-29 15:54

    ARM的中断控制器

    文主要粗略的讲述了ARM体系结构当中,GICv2版本的中断控制器逻辑和原理(现在GICv3, GICv4越来越多,这里先描述简单一点的V2)。 什么是中断控制器呢?中断控制器就是负责将
    发表于 08-29 08:39

    有关ARM GICv3中断控制器的相关知识介绍

    1、ARM GICv3中断控制器GIC,Generic Interrupt Controller。是ARM公司提供的一个通用的中断控制器。主要作用为:接受硬件中断信号,并经过一定处理后,分发给对应
    发表于 05-26 16:35

    ESP32-C6技术参考手册

    CPU 内核具有 4 级有序标量流水线,针对面积、功耗、性能等进行了优化。CPU 内核架构包含调试模块 (DM)、中断控制器 (INTC)、核心本地中断 (CLINT) 和用于访问存
    发表于 09-18 07:19

    华芯微特MCU的嵌套向量中断控制器与外部中断/事件控制器的使用方法

    01. 嵌套向量中断控制器(NVIC) NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。 Cortex-M0和Cortex-M4提供了
    的头像 发表于 06-04 12:08 4449次阅读
    华芯微特MCU的嵌套向量<b class='flag-5'>中断控制器</b>与外部<b class='flag-5'>中断</b>/事件<b class='flag-5'>控制器</b>的使用方法

    中断控制器的驱动解析(上)

    这里主要分析 linux kernel 中 GIC v3 中断控制器的代码(drivers/irqchip/irq-gic-v3.c)。设备树先来看下一个中断控制器的设备树信息:gic
    发表于 12-04 16:36 10次下载
    <b class='flag-5'>中断控制器</b>的驱动<b class='flag-5'>解析</b>(上)

    扒开 ARM 中断控制器的底裤

    GIC 硬件原理GIC,Generic Interrupt Controller。是ARM公司提供的一个通用的中断控制器。主要作用为:接受硬件中断信号,并经过一定处理后,分发给对应的CPU...
    发表于 12-04 17:36 6次下载
    扒开 ARM <b class='flag-5'>中断控制器</b>的底裤

    细说STM32的中断控制器(NVIC)那些事

    分组、中断优先级的配置、读中断请求标志、清除中断请求标志、使能中断、清除中断等,它控制着STM3
    发表于 01-14 15:54 6次下载
    细说STM32的<b class='flag-5'>中断控制器</b>(NVIC)那些事

    关于ARM中断控制器的介绍

    GIC 硬件原理 GIC,Generic Interrupt Controller。是ARM公司提供的一个通用的中断控制器。主要作用为:接受硬件中断信号,并经过一定处理后,分发给对应的CPU进行处理
    的头像 发表于 07-08 09:34 3238次阅读

    STM32外部中断控制器EXTI详解

    什么是外部中断控制器,外部中断控制器在STM32芯片中处于什么位置,它的作用是什么,EXTI与GPIO的映射关系?
    的头像 发表于 04-20 11:44 3748次阅读
    STM32外部<b class='flag-5'>中断控制器</b>EXTI详解

    中断控制器级联的类型有哪几种

    中断控制器的级联 根据中断数量的不同,中断控制器可以级联,以此来满足需求。比如在 GIC 中断控制器之前都会连接 EINT中断控制器,或者其
    的头像 发表于 09-28 14:15 1319次阅读
    <b class='flag-5'>中断控制器</b>级联的类型有哪几种

    PLIC平台级中断控制器介绍

    平台级中断控制器(PLIC) PLIC:Platform-Level Interrupt Controller. 实际上,除了CLINT管理的软件中断和定时
    的头像 发表于 10-07 17:53 2224次阅读
    PLIC平台级<b class='flag-5'>中断控制器</b>介绍

    CLINT中断控制器优先级和抢占

    内核本地中断CLINT) 下图为CLINT示意图,CLINT通过固定的中断号和优先级,可将软件中断
    的头像 发表于 10-08 09:30 1365次阅读
    <b class='flag-5'>CLINT</b><b class='flag-5'>中断控制器</b>优先级和抢占

    RISC-V SiFive U54内核的中断介绍

    类型的 RISC-V 中断本地和全局。 本地中断:U54内核的本地中断只有2种,软件中断和定时
    的头像 发表于 10-08 09:39 1354次阅读
    <b class='flag-5'>RISC-V</b> SiFive U54内核的<b class='flag-5'>中断</b>介绍