(57)【要約】      （修正有）【課題】シリアルフラッシュメモリにおける適切なデータ消去の管理を実現する記録装置を提供する。【解決手段】シリアルフラッシュメモリに連続するデータを記録する記録領域２０２と、シリアルフラッシュメモリのセクタ消去を管理する管理領域２０１，２０３，２０４とを有する。前記管理領域は、シリアルフラッシュメモリに含まれる第一の領域と第二の領域と第三の領域のそれぞれに記録されている情報に基づきセクタ消去を管理し、第一の領域と第二の領域と第三の領域とは、物理的に隣接していない領域に設定される。第一の領域は第二の領域のセクタ消去を管理するための領域であり、第二の領域は第三の領域のセクタ消去を管理するための領域であり、第三の領域は第一の領域のセクタ消去を管理するための領域である。【選択図】図３
2016038736.tif 000002
【特許請求の範囲】
【請求項１】
シリアルフラッシュメモリにデータを連続して記録する記録手段と、
前記シリアルフラッシュメモリのセクタ消去を管理する管理手段とを有し、
前記管理手段は、前記シリアルフラッシュメモリに含まれる第一の領域と第二の領域と第三の領域のそれぞれに記録されている情報に基づきセクタ消去を管理し、
前記第一の領域は前記第二の領域のセクタ消去を管理するための領域であり、
前記第二の領域は前記第三の領域のセクタ消去を管理するための領域であり、
前記第三の領域は前記第一の領域のセクタ消去を管理するための領域であることを特徴とする記録装置。
【請求項２】
前記管理手段は、前記シリアルフラッシュメモリに含まれる第一の領域と第二の領域と第三の領域のそれぞれに記録されている情報に基づき、各領域のセクタ消去が中断されたか否かを判断し、前記判断の結果に応じて、前記判断の結果に応じた領域のセクタ消去を再び実行させるよう制御することを特徴とする請求項１に記載の記録装置。
【請求項３】
前記第一の領域と前記第二の領域と前記第三の領域とは、物理的に隣接していない領域に設定されることを特徴とする請求項１または２に記載の記録装置。
【請求項４】
ＧＰＳ衛星からの信号を受信する受信手段を更に有し、
前記記録手段は、前記受信手段により受信された信号に基づき決定される位置情報を、前記シリアルフラッシュメモリの記録領域のうち、前記第一の領域、前記第二の領域、前記第三の領域のいずれとも異なる領域に、定期的に記録することを特徴とする請求項１乃至３のいずれか１項に記載の記録装置。
【請求項５】
前記第一の領域は、前記位置情報が記録される領域のセクタ消去を管理するための領域であることを特徴とする請求項４に記載の記録装置。
【請求項６】
シリアルフラッシュメモリにデータを連続して記録する記録ステップと、
前記シリアルフラッシュメモリのセクタ消去を管理する管理ステップとを有し、
前記管理ステップでは、前記シリアルフラッシュメモリに含まれる第一の領域と第二の領域と第三の領域のそれぞれに記録されている情報に基づきセクタ消去を管理し、
前記第一の領域は前記第二の領域のセクタ消去を管理するための領域であり、
前記第二の領域は前記第三の領域のセクタ消去を管理するための領域であり、
前記第三の領域は前記第一の領域のセクタ消去を管理するための領域であることを特徴とする記録装置の制御方法。
【請求項７】
コンピュータを、請求項１乃至５のいずれか１項に記載の記録装置の各手段として機能させるための、コンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアルフラッシュメモリを搭載した記録装置に関する。
【背景技術】
【０００２】
近年、シリアルフラッシュメモリを搭載した機器が知られている。シリアルフラッシュメモリは、データの書込みは小さなサイズで行うことができるが、消去を行う時は、セクタと呼ばれるまとまった領域ごとにしかできない。また、一度データを書き込んだ場所には、データの消去を行わなければ新しいデータを記録できないという特徴がある。そのため、新たにデータを書き込む場合には、その前にセクタ単位の領域を消去する必要がある。
【０００３】
従来、シリアルフラッシュメモリのデータを消去する場合、不揮発性メモリのどこかに消去処理の実行状態を記録するフラグを設け、装置の電源が投入された時にシリアルフラッシュメモリのセクタ消去が中断された形跡がないか確認する。
【０００４】
例えば特許文献１では、シリアルフラッシュメモリのデータを消去する際、最後に消去するブロックに実行中のフラグを立て、何らかの理由で消去処理が中断された場合、実行中フラグを参照して消去処理の再開を行う方法について開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１８４２６８
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の発明では、シリアルフラッシュメモリの全消去を行う場合しか考慮されていない。また、以下に述べるようにセクタ単位の消去が中断された場合、当該セクタを含むブロック単位で読み出しデータが不定になってしまうことについては考慮されていない。
【０００７】
図１０を用いてセクタ消去の中断によって発生する読出し不定となる問題について説明する。図１０（ａ）はシリアルフラッシュメモリの記録領域を表している。図中のシリアルフラッシュメモリの記録領域であるブロック０に含まれる、あるセクタを消去している時に電源が遮断されると、タイミングによってはブロック０とブロック１の全体が読出し不定となってしまうことがある。図１０（ｂ）は、ＧＰＳログデータのような連続するデータをシリアルフラッシュメモリに記録する装置における、シリアルフラッシュメモリの記録領域の構成を表している。このようにシリアルフラッシュメモリ上でリングバッファを形成し、連続するデータを記録する装置においては、記録領域が枯渇した時は最も古いデータを記録している記録領域をセクタ単位で消去する必要がある。また、一部のデータが読出し不定状態となると、データの新旧が判別できなくなることからリングバッファとしての整合性が取れなくなってしまい、広範囲のデータが失われる虞がある。本発明は、上記の課題に鑑みて成されたものであり、シリアルフラッシュメモリにおける適切なデータ消去の管理を実現することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明では、シリアルフラッシュメモリに連続するデータを記録する記録手段と、前記シリアルフラッシュメモリのセクタ消去を管理する管理手段とを有し、前記管理手段は、前記シリアルフラッシュメモリに含まれる第一の領域と第二の領域と第三の領域のそれぞれに記録されている情報に基づきセクタ消去を管理し、前記第一の領域と前記第二の領域と前記第三の領域とは、物理的に隣接していない領域に設定され、前記第一の領域は前記第二の領域のセクタ消去を管理するための領域であり、前記第二の領域は前記第三の領域のセクタ消去を管理するための領域であり、前記第三の領域は前記第一の領域のセクタ消去を管理するための領域であることを特徴とする記録装置。
【発明の効果】
【０００９】
本発明によれば、シリアルフラッシュメモリにおける適切なデータ消去の管理を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る記録装置のブロック図である。
【図２】第１の実施形態に係るシリアルフラッシュメモリに記録されているデータの概念図である。
【図３】（ａ）、（ｂ）、（ｃ）第１の実施形態に係るシリアルフラッシュメモリに記録されているデータの消去を管理する方法を説明するための図である。
【図４】第１の実施形態に係るシリアルフラッシュメモリにログデータを記録する処理を示すフローチャートである。
【図５】第１の実施形態に係るシリアルフラッシュメモリ使用開始前の初期化処理を説明するフローチャートである。
【図６】第１の実施形態に係るシリアルフラッシュメモリから記録媒体にログデータを出力する処理を説明するためのシーケンス図である。
【図７】第１の実施形態に係る記録媒体に記録されるログファイルの概念図である。
【図８】（ａ）、（ｂ）、（ｃ）第１の実施形態に係るシリアルフラッシュメモリのセクタ消去処理を説明するためのシーケンス図である。
【図９】第１の実施形態に係るシリアルフラッシュメモリのセクタ消去処理を説明するためのシーケンス図である。
【図１０】（ａ）、（ｂ）シリアルフラッシュメモリのセクタ消去が中断された際、読出し不定状態になる問題について説明する概念図である。
【発明を実施するための形態】
【００１１】
以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
【００１２】
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態は適宜組み合わされることも可能である。
【００１３】
［第１の実施形態］
＜デジタルカメラ１００の内部構成＞
図１は、本実施形態の記録装置の一例であるデジタルカメラ１００の構成例を示すブロック図である。なお、ここでは記録装置の一例としてデジタルカメラについて述べるが、記録装置はこれに限られない。例えば記録装置は、携帯電話や、タブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよいし、カメラ付き携帯電話等の撮像装置であってもよい。
【００１４】
本実施形態のデジタルカメラ１００では、第１制御部１０１と第２制御部１１０とが協働することにより各部の制御を行う。第１制御部１０１は、主に撮像して画像を生成するための処理を制御する。第２制御部１１０は、主にデジタルカメラ１００の移動軌跡を示すログデータを生成するための処理を制御する。第１制御部１０１の制御する機能が必要無い場合は、ユーザ操作により第１制御部１０１への通電を停止することができる。その一方で、第２制御部１１０には通電を継続する。つまり、消費電力の低減とロギングの継続を両立する。
【００１５】
第１制御部１０１は、入力された信号や、後述のプログラムに従って、後述の第２制御部１１０と協働してデジタルカメラ１００の各部を制御する。本実施形態では、第１制御部１０１は、主に撮像して画像を生成するための処理を制御する。なお、第１制御部１０１の機能を複数のハードウェアが分担してもよい。
【００１６】
撮像部１０２は、撮像部１０２に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。撮像した画像データはバッファメモリに蓄えられた後、第１制御部１０１にて所定の演算を行い、記録媒体１０７に記録される。
【００１７】
不揮発性メモリ１０３は、電気的に消去・記録可能な不揮発性のメモリであり、第１制御部１０１で実行される後述のプログラム等が格納される。
【００１８】
作業用メモリ１０４は、撮像部１０２で撮像された画像データを一時的に保持するバッファメモリや、表示部１０６の画像表示用メモリ、第１制御部１０１の作業領域等として使用される。
【００１９】
表示部１０６は、撮像の際のビューファインダー画像の表示、撮像した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部１０６は必ずしもデジタルカメラ１００が備える必要はない。デジタルカメラ１００は表示部１０６と接続することができ、表示部１０６の表示を制御する表示制御機能を少なくとも有していればよい。
【００２０】
記録媒体１０７は、撮像部１０２から出力された画像や、後述の第２制御部１１０から提供されるログデータ等を記録することができる。記録媒体１０７は、デジタルカメラ１００に着脱可能なよう構成してもよいし、デジタルカメラ１００に内蔵されていてもよい。すなわち、デジタルカメラ１００は少なくとも記録媒体１０７にアクセスする手段を有していればよい。
【００２１】
通信部１０８は、外部装置と通信するためのインターフェースである。本実施形態のデジタルカメラ１００は、通信部１０８を介して、外部装置とデータのやりとりを行うことができる。データを通信するためのプロトコルとしては、例えば無線ＬＡＮを通じたＰＴＰ／ＩＰ（Ｐｉｃｔｕｒｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いることができる。なお、デジタルカメラ１００との通信はこれに限られるものではない。例えば、通信部１０８は、赤外線通信モジュール、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信モジュール、ＷｉｒｅｌｅｓｓＵＳＢ等の無線通信モジュールを含むことができる。さらには、ＵＳＢケーブルやＨＤＭＩ（登録商標）、ＩＥＥＥ１３９４など、有線接続を採用してもよい。
【００２２】
第２制御部１１０は、入力された信号や、後述のプログラムに従って、前述の第１制御部１１０と協働してデジタルカメラ１００の各部を制御する。本実施形態では、第２制御部１１０は、主にログデータを生成するための処理を制御する。なお、第２制御部１１０の機能を複数のハードウェアが分担してもよい。本実施形態では、第２制御部１１０は、第１制御部１０１に電力を供給していない状態でも通電することができる。すなわち、第１制御部１０１の動作を停止した状態（いわゆる省電力状態）であっても、第２制御部１１０により制御される機能を有効に保つことができる。
【００２３】
不揮発性メモリ１１１は、電気的に消去・記録可能な不揮発性のメモリであり、第２制御部１１０で実行される後述のプログラム等が格納される。
【００２４】
作業用メモリ１１２は、後述のログ取得部１１４から出力されるデータを一時的に保持するバッファメモリや、第２制御部１１０の作業領域等として使用される。
【００２５】
操作部１１３は、ユーザがデジタルカメラ１００に対する指示をユーザから受け付けるために用いられる。操作部１１３は例えば、ユーザがデジタルカメラ１００の電源のＯＮ／ＯＦＦを指示するための電源ボタンや、撮像を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンなどの操作部材を含む。なお、操作部材が第２制御部１１０により制御されるのは、省電力状態から復帰する指示を受け付けられるようにするためである。ユーザは、操作部１１３の操作部材を操作することで、デジタルカメラ１００を省電力状態から通常状態へと復帰させることができる。
【００２６】
ログ取得部１１４は、測位処理を行う。測位処理とは、ＧＰＳ衛星から信号を受信し、受信した信号からデジタルカメラ１００の位置を示す位置情報、および信号を受信した日時を示す日時情報を算出する処理である。ログ取得部１１４により算出された位置情報および日時情報は、必要に応じて第２制御部１１０に提供される。
【００２７】
シリアルフラッシュメモリ１１５は、ログ取得部１１４で得られた位置情報および日時情報をログデータとして記録するための記録媒体である。本実施形態では、シリアルフラッシュメモリ１１５の記録領域をリングバッファの形で扱う。第２制御部１１０は、ログ取得部１１４から提供される位置情報と日時情報を対応づけてシリアルフラッシュメモリ１１５へ記録する。なお、本実施形態のデジタルカメラ１００では、外部からシリアルフラッシュメモリ１１５に直接アクセスすることは出来ないように制御される。シリアルフラッシュメモリ１１５に記録されたログデータは、一旦記録媒体１０７を経由して外部に出力されることになる。この処理については後に詳述する。
【００２８】
＜シリアルフラッシュメモリへのログデータの記録＞
次に、デジタルカメラ１００においてシリアルフラッシュメモリ１１５にログデータを記録する処理について説明する。本実施形態のデジタルカメラ１００では、前述のように、第２制御部１１０がログデータを記録するための処理を制御する。第２制御部１１０は予め定められた間隔でログ取得部１１４に位置情報および日時情報を要求する。そして、その要求に対する応答として受信される位置情報と日時情報とを対応づけて、ログデータとしてシリアルフラッシュメモリ１１５に記録する。以後、このログデータの記録を繰り返すことをロギングと呼ぶ。また、位置情報と日時情報とが対応づけられてシリアルフラッシュメモリ１１５に記録されている状態のデータをログデータと呼ぶ。
【００２９】
このロギングの結果、複数のログデータが記録されたシリアルフラッシュメモリ１１５の記録領域の一部の概念図を図２に示す。
【００３０】
図２において、記録領域２００は、シリアルフラッシュメモリ１１５の記録領域の一部である。この領域２００の内、記録領域２０２にはログデータが記録される。記録領域２０２に記録されている複数のログデータのうち、一つのログデータのデータ構造を示す概念図をログデータ２２０に示す。ログデータの一つ一つには、位置情報を取得した日時を示す日時情報２２１が先頭に記録される。この日時情報はＵＴＣの時間軸で計時される日時を示す。また、位置情報として、緯度・経度を示す情報２２２〜２２６が記録される。また、この位置情報の精度を示す情報として、算出に用いた信号の数、すなわち利用した衛星の数２２７や、ＤＯＰ情報２２８なども併せて記録される。この記録領域２０２はリングバッファの形式で構成される。ゆえに、ログデータは記録領域の先頭から末尾まで順に記録され、記録領域２０２の空き容量を超えるログデータが記録される場合は、足りない容量の分だけ最も古いログデータから上書きされていく。なお、これらのログデータのデータ長は一定となるように調整される。例えばデータの末尾に空データを付与するなどして調節する。
【００３１】
記録領域２０１は、ログデータを管理するための情報であるログ管理レコードが記録される。このログ管理レコードが記録される領域２０１もリングバッファ形式で構成される。
【００３２】
本実施形態のデジタルカメラ１００では、シリアルフラッシュメモリ１１５に記録されている状態から、記録媒体１０７に出力する際に、このログ管理レコードが管理するログデータを一つのまとまりとして出力する。
【００３３】
記録領域２０１に記録されている複数のログ管理レコードのうち、一つのログ管理レコードの概念図をログ管理レコード２１０に示す。ログ管理レコードには、ロギングを開始した日時を示す開始日時２１１が記録されている。この開始日時２１１には、ログ管理レコードに対応する先頭のログデータの日時情報が用いられる。また、ログ管理レコードにはＵＴＣ時差２１２も記録される。ＵＴＣ時差とは、ＵＴＣ（Ｕｎｉｖｅｒｓａｌ  Ｔｉｍｅ，Ｃｏｏｒｄｉｎａｔｅｄ：協定世界時）と現地時間（地方標準時）との時差を示す時差情報である。このＵＴＣ時差の情報は、ユーザがメニュー操作等を介して現在位置に対応するタイムゾーンを選択することにより、予めデジタルカメラ１００の設定値として設定しておく。あるいは、ログ取得部１１４から取得される位置情報に基づき、タイムゾーンを決定し、ＵＴＣ時差を算出してもよい。
【００３４】
更に、それぞれのログ管理レコードには、対応するログデータの記録開始アドレス２１３とデータサイズ２１４が含まれており、これらの情報により対応するログデータ群が決定される。具体的には、前述のように、ログデータのデータ長は一定であり、かつログデータは記録領域に順に記録されるため、開始アドレスからデータサイズの示す値分だけデータ量をカウントすれば、ログ管理レコードに対応するログデータ群を決定できる。これにより、記録領域２００に順次記録されていく複数のログデータが、特定のまとまりに分けて管理される。なお、ロギング中の最新のログ管理レコードについては、対応するログデータが随時増加していく。つまり、最終的にそのログ管理レコードが管理するログデータのデータサイズが定まっていない。そのため、ロギング中の最新のログ管理レコードのデータサイズは未記録となる。このログ管理レコードのデータサイズが記録されるタイミングは、時間の経過やユーザ操作による日付の変更があった場合や、ユーザ操作やカメラの移動によりタイムゾーンの設定、すなわちＵＴＣ時差が変更された場合である。すなわち、ログ管理レコードは日付毎およびＵＴＣ時差毎に異なるレコードとなるように記録される。
【００３５】
上述のデータの記録を実現するための、デジタルカメラ１００の処理について説明する。図４は、シリアルフラッシュメモリ１１５に位置情報と日時情報とを対応づけてログデータとして記録する際のデジタルカメラ１００の動作を示すフローチャートである。
【００３６】
このフローチャートに示される各処理は、デジタルカメラ１００の第２制御部１１０が、不揮発性メモリ１１１に記録されているプログラムを実行し、プログラムに従いデジタルカメラ１００の各部を制御することにより実現される。以降の第２制御部１１０が実行するフローチャートについても同様である。また、このフローチャートに示される処理は、例えばＧＰＳを用いたロギングを開始する指示を、メニュー操作等を介して受け付けたことに応じて開始される。
【００３７】
まず、ステップＳ３０１にて、第２制御部１１０は、ログ取得部１１４から位置情報および日時情報を受信する。これらの情報は、第２制御部１１０がログ取得部１１４に要求した応答として返される情報である。
【００３８】
次に、ステップＳ３０２では、第２制御部１１０は、ステップＳ３０１で受信した位置情報および日時情報を、ログデータとしてシリアルフラッシュメモリ１１５に記録する。
【００３９】
続くステップＳ３０３では、第２制御部１１０は、ログ管理レコードのうち、ログデータを追加して対応付けるべきログ管理レコードが記録されているか否かを判断する。具体的には、第２制御部１１０は、シリアルフラッシュメモリ１１５に記録されているログ管理レコードのうち、データサイズが記録されていないものがあるか否かを判断する。前述のように、ロギング中はそのログ管理レコードには、対応するログデータのデータサイズが記録されない。つまり、管理するログデータのデータサイズが未記録のログ管理レコードは、今後ログデータが追加されるものであると判断できる。
【００４０】
まず、ステップＳ３０３で第２制御部１１０が、データサイズが記録されていないログ管理レコードがあると判断した場合について述べる。この場合、処理はステップＳ３０４に進む。
【００４１】
ステップＳ３０４では、第２制御部１１０は、ステップＳ３０２でシリアルフラッシュメモリ１１５に記録したログデータの日時情報に基づき、日付の変更があるか否か判断する。具体的には、ステップＳ３０２以前に記録したログデータの日時情報とステップＳ３０２で記録したログデータの日時情報とを比較して、日付が異なるか否かを判断する。日付が異なっている場合は、日付の変更があったと判断することになる。例えば、時間の経過により次の日になってからログデータが取得される場合などは、異なる日付を示す。
【００４２】
まず、ステップＳ３０４にて、第２制御部１１０が、日付の変更があったと判断した場合について説明する。この場合、処理はステップＳ３０６に進む。
【００４３】
ステップＳ３０６では、第２制御部１１０は、ログ管理レコードが管理するログデータの総サイズを、該当するログ管理レコードのデータサイズの項目に記録する。ここで記録するサイズは、ステップＳ３０２で記録された位置情報を含まないように記録される。これによりログ管理レコードが管理するログデータの範囲が確定する。例えば、図２のログ管理レコード４の記録開始アドレス２１３にログデータ７のアドレスが記録されている状態で、本ステップの処理によりログ管理レコード４のデータサイズ２１４に３つのログデータ分のサイズが記録されたとする。この場合、ログ管理レコード４が管理するログデータの範囲は、ログデータ７〜ログデータ９として確定する。
【００４４】
そして、続くステップＳ３０７にて、第２制御部１１０は、新たにログ管理レコードを生成し、ステップＳ３０２で記録された位置情報のアドレスを記録開始アドレスの項目に記録する。これにより、新たなログ管理レコードの記録範囲の開始位置が確定する。
【００４５】
その後、ステップＳ３０８では、第２制御部１１０は、ロギングの終了指示を受け付けたか否かを判断する。指示を受け付けていないと判断した場合、処理はステップＳ３０１に戻り、本フローチャートの処理を繰り返す。結果として、定期的に位置情報が記録される。これらの一連の位置情報は、デジタルカメラ１００の移動軌跡を示すことになる。一方、ロギングの終了指示を受け付けたと判断した場合、処理を終了する。
【００４６】
以上が、ステップＳ３０４にて、第２制御部１１０が、日付の変更があったと判断した場合の説明である。
【００４７】
次に、ステップＳ３０４にて、第２制御部１１０が、日付の変更がなかったと判断した場合について説明する。この場合、処理はステップＳ３０５に進む。
【００４８】
ステップＳ３０５では、第２制御部１１０は、ＵＴＣ時差が変更されたか否かを判断する。具体的には、現在のデジタルカメラ１００のＵＴＣ時差の設定と、シリアルフラッシュメモリ１１５に記録されている最新のログ管理レコードのＵＴＣ時差とを比較する。比較の結果、ＵＴＣ時差が一致していない場合は、ＵＴＣ時差が変更されたと判断する。ＵＴＣ時差が変更されていないと判断した場合、処理はステップＳ３０８に進む。一方、ＵＴＣ時差が変更されたと判断した場合、処理はステップＳ３０６に進む。
【００４９】
次に、ステップＳ３０３で第２制御部１１０が、データサイズが記録されていないログ管理レコードがないと判断した場合について述べる。この場合は、既にログ管理レコードの管理するログデータの範囲が定まっているため、新たに記録されたログデータは新たなログ管理レコードに管理されることになる。ゆえに、処理はステップＳ３０７に進み、第２制御部１１０は新たなログ管理レコードを生成する。その後の処理は上述で説明した通りである。
【００５０】
以上が、シリアルフラッシュメモリ１１５にログデータを記録する際のデジタルカメラ１００の動作の説明である。
【００５１】
＜シリアルフラッシュメモリからのログデータの消去＞
次に、シリアルフラッシュメモリのセクタ消去の管理方法について説明する。図２の記録領域２０３は、記録領域２０１および記録領域２０２のリングバッファにおいてセクタ消去を行う際に、セクタ消去管理レコードを記録する領域である。セクタ消去管理レコードとは、セクタ消去処理の開始から終了までの状況を記録し、電源断によって中断された場合それを検出するための情報である。記録領域２０３に記録するセクタ消去管理レコード２３０には、消去セクタ番号２３１、開始フラグ２３２、終了フラグ２３３が含まれる。
【００５２】
たとえば、新しいログデータを記録するために記録領域２０２の古いデータが記録されているセクタを消去する場合、記録領域２０３に新たなセクタ消去管理レコード２３０を作成する。そして、このセクタ消去管理レコード２３０に含まれる消去セクタ番号２３１に、これから消去するセクタの番号（ＩＤ）を記録し、開始フラグ２３２に定数を記録して当該セクタの消去処理を実行する。消去処理が完了したならば、終了フラグ２３３に定数を記録して１つのセクタ消去は完了する。ここでいう定数とは、単にフラグとして機能することができればどのような値でもよい。つまり、単に１または０という値でよい。
【００５３】
ここで、もしセクタ消去中に電源供給が途絶えてしまった場合、消去途中だったセクタは再度セクタ消去を行う必要がある。そして、その消去が完了するまで、そのセクタを使用することはできない。このため、記録領域２０３のようなセクタ消去管理領域を設けてセクタ消去の状況を管理し、電源投入時の初期化処理において消去処理が中断されたか否かを判断できるようにする。もし、中断されていたならば、リカバリ処理を行う。
【００５４】
記録領域２０３も他の記録領域と同じようにリングバッファ形式で構成され、セクタ消去管理レコード２３０を記録する。
【００５５】
記録領域２０４に含まれる記録領域２０５は、記録領域２０３のセクタ消去を行う際、セクタ消去処理の開始から終了までの状況を記録し、電源断によって中断された場合それを検出するためのセクタ消去管理レコードを記録する領域である。
【００５６】
また、記録領域２０４に含まれる記録領域２０６は、記録領域２０１、記録領域２０３、記録領域２０４のセクタ消去が連鎖して行われる場合に使用する領域である。記録領域２０４に記録するセクタ消去管理レコードの構成は、記録領域２０３に記録するセクタ消去管理レコード２３０と同等である。記録領域２０４も他の記録領域と同じようにリングバッファ形式で構成され、セクタ消去管理レコードを記録する。
【００５７】
記録領域２０１は、記録領域２０２に記録するログデータを管理するためのログ管理レコードを記録する領域であるが、記録領域２０４のセクタ消去を行う際、最新のログ管理レコードを使って記録領域２０４のセクタ消去処理の開始から終了までの状況を記録する。記録領域２０１に記録するセクタ消去管理情報は、ログ管理レコード２１０の消去セクタ番号２１５、開始フラグ２１６、終了フラグ２１７で管理する。
【００５８】
また、シリアルフラッシュメモリはセクタ消去中に電源断されると、そのセクタを含むブロックと物理的に同一のブロック（多くは隣接するブロック）が読出し不定になることがある。そのため、セクタ消去の管理に利用しているブロックが読出し不定となっても、他のセクタ消去を管理するブロックにまで読出し不定の影響を及ぼさないように複数あるセクタ消去管理領域同士が物理的に同一のブロックにならないように配置する。本実施形態においては、記録領域２０１、記録領域２０３、記録領域２０４に其々１ブロックを割り当て、物理的に同一のブロックにならないように配置する。
【００５９】
図３（ａ）は、図２で説明した記録領域２０１、記録領域２０３、記録領域２０４のそれぞれがセクタ消去を管理する範囲を示している。記録領域２０３は図中（１）で示すように記録領域２０１と記録領域２０２のセクタ消去を管理する。記録領域２０４は図中（２）で示すように記録領域２０３のセクタ消去を管理する。記録領域２０１では、図中（３）で示すように記録領域２０４のセクタ消去を管理する。
【００６０】
図３（ｂ）および図３（ｃ）を用いて、図３（ａ）のように管理している状態でセクタ消去中の電源断による読出し不定が発生した時の状況を説明する。図３（ｂ）および図３（ｃ）におけるＫ１とは記録領域２０１を表しており、Ｓ１は記録領域２０３を、Ｓ２は記録領域２０４を表している。
【００６１】
図３（ｂ）では、デジタルカメラに電源が投入され、第２制御部１１０がシリアルフラッシュメモリ１１５の初期化処理を実施中、Ｓ１にＫ１のセクタ消去中断の痕跡と、Ｋ１にＳ２のセクタ消去中断の痕跡が残っている状況を表している。Ｓ２にはＳ１の消去中断が発生した痕跡はない。なお、消去中断の痕跡とは、セクタ消去の開始フラグに定数が記録されており、セクタ消去処理終了後に記録されるはずの完了フラグに定数が記録されていないことを言う。つまり第２制御部１１０はセクタ消去の開始フラグとセクタ消去の完了フラグを参照して、セクタ消去が中断されたか否かを判断することができる。
【００６２】
Ｋ１領域は、Ｓ２領域のセクタ消去を管理する領域であるが、そのＫ１領域自体をセクタ消去する際に電源断されてしまい、セクタ消去が中断され読出し不定が生じた、ということをＳ１領域が管理している状態となる。このケースではＳ１に記録された情報を基にＫ１の当該セクタの再消去を行うことで読出し不定状態からリカバリすることができる。
【００６３】
同様に、図３（ｃ）では、領域Ｓ１に領域Ｋ１のセクタ消去が中断された痕跡と、領域Ｓ２に領域Ｓ１のセクタ消去が中断された痕跡が残っている状況を表している。Ｋ１にはＳ２の消去中断が発生した痕跡はない。このケースではＳ２に記録された情報を基にＳ１の当該セクタの再消去を行うことで読出し不定状態からリカバリすることができる。
【００６４】
仮に、セクタ消去の管理をＳ１とＳ２の２か所のみで行った場合、Ｓ１とＳ２が相互に管理しあうことになる。その場合、読出し不定のデータがたまたまつじつまのあうデータとして読み出された場合、Ｓ１とＳ２のどちらでセクタ消去が中断されたのかを判断することができない。これを防ぐために、本実施形態では、物理的に同一であるブロックを避けて３つ以上のセクタ消去管理領域を設け、お互いを相互に管理対象としないように構成した。これにより、別途不揮発性メモリを用いることなくシリアルフラッシュメモリの読出し不定状態を復旧することができる。
【００６５】
上述のセクタ消去の管理の手順について説明する。以下では、記述を簡単にするため、記録領域２０１をＫ１、記録領域２０２をＤ１、記録領域２０３をＳ１、記録領域２０４をＳ２と表記する。更に、記録領域２０４に含まれる記録領域２０６のことをＳ２（ＧＳ）と表記する。
【００６６】
図５は上記のセクタ消去を管理する際のデジタルカメラ１００の動作を示すフローチャートである。本フローチャートの処理は、デジタルカメラ１００の電源がＯＮとなったことに応じて開始される。
【００６７】
まず、ステップＳ４０１では、第２制御部１１０はＫ１の最新レコードを検索する。Ｋ１に記録されるレコードには日付情報があるため、第２制御部１１０は最も新しい日付で記録されているレコードを最新レコードであると判断する。
【００６８】
ステップＳ４０２では、第２制御部１１０はＳ１領域の最新レコードを検索する。Ｓ１領域には日付情報など時系列を判断するデータがないため、第２制御部１１０は最後に記録されたデータ（空白領域の手前のデータ）を最新データとして判断する。
【００６９】
ステップＳ４０３では、第２制御部１１０はＳ２領域の最新レコードを検索する。Ｓ２領域にも日付情報など時系列を判断するデータがないため、第２制御部１１０は最後に記録されたデータ（空白領域の手前のデータ）を最新データとして判断する。Ｓ２領域は図２（ａ）に示すように記録領域２０５と記録領域２０６の２つの領域があるため、２つの領域を別々に検索して最新レコードを求める。
【００７０】
なお、ステップＳ４０１、ステップ４０２、ステップ４０３の最新レコード検索において、どこかに読出し不定が発生している場合、最新レコードが検出できない場合があるが、その場合、第２位制御部１１０は検索が失敗したことだけ記録して処理を進める。
【００７１】
ステップＳ４０４では、第２制御部１１０はＫ１、Ｓ１、Ｓ２の最新レコードを参照し、どこかで消去中断の痕跡があるか判断する。消去中断の痕跡とは、セクタ消去の開始フラグに定数が記録されており、セクタ消去処理終了後に記録されるはずの完了フラグに定数が記録されていない状況を表す。第２制御部１１０は、Ｋ１、Ｓ１、Ｓ２のどこかに消去中断の痕跡がある場合ステップＳ４０５に処理を進める。第２制御部１１０は、消去中断の痕跡がない場合、初期化処理を終了する。ステップＳ４０５では、第２制御部１１０はどの記録領域でセクタ消去の中断が発生したかを判断する。その判断方法は図３（ｃ）を使って説明した通りである。Ｓ２だけ、もしくはＳ２とＳ１のセクタ消去中断の痕跡がある場合、第２制御部１１０は処理をステップＳ４０６に進める。Ｋ１またはＤ１だけ、もしくはＫ１とＳ２のセクタ消去中断の痕跡がある場合、第２制御部１１０は処理をステップＳ４０７に進める。Ｓ１だけ、もしくはＳ１とＫ１のセクタ消去中断の痕跡がある場合、第２制御部１１０は処理をステップＳ４０８に進める。
【００７２】
ステップＳ４０６では、第２制御部１１０は後述するＳ２領域消去処理を実行し、消去処理が中断されたＳ２領域の当該セクタを再度消去することで読出し不定状態からリカバリする。
【００７３】
ステップＳ４０７では、第２制御部１１０は後述するＫ１またはＤ１領域消去処理を実行し、消去処理が中断されたＫ１またはＤ１領域の当該セクタを再度消去することで読出し不定状態からリカバリする。
【００７４】
ステップＳ４０８では、後述するＳ１領域消去処理を実行し、消去処理が中断されたＳ１領域の当該セクタを再度消去することで読出し不定状態からリカバリする。
【００７５】
以下、ステップＳ４０６〜ステップＳ４０８の各ステップで実行される処理について説明する。
【００７６】
まず、ステップＳ４０６のＳ２領域消去処理について、図９を用いて説明する。
【００７７】
ステップＳ７３１では、第２制御部１１０はＫ１領域について、最新ログ管理レコードの検索が完了しているかチェックする。この時点で検索が完了していない場合は、Ｓ２領域のセクタ消去を行うことができないので処理を中断する。最新ログ管理レコードの検索が完了している場合、第２制御部１１０はステップＳ７３２に処理を進める。
【００７８】
ステップＳ７３２では、第２制御部１１０は、Ｋ１領域の最新ログ管理レコードにおいて、Ｓ２領域のセクタ消去を管理するための開始フラグおよび終了フラグが未使用かどうか調べる。ここで、開始フラグ、終了フラグが書込み可能な場合はステップＳ７３３に進む。
【００７９】
ステップ７３２で最新ログ管理レコードの開始フラグおよび終了フラグが使用済だった場合、第２制御部１１０はステップＳ７３６に処理を進める。ステップＳ７３６では、Ｋ１領域に新しいログ管理レコードを書込む位置を検索する。ステップＳ７３７では、第２制御部１１０は、ステップＳ７３６で検索した書込み位置がセクタ移動した場所かどうかを判定する。判定の結果、セクタ移動していない場合は、ステップＳ７３８に進み、最新ログ管理レコードを複製し、開始フラグと終了フラグが書き込める状態にした後、ステップＳ７３３に進む。
【００８０】
ステップＳ７３７でセクタ移動が発生している場合、第２制御部１１０は、ステップＳ７３９に進み、Ｓ１に書き込める領域があるかどうかを判定する。Ｓ１に書き込める領域がある場合は、第２制御部１１０はステップＳ７４６に進む。ここでは、Ｋ１領域の当該セクタを消去するため、Ｋ１領域のセクタを指定して後述のＫ１またはＤ１領域消去処理を実施した後、ステップＳ７３８に進む。ステップＳ７３８では、第２制御部１１０は最新ログ管理レコードを複製して開始フラグ、終了フラグを書込み可能な状態にしてステップＳ７３３に進む。
【００８１】
ステップＳ７３９でＳ１領域に書込める領域がない場合、すなわち、Ｓ１、Ｓ２、Ｋ１の消去が必要な場合、第２制御部１１０はステップ７４０に処理を進める。ステップＳ７４０では、第２制御部１１０はＳ２（ＧＳ）に新しいセクタ消去管理レコードを作成して開始フラグに定数を書込み、ステップＳ７４１に進んでＳ１領域の消去を実施する。Ｓ１領域の消去が完了したらステップＳ７４２に進み、第２制御部１１０はＳ２（ＧＳ）の管理レコードに終了フラグを書込みＳ１領域の消去を完了する。ステップＳ７４３では、Ｓ１領域に書込み可能な領域ができたので、第２制御部１１０はＳ１領域にＫ１領域のセクタを消去するため、新しいセクタ消去管理レコードを作成し、開始フラグを書込む。ステップＳ７４４で、第２制御部１１０は、Ｋ１領域の当該セクタの消去を実施し、完了したらステップＳ７４５でＳ１レコードに終了フラグを書込みＫ１領域のセクタ消去を完了する。その後ステップＳ７３８に移動し、第２制御部１１０は最新ログ管理レコードを複製し、ステップＳ７３３に処理を進める。
【００８２】
ステップＳ７３３では、最新ログ管理領域に開始フラグを書き込み、ステップＳ７３４に処理を進める。ステップＳ７３４では、第２制御部１１０はＳ２領域の当該セクタ消去処理を実行する。Ｓ２領域の消去が完了したら、ステップＳ７３５で第２制御部１１０はＫ１領域の最新ログ管理レコードに終了フラグを書込み、Ｓ２領域消去処理を終了する。
【００８３】
次に、ステップＳ４０７のＫ１またはＤ１領域消去処理について、図８（ｃ）を用いて説明する。
【００８４】
ステップＳ７２１では、第２制御部１１０は、Ｋ１またはＤ１領域のセクタ消去を管理するため、Ｓ１領域に新しいレコードを書込む位置の検索を行う。ステップＳ７２２で、第２制御部１１０はステップＳ７２１の結果をもとに、Ｓ１領域に新しいレコードを書込み可能かを判定し、書込み可能な場合はステップＳ７２４に進む。書込みできない場合は、ステップＳ７２３に進み、第２制御部１１０は後述のＳ１領域消去処理を実行してＳ１領域に新しいレコードを作成する領域を作成する。
【００８５】
ステップＳ７２４では、第２制御部１１０はＳ１レコードの開始フラグを書込み、ステップＳ７２５に進んでＫ１領域またはＤ１領域の消去処理を実施する。セクタ消去が完了したら、ステップＳ７２６に進み、第２制御部１１０はＳ１領域のセクタ消去管理レコードに終了フラグを書込み、Ｋ１またはＤ１領域消去処理を終了する。
【００８６】
次に、ステップＳ４０８のＳ１領域消去処理について、図８（ｂ）を用いて説明する。
【００８７】
ステップＳ７１１では、第２制御部１１０はＳ１領域のセクタ消去をするために、Ｓ２領域に新しいレコードを書込む位置を検索する。ステップＳ７１２では、第２制御部１１０はステップＳ７１１の検索結果を基にＳ２領域に新しいレコードが書込み可能かを判断し、書込み可能な場合はステップＳ７１４に処理を進める。ステップＳ７１２でＳ２にレコードを書込めない場合、第２制御部１１０はステップＳ７１３に進み、Ｓ２領域消去処理を実行し、Ｓ２領域に新しいレコードを作成する場所を確保してステップＳ７１４に処理を進める。
【００８８】
ステップＳ７１４では、第２制御部１１０はＳ２領域に新しいセクタ消去管理領域を作成し、開始フラグを書込み、ステップＳ７１５に進んでＳ１領域の消去を実行する。セクタ消去が完了したら、ステップＳ７１６に進み、第２制御部１１０はＳ２領域のセクタ消去管理レコードに終了フラグを書込み、Ｓ１領域の消去処理を終了する。
【００８９】
以上の手順によって、デジタルカメラ１００の電源がＯＮとなった時にセクタ消去の中断と、それによるシリアルフラッシュメモリの読出し不定状態からのリカバリが完了し、新たにＧＰＳログを記録できる状態に復旧する。
【００９０】
初期化終了後、ＧＰＳログを記録する処理の中で、Ｓ１、Ｓ２、Ｋ１またはＤ１領域のリングバッファに空き領域を作成するため、セクタ消去を行う場合の手順を、図８（ａ）を用いて説明する。
【００９１】
ステップＳ７０１では、第２制御部１１０は、消去するセクタがＳ１かどうかを判定する。消去するセクタがＳ１領域である場合、ステップＳ７０２に進んでＳ１領域消去処理を実施してセクタ消去を終了する。
【００９２】
ステップＳ７０１で、消去セクタがＳ１ではなかった場合、第２制御部１１０はステップＳ７０３に進んで消去セクタがＳ２領域であるかを判定する。消去セクタがＳ２領域である場合、第２制御部１１０はステップＳ７０４に進んでＳ２領域消去処理を実施してセクタ消去を終了する。ステップＳ７０３で消去セクタがＳ２領域ではなかった場合、第２制御部１１０はステップＳ７０５に進み、Ｋ１またはＤ１領域消去処理を実施してセクタ消去を終了する。
【００９３】
Ｓ１領域消去処理、Ｓ２領域消去処理、およびＫ１またはＤ１領域消去処理は、必要に応じて他の領域のセクタ消去処理を呼び出すため、ＧＰＳログを記録する処理の中でセクタ消去を行う手順は以上のようなシンプルな手順で完了する。
【００９４】
＜記録媒体１０７へのログデータの出力＞
次に、シリアルフラッシュメモリ１１５に記録されているログデータを、記録媒体１０７にログファイルとして出力する処理について説明する。
【００９５】
本実施形態におけるデジタルカメラ１００では、シリアルフラッシュメモリ１１５に記録されているログデータを、管理レコードで区切られた単位毎に一つのログファイルとして記録媒体１０７に出力することができる。なお、記録媒体１０７の記録領域をログデータで圧迫する可能性があるため、本実施形態ではログデータの出力は自動ではなく、ユーザの操作に応じて実行する。
【００９６】
図６は、シリアルフラッシュメモリ１１５に記録されているログデータを、記録媒体１０７にログファイルとして出力する際のデジタルカメラ１００の動作の概要を示すシーケンス図である。このシーケンス図に示す動作は第１制御部１０１および第２制御部１１０がそれぞれ、不揮発性メモリ１０３および不揮発性メモリ１１１に記録されているプログラムを、作業用メモリ１０４および作業用メモリ１１２に展開・実行することにより実現される。またこのシーケンス図の動作は、例えばログデータを記録媒体１０７に出力する指示を第２制御部１１０が受け付けたことに応じて開始する。
【００９７】
まず、ステップＳ５０１にて、第２制御部１１０は、シリアルフラッシュメモリ１１５に記録されているすべてのログ管理レコードの情報を第１制御部１０１に送信する。それぞれのログ管理レコードの情報には、データサイズと開始日時、およびＵＴＣ時差が含まれる。
【００９８】
ログ管理レコードの情報を受信した第１制御部１０１は、ステップＳ５０２にて、ログ管理レコードの情報に含まれるデータサイズからログデータの総サイズを算出し、記録媒体１０７の空き容量とログデータの総サイズとを比較する。これにより、記録媒体１０７にログデータを記録するのに十分な空き容量があるかを判断する。比較の結果、第１制御部１０１が、記録媒体１０７の空き容量が足りないと判断した場合、第１制御部１０１は空き容量が不足している旨をユーザに通知し、本シーケンスの処理を終了する。一方、比較の結果、第１制御部１０１が空き容量が十分であると判断した場合、第１制御部１０１はＳ５０１で情報を送信されたログ管理レコードのうち、一つのログ管理レコードに対応するログデータの要求を第２制御部１１０に送信する。図６では、説明のため、空き容量が十分あると判断した場合の例を示している。すなわち、ステップＳ５０３にて、第１制御部１０１はログデータの要求を第２制御部１１０に送信する。
【００９９】
ログデータの要求を受信した第２制御部１１０はステップＳ５０４にて、シリアルフラッシュメモリ１１５に記録されているログデータのうち、要求されたログデータを読み出し、第１制御部１０１に送信する。
【０１００】
ログデータを受信した第１制御部１０１はステップＳ５０５で、受信したログデータを記録媒体１０７に記録するログファイルの形式に変換する。本実施形態では記録媒体１０７は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅｓ：データの管理のためのファイルシステムの形式）形式でデータを取り扱う。
【０１０１】
続くステップＳ５０６では、第１制御部１０１は、変換して得たログファイルを、記録媒体１０７に記録する。
【０１０２】
ステップＳ５０７では、第１制御部１０１は、ステップＳ５０１で情報を送信されたすべてのログ管理レコードに対応するログデータに関して、ステップＳ５０５の処理が実行されたか否かを判断する。第１制御部１０１が、まだすべてのログ管理レコードに対応するログデータに関してステップＳ５０５の処理を実行していないと判断した場合、ステップＳ５０３に戻り、他のログ管理レコードに関して処理を繰り返す。一方、第１制御部１０１が、すべてのログ管理レコードに対応するログデータに関してステップＳ５０５の処理が完了したと判断した場合、処理を終了する。
【０１０３】
以上が、ログデータを記録媒体１０７に出力する際のデジタルカメラ１００の動作の概要である。
【０１０４】
ログデータの出力の結果、記録媒体１０７には、図７に示すようなログファイル６００が記録される。本実施形態におけるログファイル６００はＮＭＥＡフォーマットに従ったデータが記録されたテキストデータである。ＮＭＥＡフォーマットでは記録されている情報のうち、＄ＧＰＧＧＡから始まる行と＄ＧＰＲＭＣから始まる行とが対になっている。この対の情報には、位置情報６１３とその位置情報を取得した日付６１２および時間６１１が記録されている。また、ログファイルのヘッダ領域６０１には、ログファイルが記録される際の記録条件が記録される。具体的には、ログファイルとして記録される位置情報が取得された日時を示す記録日時６０２が記録される。この記録日時６０２には、位置情報を管理していたログ管理レコードの開始日時２１１の値が用いられる。さらに、ログファイルを生成した際にデジタルカメラ１００に設定されているタイムゾーンの情報、すなわちＵＴＣ時差６０３も記録条件として記録される。これらの記録条件は、図６のステップＳ５０１で送信されたログ管理レコードの情報が用いられ、ステップＳ５０６で記録媒体に記録される際にヘッダに記録される。また、ログファイルのファイルネームは、ログ管理レコードの開始日時２１１の値に基づき決定される。
【０１０５】
記憶媒体にログファイルを出力する場合、ＮＭＥＡフォーマットのように十分に普及した形式とすることで、利用可能なＰＣアプリケーションが豊富にあるためユーザの使い勝手が向上する。また、上記ログファイルのヘッダ領域６０１はＮＭＥＡフォーマットではない。そのため、一般的なＰＣアプリケーションにＮＭＥＡフォーマットとしてログファイルを読み込ませた場合は無視されるが、専用のＰＣアプリケーションではこれらの情報を活用して付加価値をつけることができる。
【０１０６】
＜その他の実施形態＞
なお、上述の実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2016038736.tif 000003
【図２】
2016038736.tif 000004
【図３】
2016038736.tif 000005
【図４】
2016038736.tif 000006
【図５】
2016038736.tif 000007
【図６】
2016038736.tif 000008
【図７】
2016038736.tif 000009
【図８】
2016038736.tif 000010
【図９】
2016038736.tif 000011
【図１０】
2016038736.tif 000012