STM32マイクロコントローラー用のカスタマイズ可能なブートローダー。このプロジェクトには、さまざまなハードウェアのデモンストレーションFAT32ファイルシステムを備えた外部SDカードにあるファームウェアのアプリケーション内プログラミングを実行する方法が含まれています。
各例ではlib/stm32-bootloaderフォルダーにある同じブートローダーライブラリを使用しています。例はprojectsフォルダーにあり、その特定の実装に関連する説明がある別の専用READMEファイルが付属しています。
更新: STM32L496-Discoveryの例は、IAR Ewarmに加えて、GNU ARM埋め込みツールチェーン(ARM GCC)をすぐに使用できます。詳細については、Project ReadMeをご覧ください。
ブートローダーライブラリソースコードの完全なドキュメントについては、https://akospasztor.github.io/stm32-bootloaderを参照してください。
Repository
├── docs
├── drivers
│ ├── CMSIS
│ └── STM32L4xx_HAL_Driver
├── lib
│ ├── fatfs
│ └── stm32-bootloader
└── projects
├── STM32L476-CustomHw
├── STM32L496-CustomHw
└── STM32L496-Discovery
docsフォルダーには、ブートローダーソースコードとその他のドキュメント関連の静的ファイルの生成されたドキュメントが含まれています。
driversフォルダーには、CMSIS(Cortex Microcontroller Software Interface Standard)と、STのHAL(ハードウェア抽象化レイヤー)ドライバーが含まれています。
ブートローダーソースコードと対応するヘッダーファイルは、 lib/stm32-bootloaderフォルダーにあります。さらに、 libフォルダーにはFATFSライブラリも含まれています。
さまざまなデモンストレーションはprojectsフォルダーにあります。各例プロジェクトには、ヘッダーとソースのファイルがそれぞれ配置されているincludeとsourceフォルダーが含まれています。コンパイラとSDK固有のファイルは、それぞれのサブフォルダーにあります。さらに、すべての例プロジェクトには、その機能を詳細に説明する専用のREADMEファイルがあります。
このリポジトリには、次の例が含まれています。
| マイクロコントローラー | ハードウェア | プロジェクトパス |
|---|---|---|
| STM32L476VG | カスタム | プロジェクト/STM32L476-CUSTOMHW |
| STM32L496VG | カスタム | プロジェクト/STM32L496-CUSTOMHW |
| STM32L496AG | 32L496GDISCOVERY | プロジェクト/STM32L496ディスコーブリー |
ブートローダーは、必要なハードウェアと環境に合わせて簡単にカスタマイズして調整できます。つまり、さまざまなインターフェイスでファームウェアの更新を実行したり、ハードウェアにワイヤレス通信モジュールが組み込まれている場合にオーバーザエア(OTA)アップデートを実装することもできます。アプリケーション内プログラミングを成功させるには、次のシーケンスを保持する必要があります。
Bootloader_Init()でフラッシュを初期化します。Bootloader_Erase()を使用してアプリケーションスペースを消去します。Bootloader_FlashBegin()を呼び出してプログラミングの準備をします。Bootloader_FlashNext()関数を繰り返し呼び出してプログラミングを実行します。プログラミング手順では、8バイトのデータ(ダブルワード)をフラッシュにすぐにプログラムする必要があります。この関数は、データが記述されているアドレスを自動的に増やします。Bootloader_FlashEnd()を呼び出してプログラミングを完成させます。アプリケーション画像はバイナリ形式でなければなりません。チェックサムの検証が有効になっている場合、バイナリには画像の最後にチェックサム値を含める必要があります。アプリケーション画像を作成するとき、チェックサムは、次のパラメーターを使用して画像全体(チェックサムエリアを除く)で計算する必要があります。
重要なメモ:
system_stm32xxxx.cファイルでベクトルテーブルオフセットを0x0000に設定します。これを無効にする必要があります(ジャンプ前にベクトルテーブルの再配置を実行するようにブートローダーを構成することができます)または、アプリケーションスペースの開始アドレスである適切なオフセット値にベクトルテーブルオフセットレジスタ(VTOR)を手動で設定する必要があります。詳細については、[1]を参照してください。ブートローダーは、 bootloader.hファイルで広く構成できます。ファイルには、構成可能なパラメーターと定義に関連する詳細なコメントと説明が含まれています。
[1] PM0214、「STM32F3シリーズ、STM32F4シリーズ、STM32L4シリーズ、STM32L4+シリーズCortex®-m4プログラミングマニュアル」、http://www.st.com/en/en/programming_manual/dm00046982.pdf