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 に直接インストールしてから、再起動を促します(8a1f92bb1、194acd828、b0be97e3e)。クリック可能なファームウェアバージョンボタン。 ステータスバーのバージョンラベルが
QToolButtonになり、updateCam()フローに接続されました。これはバンドルされたfirmware/firmware.txtを読み取り、接続中のカメラと比較し、新しい場合は内部ファイルシステムの消去をオプションとする Firmware Update を提示します(b2ac8defe)。DFU ファイルのサポート。 ブートローダー/ファームウェア書き込みダイアログが
.binに加えて.dfuファイルも受け付けるようになり、.dfuを書き込む際には内部ファイルシステムの完全消去を強制します。ファームウェアピッカーのフィルターはFirmware Binary (*.bin *.dfu)に広げられ、.dfuの強制消去フローは4ad2be5f9で導入されました。選択されたファイル拡張子に応じて自動的に切り替わる、常にチェック済みで無効化された消去チェックボックスはb2ac8defeで追加されました(4ad2be5f9、b2ac8defe)。ブートローダー失敗時の自動 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()を不要にしました(b03a707f7、141122e21、b2ac8defe、1d72fe4bf、b4cf2fe43、c60936d5f)。Windows のシリアルポートドライバーのインストールがサイレント/無人で行われるようになり、
openmv.cmd/pybcdc.cmdドライバースクリプトを対話型のInfDefaultInstallからdpinstベースのインストーラーに切り替えました。また、Visual C++ 再頒布可能パッケージのインストーラー(vcredist_x86.exeとvcredist_x64.exeを静かに実行するvcr.cmd)が追加され、修正されました(a5a6e0590、754d0776d、b0be97e3e、452a29f0d、c051c6e30、ad1b674ef、565f1eccd)。
バグ修正¶
仮想マシン内でのファームウェア書き込みと通信が壊れる問題を修正し、各種コマンドのタイムアウトやフレームバッファ/送信バッファのポーリングを緩和して、接続と実行をより堅牢にしました。再プログラムダイアログには「最大 5 分かかる場合があります」と表示されるようになり、DFU プロセスのタイムアウトは
324f243f9で 240 秒から 300 秒に引き上げられました(c051c6e30、b0be97e3e、1d72fe4bf、b4cf2fe43、324f243f9、c60936d5f)。ファームウェア/IDE の更新有無の比較を修正し、上位フィールドが等しい場合に新しいマイナーまたはパッチが誤ってトリガーされないようにするとともに、書き込み前にブートローダーダイアログで有効なファイルが選択されていることを必須としました(4ad2be5f9)。
読み取り後にファイルハンドル(ボードリスト、ファームウェア/バージョンファイル)を閉じ、ファームウェア書き込みチャンクのパディングを修正して
FLASH_WRITE_CHUNK_SIZEまでパディングするようにし、ファームウェア更新中のハンドルのリークや最終チャンクのパディングミスを防ぎました(4ad2be5f9)。OpenMV の
Helpメニューと出力ペインを修正しました。About OpenMV Cam の項目がプラットフォームの About ロールと競合しなくなり(AboutRole→ApplicationSpecificRole)、出力ペインが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バイナリが追加されましたが、その後324f243f9でpydfu.pyを採用してそれらすべてが削除されました。最終リリースにはdfu-utilバイナリは同梱されていません。static.proは Windows 以外のすべてのホストに対してpydfuデータディレクトリをバンドルし、Windows はバンドルされた DfuSe フローを使用します(ac248c0ec、324f243f9、7837a07da)。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 ベースも変更されていません。