v1.3.0

v1.3.0 では、カメラ通信レイヤーを構造化されたコマンド/レスポンスプロトコルを中心に書き直し、IDE 本体とそのバンドルリソースの両方に対する IDE 内での自動更新機能を追加しました。Qt Creator 4.0.2 上に構築され、OpenMV カメラファームウェア 2.0.0 をバンドルしています。macOS および Linux では、DFU によるファームウェアの書き込みに Python と libusb および pyusb の一度きりのインストールが必要になりました。詳細は「破壊的変更」を参照してください。

ハイライト

  • 通信レイヤーの書き直し。 シリアル/USB デバッグのコードを、コマンドごとのレスポンス長と開始/終了の待機遅延を備えた構造化されたコマンド/レスポンスプロトコルを中心に再構築し、接続、スクリプト実行、フレームバッファ、ブートローダーの各操作をより確実なものにしました。

  • IDE 内自動アップデーター。 IDE は openmv.io で新しいバージョンを確認して Download ボタンを提示するようになり、これとは別に更新されたリソースパッケージ(サンプル、ファームウェア、ドキュメント)をダウンロードしてインストールし、再起動を促すようになりました。

  • ワンクリックファームウェア更新。 ステータスバーのファームウェアバージョンがクリック可能なボタンになり、接続中のカメラをバンドルされたファームウェアと比較して、新しいバージョンが利用可能な場合にワンクリックでの更新を提示します。

  • すべてのプラットフォームでの DFU ファームウェア書き込み。 Windows、macOS、Linux x86、Linux x86_64 で DFU 経由でファームウェアを書き込めるようになり、ファームウェアピッカーは .bin に加えて .dfu ファイルも受け付けるようになりました。

  • 自動 DFU フォールバック。 ファームウェア更新中にシリアルブートローダーに到達できない場合、IDE はカメラの DFU ブートローダー経由でのアップグレードを代わりに提案し、BOOT/RST ジャンパーの追加手順を案内するようになりました。

新機能

  • IDE 内アップデーター。 openmv.io で新しい IDE バージョンを確認し、openmv.io/download を開く Download ボタンを提示します。また、openmv-ide-resources-X.Y.Z.zip リソースパッケージをダウンロード、展開して IDE に直接インストールしてから、再起動を促します(8a1f92bb1194acd828b0be97e3e)。

  • クリック可能なファームウェアバージョンボタン。 ステータスバーのバージョンラベルが QToolButton になり、updateCam() フローに接続されました。これはバンドルされた firmware/firmware.txt を読み取り、接続中のカメラと比較し、新しい場合は内部ファイルシステムの消去をオプションとする Firmware Update を提示します(b2ac8defe)。

  • DFU ファイルのサポート。 ブートローダー/ファームウェア書き込みダイアログが .bin に加えて .dfu ファイルも受け付けるようになり、.dfu を書き込む際には内部ファイルシステムの完全消去を強制します。ファームウェアピッカーのフィルターは Firmware Binary (*.bin *.dfu) に広げられ、.dfu の強制消去フローは 4ad2be5f9 で導入されました。選択されたファイル拡張子に応じて自動的に切り替わる、常にチェック済みで無効化された消去チェックボックスは b2ac8defe で追加されました(4ad2be5f9b2ac8defe)。

  • ブートローダー失敗時の自動 DFU フォールバック。 .bin ファームウェア更新でシリアルブートローダーを起動できない場合、IDE は Unable to connect to the bootloader! を報告し、代わりにカメラの DFU ブートローダーを使ったアップグレードを提案するようになりました。DFU は内部フラッシュのファイルシステムを消去することを警告し、BOOT/RST ジャンパーワイヤーの追加と再接続を案内したうえで DfuSeCommand.exe(Windows)を実行します(4ad2be5f9)。

  • HoG サンプル。 img.find_hog() を使った Histogram of Oriented Gradients(勾配方向ヒストグラム)の可視化サンプル(09-Feature-Detection/hog.py)を追加しました(b03a707f7)。

