連載
» 2016年12月26日 11時00分 UPDATE

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

[菅井賢(STマイクロエレクトロニクス),EDN Japan]
前のページへ 1|2|3       

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

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

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

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

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

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

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

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

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

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

前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

MONOist×JOBS

【年収1000万以上】人気求人ランキング

半導体開発<自動車用半導体パワーデバイス>

機構設計<新蓄電デバイスモジュール>

機械設計(変圧器)

燃料電池自動車(FCEV、FCV)開発戦略マネージャー

システムエンジニア/TPM<VED>

RSSフィード

EDN 海外ネットワーク

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.