RISC-V 向量模式与非向量模式 fence io差异总结

前言

最近使用国产MCU HPMICRO中读到中断章节,发现向量模式和非向量模式在允许中断嵌套的情况下,对全局中断的开启时机,以及fence io的操作有许多不同;这里的差异在读完um后依旧非常困惑,因此记录本人理解各个要点的过程,供大家参考;再次补充说明,本文仅仅针对trap中的外部中断进行讨论

中断流程

先贴上一张Andes 手册中的外部中断流程图

 

概括一下

向量模式中断

在向量模式中,每个中断源都有一个专门的入口地址。这个入口地址被称为“中断向量”。当中断发生时,硬件会自动跳转到这个中断向量,执行对应的中断服务程序(ISR)。

向量模式的工作流程
  1. 中断发生:硬件检测到中断事件,并通过中断向量直接跳转到特定的ISR。
  2. 保存上下文:ISR开始执行前,保存当前的寄存器状态和程序计数器(PC),以便在中断处理完成后恢复。
  3. 处理中断:执行具体的中断处理逻辑。
  4. 恢复上下文:中断处理完成后,恢复保存的寄存器状态和PC。
  5. 返回主程序:执行mret指令返回到被中断的程序继续执行。
向量模式的应用场景

向量模式适用于实时性要求高、需要多重中断嵌套的系统,如工业控制、自动驾驶等场景。

非向量模式中断

在非向量模式中,所有中断共用一个入口地址。当中断发生时,硬件跳转到这个通用的入口,然后通过软件判断中断源,再调用相应的ISR。

         
非向量模式的工作流程
  1. 中断发生:硬件跳转到通用的中断入口。
  2. 判断中断源:通过软件读取中断原因寄存器,判断是哪一个中断源触发了中断。
  3. 跳转到ISR:根据中断源,跳转到对应的ISR。
  4. 处理中断:执行具体的中断处理逻辑。
  5. 返回主程序:处理完中断后,返回到被中断的程序继续执行。
非向量模式的优势
  • 实现简单&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值