これは、DFUまたはHID-Flashプロトコルを使用して、USBを介してファームウェアバイナリを点滅させるカスタムSTM32F1XX/STM32F4XXブートローダーです。プロジェクトの背後にある野心的な意図は、より多くのSTM32 MCUの複雑さを、簡単にダウンロード、構成、コンパイル、フラッシュできる単一のプロジェクトにflomすることです。
物理ボードとのやり取りで最小限の相互作用で新しいファームウェアをフラッシュすることは、場合によっては非常に便利です。私の場合、ボタンのプレス(実際には2つ、リセット + LCDエンコーダーボタン)で私のOctopiを介して3DプリンターのBTT GTR 1.0ボードを点滅させていました。これにより、RPIのGPIOを介してトリガーし、手動相互作用なしでフラッシュできます。
このブートローダーは進行中の作業です。つまり、広くテストされておらず、ハードウェアの互換性について考慮すべきことがたくさんあります。特定のボードですべての側面が機能することを確認するまで、これを実験的なものと考えてください。
このプロジェクトは、Serasidis/STM32_HID_BOOTLOADER(ブーツセクター/STM32-HID-BOOTLOADERに由来する)に触発され、HID-Flashツールとの互換性を保持しています。
このプロジェクトはPlatformioに適合しています(ST-Link/V2デバイスが接続されている場合、プロジェクトはそのまま構築およびアップロードする必要があります)。わずかに変更された部分を含む代わりに、元のSTM32Cubeフレームワークライブラリを使用します。 DFUプロトコルは、STM32F1XX/4XXプラットフォームの両方で実装およびテストされます。現時点では、hid-flash.exeの古いバージョンとの互換性は、stm32f4xxコンピレーションでのみ維持されています。 HID-Flashツールのソースはプロジェクトに含まれていません。
これを試す前に、ボードの元のブートローダーのコピーを持っていることを絶対に確認してください。これは問題なくボードに正常にフラッシュバックしました。
ブートローダーの動作をカスタマイズすると、configuration.hファイルを変更することで実行されます。詳細については、ファイルのコメントを参照してください。
ボードとPCに適切に接続されたST-Link互換デバイスを使用します。 Platformioのアップロードコマンドを使用してインストールします。 3.3Vに設定されたBOOT0ピンでボードをリセットすることも機能するはずですが、これはボードとMCUに依存します(被験者の詳細についてはWikiを確認してください)。
構成されたトリガーを有効にしてボードをリセットします(ピントリガーの場合は、リセット中にピンを有効にし、ホストにUSBデバイスが表示されdfu 。または、次の例のように、ファームウェアのplatformio.iniファイルのenvセクションで、希望するupload-protocolとしてhid 。
#
# Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4)
#
[env:BIGTREE_GTR_V1_0]
extends = stm32_variant
board = marlin_BigTree_GTR_v1
board_build.offset = 0x8000
build_flags = ${stm32_variant.build_flags} -DSTM32F407IX
upload_protocol = dfu
フラッシュと使用の詳細については、Wikiをご覧ください。
より多くのトリガー、より多くの点滅方法、より多くのSTM32 MCU /ボードをサポートします。
これまでのところ、プロジェクトは次のボードでテストされています。
stm32f4xx:
STM32F1XX: