极致 Pi 启动优化

这是一篇关于优化树莓派零 W 启动过程以减少能源消耗的文章,主要内容如下:

  • 动机:为节省太阳能设备中的电能,优化 off-grid 太阳能 WiFi 相机项目中树莓派零 W 的启动过程,用户空间应用已优化,电子设置也旨在低功耗运行,需在降低功耗和减少运行时间间找到平衡。
  • 硬件设置:使用 Nordic Power Profiler Kit II、USB-SD-Mux Fast 和 USB-UART 转换器等工具,Power Profiler Kit 可测量设备功耗和数字输入状态,USB-SD-Mux 可在不接触设备的情况下读写 microSD 卡,USB-UART 转换器用于 UART 调试。
  • 测量/测试设置:在 Debian 12 arm64 Lite 镜像中修改/boot/firmware/cmdline.txt文件,使内核启动时执行/init.sh脚本,通过该脚本测量启动时间和功耗。
  • 降低电流

    • 禁用 HDMI 可将电流从 136.7mA 降低至 122.6mA(超过 10%),相关配置参数为dtoverlay=vc4-kms-v3d,nohdmi等。
    • 禁用活动 LED 可节省 2mA 电流,参数为dtparam=act_led_trigger=none等。
    • 禁用相机 LED 可减少电流,参数为disable_camera_led=1
    • 调整 Turbo 模式,禁用强制 Turbo 模式可将电流从 1.62As 降低至 1.58As。
  • 减少时间

    • 调试启动,修改bootcode.bin文件启用详细 UART 日志,可获取启动过程中的详细信息。
    • 禁用 HDMI 探测,通过硬编码 EDID 字符串禁用自动检测视频参数。
    • 禁用 HAT、PoE 和 LCD 探测,禁用相关 I2C EEPROM 检测。
    • 禁用相机和显示探测,手动加载相机驱动。
    • 禁用 initramfs,可减少启动时间。
    • 测试过超频 SD 外设未发现显著差异,且存在数据 corruption 风险。
    • 优化内核加载,可尝试超频 GPU 处理器核心以减少加载时间,但副作用未知。
  • 构建根文件系统/自定义内核:将系统迁移到自定义构建的 Buildroot 发行版,配置内核时去掉声音、大部分块设备和文件系统驱动、RAID、USB、HID、DVB、视频和帧缓冲支持等,禁用 KASLR 和 Spectre 缓解措施,得到 8.5MiB(未压缩)的内核。
  • 最终结果:可在不到 3.5s 内启动到 Linux 用户空间程序,总能耗降至 1.82Ws,相比原始 Debian 减少了 5 倍。之后发现降低输入电压可进一步降低能耗,在 3.6V 下能耗为 1.438Ws,减少了 20%。
  • 链接:提供了 SolarCamPi 的相关配置文件和 Buildroot 树的链接。
阅读 26
0 条评论