(57)【要約】【課題】プログラム記憶用フラッシュメモリ内にユーザー調整データを格納する際に必要な書込み保証回数を確保する。【解決手段】フラッシュメモリ５の消去単位よりも小さい複数の記録ブロックから成る可変長レコードを使用することにより、ユーザー調整データを記録する際のメモリの利用効率を高め、更にレコードを一意に識別する番号を割り当てることにより、複数の消去ブロックに渡って散在したレコードに対しても有効なデータ管理機能を提供する。【選択図】図１
2007219793.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶領域がセクタ単位に分割され、前記セクタ単位でデータ消去可能でかつ前記セクタ単位より小さな記憶ブロック単位で書き込み可能なフラッシュメモリを備える制御装置におけるフラッシュメモリの書き込み方法であって、
ユーザーの操作に伴い変化するユーザー調整データを１以上の可変数の前記記憶ブロックに分割し、
前記ユーザー調整データが更新される毎に前記可変数の記憶ブロックに一意に識別可能な番号を付し、その未書込み領域に前記ユーザー調整データを順次、追記録するフラッシュメモリの書き込み方法。
【請求項２】
前記ユーザー調整データを記憶する領域に複数の前記セクタが割り当てられており、未書込み領域が前記セクタ内に存在しない場合には、最後に追記録されたユーザー調整データを格納しているセクタの次セクタを消去し、再度前記ユーザー調整データを書き込む請求項１記載のフラッシュメモリの書き込み方法。
【請求項３】
前記一意に識別可能な番号が、表現可能な範囲の限界に達した場合、既に記録されている他のすべて記憶ブロックの番号部分のビットをクリアすることによって重複する番号を再利用可能とする請求項１記載のフラッシュメモリの書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスプレイ表示装置やデジタルスチルカメラなど、マイクロプロセッサを制御用に組込んだ制御装置において、制御装置内での不揮発性メモリに対するデータの管理に関するものである。
【背景技術】
【０００２】
従来のマイクロプロセッサを制御用に組み込んだ制御装置において、特許文献１に開示されているように、電源が投入されていない状態でもデータを保持可能な不揮発性メモリを使用して保持するデータとしては、（１）プログラム本体などの製造工程で１度だけ書き込まれるデータ、（２）製造工程でのみ調整をおこなって書き込まれる工程調整データ、（３）ユーザーによる操作などで頻繁に変化するユーザー調整データの３種が存在する。特に電池駆動を前提とした携帯機器では必ずしも安定した電源が確保できるとは限らないため、電源供給の有無に拠らず状態を保存する機構が操作性向上のために必要不可欠である。
【０００３】
従来から装置の設定状態を保持する不揮発性メモリとして、ＥＥＰＲＯＭという電気的に書込み、読出しが可能で電源オフ期間中も書込んだデータを保持しているメモリが用いられていた。これらの、ユーザー調整データを格納するＥＥＰＲＯＭやフラッシュメモリにおけるデータ書換え回数は、装置の設計寿命期間中に例えば１００万回のデータ書換えを行ってもエラーをしないという保証が必要となる。
【０００４】
そこで、特許文献１ではフラッシュメモリの消去ブロックとは別の固定長レコードでデータを管理し、固定長レコードの大きさが消去ブロックの大きさよりも小さい場合、フラッシュメモリの消去回数が少なくなることを利用して書換え頻度の高い小さなデータ記録に対してフラッシュメモリの書き込み寿命を伸ばしている。
【特許文献１】特開２００２−７２２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されたフラッシュメモリの書き込み保証回数の増加方法では、固定長レコードに分割してデータを管理しているため、メモリの利用効率が悪く、さらに一括してユーザー調整データを削除するため、複数の消去ブロックをユーザー調整データの記憶領域に割り当てて、書込みと消去を分散させて１消去ブロックあたりの消去回数を抑制しようとした際に、全ての有効なデータが失われる瞬間が存在すること、特定の空き判定領域によって使用中ブロックの判定をするため、その領域自体がフラッシュの書き換え寿命などの理由で書き換え不可（ビットクリアが出来ない等）の状態に陥った際にはブロック全体が利用不可能になることなどの問題がある。
【０００６】
本発明は、上記課題に対し、制御用プログラムと、変更頻度の高いユーザー調整データとを同一のフラッシュメモリ内に格納する際に、従来のユーザーデータの記憶用に別途ＥＥＰＲＯＭを用意する場合と同等以上の書込み保証回数を確保することである。
【課題を解決するための手段】
【０００７】
本発明方法は、データ記憶領域がセクタ単位に分割され、前記セクタ単位でデータ消去可能でかつ前記セクタ単位より小さな記憶ブロック単位で書き込み可能なフラッシュメモリを備える制御装置におけるフラッシュメモリの書き込み方法であって、ユーザーの操作に伴い変化するユーザー調整データを１以上の可変数の前記記憶ブロックに分割し、前記ユーザー調整データが更新される毎に前記可変数の記憶ブロックに一意に識別可能な番号を付し、その未書込み領域に前記ユーザー調整データを順次、追記録する。
【０００８】
更に、前記ユーザー調整データを記憶する領域に複数の前記セクタが割り当てられており、未書込み領域が前記セクタ内に存在しない場合には、最後に追記録されたユーザー調整データを格納しているセクタの次セクタを消去し、再度前記ユーザー調整データを書き込むようにしてもよい。
【０００９】
また、前記一意に識別可能な番号が、表現可能な範囲の限界に達した場合、既に記録されている他のすべて記憶ブロックの番号部分のビットをクリアすることによって重複する番号を再利用可能とするようにしてもよい。
【発明の効果】
【００１０】
本発明は、可変数の記憶ブロックに対して書き込みを行うので、従来の固定長レコードで書き込む場合に比して消去頻度を減らすことが出来る。更に、単一のセクタに書き込みと消去を行う場合よりも書き込み保証回数を高めつつ、ユーザー調整データ領域が枯渇し一括して消去する場合に一時的に全ての有効なデータが失われていた状態が発生していた問題をも解決することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図面を用いて説明する。
【００１２】
（実施の形態１）
図１は、本発明の実施の形態によるフラッシュメモリの書き込み方法を実現する制御装置の構成を示すブロック図である。本制御装置は、種々演算と処理を行う中央処理装置（以下、ＣＰＵ）１と、主にＣＰＵ１で実行するプログラムとデータを記憶する不揮発性メモリであるフラッシュメモリ５と、主にＣＰＵ１で処理するデータを記憶する読み書き可能の揮発性メモリであるＲＡＭ４と、主にＩ／Ｏ機能を提供する周辺装置３と、そしてそれらを繋ぐバス２などから構成されている。一般にフラッシュメモリ５とＲＡＭ４を合わせて、主記憶、メインメモリあるいはシステムメモリ等と呼ばれるが、ここではシステムメモリとする。
【００１３】
図２は、実施の形態１に於けるフラッシュメモリ５上のメモリ配置を示す概念図である。フラッシュメモリ５の領域には、ＣＰＵ１で実行されるプログラムコード８、同様にプログラム実行の際に参照される定数データ９、製造工程で設定されプログラム実行の際に参照される工場調整データ１０、ユーザー操作に基づき変化するユーザー調整データ１１が置かれる。この内、ユーザー調整データ１１以外のものは、工場出荷までに１回書き込まれるだけで、書き換えることは稀であるので、固定的なデータを配置する場所である固定データ域６に配置され、ユーザー調整データ１１は可変データ域７に配置される。この固定データ域６、可変データ域７はフラッシュメモリ５上の配置を概念的に決めただけのものであり、フラッシュメモリ５の特性は同一である。従って、固定データ域６は書き換えを実施しない領域（ライトワンスメモリのような領域）、可変データ域７は書き換えを実施する領域（消去／書き込み可能な領域）として扱われる。また、それぞれは、フラッシュメモリ５の連続した複数のセクタからなる。
【００１４】
ここで、フラッシュメモリ５のデータ記録領域は、セクタ単位に分割されており、そのセクタが消去単位となる。また、書き込みは、セクタより小さい単位（記録ブロック）で行われる。また、ユーザー調整データ１１を可変データ域７に書き込む際は、そのデータ容量に合わせて可変する数の記録ブロックからなる可変長のレコードに記録される。また、可変長のレコードは一意に識別可能なレコード番号が付与される。
【００１５】
図３は、実施の形態１に於けるユーザー調整データ１１を記録するための記録処理を示すフローチャートである。また、図４は図３に於けるレコード番号初期化処理（ステップ１０１）での処理を示すフローチャートである。
【００１６】
以下、図１、２を参照し、図３、４の動作フローにしたがって説明する。
【００１７】
通常、ユーザー調整データ１１の記録処理は、ユーザーによるメニュー操作や電源断処理などで発生する。その際に、ユーザー調整データ１１はレコードの形式で書き込まれ、各レコードは、先頭が１６ビット（２バイト）のレコード番号、次にレコード長、レコードデータ本体と続き、最後にデータ妥当性確認のためのチェックサムデータで終わる。ユーザー調整データ１１の記録処理が発生する際には、必ずシステムの起動やユーザーインターフェース部分が既に動作しており、これらのシステムの動作に必要となるため、最新（最後）のユーザー調整データ１１を示すレコード、レコード番号、セクタ位置等の情報は解かっている。また、これらの情報はチェックサムによって妥当性が確認されているレコードで１〜６５５３４のレコード番号の内、最大のレコード番号をもつものを単純な線形検索によって発見できる最新（最後）のユーザー調整データを示すレコードからすべて自明に求められる。
【００１８】
最初に、最新のレコード番号に１を加えた番号を次レコードの番号とし、その次レコード番号が未使用領域を示すかどうかを判定する（ステップＳ１００）。次に、次レコード番号が未使用領域を示す番号になっていた場合は、図４に示すレコード番号初期化処理（ステップＳ１０１）を行う。それ以外の場合は、最新レコードが存在するセクタ上の未使用領域の残量がこれから追記しようとするレコードよりも大きいか否かを判定し（ステップＳ１０２）、未使用領域が不足する場合はユーザー調整データの記憶域に割り当てられた次のセクタを消去して次レコードの記録位置をその先頭にする（ステップＳ１０３）。未使用領域が不足していない場合は次レコードの記録位置は当然その未使用領域の先頭になる。新規レコードを「レコード番号（２バイト）、レコード長（１バイト）、レコードデータ（可変長）、チェックサム（１バイト）」の形式で書き込み（ステップＳ１０４）レコードの追加記録処理は終了する。
【００１９】
この内、レコード番号初期化処理（ステップＳ１０１）は、図５に示すように、ユーザー調整データ記録域の先頭セクタから順に初期化処理が終わったか判定し（ステップＳ１０５）、未処理の場合はセクタの先頭レコードから順にレコードが未使用領域（番号が０〜６５５３４）かどうか判定し（ステップＳ１０６）、使用済み（有効）レコードであれば、レコード番号を０に書き換え（ステップＳ１０８）、次のレコードに進む（ステップＳ１０９）。ステップＳ１０６の未使用領域判定ステップで未使用レコードを発見した場合は、次のセクタに処理を進め（ステップＳ１０７）、さらに未処理のセクタが無くなるまでくりかえす。
【００２０】
以上のように本実施の形態によれば、可変数の記憶ブロックに対して書き込みを行うので、従来の固定長レコードで書き込む場合に比して、効率よく書込みが行なえ、消去頻度を減らすことが出来る。更に、単一のセクタに書き込みと消去を行う場合よりも書き込み保証回数を高めつつ、ユーザー調整データ領域が枯渇し一括して消去する場合に一時的に全ての有効なデータが失われていた状態が発生していた問題をも解決することができる。
【００２１】
また、番号を単純に昇順で新規レコードに割り当てた場合、レコード番号がデータ構造上存在する表現可能範囲の限界に達した際に番号が一巡して最新の番号を識別することが出来なくなるため、これを避けるために全ビットが「１」の場合は未使用、それ以外を使用済領域として番号を割り付け、さらに全ビットが「０」の場合を無効レコード番号とし、番号が一巡する場合は既存の有効レコードのすべての番号を無効レコード番号に書き換えることにより、番号の再割り当てを可能とする。つまり、新しいレコード番号が振り出せなくなった場合、既存の全ての有効なレコードのレコード番号を書き換えて、レコード番号を再利用可能とすることができる。
【００２２】
また、ユーザー調整データの記録用に複数のセクタを割り当てている場合は、個別の前記可変長レコードの追記毎に最後のレコードが存在するセクタ内にある未書込み領域と次レコードの大きさを比較し、未書込み領域が不足する場合は次セクタ（ただし、セクタ列の最後の場合は先頭となる）を消去し、レコードの書込みを次セクタに行う。
【００２３】
以上により、本発明のフラッシュメモリの書き込み方法によれば、従来に比して１セクタあたりの消去回数を大幅に減らし、書込み保証回数を実質的に増加させることができるので信頼性の高い制御装置を提供することが可能となる。
【産業上の利用可能性】
【００２４】
本発明にかかるフラッシュメモリの書き込み方法は、新たなコストの投下無しにフラッシュメモリの利用効率と耐障害性の向上を同時に得られるという利点があり、不揮発性メオリを用いる制御装置に有用である。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態１によるフラッシュメモリの書き込み方法を実現する制御装置の構成を示すブロック図
【図２】同制御装置に於けるメモリ配置を示す概念図
【図３】同制御装置に於けるユーザー調整データの記録処理を示すフローチャート
【図４】同制御装置に於けるレコード番号初期化処理を示すフローチャート
【符号の説明】
【００２６】
１    ＣＰＵ
２    バス
３    周辺装置
４    ＲＡＭ
５    フラッシュメモリ
６    固定データ域
７    可変データ域
８    プログラムコード
９    定数データ
１０    工場調整データ
１１    ユーザー調整データ
【図１】
2007219793.tif 000003
【図２】
2007219793.tif 000004
【図３】
2007219793.tif 000005
【図４】
2007219793.tif 000006