24、低功耗模式实战:配置系统进入深度睡眠、配置外设自动休眠、验证休眠唤醒功耗 各位做MTK平台的朋友,今天咱们来点真格的。前面讲了那么多理论,什么SPS模式、什么LPDDR4的自刷新、什么DVFS的电压调节……说实话,这些知识如果不落地,那就是空中楼阁。我见过不少工程师,原理讲得头头是道,一到真刀真枪配置深度睡眠(Deep Sleep)就抓瞎。嗯,今天这一章,咱们就手把手把系统推进深度睡眠,再把外设哄睡着,最后拿万用表或者功耗仪测一测,看看咱们的劳动成果到底值不值。24.1 配置系统进入深度睡眠(Deep Sleep)深度睡眠,说白了就是让CPU彻底歇菜,只留一点点“看门狗”级别的电路在值班。MTK平台里,进入深度睡眠的路径其实很清晰,但坑也不少。第一步:确认硬件支持我个人习惯,拿到板子先看原理图。确认PMIC的Vcore、Vproc这些 rails 是不是都能被软件关掉。我记得有一次,客户说功耗降不下去,我一看,Vproc rail 上挂了个外设,根本没做电源隔离。你软件再怎么配,硬件上电一直供着,那功耗能低才怪。第二步:配置内核的休眠状态MTK平台通常用suspend-to-ram模式。在设备树里,你要确保deep sleep状态是使能的。看这段代码:// 在 kernel-4.14/arch/arm64/boot/dts/mediatek/mtxxxx.dtsi 中 cpu0 { cpu-idle-states = CPU_SLEEP_0 CPU_S