14.5. まとめ

あなたは、動作する作業台上のスクリプトから出荷される製品へと至る、カメラのライフサイクルを一通りたどってきました。

  • カスタムファームウェアビルド -- 開発環境、ソースからのファームウェアイメージのビルド、カメラへのフラッシュ、そしてファームウェア側に問題があるときのVS Code Cortex-Debugからコマンドラインの gdbrunner までのデバッグ経路。

  • アプリケーションの出荷 -- フローズンモジュールを介したアプリケーションコードのファームウェアへの焼き込み、アセットのROMFSイメージへの焼き込み、そして起動時にランタイムがどのファイルのコピーを実際に読み込むかを決定するルックアップ順序。そこから導かれる分担は、REPL前の環境設定のための boot.py、アプリケーションのエントリーポイントとしての main.py、エントリーのためのフローズン main.py、そしてそれ以外すべてのためのROMFSです。

  • 本番向けの堅牢化 -- 既知のパスに書き込まれる logging ライブラリ、メインループの各反復で一度ずつフィードされる machine.WDT、クラッシュをリセットではなくログ記録されたイベントに変えるトップレベルの try / except、フィールドで数か月にわたってアプリケーションがレコードを蓄積していく中でもファイル操作を高速に保つファイルシステムの衛生管理、そして製品が必要とする場合のフラッシュ読み出し保護。

  • 応用的な内容 -- ネットワークサービスに対して認証し、トラフィックを暗号化する必要があるカメラのためのTLS証明書。

出荷されたカメラには、これらすべてが備わっています。アプリケーションコードはファームウェアイメージから実行され、ウォッチドッグはメインループの各反復で一度ずつフィードされ、ログはSDカード上の日付付きディレクトリに記録され、そして製品が必要とする場合は、フラッシュが読み出しに対してロックされています。

14.5.1. ここからどこへ進むか

本番は、チュートリアルの最後の章です。ここからドキュメントはリファレンス資料へと分岐します。

  • ライブラリリファレンス は、カメラが公開するすべてのモジュールについて「この呼び出しの正確な名前は何か」をアルファベット順で見るための資料です。machineloggingoscsiimageml、その他があります。

  • ボードごとのクイックリファレンスページ は、OpenMV製品ラインの各カメラの詳細を扱います。ピン配置、マウント可能なバス、ボードID、ペリフェラルの利用可否、そしてアプリケーションを特定の部品に載せなければならないときに重要となる細かな差異です。

  • センサーリファレンスページシールドリファレンスページ は、カメラが搭載できる個々の画像センサーやアドオンシールドを扱います。ビルドのためにセンサーやシールドを選ぶ際にアプリケーションが必要とする、部品ごとの仕様、ピン配置、注意事項です。

  • MicroPython言語リファレンス は、言語そのものを扱います。CPythonとの構文の違い、スクリプトが両者にまたがるときに重要となる実装上の詳細、そしてPythonが遅すぎる稀なケースのためのインラインアセンブラのリファレンスです。

チュートリアルは、「新しいカメラを手にした」から「製品を出荷した」までの道のりです。ここからカメラは、アプリケーションが責任を負うより大きなシステムの一部となり、作業はアプリケーション自身のものとなります。