SiFive CLINT简介

概述

CLINT( Core-Local Interrupt Controller),局部/私有中断控制器,是一个内存地址映射的模块,用于生成软件中断和计时器中断。与之相对应的是PLIC(Platform-Level Interrupt Controller)用于全局的外部中断的仲裁和分发。

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

CLINT相关寄存器及对应中断ID如下:
在这里插入图片描述
理论上,CLINT也支持将外部中断直接发送给hart,对应的寄存器为meip和seip。但不太常见,大部分系列没做实现,不展开叙述。
在这里插入图片描述

定时器中断和软件中断

软件中断

软件触发的中断。 harts 间可以互相触发软件中断,适用多核情况下的核间通信。

通过写MSIP寄存器来触发机器模式软件中断。SiFive的MSIP是32bit WARL寄存器,高31bit固定为0,最低位会映射到mip CSR的MSIP位上。复位后MSIP清零。

PS:WARL全称Write Any,Read Legal。一个WARL寄存器允许软件写入任何值,但是当读取该寄存器时,它只返回一个“合法的”或“有效的”值。

定时器中断

risc-v架构定义了系统平台中必须有一个定时器,并给该寄存器定义了两个64bit的寄存器mtime和mtimecmp。mtime用于反映当前计时器的计数值,mtimecmp用于设置计时器的比较值。当mtime中的计数值>=mtimecmp中的比较值,计时器产生定时器中断。

系统定时器的主要作用是为多个核心提供统一的时间基准,在多核系统中仅存在一个系统计时器mtime。系统必须以一种恒定的频率作为计时器的时钟,该恒定的时钟频率必须为低速的电源常开的(Always-on)时钟,低速是为了省电,常开是为了提供准确的计时。

SiFive定义了一个输入信号rtc_toggle(实时时钟输入)。 以低于时钟速率一半的速度运行(频率恒定),被core视为数据信号并同步。 检测到该信号的边沿就递增 mtime 计数器。

m模式定时器中断会反映到mip CSR的mtip位上。定时器中断产生后会一直拉高,直到软件重新写mtimecmp寄存器的值,使比较值大于mtime中的值(定时器中断清除)。S模式同理。

定时器中断的常见应用:

  • 定时任务调度
    在多任务操作系统中,可以通过Timer Interrupt来实现每个任务按照时间片轮转的方式执行。当一个任务的时间片用尽后,Timer Interrupt会触发切换到下一个任务的中断请求。
  • 实时系统
    在实时系统中,Timer Interrupt被用来精确地控制任务的执行时间。通过设置适当的定时器时间值,并在中断服务程序中完成关键任务的处理,可以确保实时系统能够按时响应各种事件。
  • 时钟显示
    操作系统通过定期触发中断信号更新时钟显示的内容,并保证时间的准确性。

计时器中断的应用部分来自《计算机系统:Timer Interrupt详解

其他相关寄存器

中断使能

mstatus CSR的MIE位用于控制全部机器模式中断的enable
mie CSR的MSIE,MTIE用于控制软件/定时器中断的enable
S mode也有对应的ssatus和sie CSR

特权委托(降级处理)

软件和计时器中断默认在机器模式下处理,CLINT只提供机器模式软件和计时器中断。如果要让这些中断trap到S mode,需设置mideleg CSR相应的位来将机器模式计时器中断和软件中断委托(delegate)到S mode。

直接模式和向量模式

mtvec寄存器用两个功能:定义陷阱向量的基址和设置CPU处理中断的模式是直接模式(Direct)还是向量模式(Vectored)。

直接模式下,所有中断和异常都会捕获到 mtvec.BASE。
向量模式下,异常trap到 mtvec.BASE,但中断将直接跳转到它们的向量表索引,然后再跳转到对应处理程序。

软件中断对应: mtvec+0x0C
定时器中断对应:mtvec+0x1C
(mtvec+4*interrupt ID)

更详细的内容见risc-v中断相关的寄存器介绍

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值