フラッシュメモリの書き換え方法は各マイコンの仕様で異なります。しかし、大別すると次の3種類の方法が挙げられます。
「2.」と「3.」は、マイコンに搭載されている通信機能でプログラムコードを受け取り、それを順次フラッシュメモリに書き込む方法です。「2.」では、書き換え機能がマイコンメーカーによって作られていますので、使用できる通信機能は決めれています。しかし、「3.」では、ユーザーが自由に決められます。例えば、USARTやUSBなどを使っている製品であれば、そのインタフェースをフラッシュメモリ書き換え用に利用できます。
ここでは、ARM Cortex-Mプロセッサを搭載したSTマイクロエレクトロニクスの「STM32」ファミリーを例にとって、詳しく説明します。
マイコンのプログラムを開発する際に最低限必要なものは、PCとターゲットボード、統合開発環境(ハードウェアとアプリケーションソフト)、デバッグケーブルの4点になります。PC上で統合開発環境のアプリケーションソフトを使ってプログラムを開発し、統合開発環境のハードウェア(JTAGなど)を使って、ターゲットボード上のマイコンにプログラムを書き込みます(図2参照)。
この仕組みを入れておけば、製品化した後でも、出荷後でもフラッシュメモリを書き換えることが可能です。しかし、この際に使用されるインタフェースは統合開発環境専用の通信になりますので、製品本来の仕様とは関係ないハードウェアを組み込まなくてはなりません。また、書き換える際にPCまたはそれ相当の装置が必要ですので、インターネットやUSB通信などを使ったアップデートには向いていません。
マイコン自体にフラッシュメモリ書き換え機能が内蔵されている場合、出荷した後でも、その機能を使ってフラッシュメモリを書き換えることが可能です(図3)。
STM32ファミリーではこの機能を「ブートローダー」と呼んでいます。Boot1ピンとBoot0ピンが設けられており、通常は両ピンともLowレベルに固定して使用します。しかし、ブートローダーを起動する場合、Boot1ピンをLowレベル、Boot0をHighレベルにします。その状態で、マイコンを起動すると、フラッシュメモリ内のユーザープログラムではなくブートローダーのプログラムが起動します。
ブートローダーはマイコンに内蔵されている通信機能(USART、USB、SPIなど)を使って、フラッシュメモリの内容をシリアル通信で受け取り、順次フラッシュメモリに書き込みます。使用可能な通信機能は複数あり、ブートローダーが各通信機能の端子状態をチェックし、通信可能な機能を自動的に探し出して通信を始めます。Boot1ピンとBoot0ピンのレベルはMOSFETなどによってHigh/Lowレベルを遠隔操作が可能な回路にしておけば、インターネットやUSB通信などでアップデートすることが可能です。
Copyright © ITmedia, Inc. All Rights Reserved.