フラッシュメモリをEEPROMとして使う「裏技」:Q&Aで学ぶマイコン講座(47)(2/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。47回目は、中級者の方からよく質問される「フラッシュメモリをEEPROMとして使う裏技」についてです。
2048バイトページのフラッシュメモリの操作例
説明を簡単にするために、ページ消去(2048バイト単位)のフラッシュメモリを利用した場合の例を使います。ここでは、ページ0の開始アドレスを0番地、ページ1の開始アドレスを2048番地として、ページ0とページ1を使うことにします(図2)
例えば、システム設計者が256バイトのデータを保存したい場合、まず、仮想アドレスとして0〜255番地を定義し、それを実メモリ空間の0〜255番地に割り当て、データを保存します。その後、データを更新する場合は、仮想アドレス空間の0〜255番地を実メモリ空間の256〜512番地に割り当て直して書き込みます。
この際、保存している256バイトのデータの中で更新されなかったデータの処理については検討が必要です。更新の有無にかかわらず、256バイト全部を一括で移動するのが管理上簡単ではありますが、更新していないデータ数の分だけフラッシュメモリの書き換え回数にロスが発生しますので、システム設計者が管理方針を決める必要があります。
データを更新する場合は、その都度、仮想アドレス空間の0〜255番地を実メモリ空間の新しいエリアに割り当て直してデータを保存していきます。そのため、システム設計者は最新のデータが実メモリ空間のどこにあるかをソフトウェアで管理しなければなりません。データを読み出したい場合は、最新の実メモリ空間のエリアから読み出します。
この操作を8回繰り返すと、ページ0を使い切りますので、その際はページ1に移って、同じ操作を繰り返します。ページ1に移った後はページ0のデータは不要ですので、消去します。そしてページ1も使い切ったら、再びページ0の先頭にもどって、同じ操作を繰り返します。
この操作で、見かけ上はフラッシュメモリを256バイトのEEPROMのデータ領域として扱えるようになります。今回の例では扱う単位を256バイトにしましたが、もっと少なくすると、もっと細かいデータの扱いができるようになります。いずれにしろ、フラッシュメモリを消去するタイミングはページが満杯になった時です。
欠点と利点
利点
フラッシュメモリは、通信によってデータをアクセスする外付けEEPROMに比べるとデータアクセス時間が短いため、データを高速に管理できるようになり、データ処理効率が上がります。さらに、外付けEEPROMとその通信ソフトウェアが不要になるので、部品点数の削減やソフトウェア効率の向上につながります。
欠点
フラッシュメモリの使用容量が増えます。増分は、実際に保存するデータ量と更新回数に依存します。一般的に、フラッシュメモリの容量が大きいマイコンの方が高価格なので、「マイコンの価格アップ」というデメリットと、「外付け部品の削減」 「データ処理効率向上」 「ソフトウェア効率向上」というメリットを天びんにかけて選択することになります。
今回の方法はソフトウェアで管理しますので、仮想アドレス空間のデータ処理の最中に、それよりも優先順位の高い割り込みが入ると中断されます。CPUにリセットが入る場合も同様にデータ処理が中断されます。従って、割り込み処理とリセット処理に対する影響を考慮して、適切な処理を実施する必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.