常见问题
22 Oct 2024
Read time: 1 minute(s)
无法进入休眠
无法进入休眠的原因及可能的解决方法如下:
-
检查休眠模式的申请和释放是否有成对使用,一般无法进入休眠是因为申请的次数大于释放的次数。可以通过 pm_dump 来辅助调试,详情可查看 调试指南。
-
PM 框架在初始化时,会默认申请 NONE 模式,因此在应用代码中需要注意释放 NONE 模式。例如,在进入休眠前,确保已经释放了默认申请的 NONE 模式。
休眠后无法唤醒
- 检查中断源的中断是否触发,确保用于唤醒系统的中断源确实触发了中断。可以通过调试工具或日志记录来确认中断是否被正确触发。
- 检查该中断源是否是唤醒源。确保配置的中断源确实是唤醒源。有些中断可能只是普通中断,而不是唤醒源。
唤醒后又立即进入休眠
当 CPU 被中断唤醒时,会执行唤醒流程,然后会执行中断源的中断处理函数,此时需要执行申请 NONE 模式的操作,以确保 CPU 再次执行 idle 线程时,不会再次进入到休眠流程。否则,CPU 会在 idle 线程再次进入休眠, 就会产生唤醒后又立即进入了休眠的现象。