RISC-V MCU中文社区

【求助】 riscv中断还需要软件保存上下文和恢复吗?

发表于 GD32VF103 MCU 2024-01-26 11:37:48
1
4405
0
以下是我拷贝的文档里的说明,这个中断处理还需要软件来写上下文保存和恢复,在使用ARM核的单片机都不需要考虑这些的,使用过的小伙伴能解答吗?

3.8. 进出中断的上下文保存和恢复

RISC-V架构的处理器在进入和退出中断处理模式时没有硬件自动保存和恢复上下文(通用寄存器)的操作,因此需要软件明确地使用(汇编语言编写的)指令进行上下文的保存和恢复。根据中断是向量处理模式还是非向量处理模式,上下文的保存和恢复涉及到的内容会有所差异,请参见《Nuclei_N级别指令架构手册》第5.13节了解更多详细介绍。


喜欢0
用户评论 (1)
  • dekira

    2024-07-04 15:11:06 dekira 1#

    当然需要。

    如果你用的是非向量中断的话,中断之后首先就会进入MTVT2这个寄存器保存的地址开始执行代码,可以参考5.13.1.1;

    这时你就需要手动保存上下文,切换栈指针等等。然后通过csrrw ra, CSR_JALMNXTI, ra,进入对应的中断服务函数处理中断;

    中断服务函数执行完之后,会返回,然后恢复上下文,最后调用mret回到终端前执行的地方。

    有一些内核会自动保存上下文的,这个是内核特性决定的,RISCV不会自动保存

yuxin

yuxin 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板