RISC-V特权架构 - 中断注入

中断注入

  • [1 中断注入的作用](#1 中断注入的作用)
  • [2 mip寄存器](#2 mip寄存器)
  • [3 中断注入后的处理过程](#3 中断注入后的处理过程)

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。

1 中断注入的作用

  • 中断注入,就是在M模式下,手动向S模式去产生一个中断。

比如:向mip寄存器的bit5(STIP)写1,S模式就会产生一个时钟中断。

设置mip寄存器中的STIP字段,相当于把M模式下的定时器中断,注入S模式,并由S模式的操作系统处理。

  • 中断注入,类似于软件中断,由软件来产生。

相对而言是硬件中断,硬件中断,一般是靠GPIO引脚的高低电平来触发。

2 mip寄存器

3 中断注入后的处理过程

注入中断后,在mip寄存器中,对应bit指示了,发生了何种中断。

对于该中断的处理过程,与正常中断处理流程一致,可参考《RISC-V特权架构 - 模式切换与委托》中《中断处理时模式切换》章节。

主要就是:

  • 判断mideleg,是否委托;
  • 以便更新M或S模式寄存器 ;
  • 然后,进入M或S模式;
  • 然后,跳转到M或S模式的异常向量表基址,进行中断处理;
  • 最后通过mret或sret,返回到之前的模式和pc地址,继续执行。

比如,我们在调试时,就发现OS在处理M模式下时钟中断时,有如下过程:

  • 运行于S模式下的OS,首先会检测到,M模式下时钟中断(mip.MTIP=1);
  • 然后,默认进入M模式,在M模式的中断处理代码(位于riscv-pk固件异常向量表)中,并没有做特殊处理,只是将mip.MTIP注入到mip.STIP(mip.STIP=1),便退出了M,回到S模式;
  • 下一次,当S模式下的OS,检测到,S模式下时钟中断(mip.STIP=1)时,便会按照正常中断处理流程,来处理该中断。

因此,我们看起来,像是固件异常处理代码,伪造了一个S模式下时钟中断,这个过程,就叫做中断注入。

相关推荐
杭州_燕十三3 天前
从零开始学习 sg200x 多核开发之 milkv-duo256 编译运行 sophpi
risc-v·sg2002
安全二次方security²5 天前
2024 RISC-V中国峰会 安全相关议题汇总
安全·虚拟化·risc-v·中国峰会·侧信道攻击·riscv optee·riscv hsm
安全二次方security²5 天前
2024 RISC-V 中国峰会 演讲幻灯片和视频回放 均已公开
视频·risc-v·中国峰会·risc-v安全·ppt·2024
杭州_燕十三6 天前
从零开始学习 sg200x 多核开发之 eth0 MAC 地址修改
risc-v·sg2002
Daydreamer109 天前
学习笔记——PLCT汪辰:开发RISC-V上的操作系统(持续更新)
笔记·学习·risc-v
YHPsophie10 天前
CSM32RV20:RISC-V核的低功耗MCU芯片,常用在智能门锁上
单片机·嵌入式硬件·risc-v·智能门锁·低功耗mcu芯片
飞凌嵌入式22 天前
FET113i-S核心板已支持RISC-V,打造国产化降本的更优解 -飞凌嵌入式
嵌入式硬件·嵌入式·risc-v·飞凌嵌入式
EVERSPIN22 天前
RISC-V单片机可快充手持电钻方案分享
单片机·嵌入式硬件·risc-v
谷公子的藏经阁1 个月前
RISC-V笔记——显式同步
risc-v·fence·rcpc·显示同步·synchronization
码匠许师傅1 个月前
【开源鸿蒙】OpenHarmony 5.0轻量系统最小开发环境搭建
python·pip·risc-v·openharmony·gcc·1024程序员节·hi3861