なぜ UF2 を BIN に変換するのですか?
UF2 は、フラッシュアドレスとファミリー ID を保持する 512 バイトのブロックで実際のイメージをラップする USB ドラッグ&ドロップ用のファームウェアコンテナですが、.bin は生のバイト単位のファームウェアイメージです。開発者が UF2 を .bin に展開するのは、SWD/JTAG 経由で書き込む必要がある場合や、イメージを検査する場合、またはプレーンなバイナリを想定している別のツールチェーンに投入する場合です。microsoft/uf2 リポジトリにある Microsoft 自作の uf2conv.py は、この双方向の変換をサポートしています。
UF2 から BIN への変換方法
uf2conv.py (Microsoft UF2 ツール) OPEN-SOURCE
microsoft/uf2 リポジトリから uf2conv.py firmware.uf2 -c -o firmware.bin を実行します。-c/--convert フラグは、デバイスへの書き込みではなくファイルへの出力を指定します。
uf2conv Python - デフォルト出力 FREE
-o を指定せずに uf2conv.py firmware.uf2 -c を実行すると、バイナリ出力を検出した際にデフォルトで flash.bin という名前になります。Python 3 が必要です。
これらの形式について
UF2 ファイルは Microsoft の USB Flashing Format によるファームウェアイメージで、USB 経由でマイコンボードをプログラミングするために使用されます。アプリで開くのではなく、ボードをブートローダーモードにして USB ドライブとして認識させ、そのドライブに .uf2…
.UF2 の詳細を開く →BINファイルは、ほとんどの場合、CDまたはDVDのセクタ単位の未加工(RAW)コピーであり、トラック情報を記述した .cue テキストファイルとセットで提供されます。PowerISO や DAEMON Tools Lite でマウント(.bin ではなく .cue を指定)するか、AnyBurn や bchunk を使用して ISO…
.BIN の詳細を開く →品質と注意点
- UF2 ブロックに含まれるフラッシュターゲット/ベースアドレスは、フラットな
.binには保存されません。再書き込み時には、正しいオフセットを自身で把握している必要があります。 - UF2 内のアドレス範囲にギャップがある場合、生成される
.binにパディングが発生したり、間違ったオフセットから開始されたりする可能性があります。ベースアドレスを確認してください。 .bin単体ではファミリー ID を保持しないため、UF2 が提供するデバイスファミリーの安全性チェック機能は失われます。
よくある質問
正確なコマンドは何ですか?
uf2conv.py firmware.uf2 -c -o firmware.bin です。-c フラグは「変換のみ」を意味し、書き込みは行いません。Python は必要ですか?
uf2conv.py は microsoft/uf2 リポジトリの Python 3 スクリプトです。Rust ポート版の uf2conv-rs も存在します。フラッシュアドレスは保持されますか?
.bin はフラットなイメージとなり、書き込み時にオフセットを指定する必要があります。後で UF2 に戻すことはできますか?
uf2conv.py firmware.bin -c -b <base> -f <family> -o firmware.uf2 を実行することで可能です。