(57)【特許請求の範囲】
【請求項１】
データを記憶するデータ記憶領域とこのデータ記憶領域に記憶されたデータを管理するためのメモリ管理情報を記憶する複数のメモリ管理情報記憶領域とを有するフラッシュメモリを備えた情報処理装置であって、
前記フラッシュメモリの複数のメモリ管理情報記憶領域のメモリ管理情報を順次更新して全てのメモリ管理情報記憶領域のメモリ管理情報を同一内容にするメモリ管理情報更新手段と、
前記メモリ管理情報記憶領域毎に当該記憶領域の更新開始時に前記メモリ管理情報の更新中であることを示す更新中情報を設定し、記憶手段に記憶する情報設定手段と、
前記メモリ管理情報更新手段による前記メモリ管理情報の更新処理において、更新処理の開始時に前記記憶手段に記憶された全ての更新中情報を解除するとともに、最後のメモリ管理情報記憶領域を除いて各メモリ管理情報記憶領域の更新終了時に各メモリ管理情報記憶領域の更新開始時に設定された更新中情報を解除する情報解除手段と、
前記情報解除手段により前記記憶手段に記憶された全ての更新中情報が解除される前に、当該記憶手段に記憶された更新中情報に基づいて最後にメモリ管理情報の更新が行なわれたメモリ管理情報記憶領域を判別し、このメモリ管理情報記憶領域と異なるメモリ管理情報記憶領域から順番に前記メモリ管理情報更新手段により前記メモリ管理情報を更新させる更新制御手段と、
電源がオンされた時に、前記複数のメモリ管理情報記憶領域のメモリ管理情報が相互に同一であるか否かを判別する第１の判別手段と、
前記判別手段により同一でないと判別されると、前記記憶手段に記憶された更新中情報に基づいて前記メモリ管理情報が正常に更新されなかったメモリ管理情報記憶領域を判別する第２の判別手段と、
前記第２の判別手段で正常に更新されなかったと判断されたメモリ管理情報記憶領域のメモリ管理情報を他のメモリ管理情報記憶領域のメモリ管理情報に変更するメモリ管理情報変更手段とを備えたことを特徴とする情報処理装置。
【請求項２】
前記フラッシュメモリは、２つのメモリ管理情報記憶領域を有する、請求項１に記載情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データを記憶するためにフラッシュメモリを備えた情報処理装置に関するものである。
【０００２】
【従来の技術】
近年、マイクロコンピュータやマイクロプロセッサなどの情報処理装置を備えた、事務用電子機器、家庭用電子機器、コンピュータ周辺装置などが盛んに開発されている。
【０００３】
このような装置においては、比較的大量のデータを書換え自在に記憶する記憶手段として、一般的にＲＡＭが用いられている。たとえば、ファクシミリ装置においては、メモリ受信やメモリタイマ送信などのために、比較的大量のファクシミリデータを記憶しておく必要があり、このための記憶手段として、通常はＲＡＭが用いられていた。
【０００４】
このようにＲＡＭが広く用いられているのは、容量が比較的大きくかつ安価であり、しかもアクセス速度が高速であるというのが主な理由であると考えられる。
【０００５】
ところが、ＲＡＭは電源がオフすると記憶内容が消失する揮発性メモリであり、電源オフ時にも記憶内容を保持するためには、電池などを用いて電源バックアップを施す必要がある。
【０００６】
一方、ＥＥＰＲＯＭやフラッシュメモリなどの不揮発性メモリは、電源がオフしても記憶内容が消失しないので、電池などを用いて電源バックアップを施す必要がない。しかも、これら不揮発性メモリのうちのフラッシュメモリは、比較的大容量で、価格もＲＡＭのうちでも安価なダイナミックＲＡＭと同程度のものが市場に出回りつつある。
【０００７】
そこで、ファクシミリデータなどの比較的大量のデータを記憶する記憶手段として、フラッシュメモリを用いることが考えられる。
【０００８】
【発明が解決しようとする課題】
しかしながら、記憶手段としてフラッシュメモリを用いた場合、フラッシュメモリはアクセスに時間がかかるので、メモリ管理情報の書き込み中に停電などにより書き込みが中断されてしまうことがあり、メモリ管理情報の消失により記憶内容が正しく読み出せない事態が生じ得るという不都合が考えられる。
【０００９】
すなわち、フラッシュメモリは、書き込み、読み出し、および消去を１ビットあるいは１バイト単位で行うことができず、書き込みおよび読み出しの単位がたとえば３２バイトであり、消去の単位がたとえば４Ｋバイトである。このため、フラッシュメモリにおける個々のデータの格納位置などを表すメモリ管理情報の更新時には、その更新が単に情報の追加の場合であっても、３２バイトの情報を書き込む必要がある。さらに、その更新が情報の書き換えであれば、その書き換え内容が僅かなものであっても、メモリ管理情報の内容を一旦ＲＡＭなどからなるバッファメモリに格納し、フラッシュメモリに記憶されているメモリ管理情報を消去するとともに、バッファメモリに格納されたメモリ管理情報を更新して、それをバッファメモリに書き込む必要がある。もちろん、ここではメモリ管理情報の容量を４Ｋバイト以下と仮定している。このため、メモリ管理情報の更新にはかなりの時間が必要であり、この更新中に停電などにより電源がオフすると、バッファメモリの内容が消失してしまい、電源のオン時に正しいメモリ管理情報をフラッシュメモリに書き込むことができなくなる。この結果、フラッシュメモリに記憶されている所望のデータを読み出すことができないという不都合が生じる。
【００１０】
本発明は、上記の点に鑑みて提案されたものであって、データの記憶手段としてフラッシュメモリを用いても、メモリ管理情報の更新中における停電などによるメモリ管理情報の損傷や消失のない情報処理装置を提供することを目的としている。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載した発明の情報処理装置は、データを記憶するデータ記憶領域とこのデータ記憶領域に記憶されたデータを管理するためのメモリ管理情報を記憶する複数のメモリ管理情報記憶領域とを有するフラッシュメモリを備えた情報処理装置であって、前記フラッシュメモリの複数のメモリ管理情報記憶領域のメモリ管理情報を順次更新して全てのメモリ管理情報記憶領域のメモリ管理情報を同一内容にするメモリ管理情報更新手段と、メモリ管理情報記憶領域毎に当該記憶領域の更新開始時にメモリ管理情報の更新中であることを示す更新中情報を設定し、記憶手段に記憶する情報設定手段と、メモリ管理情報更新手段によるメモリ管理情報の更新処理において、更新処理の開始時に記憶手段に記憶された全ての更新中情報を解除するとともに、最後のメモリ管理情報記憶領域を除いて各メモリ管理情報記憶領域の更新終了時に各メモリ管理情報記憶領域の更新開始時に設定された更新中情報を解除する情報解除手段と、情報解除手段により記憶手段に記憶された全ての更新中情報が解除される前に、当該記憶手段に記憶された更新中情報に基づいて最後にメモリ管理情報の更新が行なわれたメモリ管理情報記憶領域を判別し、このメモリ管理情報記憶領域と異なるメモリ管理情報記憶領域から順番に前記メモリ管理情報更新手段により前記メモリ管理情報を更新させる更新制御手段と、電源がオンされた時に、複数のメモリ管理情報記憶領域のメモリ管理情報が相互に同一であるか否かを判別する第１の判別手段と、判別手段により同一でないと判別されると、記憶手段に記憶された更新中情報に基づいてメモリ管理情報が正常に更新されなかったメモリ管理情報記憶領域を判別する第２の判別手段と、第２の判別手段で正常に更新されなかったと判断されたメモリ管理情報記憶領域のメモリ管理情報を他のメモリ管理情報記憶領域のメモリ管理情報に変更するメモリ管理情報変更手段とを備えている。なお、フラッシュメモリには、２つのメモリ管理情報記憶領域を設けるとよい。
【００１２】
この情報処理装置によれば、フラッシュメモリに複数のメモリ管理情報記憶領域を設定し、それらのうちのいずれかのメモリ管理情報が更新されているときに電源がオフすれば、そのメモリ管理情報記憶領域のメモリ管理情報を電源のオン時に変更して他のメモリ管理情報記憶領域のメモリ管理情報と同一内容にするので、データの記憶手段としてフラッシュメモリを用いても、メモリ管理情報の更新中における停電などによるメモリ管理情報の損傷や消失がない。
【００１３】
たとえば、フラッシュメモリに２つのメモリ管理情報記憶領域を設定し、それらに同一のメモリ管理情報を書き込んで、メモリ管理情報の更新時に、２つのメモリ管理情報記憶領域のメモリ管理情報を順次更新するようにすれば、一方のメモリ管理情報記憶領域のメモリ管理情報の更新中に停電などにより電源がオフした場合、一方のメモリ管理情報記憶領域のメモリ管理情報の一部または全部は消失するが、他方のメモリ管理情報記憶領域のメモリ管理情報は停電などによる電源オフの影響を受けない。しかも、電源がオンされたときに、一方のメモリ管理情報記憶領域のメモリ管理情報を消去して、他方のメモリ管理情報記憶領域のメモリ管理情報を他方のメモリ管理情報記憶領域にコピーすることにより、常に双方のメモリ管理情報記憶領域のメモリ管理情報を同一内容にできるので、いずれのメモリ管理情報記憶領域のメモリ管理情報の更新中に停電などにより電源がオフしても、しかもその電源オフが何回発生しても、メモリ管理情報の損傷や消失を確実に防止できる。なお、メモリ管理情報の損傷とは、３２バイトのメモリ管理情報の書き込みが途中まで行われて、中途半端なメモリ管理情報がメモリ管理情報記憶領域に記憶されてしまうことをいい、メモリ管理情報の消失とは、３２バイトの整数倍のメモリ管理情報のメモリ管理情報記憶領域への書き込みが行えなくなることをいう。ただし、電源オフ時におけるメモリ管理情報の更新はなされなかったことになる場合がある。
【００１４】
また、フラッシュメモリのメモリ管理情報の更新処理が正常が行われた場合は最後のメモリ管理情報記憶領域に対する更新中情報が設定されており、いずれかのメモリ管理情報記憶領域で更新異常が発生した場合は、そのメモリ管理情報記憶領域に対する更新中情報が設定されているので、電源オン時に前回の電源オフ時にメモリ管理情報の更新異常があったか否かを更新中情報によって判別することはできないが、メモリ管理情報領域相互でメモリ管理情報が一致するか否かを判別しているので、確実に更新異常の有無を判別することができる。そして、更新異常があった場合は、更新中情報が設定されているメモリ管理情報記憶領域を更新異常の発生した記憶領域として特定できるので、このメモリ管理情報記憶領域のメモリ管理情報を他のメモリ管理情報記憶領域のメモリ管理情報に変更することにより、確実に全てのメモリ管理情報記憶領域を同一内容に復旧させることができる。
【００１５】
情報処理装置としては、マイクロコンピュータやマイクロプロセッサなどが考えられるが、これらに限るものではない。フラッシュメモリに記憶されるデータとしては、ファクシミリ送受信データや音声データなどが考えられるが、これらに限るものではない。
【００１６】
メモリ管理情報更新手段およびメモリ管理情報変更手段は、所定のプログラムに基づいてＣＰＵを動作させることにより実現できる。
【００１７】
【００１８】
【００１９】
更新中情報の記憶手段としては、たとえばＥＥＰＲＯＭを用いることができるが、これに限るものではない。
【００２０】
【００２１】
【００２２】
【００２３】
【００２４】
【００２５】
【発明の実施の形態】
以下、本発明の好ましい実施の形態を、図面を参照しつつ具体的に説明する。
【００２６】
図１は、本発明に係る情報処理装置を備えたファクシミリ装置の主要構成を示すブロック図である。このファクシミリ装置は、ＣＰＵ１、ＮＣＵ２、ＲＡＭ３、モデム４、ＲＯＭ５、フラッシュメモリ６、ゲートアレイ７、ＥＥＰＲＯＭ８、コーデック９、読取部１１、記録部１２、操作部１３、表示部１４を備えている。ＣＰＵ１、ＮＣＵ２、ＲＡＭ３、モデム４、ＲＯＭ５、フラッシュメモリ６、ゲートアレイ７、ＥＥＰＲＯＭ８、およびコーデック９は、バス線により相互に接続されている。このバス線には、データバス、アドレスバス、および制御信号線が含まれる。ゲートアレイ７には、読取部１１、記録部１２、操作部１３、および表示部１４が接続されている。ＮＣＵ２は、モデム４および電話回線２１に接続されている。
【００２７】
ＣＰＵ１は、ファクシミリ装置全体を制御する。ＮＣＵ２は、電話回線２１に接続されて網制御を行う。ＲＡＭ３は、ファクシミリデータや音声データなどの各種のディジタルデータを処理するためのバッファなどとして用いられる。モデム４は、送信データの変調や受信データの復調などを行う。ＲＯＭ５は、各種のプログラムやデータなどを記憶している。フラッシュメモリ６は、ファクシミリデータや音声データあるいはメモリ管理情報などの各種のディジタルデータを記憶する。ゲートアレイ７は、ＣＰＵ１の入出力インターフェイスなどとして機能する。ＥＥＰＲＯＭ８は、いわゆるワンタッチダイヤルや短縮ダイヤルなどの登録データやフラグなどを記憶している。コーデック９は、モデム４により復調された受信画像データを復号し、また、送信画像データを符号化してモデム４に変調させる。さらにコーデック９は、留守番電話モードにおいて受信音声信号をディジタルの音声データに変換し、その音声データを再生時にアナログの音声信号に変換する。読取部１１は、光源やＣＣＤセンサや原稿送りモータなどを備えており、原稿を読み取って画像信号を出力する。記録部１２は、レーザプリンタなどを備えており、画像データに基づいて、記録用紙上に画像を記録する。操作部１３は、キースイッチ群などからなり、使用者の操作に応じた操作信号を出力する。表示部１４は、ＬＣＤなどからなり、ＣＰＵ１により制御されて各種の表示を行う。
【００２８】
すなわち、ＣＰＵ１は、ＲＯＭ５に記憶されている所定のプログラムに基づいて動作することにより、ＥＥＰＲＯＭ８に設定された複数のメモリ管理情報記憶領域のメモリ管理情報を順次更新して全てのメモリ管理情報記憶領域のメモリ管理情報を同一内容にするメモリ管理情報更新手段と、このメモリ管理情報更新手段により複数のメモリ管理情報記憶領域のうちのいずれかのメモリ管理情報が更新されているときに電源がオフすれば、そのメモリ管理情報記憶領域のメモリ管理情報を電源がオンされた時に変更して他のメモリ管理情報記憶領域のメモリ管理情報と同一内容にするメモリ管理情報変更手段とを実現する。また、ＲＯＭ５は、データを記憶するためにフラッシュメモリ６を備えた情報処理装置を動作させるためのプログラムを格納した記憶媒体であって、フラッシュメモリ６に設定され、データを管理するためのメモリ管理情報を記憶する複数のメモリ管理情報記憶領域のメモリ管理情報を順次更新して全てのメモリ管理情報記憶領域のメモリ管理情報を同一内容にするメモリ管理情報更新プログラムと、メモリ管理情報更新プログラムにより複数のメモリ管理情報記憶領域のうちのいずれかのメモリ管理情報が更新されているときに電源がオフすれば、そのメモリ管理情報記憶領域のメモリ管理情報を電源がオンされた時に変更して他のメモリ管理情報記憶領域のメモリ管理情報と同一内容にするメモリ管理情報変更プログラムとを含むプログラムが格納されていることを特徴とする記憶媒体を構成している。
【００２９】
図２はフラッシュメモリ６の記憶領域の説明図であって、このフラッシュメモリ６は、たとえば３２バイト単位でデータの書き込みおよび読み出しが可能であって、４Ｋバイト単位でデータの消去が可能である。そして、消去の単位である４Ｋバイト毎にブロック化されており、各々４Ｋバイトの２つのメモリ管理情報記憶領域Ａ，Ｂと、各々４Ｋバイトの多数のデータ記憶領域とが設定されている。
【００３０】
次に、このように構成されたファクシミリ装置の動作の要点について説明する。メモリ受信モードのときに、電話回線２１を介してＮＣＵ２にファクシミリ信号が入力されると、そのファクシミリ信号は、モデム４により復調され、フラッシュメモリ６に格納される。このとき、フラッシュメモリ６に対する書き込みはたとえば３２バイト程度の所定容量毎に行う必要があるので、フラッシュメモリ６へのファクシミリデータの書き込みのために、ＲＡＭ３をバッファメモリとして使用する。
【００３１】
ところで、フラッシュメモリ６のメモリ管理情報記憶領域Ａ，Ｂには、フラッシュメモリ６のいずれの番地にいずれのデータが格納されているかなどを表すメモリ管理情報が格納されているが、フラッシュメモリ６に書き込まれたファクシミリデータを正しく読み出せるように、１通信の終了後に、ＣＰＵ１によりフラッシュメモリ６のメモリ管理情報記憶領域Ａ，Ｂの内容が順次更新される。この更新後のメモリ管理情報記憶領域Ａ，Ｂに記憶されているメモリ管理情報の内容は、互いに同一である。
【００３２】
このようなメモリ管理情報記憶領域Ａ，Ｂの更新は、単にメモリ管理情報を書き加えるだけの場合、先ず書き加えるべきメモリ管理情報を作成してＲＡＭ３に格納し、そのメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ａに書き込み、次いでＲＡＭ３のメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ｂに書き込む。また、単にメモリ管理情報を書き加えるのではなく、その内容を書き換える場合は、先ずメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を全部読み出してＲＡＭ３に格納し、そのメモリ管理情報の内容を書き換えて、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を全部消去し、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出して、そのメモリ管理情報をメモリ管理情報記憶領域Ａに書き込む。次に、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を全部消去し、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出して、そのメモリ管理情報をメモリ管理情報記憶領域Ｂに書き込む。
【００３３】
ここで、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を全部消去し、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位でメモリ管理情報記憶領域Ａに書き込んでいるときに、停電などにより電源がオフすると、バッファメモリとしてのＲＡＭ３の内容が消失するので、それ以降はＲＡＭ３に記憶されているメモリ管理情報をメモリ管理情報記憶領域Ａに書き込むことができず、メモリ管理情報記憶領域Ａに完全なメモリ管理情報を格納できなくなる。また、メモリ管理情報記憶領域Ａにメモリ管理情報を単に書き加える場合でも、３２バイト単位でのメモリ管理情報の書き込み中に停電などにより電源がオフすると、中途半端なメモリ管理情報がメモリ管理情報記憶領域Ａに記憶されることになって不都合である。そこで本実施形態では、このような場合、次に電源がオンされたときに、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を３２バイト単位で読み出してＲＡＭ３に書き込み、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を全部消去して、ＲＡＭ３に書き込まれたメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ａに書き込んでいく。したがって、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新中に停電などにより電源がオフされても、メモリ管理情報記憶領域Ａの内容を復元できる。但し、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の書き換え中にはメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報は書き換えられれていないので、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報は停電時における書き換えよりも１回前に更新した状態に戻る。この場合、停電時における書き換えに対応するファクシミリデータをフラッシュメモリ６から読み出すことは困難であるが、それ以前にフラッシュメモリ６のデータ記憶領域に格納されたデータは支障無く読み出すことができる。
【００３４】
一方、メモリ管理情報を書き換えるために、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を全部消去し、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ｂに書き込んでいるとき、あるいは、メモリ管理情報を単に書き加えるために、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ｂに書き込んでいるときに、停電などにより電源がオフすると、上記と同様に、電源がオンされたときに、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報をメモリ管理情報記憶領域Ｂにコピーすることになるが、このときには、停電時には既にメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報が書き換えられているので、メモリ管理情報記憶領域Ｂに書き換え後のメモリ管理情報を正しく記憶させることができる。したがって、停電時における書き換えに対応するファクシミリデータをフラッシュメモリ６から読み出すこともできる。
【００３５】
以上のメモリ管理情報の更新動作は、フラッシュメモリ６のデータ記憶領域に送信すべきファクシミリデータを記憶させておいて所定時刻に自動的にファクシミリ送信を行うメモリタイマ送信や、留守番電話モード時に受信した音声信号を音声データとしてフラッシュメモリ６のデータ記憶領域に記憶させる場合など、フラッシュメモリ６のデータ記憶領域に新たにデータを書き込んだときには、同様に行われる。そして、メモリ管理情報の更新動作中に停電などにより電源がオフすれば、上記のコピーによるメモリ管理情報の復元すなわち変更動作が同様に実行される。
【００３６】
したがって、フラッシュメモリ６のメモリ管理情報の更新中に発生した停電などによりメモリ管理情報が損傷あるいは消失するような事態を確実に回避できる。
【００３７】
次に、上記メモリ管理情報の更新処理および変更処理の手順の一例について、図３および図４に示すフローチャートを参照しながら説明する。
【００３８】
図３は上記メモリ管理情報の更新処理の手順の一例を示すフローチャートであって、メモリ管理情報の更新が必要なときに、先ずＣＰＵ１が、フラグＦａの内容が１であるか否かを判断する（Ｓ１）。このフラグＦａは、前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ａについてのものであるか否かを表すフラグであって、その内容が１であれば前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ａについてのものであり、０であれば前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ａについてのものではないということになる。このフラグＦａは、ＥＥＰＲＯＭ８に記憶されている。
【００３９】
フラグＦａの内容が１であれば（Ｓ１：ＹＥＳ）、前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ａについてのものであるということなので、ＣＰＵ１が、フラグＦａの内容を０に設定し（Ｓ２）、フラグＦｂの内容を１に設定する（Ｓ３）。このフラグＦｂは、前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ｂについてのものであるか否かを表すフラグであって、その内容が１であれば前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ｂについてのものであり、０であれば前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ｂについてのものではないということになる。このフラグＦｂは、ＥＥＰＲＯＭ８に記憶されている。
【００４０】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を更新する（Ｓ４）。たとえば、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を３２バイト単位で読み出してそのメモリ管理情報をＲＡＭ３に書き込み、ＲＡＭ３に書き込んだメモリ管理情報の内容を書き換え、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を消去して、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ｂに書き込む。あるいは、書き加えるべきメモリ管理情報を作成してＲＡＭ３に記憶させ、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ｂに書き込む。
【００４１】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新が終了したか否かを判断する（Ｓ５）。
【００４２】
メモリ管理情報の更新が終了していれば（Ｓ５：ＹＥＳ）、ＣＰＵ１が、フラグＦｂの内容を０に設定し（Ｓ６）、フラグＦａの内容を１に設定する（Ｓ７）。
【００４３】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を更新する（Ｓ８）。たとえば、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を３２バイト単位で読み出してそのメモリ管理情報をＲＡＭ３に書き込み、ＲＡＭ３に書き込んだメモリ管理情報の内容を書き換え、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を消去して、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ａに書き込む。あるいは、書き加えるべきメモリ管理情報を作成してＲＡＭ３に記憶させ、ＲＡＭ３に記憶されているメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ａに書き込む。
【００４４】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新が終了したか否かを判断し（Ｓ９）、終了していれば（Ｓ９：ＹＥＳ）、このルーチンを終了する。
【００４５】
Ｓ９において、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新が終了していなければ（Ｓ９：ＮＯ）、Ｓ８に戻ってメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新を継続する。
【００４６】
Ｓ５において、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新が終了していなければ（Ｓ５：ＮＯ）、Ｓ４に戻ってメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新を継続する。
【００４７】
Ｓ１において、フラグＦａの内容が１でなければ（Ｓ１：ＮＯ）、前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ｂについてのものであるということなので、ＣＰＵ１が、フラグＦｂの内容を０に設定し（Ｓ１０）、フラグＦａの内容を１に設定する（Ｓ１１）。
【００４８】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を更新する（Ｓ１２）。
【００４９】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新が終了したか否かを判断する（Ｓ１３）。
【００５０】
メモリ管理情報の更新が終了していれば（Ｓ１３：ＹＥＳ）、ＣＰＵ１が、フラグＦａの内容を０に設定し（Ｓ１４）、フラグＦｂの内容を１に設定する（Ｓ１５）。
【００５１】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を更新する（Ｓ１６）。
【００５２】
そしてＣＰＵ１が、フラッシュメモリ６のメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新が終了したか否かを判断し（Ｓ１７）、終了していれば（Ｓ１７：ＹＥＳ）、このルーチンを終了する。
【００５３】
Ｓ１７において、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新が終了していなければ（Ｓ１７：ＮＯ）、Ｓ１６に戻ってメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新を継続する。
【００５４】
Ｓ１３において、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新が終了していなければ（Ｓ１３：ＮＯ）、Ｓ１２に戻ってメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新を継続する。
【００５５】
図４は上記メモリ管理情報の復元すなわち変更処理の手順の一例を示すフローチャートであって、電源がオンされたときに、先ずＣＰＵ１が、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の内容とメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の内容とが完全に一致するか否かを判断する（Ｓ２１）。すなわち、メモリ管理情報記憶領域Ａ，Ｂに記憶されているメモリ管理情報は互いに同一内容になるように順次更新されるので、両者が相違しているということは、前回の更新中に停電などにより更新が適正に行われなかっと判断できることから、それを調べるのである。
【００５６】
メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の内容とメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の内容とが完全に一致していなければ（Ｓ２１：ＮＯ）、前回の更新中に停電などにより更新が適正に行われなかっということなので、ＣＰＵ１が、フラグＦａの内容が１であるか否かを判断する（Ｓ２２）。すなわち、フラグＦａの内容が１であれば、前回の更新はメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報について行われたということであり、フラグＦａの内容が１でなければ、前回の更新はメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報について行われたということであるので、それを調べるのである。
【００５７】
フラグＦａの内容が１であれば（Ｓ２２：ＹＥＳ）、前回の更新はメモリ管理情報記憶領域Ａに記憶されているメモリ管理情報について行われたということなので、ＣＰＵ１が、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を消去し（Ｓ２３）、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報をメモリ管理情報記憶領域Ａにコピーして（Ｓ２４）、このルーチンを終了する。具体的には、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を３２バイト単位で読み出してＲＡＭ３に記憶させ、このメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ａに書き込む。
【００５８】
Ｓ２２において、フラグＦａの内容が１でなければ（Ｓ２２：ＮＯ）、前回の更新はメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報について行われたということなので、ＣＰＵ１が、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を消去し（Ｓ２５）、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報をメモリ管理情報記憶領域Ｂにコピーして（Ｓ２６）、このルーチンを終了する。具体的には、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を３２バイト単位で読み出してＲＡＭ３に記憶させ、このメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ｂに書き込む。
【００５９】
Ｓ２１において、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の内容とメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の内容とが完全に一致していれば（Ｓ２１：ＹＥＳ）、正常にメモリ管理情報が更新されており、前回の更新中に停電などが発生しなかったということなので、メモリ管理情報の変更が不要なことから、このルーチンを終了する。
【００６０】
このように、電源がオンされたときにメモリ管理情報記憶領域Ａ，Ｂのメモリ管理情報の内容を互いに比較して、両者が完全に一致していなければ、前回のメモリ管理情報の更新中に停電などが発生したことが判断でき、さらに、フラグＦａ，Ｆｂの内容により前回のメモリ管理情報の更新がメモリ管理情報記憶領域Ａ，Ｂのうちのいずれについてなされたかを記憶しているので、前回の更新がメモリ管理情報記憶領域Ａ，Ｂのうちのいずれについてなされたかも判断できることから、メモリ管理情報の復元すなわち変更を適切に行える。
【００６１】
次に、メモリ管理情報の更新処理および変更処理の手順の別の例について、図５および図６に示すフローチャートを参照しながら説明する。
【００６２】
図５はメモリ管理情報の更新処理の手順の別の例を示すフローチャートであって、メモリ管理情報の更新が必要なときに、先ずＣＰＵ１が、フラグＦａの内容を１に設定し（Ｓ３１）、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を更新する（Ｓ３２）。
【００６３】
そしてＣＰＵ１が、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新が終了したか否かを判断する（Ｓ３３）。
【００６４】
メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新が終了していれば（Ｓ３３：ＹＥＳ）、ＣＰＵ１が、フラグＦａを０に設定し（Ｓ３４）、フラグＦｂを１に設定して（Ｓ３５）、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を更新する（Ｓ３６）。
【００６５】
そしてＣＰＵ１が、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新が終了したか否かを判断する（Ｓ３７）。
【００６６】
メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新が終了していれば（Ｓ３７：ＹＥＳ）、ＣＰＵ１が、フラグＦｂを０に設定して（Ｓ３８）、このルーチンを終了する。
【００６７】
Ｓ３７において、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新が終了していなければ（Ｓ３７：ＮＯ）、Ｓ３６に戻ってメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新を継続する。
【００６８】
Ｓ３３において、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新が終了していなければ（Ｓ３３：ＮＯ）、Ｓ３２に戻ってメモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新を継続する。
【００６９】
図６はメモリ管理情報の復元すなわち変更処理の手順の別の例を示すフローチャートであって、電源がオンされたときに、先ずＣＰＵ１が、フラグＦａの内容が１であるか否かを判断する（Ｓ４１）。すなわち、フラグＦａの内容が１であれば、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新中に停電などにより電源がオフされたということであるので、それを調べるのである。
【００７０】
フラグＦａの内容が１であれば（Ｓ４１：ＹＥＳ）、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新中に停電などにより電源がオフされたということなので、ＣＰＵ１が、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を消去し（Ｓ４２）、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報をメモリ管理情報記憶領域Ａにコピーして（Ｓ４３）、このルーチンを終了する。具体的には、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を３２バイト単位で読み出してＲＡＭ３に記憶させ、このメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ａに書き込む。
【００７１】
Ｓ４１において、フラグＦａの内容が１でなければ（Ｓ４１：ＮＯ）、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報の更新中に停電などによる電源のオフがなかったということなので、ＣＰＵ１が、フラグＦｂの内容が１であるか否かを判断する（Ｓ４４）。すなわち、フラグＦｂの内容が１であれば、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新中に停電などにより電源がオフされたということであるので、それを調べるのである。
【００７２】
フラグＦｂの内容が１であれば（Ｓ４４：ＹＥＳ）、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報の更新中に停電などにより電源がオフされたということなので、ＣＰＵ１が、メモリ管理情報記憶領域Ｂに記憶されているメモリ管理情報を消去し（Ｓ４５）、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報をメモリ管理情報記憶領域Ｂにコピーして（Ｓ４６）、このルーチンを終了する。具体的には、メモリ管理情報記憶領域Ａに記憶されているメモリ管理情報を３２バイト単位で読み出してＲＡＭ３に記憶させ、このメモリ管理情報を３２バイト単位で読み出してメモリ管理情報記憶領域Ｂに書き込む。
【００７３】
Ｓ４４において、フラグＦｂの内容が１でなければ（Ｓ４４：ＮＯ）、正常にメモリ管理情報が更新されており、前回の更新中に停電などが発生しなかったということなので、メモリ管理情報の変更が不要なことから、このルーチンを終了する。
【００７４】
このように、フラグＦａ，Ｆｂの内容により、前回のメモリ管理情報の更新中に停電などが発生したか否かということと、それがメモリ管理情報記憶領域Ａ，Ｂのうちのいずれのメモリ管理情報の更新中であったかということとが判るので、メモリ管理情報記憶領域Ａ，Ｂのメモリ管理情報の内容を互いに比較することなく、メモリ管理情報の復元すなわち変更を迅速かつ適切に行える。
【００７５】
なお、上記各実施形態では、同一内容のメモリ管理情報を記憶するメモリ管理情報記憶領域をフラッシュメモリ６に２つ設定したが、もちろん３つ以上設定してもよい。
【００７６】
【発明の効果】
以上説明したように請求項１，２に記載した発明の情報処理装置によれば、フラッシュメモリに複数のメモリ管理情報記憶領域を設定し、それらのうちのいずれかのメモリ管理情報が更新されているときに電源がオフすれば、そのメモリ管理情報記憶領域のメモリ管理情報を電源のオン時に変更して他のメモリ管理情報記憶領域のメモリ管理情報と同一内容にするので、データの記憶手段としてフラッシュメモリを用いても、メモリ管理情報の更新中における停電などによりメモリ管理情報の多くが消失してしまうことがない。
【００７７】
また、電源オン時にメモリ管理情報領域相互でメモリ管理情報が一致するか否かを判別しているので、確実に更新異常の有無を判別することができる。そして、更新異常があった場合は、更新中情報が設定されているメモリ管理情報記憶領域を更新異常の発生した記憶領域として特定できるので、このメモリ管理情報記憶領域のメモリ管理情報を他のメモリ管理情報記憶領域のメモリ管理情報に変更することにより、確実に全てのメモリ管理情報記憶領域を同一内容に復旧させることができる。
【００７８】
【００７９】
【図面の簡単な説明】
【図１】  本発明に係る情報処理装置を備えたファクシミリ装置の主要構成を示すブロック図である。
【図２】  図１に示すファクシミリ装置に備えられたフラッシュメモリの記憶領域の説明図である。
【図３】  図１に示すファクシミリ装置によるメモリ管理情報の更新処理の手順の一例を説明するフローチャートである。
【図４】  図１に示すファクシミリ装置によるメモリ管理情報の変更処理の手順の一例を説明するフローチャートである。
【図５】  図１に示すファクシミリ装置によるメモリ管理情報の更新処理の手順の別の例を説明するフローチャートである。
【図６】  図１に示すファクシミリ装置によるメモリ管理情報の変更処理の手順の別の例を説明するフローチャートである。
【符号の説明】
１  ＣＰＵ
２  ＮＣＵ
３  ＲＡＭ
４  モデム
５  ＲＯＭ
６  フラッシュメモリ
７  ゲートアレイ
８  ＥＥＰＲＯＭ
９  コーデック
【図１】
0003858309.tif 000002
【図２】
0003858309.tif 000003
【図３】
0003858309.tif 000004
【図４】
0003858309.tif 000005
【図５】
0003858309.tif 000006
【図６】
0003858309.tif 000007