(57)【要約】      （修正有）【課題】不揮発性メモリにおいて書き込みエラーが生じた場合の各番地の書き込み回数の偏りを防止する。【解決手段】複数の記録領域を有する書き換え可能な不揮発性の記録手段１１１に対して、記録手段で保持する保持データの書き込みを制御する。記録領域における保持データの状態を判定するための判定データおよび保持データを含む記録データを生成する生成部２０３と、複数の記録領域に対して、記録データの書き込みを開始する開始領域から書き込みを終了する最終領域まで、所定の順番で記録領域ごとに記録データの書き込みを行う書き込み部２０１と、を有する。生成部は、保持データに含まれない特定のビット列から形成される判定データを生成し、書き込み部は、最終領域への書き込みを行った後、複数の記録領域の各々における判定データを書き込む位置を変更して、記録データの書き込みを開始する。【選択図】図２
2017076249.tif 000002
【特許請求の範囲】
【請求項１】
複数の記録領域を有する書き換え可能な不揮発性の記録手段に対して、該記録手段で保持する保持データの書き込みを制御するメモリ制御装置において、
前記記録領域における前記保持データの状態を判定するための判定データおよび前記保持データを含む記録データを生成する生成部と、
前記複数の記録領域に対して、前記記録データの書き込みを開始する開始領域から前記書き込みを終了する最終領域まで、所定の順番で前記記録領域ごとに前記記録データの書き込みを行う書き込み部と、を有し、
前記生成部は、前記保持データに含まれない特定のビット列から形成される前記判定データを生成し、
前記書き込み部は、前記最終領域への書き込みを行った後、前記複数の記録領域の各々における前記判定データを書き込む位置を変更して、前記記録データの書き込みを開始することを特徴とするメモリ制御装置。
【請求項２】
前記書き込み部は、前記記録データの書き込みを終了した後、前記記録領域において前記判定データを書き込む位置と前記保持データを書き込む位置とを入れ替えて前記記録データの書き込みを開始することを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記所定の順番で前記記録領域の前記判定データの読み込みを行う読み込み部と、
前記読み込み部によって読み込まれた前記判定データについて判定処理を行う判定部と、を更に有し、
前記判定部は、前記読み込み部によって読み込まれた前記判定データに基づいて、前記所定の順番において連続する２つの記録領域に書き込まれた前記判定データの記録領域における位置を比較し、比較結果に基づいて、最新の記録データが保存されている記録領域を判定することを特徴とする請求項１又は２に記載のメモリ制御装置。
【請求項４】
前記判定部は、前記所定の順番の連続する第１の記録領域と第２の記録領域との間で前記判定データの記録領域における位置が異なると判定した場合は、前記第１の記録領域に最新の記録データが保存されていると判定することを特徴とする請求項３に記載のメモリ制御装置。
【請求項５】
前記判定部は、前記最終領域まで、前記所定の順番において連続する２つの記録領域の間で、前記判定データの記録領域における位置が異なるとする判定が行われなかった場合は、前記最終領域に最新の記録データが保存されていると判定することを特徴とする請求項３又は４に記載のメモリ制御装置。
【請求項６】
前記判定部は、前記読み込み部によって読み込まれた記録領域の前記記録データに前記特定のビット列がない場合、該記録領域に対する前記記録データの書き込みは失敗したと判定すること特徴とする請求項５に記載のメモリ制御装置。
【請求項７】
前記所定の順番で前記記録領域の前記判定データの読み込み行う読み込み部と、
前記読み込み部によって読み込まれた前記記録データについて判定処理を行う判定部と、を更に有し、
前記判定部は、前記複数の記録領域の各々に対してデータが書き込み不能か否かを判定し、
前記書き込み部は、前記判定部によってデータを書き込み不能な記録領域であると判定された場合に、前記所定の順番において該記録領域の直前および直後の記録領域に、書き込み不能な記録領域があることを示すデータの書き込みを行うことを特徴とする請求項１から６のうちいずれか１項に記載のメモリ制御装置。
【請求項８】
前記書き込み部は、
データが書き込み不能と判定された記録領域の直前の記録領域に、該記録領域の後に書き込み不能な記録領域があることを示すデータの書き込みを行い、
データが書き込み不能と判定された記録領域の直後の記録領域に、該記録領域の前に書き込み不能な記録領域があることを示すデータの書き込みを行うことを特徴とする請求項７に記載のメモリ制御装置。
【請求項９】
前記書き込み部は、１つの記録領域が前記書き込み不能な記録領域に挟まれている場合には、該１つの記録領域には前記書き込み不能な記録領域があることを示すデータの書き込みを行わないことを特徴とする請求項７又は８に記載のメモリ制御装置。
【請求項１０】
撮像装置に着脱可能なレンズ装置であって、
撮像素子に被写体からの光を導く撮影光学系と、
前記撮影光学系に関する情報を記憶する請求項１から９のうちいずれ１項に記載のメモリ制御装置と、を有することを特徴とするレンズ装置。
【請求項１１】
請求項１０に記載のレンズ装置と、
前記撮影光学系からの光を光電変換する撮像素子と、を有することを特徴とする撮像装置。
【請求項１２】
複数の記録領域を有する書き換え可能な不揮発性の記録手段に対して、該記録手段で保持する保持データの書き込みを制御するメモリ制御方法において、
前記記録領域における前記保持データの状態を判定するための判定データおよび前記保持データを含む記録データを生成する生成ステップと、
前記複数の記録領域に対して、前記記録データの書き込みを開始する開始領域から前記書き込みを終了する最終領域まで、所定の順番で前記記録領域ごとに前記記録データの書き込みを行う書き込みステップと、を有し、
前記生成ステップは、前記保持データに含まれない特定のビット列から形成される前記判定データを生成し、
前記書き込みステップは、前記最終領域への書き込みを行った後、前記複数の記録領域の各々における前記判定データを書き込む位置を変更して、前記記録データの書き込みを開始することを特徴とするメモリ制御方法。
【請求項１３】
請求項１２に記載のメモリ制御方法をコンピュータに実行させるプログラム。
【請求項１４】
請求項１３に記載のプログラムを記憶した、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録媒体に対してデータの書き換えを行うメモリ制御に関する。
【背景技術】
【０００２】
不揮発性メモリには、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＥＥＰＲＯＭの一種であるフラッシュＲＯＭ等がある。これらの不揮発性メモリでは、書き込みの度に書き込み番地を変更し、各番地への書き込み回数を均一化させる手法が一般に用いられている。これにより、記録を行う番地の数に比例して、メモリの全体の書き込み回数の上限が増加する。
【０００３】
特許文献１は、さらに、上記手法においてシステム起動後の初回の読み込み／書き込み時にどの番地のデータが最新のデータであるかを判別するために、各番地への書き込みデータに判定領域を設けることを開示している。具体的には、複数の記憶ブロックの中で先頭番地から最終番地まで順番に書き込みを行い、最終番地への書き込みが終了すると判定領域のデータを変化させ、再度先頭番地から順次書き込みを行う。初回の読み込み／書き込み時には判定領域をチェックし、次番地と判定領域のデータが異なる番地が最新のデータを記憶している番地だと判定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１７０５９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の書き込み回数の上限を増加させる手法は、全ての書き込みが正常に完了することを前提としている。
【０００６】
書き込み処理中の電源遮断などにより書き込み処理が正常に終了しなかった場合、ＥＥＰＲＯＭには書き込みエラーにより予期しないデータが書きこまれる可能性がある。しかし、データ読み込み時には読み込みデータが書き込みエラーによる間違ったデータなのかを判断する事ができない。そのため、書き込みエラーの発生により、判定領域が予期しない値に変わってしまった場合は、最新データの判別に失敗し、また均一化されていた各番地の書き込み回数に偏りが生じる。
【０００７】
本発明は、書き込みエラーが生じた場合の各番地の書き込み回数の偏りを防止するメモリ制御装置、及びメモリ制御方法等を提供する。
【課題を解決するための手段】
【０００８】
本発明の一側面としてのメモリ制御装置は、記録領域における保持データの状態を判定するための判定データおよび保持データを含む記録データを生成する生成部と、複数の記録領域に対して、記録データの書き込みを開始する開始領域から書き込みを終了する最終領域まで、所定の順番で記録領域ごとに記録データの書き込みを行う書き込み部とを有する。生成部は、保持データに含まれない特定のビット列から形成される判定データを生成し、書き込み部は、上記最終領域への書き込みを行った後、複数の記録領域の各々における判定データを書き込む位置を変更して、上記記録データの書き込みを開始することを特徴とする。
【０００９】
本発明の別の側面としてのメモリ制御方法は、記録領域における保持データの状態を判定するための判定データおよび保持データを含む記録データを生成する生成ステップと、複数の記録領域に対して、記録データの書き込みを開始する開始領域から書き込みを終了する最終領域まで、所定の順番で記録領域ごとに記録データの書き込みを行う書き込みステップと、を有する。生成ステップは、保持データに含まれない特定のビット列から形成される判定データを生成し、書き込みステップは、最終領域への書き込みを行った後、複数の記録領域の各々における判定データを書き込む位置を変更して、上記記録データの書き込みを開始することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、書き込みエラーが生じた場合に番地の書き込み回数の偏りを防止することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例１および２における撮像装置を示す図である。
【図２】実施例１および２におけるメモリ制御装置を示す図である。
【図３】実施例１および２におけるメモリへ書き込むデータのデータ構造についての説明図である。
【図４】本発明の実施例１における書き込みデータ処理ついての説明図である。
【図５】実施例１における書き込みエラーが発生した場合の処理の説明図である。
【図６】実施例１における書き込み処理のフローチャート図である。
【図７】実施例１における読み込み処理のフローチャート図である。
【図８】本発明の実施例２における書き込み不良番地が発生した場合の処理の説明図である。
【図９】実施例２おける書き込み不良番地が端に発生した場合の処理の説明図である。
【図１０】実施例２における複数の書き込み不良番地が発生した場合の処理の説明図である。
【図１１】実施例２における不良番地を示す目印に挟まれた番地で書き込み不良番地が発生した場合の処理の説明図である。
【発明を実施するための形態】
【００１２】
以下に、本発明の実施例について図面を参照しながら説明する。
【実施例１】
【００１３】
図１は、本発明の実施例１におけるレンズ交換式カメラシステム１００のブロック図である。
【００１４】
レンズ交換式カメラシステム１００は、カメラ本体に対して着脱可能な交換レンズ１１３と交換レンズ１１３が装着されるカメラ本体１３１とから構成される。
【００１５】
本実施例において、交換レンズ１１３内の撮影光学系、すなわち第1レンズ１０１、ズームレンズ１０２、絞り１０３、ＮＤフィルタ１０４、フォーカスレンズ１０５、第４レンズ１０６が、被写体からの光をカメラ本体１３１へ導く。カメラ本体１３１内のミラー１２３は光の進む向きを変え、ペンタプリズム１２１は被写体像の向きを逆転しファインダー１２２へ導く。
【００１６】
ミラー１２３の一部はハーフミラーになっており、当該ハーフミラーを透過した光は不図示の小ミラーによってＴＴＬ位相差検出素子などによって構成されるデフォーカス検出部１２７に導かれる。デフォーカス検出部１２７はデフォーカス量を測定し、測定したデフォーカス量をカメラマイコン１２９に送る。また、ミラー１２３は不図示の駆動装置にて光路から退避できるようになっており、ミラー１２３が退避した場合、撮影光学系によって導かれた被写体からの光は撮像素子１２４によって光電変換される。
【００１７】
撮像素子１２４の光電変換による電気映像信号は信号処理部１２５に送られ、信号処理部１２５は信号増幅などの信号処理を施すことでデジタル映像信号を生成する。信号処理部１２５は、さらに色補正、ホワイトバランスなどの撮像処理も施し、処理を施した信号を映像データとして記録処理部１２６へ出力する。記録処理部１２６は、映像データを記録する。記録処理部１２６に記録された映像データは、不図示の電子ファインダーに表示することができる。
【００１８】
また、信号処理部１２５は、映像データをコントラスト信号生成部１２８にも出力する。コントラスト信号生成部１２８は、輝度信号の複数の特定領域分においてハイパスフィルターによって摘出した高周波成分の量を積分した１つもしくは複数の高周波信号積分値を利用することによってコントラスト信号を生成し、カメラマイコン１２９へ出力する。このコントラスト信号の値の大小によってフォーカスレンズの合焦状態を判別できる。
【００１９】
なお、特開２０１１−１７８００等に開示されているような、撮像素子に位相差を測定するための素子を設けるセンサ一体型位相差検出方式を用いてもよい。この場合、デフォーカス検出部１２７と撮像素子１２４を一体化し、位相差もコントラストＡＦも撮像素子１２４で行う。
【００２０】
カメラマイコン１２９とレンズマイコン１１２は、所定の周期又は必要に応じて、相互通信を行う。カメラマイコン１２９は、レンズマイコン１１２にレンズ制御データ（フォーカスレンズ駆動命令（駆動パルス）、光学情報取得命令、絞り命令等）を送る。一方、レンズマイコン１１２は、レンズの各種情報（レンズ位置、敏感度、焦点距離、撮影距離、被写体距離、像距離、ベストピント補正値、開放Ｆ値、最小Ｆ値、射出瞳値、像高射出瞳値、補正値、１パルスあたりのレンズの繰り出し量等の光学情報）を送る。これらの通信により、自動露出、自動調光、自動焦点調節が行われる。レンズマイコン１１２は、カメラマイコン１２９から受け取った各種レンズ制御データに基づいて各種部位を動作させる。
【００２１】
絞り駆動部１０８は、レンズマイコン１１２からの指令に応じて絞り１０３を駆動することで、絞り量を変更する。本実施例では、ステッピングモータやＶＣＭ等と、コイルに流れる電流を感知するホールセンサーや端位置を検知するセンサを用いて絞り位置を検知する検知器とによって絞り駆動部１０８を構成する。
【００２２】
ＮＤフィルタ１０４は、不図示のメカ切替器によるユーザの操作によって、光軸上に出し入れ可能になっている。ＮＤフィルタ１０４が挿入されているのか否かは、レンズマイコン１１２がフォトインターラプタから構成される不図示のＮＤ検知部からの信号に基づいて検出する。具体的には、レンズマイコン１１２は、ＮＤフィルタ１０４の挿入により光が遮られることでＮＤ検知部からの電気信号変化に基づいて上記検出を行う。また、ＮＤフィルタを複数枚変更できるような構成やカラーフィルタなど他の光学部材も選択できるような構成にしてもよい。
【００２３】
ズームレンズ１０２は、該ズームレンズ１０２と機械的に連動した不図示の操作部をユーザが操作することで繰り出される。これにより、ユーザは自由にズームすることができる。また、可変抵抗などのセンサで構成されたズームレンズ位置検出部１０７が、ズームレンズ１０２のズームレンズ位置を検出し、レンズマイコン１１２内のＡ／Ｄ変換機がそのズームレンズ位置のデータをデジタルデータに変換する。このデジタルデータは、ズーム位置の制御に用いられる。
【００２４】
フォーカスレンズ駆動部１０９は、レンズマイコン１１２からの移動命令に応じて、フォーカスレンズ１０５を光軸方向に駆動する。レンズマイコン１１２は、フォーカスレンズ駆動部１０９へ命令した移動量を記憶することでフォーカスレンズの現在位置を検出することができる。
【００２５】
情報表示部１１０は、外部から視認できる位置に配置され、レンズマイコン１１２からの表示命令によってカメラやレンズから得られた情報を表示する。
【００２６】
不揮発性メモリ１１１はＥＥＰＲＯＭであり、交換レンズ１１３への電源供給が途絶えたとしても記憶した情報を保持することができる。本実施例の不揮発性メモリ１１１は、レンズマイコン１１２から得られたズームレンズ１０２の情報や情報表示部１１０に表示する設定データ（現在の表示モード、白黒反転、ＬＣＤ機能ＯＮ／ＯＦＦ情報）を複数の記録領域に後述の保持データとして記憶する。
【００２７】
ここで、不揮発性メモリ１１１は、各番地（記録領域）に後述の判定領域とデータ格納領域を有している。「データ格納領域が判定領域と同じビット列にならない」と言う条件が満たせるデータであれば、上記以外のデータを本発明の不揮発性メモリ１１１に保存させることができる。後述するＥＥＰＲＯＭの最新データの判定において、データ格納領域が判定領域と同じビット列となった場合、最新データ読み込み時に判定領域を検出できず最新データを保持する番地を見つけられない。そのため、判定領域とデータ格納領域のビット列が同じビット列になることは許されない。例えば、判定領域のビット列が０ｘＦＦの場合に、データ格納領域に記録するデータを０ｘ００〜０ｘ７Ｆの範囲とすれば、判定領域とデータ格納領域のビット列を等しくなることを防ぐことができる。
【００２８】
以下、図２から図１０を用いて、不揮発性メモリ１１１に対するデータの記録について具体的に説明する。
【００２９】
レンズマイコン１１２は不揮発性メモリ１１１のメモリ制御装置としての役割も有しており、図２に示すように、データ書き込み部２０１と、データ読み込み部２０２と、記録データ生成部２０３と、データ判定部２０４とを含んでいる。なお、レンズマイコンとは別に不揮発性メモリ１１１を制御するメモリ制御装置を別途設ける構成としてもよい。
【００３０】
記録データ生成部２０３は、後述の判定データを生成し、更に、レンズマイコン１１２に入力された又はレンズマイコン１１２の他の部分で生成したデータのうち不揮発性メモリ１１１で保持するもの（保持データ）に判定データを付加した記録データを生成する。データ書き込み部２０１は、記録データ生成部２０３で生成された記録データについて不揮発性メモリ１１１に対する書き込みを行い、データ読み込み部は不揮発性メモリ１１１に対して記録データの読み込みを行う。データ判定部２０４は、判定データ等から番地に保存されたデータ状態の判定を行う。
【００３１】
図３は、不揮発性メモリ１１１の各番地へ記録された記録データのデータ構造を示している。各番地は、最新データであるか否かの判定に用いられる特定のビット列からなる判定データを保持する判定領域と、書き込みを行う保持データを保持するデータ格納領域とを含む。ここで、“特定の”とは、書き込みを繰り返しても一定のビット列から変化しない、不変のものという意味である。判定領域に保持される特定のビット列と同一のデータは、データ格納領域で保持されない。
【００３２】
例として、各番地に８ｂｉｔデータを保持するＥＥＰＲＯＭを不揮発性メモリ１１１として図４（Ａ）、図４（Ｂ）および図５に示す。まず、データ書き込み部２０１は、各番地において、不揮発性メモリ１１１に保存されるデータの上位４ｂｉｔを判定領域として格納し、下位４ｂｉｔをデータ格納領域として格納する。判定領域に記録する判定データとしてのビット列は“１１１１”であり、データ格納領域には判定データと同じビット列“１１１１”は記録されない。換言すれば、記録データ生成部２０３は、データ格納領域に記録されるビット列とは異なるビット列の判定データを有する記録データを生成する。書き込み部２０１は、この判定領域とデータ格納領域とのデータ構造を維持しつつ、先頭番地（開始領域）から順に書き込みを開始する。当該書き込みは、書き込みの度に書き込む番地を１つずらして行う。
【００３３】
図４（Ａ）に示すように最終番地（最終領域）Ｎに対する書き込みが終了すると、データ書き込み部２０１は、次回の書き込み番地を先頭番地として書き込みを行う。このとき、データ書き込み部２０１は、図４（Ｂ）に示すように、上位４ｂｉｔが判定領域、下位４ｂｉｔがデータ格納領域となっていたデータ構造を、上位４ｂｉｔをデータ格納領域、下位４ｂｉｔを判定領域に変更して書き込みを行う。そして、先頭番地から１つずつ順に書き込みを行い再度最終番地へ到達すると、同様に次回の書き込み番地を先頭番地とし、判定領域とデータ格納領域のビット位置を再び入れ替えて書き込みを行う。換言すれば、各番地の書き込み回数に応じて判定データとデータ格納領域のビット位置を入れ替える。
【００３４】
本実施例では、１週目にヘッダーの上位４ｂｉｔに設定されていた判定領域を２週目でフッターの下位４ｂｉｔに変更させることとしたが、判定領域および判定データのビット数はこれに限らず、また判定領域を変更する位置もヘッダーやフッターに限らない。保持データが保存されている領域とは異なる２つの領域間で入れ替えることとしてもよい。
【００３５】
最新データを取得するために不揮発性メモリ１１１を読み込む場合、データ判定部２０４により、判定領域を表すビット位置をチェックすることで最新データが保持されているか否かが判定される。換言すれば、先頭番地から最終番地に向けて順番に読み込みを行い、連続する番地の判定領域の位置を比較し、その比較結果に応じて最新データを保持する番地を特定する。
【００３６】
具体的には、データ判定部２０４は、先頭番地から順に番地に保持されているデータを読み込み、現在読み込んだ番地と次に読み込みを行う番地との判定領域の位置を比較する。判定領域の位置が異なると判定された場合、データ判定部２０４は、現在読み込んだ番地が最新データを記録する番地であると判定する。また、現在の番地と次の番地の判定領域の位置が同じであると判定された場合、データ判定部２０４は、現在読み込んだ番地は最新データを保持する番地ではないと判定する。
【００３７】
以上の比較および判定を、現在読み込んだ番地と次に読み込みを行う番地で判定領域の位置が異なると判定されるまで繰り返す。もし、最終番地まで判定領域の位置が異なるとする判定が行われなかった場合は、データ判定部２０４は、最終番地を、最新データを保持する番地と判定する。
【００３８】
例えば、図４（Ｂ）に示すように記録データが格納されている場合について説明する。読み込み部２０２は、先頭番地である０１番地を読み込み、判定領域の位置を取得する。データ判定部２０４は、０１番地の判定領域の位置と、次番地である０２番地の判定領域の位置とを比較する。０１番地と０２番地の判定領域の位置は下位４ｂｉｔで等しいため、データ判定部２０４は、０１番地のデータは最新データではないと判定する。次に、０２番地のデータが最新データであるか否か判定するために、データ判定部２０４が０２番地と０３番地の判定領域の位置を比較する。０２番地の判定領域の位置は下位４ｂｉｔであるのに対し、０３番地の判定領域の位置は上位４ｂｉｔであるため、データ判定部２０４は、０２番地が最新データを記録する番地であると判定する。
【００３９】
次に、書き込みに失敗したデータがある場合の処理について説明する。
【００４０】
不揮発性メモリ１１１への書き込み中に、ユーザ操作による電源遮断などにより強制的に書き込みが中断される場合、書き込む予定だった記録データと異なるデータが不揮発性メモリ１１１に記録される可能性が高い。この場合、不揮発性メモリ１１１からのデータの読み込みにおいて、読み込まれたデータが正常なデータか書き込みに失敗したデータかを判断する必要がある。
【００４１】
本実施例では、判定領域は常に同じビット列を用いるため、データ判定部２０４は、データ内に判定領域を表すビット列が無い場合やデータ格納領域も判定領域を示すビット列になっている場合などは、書き込みに失敗したと判定できる。書き込みに失敗したと判定された場合、判定領域だけでなくデータ格納領域のデータも書き込みに失敗している可能性が高いため、書き込みを失敗したと判定された番地の一つ前の番地のデータや初期値などの特定の値を使用する。
【００４２】
また、書き込みに失敗したと判定された番地は、最後に書き込み動作が行われた番地でもある。そのため、次回の最新データの書き込みを行う番地を書き込みに失敗したと判定された番地に指定する。これにより、書き込み失敗データを上書きし、さらに各番地の書き込み回数の均一化も図ることができる。
【００４３】
また、データ格納領域のみが書き込みに失敗した場合、上記方法では書き込みに失敗したか否かは判定できない。しかし、判定領域が正常であるならば、最後に書き込み動作が行われた番地（最新データを保持している番地）を特定する事ができるため、この場合でも適切に各番地の書き込み回数の均一化を図ることができる。
【００４４】
図５を用いて、書き込みに失敗したデータがある場合の処理の具体例を説明する。図５は、０３番地で書き込みに失敗した例を示している。この具体例において、判定領域を示すビット列は図４と同じく”１１１１”であり、データ格納領域は”１１１１”となるビット列を保持する事はない。
【００４５】
データ判定部２０４は、先頭番地から順に最新データの判定処理と伴に、上述の書き込み失敗に関する判定も行う。図５の場合は、データ判定部２０４は、読み込み部２０２によって０３番地から読み込まれたデータに判定領域を示す”１１１１”のビット列が無いため、０３番地は書き込みに失敗したと判定する。判定領域の書き込みを失敗している番地は、データ格納領域のデータも書き込みに失敗している可能性が高い。そのため、一つ前の番地である０２番地のデータ格納領域のデータ又は初期値などの特定のデータを代わりに使用し、次回の書き込み番地に０３番地を指定する。
【００４６】
次に、図６および図７のフローチャートを用いて、不揮発性メモリ１１１に対するメモリ制御装置（レンズマイコン１１２）の書き込み処理および読み込み処理について説明する。
【００４７】
図６のフローチャートは、本実施例におけるメモリ制御装置による書き込み処理を示している。
【００４８】
ステップＳ４０１は、書き込み処理の始まりを示している。ステップＳ４０２において、メモリ制御装置（記録データ生成部２０３）は、判定領域を示すビットの位置情報を取得し、データ格納領域と判定領域をからなる不揮発性メモリ１１１への書き込み用の記録データを作成する。
【００４９】
ステップＳ４０３において、メモリ制御装置（データ書き込み部２０１）は、書き込みを行う番地情報を取得する。ステップＳ４０４において、メモリ制御装置（データ書き込み部２０１）は、ステップＳ４０３で得られた番地情報に基づいて適切な番地に最新データの書き込みを行う。
【００５０】
ステップＳ４０５において、メモリ制御装置（データ判定部２０４）は、今回書き込みを行った番地の次の番地と不揮発性メモリ１１１内の最終番地を比較する。比較を行った結果、次番地が最終番地以下ならばステップＳ４０６へ処理を進め、次の番地が最終番地よりも大きいならばステップＳ４０７へ処理を進める。ステップＳ４０６では、メモリ制御装置（データ書き込み部２０１）は、次回書き込みを行う番地を、今回書き込みを行った番地の次番地に設定し、ステップＳ４０９へ処理を進める。
【００５１】
ステップＳ４０７では、メモリ制御装置（データ書き込み部２０１）は、判定領域を書き込む位置を上述のように変更し、ステップＳ４０８へ処理を進める。ステップＳ４０８において、メモリ制御装置（データ書き込み部２０１）は、次回書き込みを行う番地を先頭番地に設定し、ステップＳ４０９へ処理を進める。
【００５２】
ステップＳ４０９において、メモリ制御装置は、書き込み処理を終了する。
【００５３】
図７のフローチャートは、本実施例における読み込み処理を示している。
【００５４】
ステップＳ５０１は、読み込み処理の始まりを示している。ステップＳ５０２において、メモリ制御装置（データ読み込み部２０２）は、先頭番地のデータを読み込む。
【００５５】
ステップＳ５０３において、メモリ制御装置（データ読み込み部２０２）は、ステップＳ５０２で読み込んだデータのエラーチェックを行い、書き込みエラーが発見された場合はステップＳ５１０へ処理を進める。書き込みエラーが見つからなかった場合は、ステップＳ５０４へ処理を進め、判定領域を示すビット列の位置情報を取得する。ステップＳ５０４において判定領域の位置が取得すると、メモリ制御装置（データ読み込み部２０２）は、ステップＳ５０５において次番地のデータを読み出し、ステップＳ５０６においてステップＳ５０５で得られたデータのエラーチェックを行う。
【００５６】
メモリ制御装置は、ステップＳ５０６において書き込みエラーが発見された場合はステップＳ５１１へ処理を進め、書き込みエラーが見つからなかった場合はステップＳ５０７へ処理を進める。
【００５７】
ステップＳ５０７において、メモリ制御装置（データ判定部２０４）は、２つのデータの判定領域位置を比較する。２つのデータの判定領域位置が異なる場合はステップＳ５１１へ処理を進め、等しい場合はステップＳ５０８へ処理を進める。
【００５８】
ステップＳ５０８において、メモリ制御装置は、次に読み込む番地と最終番地を比較する。次に読み込む番地が最終番地以下であるならばステップＳ５０４へ処理を進め、再度読み込み処理を行う。また、次に読み込む番地が最終番地を超える番地となる場合、ステップＳ５０９へ進み判定領域の位置を変更し、ステップＳ５１０へ処理を進める。
【００５９】
ステップＳ５１０において、メモリ制御装置は、最新データの書き込み番地を先頭番地に設定する。またステップＳ５０６でエラーを発見した場合やステップＳ５０７で判定領域位置が異なっていた場合、メモリ制御装置は、ステップＳ５１１へ処理を進め、最新データの書き込み番地をステップＳ５０５で読み込んだ番地に設定する。その後、メモリ制御装置は、メモリステップＳ５１２において、処理を終了する。
【００６０】
これらの処理により、本実施例における不揮発性メモリ１１１に対する書き込み及び読み込みが行われる。
【００６１】
以上の構成により、書き込み処理が正常に終了しなかった場合であっても、正確に書き込みエラーを検出することができ、最新データを適切に判別することができる。そのため、書き込みエラーにより生じてしまう各番地の書き込み回数の偏りを防止できる。
【実施例２】
【００６２】
本実施例では、不揮発性メモリにおいて書き込み不能となった番地が発生した場合の処理について説明する。実施例１と共通する部分については説明を省略する。
【００６３】
ＥＥＰＲＯＭでは、書き込み回数が上限を超えると、度重なる書き込みなどの劣化で正常に書き込みが不能な書き込み不良番地が発生する場合がある。この不良番地では、書き込み処理を行ったとしても書き込み番地のデータが変化しないか、又は、書き込もうとしていたデータから異なるデータに置き換わってしまう。この場合、１つでも書き込み不良番地が発生すると、前後の番地の判定領域との比較で最新データを探す手法では最新データの判定ができなくなる。そのめ、残りの番地全てが使用不可番地となる場合と同義である。
【００６４】
本実施例では、書き込み不良番地が発生しても最新データの判定ができ、書き込み不良番地以外の残りの番地を利用することができる。
【００６５】
図８（Ａ）および図８（Ｂ）は、各番地に８ｂｉｔデータを保持する不揮発性メモリ１１１（ＥＥＰＲＯＭ）において、０６番地が書き込み不要となった場合の説明図を示す。具体的には、図８（Ａ）は書き込み不良番地が発生したと判定されたときの処理を示し、図８（Ｂ）は当該処理を行った不揮発性メモリ１１１における読み込みや書き込み処理を示す。
【００６６】
書き込み処理において書き込み不良番地が発生したか否かの判定は、書き込みを行った際に同番地を読み込み、書き込みデータと読み込みデータを比較することにより実現できる。もし両者のデータが一致しない場合は、メモリ制御装置は、当該番地を書き込み不良番地と判定する。図８（Ａ）において、０６番地が書き込み不良番地と判定されると、メモリ制御装置は、不良番地と判定された番地の直前直後の番地にあたる０５および０７番地に書き込み不良番地の目印となるビット列を書き込む。このとき、当該目印は、「現在の番地より先に不良番地がある」か「現在の番地より前に不良番地がある」かのいずれかを示す。本実施例では、「現在の番地より先に不良番地がある」場合の目印として“１０１０１０１０”、「現在の番地より前に不良番地がある」場合の目印として“０１０１０１０１”を書き込む。
【００６７】
図８（Ｂ）に示した不揮発性メモリ１１１に格納されたデータの読み込みを行う場合、メモリ制御装置は、最新データの判定のため先頭番地から順に処理を行い、０５番地において上記目印により「現在の番地より先に不良番地がある」と判定する。そのため、メモリ制御装置は、０５番地以降もデータを読み込むが、読み込んだデータは最新データ判定処理の対象から除外する。その後、メモリ制御装置は、０７番地のデータを読み込みにおいて、「現在の番地より前に不良番地がある」と判定し、次番地からは正常なデータが書きこまれているとして処理を続ける。すなわち、メモリ制御装置は、０８番地から最新データ判定処理を再開する。
【００６８】
一方、書き込みを行う場合、メモリ制御装置は、書き込み番地を順次変更して処理を行うが０４番地への書き込みが終了すると次回の書き込み番地を０８番地に指定する。換言すれば、０５番地から０７番地への書き込みを行わない。
【００６９】
以上の処理により、書き込み不良番地が発生しても効率よくデータの読み込み及び書き込みを行うことができる。
【００７０】
図９は、先頭番地である０１番地と最終番地である０９番地が書き込み不良になった場合の説明図を示す。先頭番地や最終番地が書き込み不良番地となった場合、前後の番地の内どちらか片方の番地にしか上述の目印を書き込むことができない。以下に、この場合における書き込み不良番地の特定について図９を用いて説明する。
【００７１】
図９において、メモリ制御装置は、０１番地が書き込み不良番地と判定した場合、０２番地に「現在の番地より前に不良番地がある」とする目印を書き込む。これにより、後に読み込みの際に、０２番地のデータを読み込むことで０１番地が書き込み不良番地であると判定できる。また、０９番地が書き込み不良番地と判定した場合、０８番地に「自番地よりも先に不良番地がある」とする目印を書き込む。これにより、後に読み込みの際に、０８番地のデータを読み込むことで０９番地が書き込み不良番地であると判定できる。そのため、０３番地から０７番地の範囲のみについて正確に処理を行うことができる。
【００７２】
図１０は０６番地に引き続き０２番地が書き込み不良になった場合の説明図を示し、図１１は更に０４番地も書き込み不良となった場合の説明図を示す。以下に、書き込み不良番地が増加した場合の処理について図１０を用いて説明する。
【００７３】
図１０において、メモリ制御装置は、０２番地を書き込み不良番地と判定した場合、０１番地と０３番地に上述の目印を書き込む。そのため、書き込み可能な番地の先頭は０４番地となる。ここで、次番地の０５番地には「自番地より先に不良番地がある」とする目印が既に書き込まれ、０７番地には「自番地より前に不良番地がある」とする目印が既に書きこまれている。そのため、メモリ制御装置は、０４番地への書き込みが終了すると、０５番地から０７番地までを最新データ判定処理から除外し、０８番地を次回の書き込み番地として設定する。そして、最終番地まで書き込みが行われると、メモリ制御装置は、０１番地から０３番地までの情報に基づいて次回書き込み番地を０４番地と設定する。読み込みを行う場合も、同様に０１番地から０３番地および０５番地から０７番地を最新データ判定処理から除外する。
【００７４】
その後、図１１に示すように更に０４番地が書き込み不良番地となった場合、メモリ制御装置は、０４番地の前後の番地である０３番地と０５番地に目印を書き込む処理を行おうとする。しかし、既に０３番地と０５番地には０２番地と０６番地の書き込み不良番地を示す目印が書き込まれており、０３番地に「自番地より先に不良番地がある」とする目印を、０５番地に「自番地より前に不良番地がある」とする目印を上書きすると矛盾が生じる。そこで、図１１に示すように、書き込み不良番地を示す目印を書き込む番地に既に目印が書き込まれていた場合、メモリ制御装置は、目印を削除し新たな目印の書き込みも行わない。これにより、目印が書き込まれた番地は０１番地と０７番地のみになり、書き込み不良番地を含む０２番地、０４番地および０６番地を含む０１番地から０７番地までを、書き込みや読み込みにおける最新データ判定処理から目印の矛盾なく除外できる。
【００７５】
以上の様に、メモリ制御装置は、書き込み不良番地を検出した場合は、その両隣の番地に目印となるビット列を書き込む。これにより書き込み不良番地が発生しても書き込み可能な番地のみで処理を続ける事ができ、書き込み可能な番地での書き込み回数の均一化を維持し続けることができる。その結果、書き込み上限回数の増加を実現できる。
【００７６】
本実施例では、目印となるビット列を“１０１０１０１０”および“０１０１０１０１”とした。しかし、判定領域に用いたビット列パターンと同じパターンにならないのであれば、本実施例以外のビット列パターンを目印としてもよい。
【００７７】
また、目印となるビット列が書きこまれている場合、残りの書き込み可能番地の寿命も僅かであると考えられるため、ユーザへＥＥＰＲＯＭの交換を促すなどの通知を行ってもよい。
【００７８】
また、上記実施例では、最終番地まで書き込みが行われた場合、データ書き込み部２０１が判定領域とデータ格納領域を入れ替えることとしたが、記録データ生成部２０３が判定領域とデータ格納領域を入れ替えた記録データを生成することとしてもよい。
【００７９】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【００８０】
また、上述の実施例の機能を実現するための手順が記述されたソフトウェアのプログラムを、記録媒体から直接、或いは有線／無線通信を用いてプログラムを実行可能なコンピュータを有するシステム又は装置に供給する場合も本発明に含む。また、そのプログラムを該コンピュータに実行させる場合も本発明に含む。
【００８１】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【００８２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００８３】
プログラムを供給するための記録媒体としては、例えば、ハードディスク、磁気テープ等の磁気記録媒体、光／光磁気記憶媒体、不揮発性の半導体メモリでもよい。
【００８４】
また、プログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムを記憶し、接続のあったクライアントコンピュータはがコンピュータプログラムをダウンロードしてプログラムするような方法も考えられる。
【図１】
2017076249.tif 000003
【図２】
2017076249.tif 000004
【図３】
2017076249.tif 000005
【図４】
2017076249.tif 000006
【図５】
2017076249.tif 000007
【図６】
2017076249.tif 000008
【図７】
2017076249.tif 000009
【図８】
2017076249.tif 000010
【図９】
2017076249.tif 000011
【図１０】
2017076249.tif 000012
【図１１】
2017076249.tif 000013