メディア
連載
» 2017年01月26日 11時00分 公開

Q&Aで学ぶマイコン講座(34):RAMで命令を実行する方法 (3/3)

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

フラッシュメモリからプログラムをRAMに転送して実行する方法

 RAMで実行したいプログラムコードをいったんフラッシュメモリに書き込みます。最初はフラッシュメモリでプログラムを実行し、そのコードをRAMに移し終わったらRAMへジャンプして、それ以降はRAMでプログラムを実行する方法があります(図3参照)。

図3 図3:フラッシュメモリから命令をRAMに転送してから、実行する方法 (クリックで拡大)

 この方法はマイコンやIDEの仕様に制限されません。RAM上でプログラムが実行できるマイコンであれば、ほとんどの場合に適用できます。

 また、プログラムコードはユーザーが自由に作れますので、ハードウェアで設定する方法に比べ、ユーザーにとってかなり自由度の高い方法です。

RAMで命令実行するメリット、デメリット

 RAM実行の際のメリット、デメリットをリストアップします。

メリット

1)ゼロウェイト実行が可能

 RAMはフラッシュメモリと違って、アナログ要素が少なく(アナログ部はデータのセンスアンプなどのみ)、ほとんどが論理回路で構成されているので、読み出しは1サイクルで可能です。したがって、ゼロウェイトでプログラム実行ができます。

2)フラッシュメモリよりもRAMの方が消費電流が少ない

 フラッシュメモリは、内部に専用の電源を持っており、動作中の消費電流はRAMよりも大きくなります。マイコンによっては、低消費電力モードや、RAMでプログラム実行する間はフラッシュメモリの機能を停止させ、消費電流を少なくできる機能が付いているものもあります。その機能を利用してRAMでプログラム実行すると、フラッシュメモリ分の消費電流を低減することができます。

デメリット

1)メモリ容量が小さく、実行可能なプログラム容量に制限

 最近では大容量のRAMを搭載したマイコンもありますが、それでもフラッシュメモリの容量に比較するとRAMの容量は小さいので、実行できるプログラムサイズが制限されます。

2)ベクタテーブルもRAM上に移動しないと、割り込み処理ができないケース

 通常、割り込みベクタはフラッシュメモリ上に配置されています。メリットの2)でフラッシュメモリの機能を止めて、RAMだけでプログラムを実行する場合、もし割り込みが入った時に、割り込みベクタを読み出せなくなります。したがって、割り込みベクタもRAM上に移す機能がないと、割り込み処理ができません。マイコンによっては、プログラムはRAM上で実行できても、割り込みベクタが移せないものがありますので、マニュアルで仕様の確認が必要です。

3)電源オフで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.