全稱(chēng)為Core Local Interruptor(核心本地中斷控制器),是 RISC-V 特權(quán)架構(gòu)規(guī)范(Privileged Architecture Specification)中明確定義的內(nèi)建于每個(gè)核心 / 硬件線程(hart)的中斷控制器,專(zhuān)門(mén)處理「核心本地、非共享」的中斷類(lèi)型,區(qū)別于處理外設(shè)共享中斷的 PLIC(Platform-Level Interrupt Controller,平臺(tái)級(jí)中斷控制器)。
1、為什么需要 CLINT?
RISC-V 核心在運(yùn)行時(shí),需要處理兩類(lèi)截然不同的中斷需求:
一類(lèi)是全局共享中斷(如 UART 收發(fā)、GPIO 電平變化、SPI 通信完成等),這類(lèi)中斷來(lái)自外部外設(shè),需多個(gè)核心共享處理;
另一類(lèi)是核心本地中斷(如定時(shí)任務(wù)、核心間通信),這類(lèi)中斷僅屬于單個(gè)核心,要求極低的響應(yīng)延遲,無(wú)需總線仲裁。
CLINT 的設(shè)計(jì)初衷正是為了解決第二類(lèi)需求 —— 通過(guò)將中斷控制器 “內(nèi)嵌” 到每個(gè) hart 中,避免總線傳輸帶來(lái)的延遲,確保核心對(duì)本地關(guān)鍵事件(如定時(shí)器到期、核心間喚醒)的快速響應(yīng),這也是其 “Core Local”(核心本地)命名的由來(lái)。
CLINT 模塊產(chǎn)生 CSR****寄存器的定時(shí)器中斷、軟件中斷和計(jì)時(shí)器。

CLINT的系統(tǒng)架構(gòu)示意圖
2、CLINT 功能說(shuō)明
CLINT 由軟件中斷觸發(fā)器、定時(shí)器中斷觸發(fā)器、計(jì)數(shù)器組成。 軟件中斷觸發(fā)器由一個(gè)寄存器構(gòu)成,直連 CPU 的機(jī)器級(jí)軟件中斷。 計(jì)數(shù)器負(fù)責(zé)提供 CPU 的 TIME 與 TIMEH ,并參與定時(shí)器中斷的觸發(fā)。 定時(shí)器中斷觸發(fā)器用于定時(shí)器中斷 的觸發(fā),當(dāng)計(jì)數(shù)器值大于配置的值時(shí)會(huì)觸發(fā)定時(shí)器中斷**,**定時(shí)器中斷是嵌入式系統(tǒng)中最常用的中斷類(lèi)型,幾乎所有 RTOS(如 FreeRTOS、RT-Thread)的任務(wù)調(diào)度都依賴(lài)定時(shí)器中斷提供的 “時(shí)鐘節(jié)拍” 。
2.1 CLINT初始化

2.2 軟件中斷:
寫(xiě) 0 則清除中斷掛起狀態(tài)

2.3定時(shí)器中斷:
中斷處理函數(shù)中,更新比較閾值(實(shí)現(xiàn)周期性觸發(fā)),并執(zhí)行調(diào)度邏輯(如 RTOS 的任務(wù)切換)。

2.3讀取CLINT計(jì)數(shù)器:

2.4延時(shí)函數(shù)通過(guò)計(jì)數(shù)器功能計(jì)算延時(shí)時(shí)間
CLINT 的 64 位全局計(jì)數(shù)器time/timeh提供了高精度的時(shí)間基準(zhǔn),可直接用于實(shí)現(xiàn)微秒級(jí) / 毫秒級(jí)精準(zhǔn)延時(shí),無(wú)需依賴(lài)外部定時(shí)器。
延時(shí)函數(shù)實(shí)現(xiàn)原理:
進(jìn)入延時(shí)函數(shù)時(shí),讀取當(dāng)前計(jì)數(shù)器值told;
計(jì)算需要的總時(shí)鐘節(jié)拍數(shù)(ticks = 延時(shí)時(shí)間(us) × 時(shí)鐘頻率(MHz));
循環(huán)讀取當(dāng)前計(jì)數(shù)器值tnow,計(jì)算累計(jì)節(jié)拍數(shù)tcnt;
當(dāng)tcnt >= ticks時(shí),延時(shí)結(jié)束。

3、CLINT 的常見(jiàn)應(yīng)用場(chǎng)景
① RTOS 時(shí)鐘節(jié)拍生成
FreeRTOS 等 RTOS 的任務(wù)調(diào)度依賴(lài)固定周期的時(shí)鐘節(jié)拍,通常將 CLINT 定時(shí)器中斷配置為 1ms 觸發(fā)一次,在中斷處理函數(shù)中調(diào)用vTaskIncrementTick(),實(shí)現(xiàn)任務(wù)就緒狀態(tài)更新和調(diào)度器切換。
② 多核系統(tǒng)啟動(dòng)
在 RISC-V 多核芯片中,主核心啟動(dòng)后,通過(guò)向從核心的SOFTICR寄存器寫(xiě) 1,觸發(fā)從核心的軟件中斷,從核心在中斷處理函數(shù)中完成棧初始化、應(yīng)用加載,實(shí)現(xiàn)多核心協(xié)同工作。
③ 精準(zhǔn)數(shù)據(jù)采樣
在工業(yè)控制、傳感器采集等場(chǎng)景中,需按固定時(shí)間間隔(如 100us)采集數(shù)據(jù),通過(guò) CLINT 定時(shí)器中斷觸發(fā)采樣函數(shù),確保采樣周期的穩(wěn)定性和精準(zhǔn)度。
-
mcu
+關(guān)注
關(guān)注
147文章
18934瀏覽量
398503 -
中斷控制器
+關(guān)注
關(guān)注
0文章
63瀏覽量
9821 -
RISC-V
+關(guān)注
關(guān)注
48文章
2888瀏覽量
53048
發(fā)布評(píng)論請(qǐng)先 登錄
易靈思Sapphire SoC中RISC-V平臺(tái)級(jí)中斷控制器深度解析
如何在RISC-V處理器上使用FreeRTOS?
ARM的中斷控制器
ESP32-C6技術(shù)參考手冊(cè)
華芯微特MCU的嵌套向量中斷控制器與外部中斷/事件控制器的使用方法
中斷控制器的驅(qū)動(dòng)解析(上)
扒開(kāi) ARM 中斷控制器的底褲
細(xì)說(shuō)STM32的中斷控制器(NVIC)那些事
關(guān)于ARM中斷控制器的介紹
中斷控制器級(jí)聯(lián)的類(lèi)型有哪幾種
PLIC平臺(tái)級(jí)中斷控制器介紹
CLINT中斷控制器優(yōu)先級(jí)和搶占
RISC-V異常中斷機(jī)制全解析
RISC-V怎么實(shí)現(xiàn)核間中斷?核心本地中斷控制器(CLINT)深度解析
評(píng)論