極限のPiブート最適化
動機
- SolarCamPiプロジェクトは、オフグリッドの太陽光WiFiカメラを構築するプロジェクト。
- Raspberry Pi Zero 2 Wを使用し、Linuxを起動して写真を撮影し、WiFi接続を設定した後に電源を切る処理を繰り返す。
- 太陽光デバイスでは電力は貴重な資源であるため、起動時間を短縮して消費電力を最小化することが重要。
ハードウェア構成
- 組み込みのブートプロセスを最適化する際には、短いサイクル時間が重要。
- 便利なツールがいくつかある:
- Nordic Power Profiler Kit II
- USB-SD-Mux
- USB-UART変換器
測定 / テスト構成
- Debian 12 (bookworm) arm64 Liteイメージで
/boot/firmware/cmdline.txt ファイルを修正し、init=/init.sh を含める。
init.sh スクリプトはGPIO4をトグルし、その後通常のブートを再開する。
電流の削減
- HDMI無効化: 電流消費を136.7mAから122.6mAに削減。
- アクティビティLED無効化: 2mA節約。
- カメラLED無効化: 反射防止と電流節約。
- ターボモード調整: ターボモードを無効化して1.58Asを使用。
時間の短縮
- ブート過程でのHDMIプロービング無効化: EDID情報をハードコードして時間を節約。
- HAT、PoEおよびLCDプロービング無効化: I2C応答待ち時間を削減。
- カメラおよびディスプレイプロービング無効化: IMX477センサーを手動でロード。
- initramfs無効化: 起動時間を5.38sから4.47sに短縮。
カーネルロード
- カーネルロードは最も遅い処理の1つ。
- GPUプロセッサコアのオーバークロック: カーネルロード時間を20%短縮。
- カスタムBuildrootディストリビューションへシステムを移行: カーネルサイズを縮小し、不要な機能を削除。
最終結果
- Linuxユーザー空間プログラムを3.5秒以内に起動可能。
- 総エネルギー消費: 0.364 As * 5.0 V = 1.82 Ws。
- 標準のDebianと比べてエネルギー消費を5分の1に削減。
GN⁺のまとめ
- この記事は、Raspberry Piの起動時間を最適化して消費電力を削減する方法を扱っている。
- 太陽光電源デバイスのような電力が限られた環境で非常に有用。
- 類似機能を持つプロジェクトとしては、OpenWRT、Tiny Core Linuxなどがある。
- 起動時間を短縮するさまざまな方法を提示しており、組み込みシステム最適化に関心のある人に有益。
1件のコメント
Hacker Newsの意見
rpi製品群の電力面の問題が弱点。新しい pico 2 がこれを改善すると期待されている
カスタムカーネルが遅れて出てきた理由が気になる
CPUターボを無効化するのが消費電力を下げるうえで悪い選択なのか疑問
別のコアが使えるのか、写真を撮ってクラウドへ送信するのに Linux が必要なのか気になる
Pi の起動時間を短縮する良い記事を2本紹介
Rasp Pi エコシステムが好きなら Pi Pico W を試してみる価値がある
Linux ディストリビューションの起動時間は一般的に遅い
起動状態を維持し、低電力マイクロコントローラを使うほうがよい
Circle はカーネルより速く起動できそうだったが、MIPIカメラをサポートしていない
Pi を使ってインテリジェントなトレイルカメラを作ろうとしていた