有些嵌入式设备常年插电,有些依赖电池,有些工作在不稳定供电环境里。功耗和电源稳定性不仅是硬件问题,软件启动、外设管理、日志写入、网络重连也会影响功耗和可靠性。
一、先明确功耗目标
不同设备目标不同:
- 网关:稳定性优先。
- 传感器:低功耗优先。
- 摄像头:性能和功耗平衡。
- 工业控制:抗断电和自恢复优先。
没有目标就无法优化。
二、CPU 频率
查看:
1 | cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor |
常见 governor:
1 | performance |
低功耗设备不一定适合一直 performance。
三、外设电源管理
外设不用时要关闭:
- Wi-Fi。
- 蓝牙。
- 摄像头。
- 传感器。
- 显示屏。
- 蜂窝模块。
注意关闭顺序和恢复顺序。有些模块需要复位脚、电源使能脚、时钟配合。
四、休眠和唤醒
Linux 常见状态:
1 | cat /sys/power/state |
可能输出:
1 | freeze mem disk |
进入 suspend:
1 | echo mem > /sys/power/state |
唤醒源可能是:
- GPIO。
- RTC。
- 网络。
- 按键。
- 外部中断。
休眠调试要看 dmesg,确认哪个设备阻止了休眠或导致唤醒失败。
五、电源异常和数据保护
不稳定供电会带来:
- 文件系统损坏。
- 配置写一半。
- OTA 中断。
- RTC 异常。
- 外设状态异常。
软件侧要做:
- 配置原子写。
- OTA 双分区。
- 启动自检。
- 日志限流。
- watchdog 恢复。
电源问题不能只靠硬件兜底。
六、功耗测试
至少测:
- 开机峰值电流。
- 空闲电流。
- 网络连接电流。
- MQTT 重连电流。
- 外设工作电流。
- 休眠电流。
- 唤醒耗时。
软件每加一个常驻服务,都要关注它是否增加唤醒和 CPU 占用。
七、总结
功耗优化不是简单关几个模块。它需要硬件、电源、内核、驱动、业务服务一起配合。对产品来说,功耗、稳定性和可维护性要一起设计。
- 本文链接: https://blog.hansong.icu/2026/06/26/Embedded_Linux_Series_20_Power_Management/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。