その他の変更と改善

  • 従来のその場しのぎのボーレート/パケットコードを、OpenMVPluginSerialPortCommand/Result クラス、__USBDBG_* および __BOOTLDR_* のオペコード、command()/commandResult() ヘルパーに置き換え、write()/readAll()/isOpen() を不要にしました(b03a707f7141122e21b2ac8defe1d72fe4bfb4cf2fe43c60936d5f)。

  • Windows のシリアルポートドライバーのインストールがサイレント/無人で行われるようになり、openmv.cmd/pybcdc.cmd ドライバースクリプトを対話型の InfDefaultInstall から dpinst ベースのインストーラーに切り替えました。また、Visual C++ 再頒布可能パッケージのインストーラー(vcredist_x86.exevcredist_x64.exe を静かに実行する vcr.cmd)が追加され、修正されました(a5a6e0590754d0776db0be97e3e452a29f0dc051c6e30ad1b674ef565f1eccd)。

バグ修正

  • 仮想マシン内でのファームウェア書き込みと通信が壊れる問題を修正し、各種コマンドのタイムアウトやフレームバッファ/送信バッファのポーリングを緩和して、接続と実行をより堅牢にしました。再プログラムダイアログには「最大 5 分かかる場合があります」と表示されるようになり、DFU プロセスのタイムアウトは 324f243f9 で 240 秒から 300 秒に引き上げられました(c051c6e30b0be97e3e1d72fe4bfb4cf2fe43324f243f9c60936d5f)。

  • ファームウェア/IDE の更新有無の比較を修正し、上位フィールドが等しい場合に新しいマイナーまたはパッチが誤ってトリガーされないようにするとともに、書き込み前にブートローダーダイアログで有効なファイルが選択されていることを必須としました(4ad2be5f9)。

  • 読み取り後にファイルハンドル(ボードリスト、ファームウェア/バージョンファイル)を閉じ、ファームウェア書き込みチャンクのパディングを修正して FLASH_WRITE_CHUNK_SIZE までパディングするようにし、ファームウェア更新中のハンドルのリークや最終チャンクのパディングミスを防ぎました(4ad2be5f9)。

  • OpenMV の Help メニューと出力ペインを修正しました。About OpenMV Cam の項目がプラットフォームの About ロールと競合しなくなり(AboutRoleApplicationSpecificRole)、出力ペインが Alt/Cmd + 数字のショートカットを奪わなくなりました(a0694eac7)。

  • 外部の OpenMV ウェブリンク(フォーラム、ダウンロード、サポート)を開く際、URL を起動できない場合に、何もせず黙って失敗するのではなく「Failed to open」エラーダイアログを報告するようになりました(b0be97e3e)。

プラットフォームとツールのサポート

  • Qt Creator ベース: 4.0.2。

  • バンドルカメラファームウェア: 2.0.0 に更新され、新しい firmware.bin/openmv.bin と、OMV2 および OMV7 向けに新たに追加された firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf を含みます。

  • Windows での DFU 書き込み を、バンドルされた ST DfuSeCommand.exe、ST DfuSe USB ドライバーパッケージ(Win7/Win8 では DfuSe v3.0.4.0、Win8.1 では v3.0.5.0)、および dfuse.cmd ドライバーインストーラーを使って追加しました(4ad2be5f9)。

  • macOS および Linux での DFU 書き込み を、ビルド済みの dfu-util バイナリからバンドルされた pydfu.py フラッシャーに移行し、IDE が必要な libusb/pyusb のインストールコマンドを表示するようにしました。ac248c0ec では一時的に Linux x86_64 の dfu-util/dfu-prefix/dfu-suffix バイナリが追加されましたが、その後 324f243f9pydfu.py を採用してそれらすべてが削除されました。最終リリースには dfu-util バイナリは同梱されていません。static.pro は Windows 以外のすべてのホストに対して pydfu データディレクトリをバンドルし、Windows はバンドルされた DfuSe フローを使用します(ac248c0ec324f243f97837a07da)。

  • Linux の udev ルールSUBSYSTEM マッチング(カメラの VID 1209/PID abd1 tty と STM DFU 0483/df11)を使うよう更新し、32 ビット Linux でもデバイスと DFU のシンボリックリンクが機能するようにしました。また、リダイレクト追従のネットワークリクエストを古い Qt 向けにガードしました(194acd828)。

破壊的変更

macOS および Linux 向けにバンドルされていたスタンドアロンの dfu-util バイナリは削除され、Python の pydfu.py フラッシャーに置き換えられました。macOS および Linux では、DFU によるファームウェア書き込みに Python と libusb および pyusb の一度きりのインストールが必要になりました(IDE が正確な MacPorts/HomeBrew/apt-get のコマンドを表示します)。Windows は引き続きバンドルされた DfuSe ベースのフローを使用します。スクリプト API の破壊的変更はなく、Qt Creator 4.0.2 ベースも変更されていません。