RISC-V架构的WFI命令详解(WFI:wait for Interrupt)

1、WFI指令

  • 在嵌入式设备中(特别是使用电池作为电源的小型嵌入式),低功耗是一个十分重要的性能指标,可以延长设备的待机时间。当设备没有任务需要处理时通过执行WFI指令进入低功耗模式,当有中断触发(也就是有任务要处理)重新开始执行代码
  • WFI指令是RISC-V低功耗管理的关键工具,通过暂停处理器并等待中断唤醒,有效降低功耗,适用于空闲任务和低功耗应用场景

2、WFI指令的行为

  • 执行WFI后,处理器停止执行后续指令,进入空闲状态,等待中断来唤醒处理器
  • 中断的唤醒条件和唤醒后PC跳转位置和具体的平台实现有关,下面第三点和第四点仅供参考

3、低功耗状态唤醒条件

  • 不可屏蔽中断(NMI:non-mask Interrupt)、debug中断无条件唤醒
  • mie寄存器中屏蔽的中断无法唤醒
  • 全局中断启用位(mstatus.MIE)不管是关闭还是开启,中断发生都可以唤醒

4、唤醒后恢复PC

  • NMI中断唤醒时PC跳转到复位的入口处开始执行
  • debug中断唤醒从芯片内置的调试代码入口处开始执行
  • 当core被挂起的中断唤醒并且mstatus.MIE开启时,PC从mtvec.BASE开始执行(也就是异常的入口)
  • 当core被挂起的中断唤醒并且mstatus.MIE关闭时,PC从WFI指令的下一条指令开始执行

5、WFI、NOP、软件空闲的区别

  • WFI指令:处理器进入低功耗状态,大部分硬件都不工作(处理器不执行指令),用于节能场景
  • NOP指令:就是一条普通的指令,但是没有实际作用,相当于处理器在空转(可以用于延时),但是功耗并没有降低
  • 软件空闲:软件实现也有空闲的概念(比如idle进程),当没有任务需要处理时,软件会运行一些代码不让处理器跑飞,实际也是执行指令,功耗并没有降低
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值