Skip to main content

11. Flashローダ

動機#

このステップでは、外部Flashへのデータのロードについて説明します。 コンパイラは、プロジェクト内のテキスト、フォント、画像をコンパイルして、そのデータによってバイナリまたはHEXファイルを生成します。 このデータは、通常、外部Flashに格納されます。 内部Flashはコード用に使用されます。

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

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

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

目標#

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

検証#

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

検証ポイント検証内容
データをFlashできる画像の格納に外部Flashを使用できること。

前提条件#

以下に、このステップの前提条件を示します。

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

作業内容#

STM32CubeProgrammerのFlashローダ#

The STM32CubeProgrammer comes with flash loaders for the various STM32 Evaluation kits. Flashローダとは、マイクロコントローラのRAMにロードされ、Flashのプログラミングを容易にする、小さなプログラムです。

The flash loader consists of two parts:

  • Configuration of the GPIOs and flash interface that are required to communicate with the flash
  • The flashing algorithm that knows the sequence of commands required to write in the flash

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

STM32CubeProgrammerに付属するFlashローダのプロジェクトは、インストール・フォルダに保存されています。通常は、次のフォルダです。C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader

IAR Embedded Workbench、Keil、TrueStudioのソース・コード・プロジェクトとして、いくつかのFlashローダが提供されています。

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

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

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

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

テスト#

データがFlashに書き込まれたら、それを正しく読み出せることをテストします。 前のセクションで開発した、小さなテスト・プログラムを使用します。

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