メディア

フラッシュローダーとは?Q&Aで学ぶマイコン講座(33)(3/3 ページ)

» 2016年12月26日 11時00分 公開
前のページへ 1|2|3       

ユーザーがフラッシュメモリ書き込みプログラムを作る場合

 ブートローダーと同じ機能をユーザーが作ることもできます。通常のプログラムコードのほかに、ブートローダーと同じ機能のプログラムを作って、フラッシュメモリの別の場所に置いておきます。そして、あらかじめ決められた汎用IOのレベルで、どちらのプログラムを実行するかを決める判定用のプログラムを、初期ルーティンの中に入れておきます。例えば、汎用IOのレベルがHighならば、通常のプログラムを実行し、Lowであればブートローダーのプログラムが実行されるようにします。汎用IOのレベルをMOSFETで遠隔操作できるようにしておけば、ブートローダーと同じ機能が実現できます(図4)。

 この場合、使用する通信機能はユーザーが決められるので、ブートローダーで決められている通信機能以外の通信が可能です。

図4:ユーザーが作成したフラッシュメモリ書き換えプログラムを使用する場合 (クリックで拡大)

 ブートローダーと同じ機能と述べましたが、実際はフラッシュメモリのプログラムを実行しながら、同じフラッシュメモリのエリアを書き換えることができません(自分自身でブートローダー機能のプログラムを書き換えてしまうことになります)。

 そこで一度、内蔵RAMまたは内蔵EEPROMにプログラムを移して、フラッシュメモリ以外のメモリ上でプログラムを実行します(ただし、バンク切り替え構造のフラッシュメモリは、別のバンクの書き換えは可能)。

 STM32ファミリーでは、フラッシュメモリでもRAMでもEEPROMでもプログラムを実行できますので、フラッシュメモリに書かれているブートローダー機能のプログラム一式をいったん、RAMに移してから実行します。そして、フラッシュメモリの内容が書き換わったら、再起動します。再起動の時点では、もうRAM上のプログラムは必要ありませんので、消えてしまっても問題はありません。

 このようにすることで、ブートローダーと同じ機能を実現できますし、この場合はユーザーがプログラムの内容を自由に作成できますので、ブートローダーよりも柔軟性の高いフラッシュメモリ書き換え機能が可能になります。

『次回の掲載をメールで受け取る』

連載バックナンバーはこちら

次の記事を読む

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.