RISC-V技术论坛
登录
直播中
京五环以外
11年用户
3299经验值
擅长:EMC/EMI设计
私信
关注
[经验]
浅析riscv中的plic与eclic
RISC-V
寄存器
1.PLIC中断处理
在RISC V体系架构中,对中断有着一些定义,下面来分析一下这种定义的实现策略。
在riscv中一共定义了三种状态中断,对于hart层面,hart包含local中断源和global中断源。而local中断只有
ti
mer和Software中断两种,而global中断则称为external interrupts。只有global中断源可以被PLIC core响应,通常为I/O device。
一般来说,timer和software是通过CLINT(CORE LOCAL INTERRUPT),而外部中断通过PLIC处理。
可以看一下蜂鸟处理器的处理流程,另外sifive的E31的中断也有如下的处理。
2.sifive中断的编程模型
中断处理过程有如下的流程
首先mstatus的MIE域被拷贝到mstatus的MPIE,然后mstatus的MIE域被清除。此时全局中断disable。
程序当前的pc值被拷贝到mepc寄存器中,然后pc值会根据mtvec的值设置其值。如果向量中断被使能,pc值会变成mtvec.BASE+4xexception处的代码。
从mstatus.MPP中取出特权模式的状态
接下来就是处理中断具体的函数实现
将特权模式的状态设置到mstatus.MPP
将mstatus.MPIE的数据拷贝到mstatus.MIE中
从mepc中取值放到pc中
最后执行eret恢复到程序正常运行的状态。
对于CLINT来说,有Software Interrupt和Timer Interrupt,可以直接在寄存器中控制。
而PLIC实际上可以理解为arm的中断控制器,存在其map地址。
由于PLIC的使用是针对外部中断的,所以可以单独设置每个中断。可以设置如下的值:
中断的优先级priotity
中断挂起位pending
中断使能enables
中断阈值priority Thresholds
由于PLIC的实现是独立于hart的IP设计,所以其设计和布局也不一定完全一致。
3.关于eclic
eclic的设计是芯来科技设计的一种中断处理方式。
eclic目前也是众多芯来科技core采用的中断控制器,也包括gd32vf103系列的芯片。
3号中断是内核TIMER单元生成的软件中断。
7号中断是内核TIMER单元生成的计时器中断。
而从19~4095中断号都是外部中断,其中断的编号与中断的优先级其实没有关系。
而对于ECLIC的寄存器布局,可见上图。
cliccfg是中断全局配置寄存器,可以结合clicintctl
配置
clicinfo也是全局寄存器中的数据,对于使用上来说,是只读的
mth中断的阈值级别寄存器
clicintip
是中断等待寄存器,也相当于pending寄存器
clicintie
为中断使能寄存器
clicintattr
为中断的属性,可以设置中断的上升沿触发或者下降沿触发,同时也可以设置中断从处理是向量中断还是非向量中断。
clicintctl
设置中断优先级级别和优先级,需要配合cliccfg设置阈。
4.关于jalmnxti
这个也是eclic为了减少中断延时,加速中断咬尾的自定义指令。
该指令是配合eclic处理机制设计的,其指令功能和多
开启中断使能,处理下一个中断
返回下一个中断入口地址
跳转至中断handler
中断处理后返回
由于csrrw ra, CSR_JALMNXTI, ra一条指令可以达到JAL(Jump and Link)的效果,同时硬件上更新Link寄存器作为该指令的PC作为函数调用的返回值,因此从中断服务程序返回后,又会重新回到csrrw ra, CSR_JALMNXTI, ra指令再次执行,可以重新判断是否有中断pending,如果有则跳转到中断处理函数,从而实现中断的咬尾处理,如果没有中断等待,则jalmnxti实际上并不会做任何事情。
更多回帖
rotate(-90deg);
回复
相关帖子
RISC-V
寄存器
riscv
中
的
plic
中断处理与
eclic
详解
14723
riscv
指令集手册_
RISCV
就该这么玩 |
RISCV
MCU网站上线了
9
Rt-Smart在
riscv
中
的初始化流程
2571
riscv
开发板推荐
2589
riscv
中
gd32vf103的中断行为分析
5435
riscv
的mcu的目前开发如何?
7388
riscv
架构和arm的区别是什么
4044
AS32X601驱动系列教程
PLIC
_中断应用详解
525
RISCV
Debug连接报错问题
2514
国产
riscv
芯片大汇总?
1700
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分