4 ポイント 投稿者 GN⁺ 2024-09-02 | 1件のコメント | WhatsAppで共有

極限の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件のコメント

 
GN⁺ 2024-09-02
Hacker Newsの意見
  • rpi製品群の電力面の問題が弱点。新しい pico 2 がこれを改善すると期待されている

    • Google Coral mini を使ってカメラを製作したが、HQカメラのサポートが不十分だった
    • rpiエコシステムのほうが成熟しており、将来的な入手性もより信頼できる
    • 次のバージョンのカメラは rpi で製作し、より大きなバッテリーを使った
    • 余った Coral mini とカメラを処分する方法を探している
  • カスタムカーネルが遅れて出てきた理由が気になる

    • 最適化を望むなら、LFS やソースベースのディストリビューションを使うのがよさそう
    • EFI/BIOS の最適化が可能か気になる
    • Arch Linux デスクトップでは起動時間がかなりかかる
  • CPUターボを無効化するのが消費電力を下げるうえで悪い選択なのか疑問

    • クロック周波数が上がると消費電力は二乗で増加する
    • 電力差を測定してこそ、クロックブーストに利点があるか分かる
    • Pi の CPU が詳細な消費電力情報を提供してくれるとよい
  • 別のコアが使えるのか、写真を撮ってクラウドへ送信するのに Linux が必要なのか気になる

    • 最小限の予算で作業を完了する方法が気になる
    • 興味深い読み物だった
  • Pi の起動時間を短縮する良い記事を2本紹介

  • Rasp Pi エコシステムが好きなら Pi Pico W を試してみる価値がある

  • Linux ディストリビューションの起動時間は一般的に遅い

    • 非力なハードウェアでは特に遅い
    • MQ-Pro SBC でも同様の問題を経験した
    • ノートPCでも感じられる(Macbooks を除く)
  • 起動状態を維持し、低電力マイクロコントローラを使うほうがよい

    • 105mA は適切な消費電力ではない
  • Circle はカーネルより速く起動できそうだったが、MIPIカメラをサポートしていない

  • Pi を使ってインテリジェントなトレイルカメラを作ろうとしていた

    • 起動時間が重要
    • 電力使用を減らせるのは非常に良い