全稱為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 定時器中斷觸發采樣函數,確保采樣周期的穩定性和精準度。
-
mcu
+關注
關注
147文章
18669瀏覽量
388978 -
中斷控制器
+關注
關注
0文章
63瀏覽量
9778 -
RISC-V
+關注
關注
48文章
2820瀏覽量
52110
發布評論請先 登錄
易靈思Sapphire SoC中RISC-V平臺級中斷控制器深度解析
如何在RISC-V處理器上使用FreeRTOS?
ARM的中斷控制器
有關ARM GICv3中斷控制器的相關知識介紹
ESP32-C6技術參考手冊
華芯微特MCU的嵌套向量中斷控制器與外部中斷/事件控制器的使用方法
中斷控制器的驅動解析(上)
扒開 ARM 中斷控制器的底褲

RISC-V怎么實現核間中斷?核心本地中斷控制器(CLINT)深度解析
評論