RAMで実行したいプログラムコードをいったんフラッシュメモリに書き込みます。最初はフラッシュメモリでプログラムを実行し、そのコードをRAMに移し終わったらRAMへジャンプして、それ以降はRAMでプログラムを実行する方法があります(図3参照)。
この方法はマイコンやIDEの仕様に制限されません。RAM上でプログラムが実行できるマイコンであれば、ほとんどの場合に適用できます。
また、プログラムコードはユーザーが自由に作れますので、ハードウェアで設定する方法に比べ、ユーザーにとってかなり自由度の高い方法です。
RAM実行の際のメリット、デメリットをリストアップします。
RAMはフラッシュメモリと違って、アナログ要素が少なく(アナログ部はデータのセンスアンプなどのみ)、ほとんどが論理回路で構成されているので、読み出しは1サイクルで可能です。したがって、ゼロウェイトでプログラム実行ができます。
フラッシュメモリは、内部に専用の電源を持っており、動作中の消費電流はRAMよりも大きくなります。マイコンによっては、低消費電力モードや、RAMでプログラム実行する間はフラッシュメモリの機能を停止させ、消費電流を少なくできる機能が付いているものもあります。その機能を利用してRAMでプログラム実行すると、フラッシュメモリ分の消費電流を低減することができます。
最近では大容量のRAMを搭載したマイコンもありますが、それでもフラッシュメモリの容量に比較するとRAMの容量は小さいので、実行できるプログラムサイズが制限されます。
通常、割り込みベクタはフラッシュメモリ上に配置されています。メリットの2)でフラッシュメモリの機能を止めて、RAMだけでプログラムを実行する場合、もし割り込みが入った時に、割り込みベクタを読み出せなくなります。したがって、割り込みベクタもRAM上に移す機能がないと、割り込み処理ができません。マイコンによっては、プログラムはRAM上で実行できても、割り込みベクタが移せないものがありますので、マニュアルで仕様の確認が必要です。
フラッシュメモリと違って、RAMは電源を切った時点で、内部データが全て消えますので、再度電源を投入した際は、またプログラムを書き込む必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.