メイン・コンテンツまでスキップ

11. Flashローダ

動機

In this step, we will discuss how to load data into external flash memory. The compiler compiles the application code and assets in your project into a binary or hex file. Depending on the specifications in the linker script, parts of the binary or hex file will be placed in internal flash, while other parts will be placed in external flash. Typically, assets such as images and fonts are stored in external flash, whereas the application code is stored in internal flash.

開発中は、外部Flashにデータを書き込む手段が必要ですが、実行時はFlashから読み出すだけであるため、これは不要になります。

開発中は、外部Flashにデータを書き込む手段が必要ですが、実行時はFlashから読み出すだけであるため、これは不要になります。

  • STM32CubeProgrammerのFlashローダを作成する
  • 独自アプリケーションに基づく方法を使用する
Note
外部Flashが存在しない場合は、このステップをスキップしてください。

目標

外部Flashへのデータ書込みには一般的に次の2つの方法があります。

検証

このセクションの目標は、外部Flashにデータをロードするメカニズムを選択し、開発することです。

検証ポイント検証内容
Data can be flashed to the external flashExternal flash can be used for storage

前提条件

次の表に、このセクションの検証ポイントを示します。

  • Flashに関する情報(通常はデータシート)
  • マイクロコントローラと外部Flashの接続に関する情報

作業内容

STM32CubeProgrammerのFlashローダ

STM32CubeProgrammerには、各種STM32評価キット用のFlashローダが付属しています。 The flash loaders are small programs that are loaded to the RAM of the MCU and executed during flashing to facilitate the programming of the flash.

Flashローダは以下の2つの部分から構成されます。

  • Flashとの通信に必要なGPIOとFlashのインタフェースの設定
  • Flashへの書込みに必要なコマンド・シーケンスに対応したFlashアルゴリズム

これらの部分は、多くの場合、既存のFlashローダに基づきます。 使用するFlashのローダを入手できた場合は、それを起点として、GPIOの部分を変更します。 評価キットのFlash回路をコピーしてハードウェアを設計する場合は、そのキットのFlashローダをそのまま使用できます。

The flash loader projects provided with STM32CubeProgrammer are found in the installation folder, which is C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader if it is installed in the default directory.

Flash loader projects can also be found here on github: STM32 External Flashloaders on GitHub.

独自アプリケーションに基づく方法

もう一つの方法として、Flashのロードをアプリケーション自体に組み込む方法があります。 これは、アプリケーションにすでにFlashの設定(Flashからロードできるようにするための設定)があるので、前のテストで実行したようにFlashにブロックを書き込む方法もわかっているだろうという考え方に基づいています。 その場合に必要になるのは、新しいFlashデータをアプリケーションに転送する方法だけになります。 その方法の一つがUARTです。 アプリケーションはデータ・ストリームを受信し、そのデータをブロック単位でFlashに書き込みます。

Flashは動作中にメモリ・マップド・モードにはできないため、通常はアプリケーションを特別なモードにする必要があります。

バイト送信のオープン・ソース・ソリューションはインターネットから入手できます。 サンプルのY-modemプロトコルでは、データに16bitのCRCが付加されます。

テスト

バイト送信のオープン・ソース・ソリューションはインターネットから入手できます。 サンプルのY-modemプロトコルでは、データに16bitのCRCが付加されます。

すべてのバグを早期に発見するために、ここでFlash全体を徹底的にテストすることを推奨します。