開発中の注意:このファームウェアは現在開発段階にあります。機能が変更される場合があり、コードにはバグが含まれている場合があります。注意して使用し、遭遇する問題を報告してください。
STM32マイクロコントローラー用のこのブートローダーは、ファームウェアの更新用の堅牢で機能が豊富なソリューションを提供します。ブートローダーは、内部USBまたはUARTインターフェイスを介してファームウェアの更新を容易にするように設計されており、外部SPIフラッシュを使用してファームウェアを一時的に保存します。

デュアルスロットファームウェアストレージ:ブートローダーは、外部SPIフラッシュで2つの個別のスロットを管理して、さまざまなバージョンのファームウェアを保存します。これにより、ロールバック機能を備えた安全なファームウェアの更新が可能になります。
ファームウェアロールバック:更新の障害の場合、ブートローダーは以前の作業ファームウェアに戻り、デバイスが動作し続けることを保証できます。
CRC32検証:SPIフラッシュに保存されている各ファームウェアは、CRC32チェックを使用して検証され、データの整合性を確保し、破損したファームウェアが実行されないようにします。
暗号化されたストレージ:ブートローダーは、すべてのファームウェアデータを暗号化された形式でSPIフラッシュに保存して保持し、不正アクセスに対するセキュリティを強化します。
バージョン管理:ブートローダーは、現在のファームウェアバージョンを報告し、デバイスに展開されているファームウェアバージョンの維持と追跡に役立ちます。
外部Pythonスクリプト:新しいファームウェアをデバイスにロードするのに役立つPythonスクリプトが提供されています。このスクリプトは、バージョンのレポートやその他のブートローダー関連操作も容易にします。
FW FILE )を暗号化し、ファームウェアバージョン、ファームウェア名、ファームウェアID、ビルド時間、出力ファイル( BIN FILE )などの重要なメタデータを添付します。Lock Binツールは、これらの入力をファームウェアファイルと組み合わせて、パッケージを暗号化して送信中のセキュリティを確保します。BIN FILE )です。.fwファイル。Host App暗号化されたファームウェアファイルをマイクロコントローラーに送信する責任があります。.fwファイルを読み取り、ロギングまたは検証目的に必要なメタデータを抽出し、comポート(USB/UARTなど)を介してマイクロコントローラーとの接続を確立します。Host Appから暗号化されたファームウェアとメタデータを受信します。このパイプラインは、ファームウェアの更新を安全に処理し、暗号化からインストールまでのプロセスの整合性を確保します。 .fwファイルにビルド時間と日付を追加すると、各ファームウェアバージョンのさらにトレーサビリティが提供されます。
このリポジトリをクローンします:
git clone https://github.com/mayankpatel97/STM32-SPIFLASH-UART-BOOTLOADER.git
cd STM32-SPIFLASH-UART-BOOTLOADER優先IDE(STM32Cubeideなど)またはコマンドラインを使用して、ブートローダーを構成します。
ブートローダープロジェクトを構築し、STM32マイクロコントローラーにフラッシュします。
USBまたはUARTを介してSTM32デバイスをコンピューターに接続します。
提供されたPythonスクリプトを実行して、新しいファームウェアをロードします。
python firmware_loader.py --port /dev/ttyUSB0 --file firmware.binスクリプトは、転送、検証、およびバージョン管理を自動的に処理します。
ファームウェアが正常に読み込まれた後、ブートローダーはCRC16チェックを実行し、新しいファームウェアに起動するか、エラーが検出された場合は以前のバージョンに戻ります。
新しくロードされたファームウェアの問題が発生した場合、ブートローダーは自動的に他のスロットに保存されている以前のファームウェアに戻り、デバイスが動作し続けるようにします。
現在実行中のファームウェアバージョンを確認するには、次のコマンドを使用します。
python firmware_loader.py --port /dev/ttyUSB0 --versionこのプロジェクトは、MITライセンスに基づいてライセンスされています。詳細については、ライセンスファイルを参照してください。
バグや機能リクエストのプルリクエストを送信したり、問題を開いたりすることで、このプロジェクトにお気軽に貢献してください。
このブートローダーの開発に役立ったツールとライブラリを提供してくれたオープンソースコミュニティに感謝します。