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

11. Flashローダ

動機

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

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

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

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

目標

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

検証

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

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

前提条件

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

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

作業内容

STM32CubeProgrammerのFlashローダ

STM32CubeProgrammerには、各種STM32評価キット用のFlashローダが付属しています。 Flashローダとは、マイクロコントローラのRAMにロードされ、Flashのプログラミングを容易にする、小さなプログラムです。

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

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

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

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

FlashローダのプロジェクトはGitHubにもあります。

GitHubにあるSTM32外部Flashローダ

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

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

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

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

テスト

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

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