(57)【特許請求の範囲】
【請求項１】
起動処理に必要な起動処理プログラムと、機能の実行処理に必要な実行処理プログラムと、これらの起動処理プログラム及び実行処理プログラムに関する情報を有するヘッダー情報とを含む複数のプログラムを記憶する書き換え可能な不揮発性メモリーと、
更新用の前記複数のプログラムを記憶する揮発性メモリーと、
該揮発性メモリーに対して前記複数のプログラムを記憶させ、前記不揮発性メモリーに対して更新用の前記複数のプログラムを書き込むプロセッサーとを備え、
前記プロセッサーは、更新用の前記複数のプログラムを前記不揮発性メモリーに書き込む際、更新前の前記起動処理プログラムと前記ヘッダー情報とを残した状態で、先に更新用の前記起動処理プログラムを書き込み、次いで、更新用の前記ヘッダー情報を書き込み、その後、更新用の前記実行処理プログラムを書き込む
ことを特徴とする電子機器。
【請求項２】
前記プロセッサーは、前記揮発性メモリーに対して前記複数のプログラムを記憶させる際、更新用の前記複数のプログラムの配置が前記不揮発性メモリーに書き込まれている更新前の前記複数のプログラムの配置とは逆になることを示す情報を有した前記ヘッダー情報を生成することを特徴とする請求項１に記載の電子機器。
【請求項３】
前記起動処理プログラムは、システム起動用プログラムとアップデート用プログラムとを含むことを特徴とする請求項１又は２に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリーを有する電子機器に関する。
【背景技術】
【０００２】
たとえば、電子機器である、コピー、プリント、ＦＡＸ（Ｆａｃｓｉｍｉｌｅ）などの各ジョブのマルチ動作機能や、ユーザーボックス機能などを有するＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）などの画像形成装置には、それぞれの機能の実行に必要なアプリケーションプログラム（以下、単にプログラムという）を格納するためのＮＡＮＤ型フラッシュメモリーなどの不揮発性メモリーが搭載されている。なお、不揮発性メモリーにプログラムを格納しておくことで、不揮発性メモリーからのプログラムの読み出しの高速化が可能となっている。
【０００３】
ところで、不揮発性メモリーに格納されたプログラムは、機能の拡張などが行われる際に、書き換えられることがある（アップデート）。
【０００４】
ちなみに、特許文献１では、不揮発性メモリーである、フラッシュ型メモリーのプログラム領域の従属ブロックの管理情報をブロックヘッダに格納し、領域変更を行う際に、該当するブロックの管理情報を正しく反映させるようにしたフラッシュ型メモリーの管理方法を提案している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−３５９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１でのフラッシュ型メモリーの管理方法では、プログラム領域の従属ブロックの管理情報により、フラッシュ型メモリにおける各ブロックの消去回数を管理できることから、フラッシュ型メモリーのブロック消去回数を平準化させ、フラッシュ型メモリーの寿命を長くすることができる。
【０００７】
ところで、特許文献１でのフラッシュ型メモリーの管理方法では、たとえばプログラムが機能の拡張などによって書き換えられることに伴う領域変更の最中などに、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じると、起動不良状態に陥ってしまうおそれがあるという問題があった。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、上記問題点を解消することができる電子機器を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の電子機器は、起動処理に必要な起動処理プログラムと、機能の実行処理に必要な実行処理プログラムと、これらの起動処理プログラム及び実行処理プログラムに関する情報を有するヘッダー情報とを含む複数のプログラムを記憶する書き換え可能な不揮発性メモリーと、更新用の前記複数のプログラムを記憶する揮発性メモリーと、該揮発性メモリーに対して前記複数のプログラムを記憶させ、前記不揮発性メモリーに対して更新用の前記複数のプログラムを書き込むプロセッサーとを備え、前記プロセッサーは、更新用の前記複数のプログラムを前記不揮発性メモリーに書き込む際、更新前の前記起動処理プログラムと前記ヘッダー情報とを残した状態で、先に更新用の前記起動処理プログラムを書き込み、次いで、更新用の前記ヘッダー情報を書き込み、その後、更新用の前記実行処理プログラムを書き込むことを特徴とする。
また、前記プロセッサーは、前記揮発性メモリーに対して前記複数のプログラムを記憶させる際、更新用の前記複数のプログラムの配置が前記不揮発性メモリーに書き込まれている更新前の前記複数のプログラムの配置とは逆になることを示す情報を有した前記ヘッダー情報を生成することを特徴とする。
また、前記起動処理プログラムは、システム起動用プログラムとアップデート用プログラムとを含むことを特徴とする。
本発明の電子機器では、プロセッサーにより、更新用の複数のプログラムが不揮発性メモリーに書き込まれる際、更新前の起動処理プログラムとヘッダー情報とを残した状態で、先に更新用の起動処理プログラムが書き込まれ、次いで、更新用のヘッダー情報が書き込まれ、その後、更新用の実行処理プログラムが書き込まれる。
これにより、更新用の起動処理プログラムが書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリーには更新前のヘッダー情報と起動処理プログラムが残っているため、更新前のヘッダー情報と起動処理プログラムに基づいての更新用のプログラムの再書き込みが可能となる。
また、更新用のヘッダー情報が書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリーには更新前の起動処理プログラムが残っているため、更新前の起動処理プログラムに基づいての更新用のプログラムの再書き込みが可能となる。
また、更新用の実行処理プログラムが書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリーには更新用のヘッダー情報と起動処理プログラムが残っているため、更新用のヘッダー情報と起動処理プログラムに基づいての更新用のプログラムの再書き込みが可能となる。
【発明の効果】
【００１０】
本発明の電子機器によれば、不揮発性メモリーに対する更新用の複数のプログラムの書き込みの最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリーに更新用のプログラムの再書き込みに必要なプログラムなどが残されるようにしているため、更新用のプログラムの再書き込みを確実に行うことができ、起動不良状態に陥らないようにすることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の電子機器の一実施形態を示す斜視図である。
【図２】図１の電子機器の不揮発性メモリー内のプログラムの書き換えを説明するものであって、同図（ａ）は不揮発性メモリーの不揮発領域内の更新前のプログラムを説明するための図であり、同図（ｂ）はＲＡＭのメモリー領域に読み込まれた更新用のプログラムを説明するための図であり、同図（ｃ）は不揮発性メモリーの不揮発領域にＲＡＭのメモリー領域内の一部の更新用のプログラムが書き込まれることを説明するための図である。
【図３】図１の電子機器の不揮発性メモリー内のプログラムの書き換えを説明するものであって、同図（ｄ）はＲＡＭのメモリー領域に読み込まれた更新用のプログラムの新たなヘッダー情報を説明するための図であり、同図（ｅ）は不揮発性メモリーの不揮発領域に新たなヘッダー情報が書き込まれることを説明するための図であり、同図（ｆ）は不揮発性メモリーの不揮発領域にＲＡＭのメモリー領域内の残りの更新用のプログラムが書き込まれることを説明するための図である。
【図４】図１の電子機器の不揮発性メモリー内の書き換えられたプログラムがＲＡＭのメモリー領域に読み出される場合を説明するものであって、同図（ｇ）は不揮発性メモリー内の書き換え後のプログラムを説明するための図であり、同図（ｈ）はＲＡＭのメモリー領域に不揮発性メモリーのプログラムが書き込まれることを説明するための図である。
【図５】図１の電子機器の不揮発性メモリー内のプログラムの書き換え処理について説明するためのフローチャートである。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の電子機器の一実施形態を、図１〜図５を参照しながら説明する。なお、以下の説明においての電子機器の一例としては、たとえばプリンター機能、ＦＡＸ機能、スキャン機能などの複数の機能を搭載した複合的な周辺機器であるＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）やプリンターなどの画像形成装置、情報端末装置などを適用することができる。
【００１３】
まず、図１に示す電子機器は、たとえばＮＡＮＤ型フラッシュメモリーなどの不揮発性メモリー１０と、揮発性メモリーであるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０と、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのプロセッサー３０とを備えている。
【００１４】
不揮発性メモリー１０の不揮発領域１１には、ヘッダー情報（ｏｌｄ）とプログラムＡ（ｏｌｄ）〜プログラムＤ（ｏｌｄ）が書き込まれている。ここで、（ｏｌｄ）とは更新前のプログラムを意味している。なお、機能の拡張などに伴う新たなプログラムである更新用のプログラムは、後述のように（ｎｅｗ）として示している。
【００１５】
また、ヘッダー情報（ｏｌｄ）には、ヘッダー情報（ｏｌｄ）を示す識別子、ヘッダー情報（ｏｌｄ）のサイズ、プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の情報、プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の終端を示す情報、各プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の先頭位置を示す情報などが含まれている。また、プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の情報には、各プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）を識別するための識別子、各プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）のサイズ、各プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の付属情報（バージョン情報など）などが含まれている。なお、ＮＡＮＤ型フラッシュメモリーなどの不揮発性メモリー１０においては、不良ブロックが存在するため、各プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）のサイズなどは不良ブロックのサイズを加味した大きさとなっているが、ここではその説明を省略する。
【００１６】
また、プログラムＡ（ｏｌｄ）は、たとえばシステム起動用の実行プログラムとなっているものとする。また、プログラムＢ（ｏｌｄ）はたとえばアップデート用の実行プログラムとなっているものとする。プログラムＣ（ｏｌｄ）、Ｄ（ｏｌｄ）は、上述したプリンター機能、ＦＡＸ機能、スキャン機能などのいずれかの機能を実行させるための実行プログラムとなっているものとする。
【００１７】
プロセッサー３０は、図示しない電源がオンされると、ブート処理を実行した後、不揮発性メモリー１０のヘッダー情報（ｏｌｄ）を参照し、システム起動用のプログラムＡ（ｏｌｄ）を読み出してＲＡＭ２０に書き込み、プログラムＡ（ｏｌｄ）に基づいて起動処理を行う。また、プロセッサー３０は、起動処理を終えると、上述したプリンター機能、ＦＡＸ機能、スキャン機能などのいずれかの起動指示（ユーザーによる指示）に基づき、プログラムＣ（ｏｌｄ）又はＤ（ｏｌｄ）を読み出してＲＡＭ２０に書き込み、プログラムＣ（ｏｌｄ）又はＤ（ｏｌｄ）に基づいて実行処理を行う。
【００１８】
また、プロセッサー３０は、機能の拡張などに伴う不揮発性メモリー１０内のプログラムの書き換え（アップデート）を行う場合、詳細は後述するが、図示しないＳＤカード又はネットワーク上のサーバーから得られた更新用のプログラムであるプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１に書き込んだ後、ヘッダー情報（ｎｅｗ）を生成してから、不揮発性メモリー１０へのプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の書き込みを行う。なお、不揮発性メモリー１０がＮＡＮＤ型フラッシュメモリーなどである場合、プログラムの上書きができないため、更新用のプログラムのサイズに応じて不揮発領域１１のデータ消去が行われてからプログラムの書き込みが行われるようになっている。
【００１９】
次に、図２〜図３を参照し、プロセッサー３０による機能の拡張などに伴う不揮発性メモリー１０内のプログラムの書き換え（アップデート）について説明する。なお、書き換えの元となる更新用のプログラムは、上述したように、図示しないＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）カードや、ネットワーク上のサーバーから得られるものとする。
【００２０】
まず、図２（ａ）に示すように、不揮発性メモリー１０の不揮発領域１１には、ヘッダー情報（ｏｌｄ）とプログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）が書き込まれているものとする。ここで、（ｏｌｄ）とは、上述したように、更新前のプログラムを意味している。
【００２１】
プロセッサー３０は、不揮発性メモリー１０の不揮発領域１１から更新前のヘッダー情報（ｏｌｄ）を読み込み、各プログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）のサイズや並び順を確認する。また、プロセッサー３０は、アップデート用のプログラムＢ（ｏｌｄ）に基づき、図示しないＳＤカード又はネットワーク上のサーバーから得られた更新用のプログラムであるプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１に書き込む。
【００２２】
このとき、更新前のシステム起動用のプログラムＡ（ｏｌｄ）とアップデート用のプログラムＢ（ｏｌｄ）が同図（ａ）に示すように、不揮発領域１１の前半に書き込まれている場合、同図（ｂ）に示すように、更新用のプログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１の後半に書き込み、更新用のプログラムＣ（ｎｅｗ）、Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１の前半に書き込む。すなわち、不揮発性メモリー１０の不揮発領域１１での並び順とは逆となるようにＲＡＭ２０のメモリー領域２１に書き込む。
【００２３】
また、プロセッサー３０は、新たなヘッダー情報（ｎｅｗ）を生成する。このヘッダー情報（ｎｅｗ）には、上記同様に、ヘッダー情報（ｎｅｗ）を示す識別子、ヘッダー情報（ｎｅｗ）のサイズ、プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の情報、プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の終端を示す情報、各プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の先頭位置を示す情報が含まれている。なお、プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の情報には、上記同様に、各プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）を識別するための識別子、各プログラムＡ（ｎｅｗ）〜Ｄの（ｎｅｗ）サイズ、各プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の付属情報（バージョン情報など）が含まれている。
【００２４】
また、このヘッダー情報（ｎｅｗ）には、同図（ｂ）に示したように、ＲＡＭ２０のメモリー領域２１に書き込んだ更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の配置などを示す情報が含まれている。すなわち、更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の配置が不揮発性メモリー１０に書き込まれている更新前のプログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の配置とは逆になることを示す情報が含まれている。
【００２５】
すなわち、本実施形態では、同図（ｂ）〜（ｃ）に示すように、プロセッサー３０により、不揮発性メモリー１０の不揮発領域１１に起動処理に必要なプログラムＡ（ｏｌｄ）、Ｂ（ｏｌｄ）を残した状態で、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）が先に書き込まれるようにしている。この場合、プログラムＡ（ｎｅｗ）又はプログラムＢ（ｎｅｗ）のどちらを先に書き込んでもよいが、説明の都合上、プログラムＡ（ｎｅｗ）が先に書き込まれるものとする。
【００２６】
また、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）は、同図（ｃ）に示すように、プログラムＡ（ｏｌｄ）、Ｂ（ｏｌｄ）と異なる位置に書き込まれることになる。また、残りのプログラムＣ（ｎｅｗ）、Ｄ（ｎｅｗ）は、後述の図３（ｆ）に示すように、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）が書き込まれた後に書き込まれるようにしている。この場合、プログラムＣ（ｎｅｗ）又はプログラムＤ（ｎｅｗ）のどちらを先に書き込んでもよいが、説明の都合上、プログラムＣ（ｎｅｗ）が先に書き込まれるものとする。
【００２７】
このことから、全てのプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）が不揮発性メモリー１０の不揮発領域１１に書き込まれると、後述の図３（ｆ）に示すように、更新前のプログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の配置とは逆になる。そのため、ヘッダー情報（ｎｅｗ）には、上述したように、更新前のプログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の配置とは逆になることを示す情報が含まれている。
【００２８】
このように、ヘッダー情報（ｎｅｗ）には、同図（ｂ）に示したように、ＲＡＭ２０のメモリー領域２１に書き込んだ更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の配置などを示す情報が含まれている。すなわち、更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の配置が不揮発性メモリー１０に書き込まれている更新前のプログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の配置とは逆になることを示す情報が含まれている。
【００２９】
これにより、不揮発性メモリー１０の不揮発領域１１に全ての更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）が書き込まれた後では、ヘッダー情報（ｎｅｗ）を参照することでプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の読み込みを確実に行うことができる。
【００３０】
また、たとえば、更新用のプログラムＣ（ｎｅｗ）、プログラムＤ（ｎｅｗ）が書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリー１０に残されているヘッダー情報（ｎｅｗ）を参照することで、プログラムＡ（ｎｅｗ）、プログラムＢ（ｎｅｗ）の配置などの確認を行うことができる。
【００３１】
また、プロセッサー３０は、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）を不揮発性メモリー１０の不揮発領域１１に書き込んだ後、図３（ｄ）〜（ｅ）に示すように、ＲＡＭ２０のメモリー領域２１のヘッダー情報（ｎｅｗ）を不揮発性メモリー１０の不揮発領域１１に書き込む。なお、ヘッダー情報（ｎｅｗ）の書き込みは、図３（ｅ）に示すように、プログラムＡ（ｏｌｄ）、Ｂ（ｏｌｄ）、Ｃ（ｏｌｄ）、Ｂ（ｎｅｗ）、Ａ（ｎｅｗ）が書き込まれている領域とは異なる領域に対して行われる。これは、たとえば後述の図３（ｆ）のように、プログラムＣ（ｎｅｗ）、Ｄ（ｎｅｗ）が書き込まれる際に、消去されないようにするためである。
【００３２】
また、プロセッサー３０は、ヘッダー情報（ｎｅｗ）の書き込みを終えた後、図３（ｆ）に示すように、残りのプログラムＣ（ｎｅｗ）、Ｄ（ｎｅｗ）を不揮発性メモリー１０の不揮発領域１１に書き込む。
【００３３】
なお、上述した図２（ｂ）〜（ｃ）でのプログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）の書き込みの最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、同図（ｃ）に示すように、起動処理に必要なヘッダー情報（ｏｌｄ）、プログラムＡ（ｏｌｄ）、プログラムＢ（ｏｌｄ）が不揮発性メモリー１０の不揮発領域１１に書き込まれている。そのため、プログラムＡ（ｏｌｄ）とプログラムＢ（ｏｌｄ）の再読み込みが可能となり、不揮発性メモリー１０の不揮発領域１１へのプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の再書き込みが可能となる。
【００３４】
また、図３（ｄ）〜（ｆ）での残りのプログラムＣ（ｎｅｗ）、Ｄ（ｎｅｗ）の書き込みの最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、図３（ｆ）に示すように、起動処理に必要なヘッダー情報（ｎｅｗ）、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）が不揮発性メモリー１０の不揮発領域１１に書き込まれている。そのため、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）を読み込むことで、プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の再書き込みが可能となる。
【００３５】
ただし、図３（ｄ）〜（ｅ）でのヘッダー情報（ｎｅｗ）の書き込みの最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合、起動処理に必要なヘッダー情報（ｎｅｗ）及びヘッダー情報（ｏｌｄ）が消去されてしまう。この場合、図３（ｅ）に示すように、不揮発性メモリー１０の不揮発領域１１には、プログラムＡ（ｏｌｄ）、Ｂ（ｏｌｄ）、Ｃ（ｏｌｄ）、Ｂ（ｎｅｗ）、Ａ（ｎｅｗ）が書き込まれていることになる。このことから、起動処理の際に、プロセッサー３０が不揮発領域１１の先頭のプログラムＡ（ｏｌｄ）及びＢ（ｏｌｄ）を読み込むように設定（プログラミング）しておく。これにより、プロセッサー３０は、図２（ａ）で説明したように、アップデート用のプログラムＢ（ｏｌｄ）に基づき、図示しないＳＤカード又はネットワーク上のサーバーから得られた更新用のプログラムであるプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１に書き込むことができ、上記同様にして、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）を読み込むことで、プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の再書き込みが可能となる。
【００３６】
次に、図４を参照し、起動処理の際、プロセッサー３０により不揮発性メモリー１０のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）がＲＡＭ２０のメモリー領域２１に読み出される場合について説明する。
【００３７】
まず、同図（ｇ）に示すように、不揮発性メモリー１０の不揮発領域１１には、上述した更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の書き換えにより、ヘッダー情報（ｎｅｗ）及びプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）が書き込まれている。ここで、まず、プロセッサー３０は、ヘッダー情報（ｎｅｗ）を参照し、各プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）のオフセット及びサイズを取り出す。そして、同図（ｈ）に示すように、そのオフセットに基づき、各プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の必要サイズ分を読み出し、ＲＡＭ２０のメモリー領域２１にプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の書き込みを行う。
【００３８】
なお、オフセットとは、不揮発性メモリー１０の不揮発領域１１の先頭から各プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の書き込み位置までのサイズである。すなわち、プロセッサー３０は、図示しない電源がオンされると、ブート処理を実行した後、不揮発性メモリー１０のヘッダー情報（ｎｅｗ）を参照し、システム起動用のプログラムＡ（ｎｅｗ）を読み出してＲＡＭ２０に書き込み、このプログラムＡ（ｎｅｗ）に基づいて起動処理を行う。そのため、まず、プログラムＡ（ｎｅｗ）のオフセット及びサイズに応じた不揮発性メモリー１０からの読み出しが行われ、ＲＡＭ２０のメモリー領域２１の先頭にプログラムＡ（ｎｅｗ）が書き込まれる。
【００３９】
続いて、プログラムＢ（ｎｅｗ）の読み出しが行われることで、ＲＡＭ２０のメモリー領域２１のプログラムＡ（ｎｅｗ）の後にプログラムＢ（ｎｅｗ）が書き込まれる。なお、プログラムＣ（ｎｅｗ）、Ｄ（ｎｅｗ）にあっては、上述したプリンター機能、ＦＡＸ機能、スキャン機能などのいずれかの起動指示（ユーザーによる指示）があると、不揮発性メモリー１０からの読み出しが行われ、ＲＡＭ２０のメモリー領域２１に書き込まれる。
【００４０】
次に、図５を参照し、プロセッサー３０による不揮発性メモリー１０内のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の書き換え処理について説明する。
【００４１】
（ステップＳ１０１）
プロセッサー３０は、図示しない電源がオンされると、ブート処理を実行した後、図２（ａ）に示した不揮発性メモリー１０のヘッダー情報（ｏｌｄ）を読み込み、各プログラムＡ〜Ｄのサイズや並び順を確認する。また、プロセッサー３０は、プログラムＡ（ｏｌｄ）を読み出してシステム起動を実行する際、プログラムＡ（ｏｌｄ）をＲＡＭ２０のメモリー領域２１に書き込む。また、プロセッサー３０は、アップデート用のプログラムＢに基づき、図示しないＳＤカード又はネットワーク上のサーバーから得られた更新プログラムであるプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１に書き込む。
【００４２】
このとき、更新前のシステム起動用のプログラムＡ（ｏｌｄ）とアップデート用のプログラムＢ（ｏｌｄ）が図２（ａ）のように、不揮発領域１１の前半に書き込まれている場合、プログラムＡ、Ｂ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１の後半に書き込み、プログラムＣ、Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１の前半に書き込む。
【００４３】
（ステップＳ１０２）
次いで、プロセッサー３０は、ヘッダー情報（ｎｅｗ）を生成してＲＡＭ２０のメモリー領域２１に書き込む。このヘッダー情報（ｎｅｗ）には、上述したように、更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の配置が不揮発性メモリー１０に書き込まれている更新前のプログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の配置とは逆になることを示す情報が含まれている。
【００４４】
（ステップＳ１０３）
次いで、プロセッサー３０は、まず、プログラムＡ（ｎｅｗ）とプログラムＢ（ｎｅｗ）とを不揮発性メモリー１０の不揮発領域１１に書き込む。
（ステップＳ１０４）
次いで、プロセッサー３０は、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）の書き込みが完了したかどうかを判断する。書き込みが完了した場合（ステップＳ１０４：Ｙｅｓ）、ステップＳ１０７に移る。これに対し、書き込みが完了していなければ（ステップＳ１０４：Ｎｏ）、ステップＳ１０５に移る。
【００４５】
（ステップＳ１０５）
プロセッサー３０は、電源オフが生じたかどうかを判断する。すなわち、上述したように、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合、プロセッサー３０は電源オフが生じたと判断し（ステップＳ１０５：Ｙｅｓ）、ステップＳ１０６に移る。これに対し、電源オフが生じていなければ（ステップＳ１０５：Ｎｏ）、ステップＳ１０３に戻る。
【００４６】
（ステップＳ１０６）
プロセッサー３０は、図示しない電源が再度オンされると、ステップＳ１０１に戻り、ブート処理を実行した後、アップデート用のプログラムＢに基づき、図示しないＳＤカード又はネットワーク上のサーバーから得られた更新プログラムであるプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１に書き込み、ステップＳ１０２からの処理を行う。
【００４７】
（ステップＳ１０７）
プロセッサー３０は、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）の書き込みが完了すると、図３（ｄ）〜（ｅ）に示したように、ＲＡＭ２０のメモリー領域２１のヘッダー情報（ｎｅｗ）を不揮発性メモリー１０の不揮発領域１１に書き込む。なお、ヘッダー情報（ｎｅｗ）の書き込みは、プログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の書き込み領域とは異なる領域に対して行われる。
【００４８】
（ステップＳ１０８）
次いで、プロセッサー３０は、ヘッダー情報（ｎｅｗ）の書き込みが完了したかどうかを判断する。書き込みが完了した場合（ステップＳ１０８：Ｙｅｓ）、ステップＳ１１０に移る。これに対し、書き込みが完了していなければ（ステップＳ１０８：Ｎｏ）、ステップＳ１０９に移る。
【００４９】
（ステップＳ１０９）
プロセッサー３０は、電源オフが生じたかどうかを判断し、電源オフが生じたと判断すると（ステップＳ１０９：Ｙｅｓ）、ステップＳ１０６に移る。これに対し、電源オフが生じていなければ（ステップＳ１０９：Ｎｏ）、ステップＳ１０７に戻る。
【００５０】
ここで、図３（ｄ）〜（ｅ）でのヘッダー情報（ｎｅｗ）の書き込みの最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合、起動処理に必要なヘッダー情報（ｎｅｗ）及びヘッダー情報（ｏｌｄ）が消去されてしまう。この場合、図３（ｅ）で説明したように、不揮発性メモリー１０の不揮発領域１１には、プログラムＡ（ｏｌｄ）、Ｂ（ｏｌｄ）、Ｃ（ｏｌｄ）、Ｂ（ｎｅｗ）、Ａ（ｎｅｗ）が書き込まれていることになる。このことから、起動処理の際に、プロセッサー３０が不揮発領域１１の先頭のプログラムＡ（ｏｌｄ）及びＢ（ｏｌｄ）を読み込むように設定（プログラミング）しておくことで、アップデート用のプログラムＢ（ｏｌｄ）に基づき、図示しないＳＤカード又はネットワーク上のサーバーから得られた更新用のプログラムであるプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）をＲＡＭ２０のメモリー領域２１に書き込むことができ（ステップＳ１０１）、ステップＳ１０２からの処理を行うことができる。
【００５１】
（ステップＳ１１０）
プロセッサー３０は、ヘッダー情報（ｎｅｗ）の書き込みを完了すると、図３（ｆ）に示したように、残りのプログラムＣ、Ｄ（ｎｅｗ）を不揮発性メモリー１０の不揮発領域１１に書き込む。
【００５２】
（ステップＳ１１１）
プロセッサー３０は、残りのプログラムＣ、Ｄ（ｎｅｗ）の書き込みが完了したかどうかを判断する。書き込みが完了した場合（ステップＳ１１１：Ｙｅｓ）、処理が終了となる。これに対し、書き込みが完了していなければ（ステップＳ１１１：Ｎｏ）、ステップＳ１１２に移る。
【００５３】
（ステップＳ１１２）
プロセッサー３０は、電源オフが生じたかどうかを判断し、電源オフが生じたと判断すると（ステップＳ１１２：Ｙｅｓ）、ステップＳ１０６に移る。これに対し、電源オフが生じていなければ（ステップＳ１１２：Ｎｏ）、ステップＳ１１０に戻る。なお、残りのプログラムＣ、Ｄ（ｎｅｗ）の書き込みの最中に、電源オフが生じた場合でも、不揮発性メモリー１０の不揮発領域１１には図３（ｆ）に示したように、起動処理に必要なヘッダー情報（ｎｅｗ）、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）が不揮発性メモリー１０の不揮発領域１１に書き込まれている。そのため、プログラムＡ（ｎｅｗ）、Ｂ（ｎｅｗ）を読み込むことで、ステップＳ１０１からの処理を行うことができる。
【００５４】
このように、本実施形態では、プロセッサー３０により、更新用の複数のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などが不揮発性メモリー１０に書き込まれる際、更新前の起動処理プログラム（プログラムＡ（ｏｌｄ）、プログラムＢ（ｏｌｄ））とヘッダー情報（ｏｌｄ）とを残した状態で、先に更新用の起動処理プログラム（プログラムＡ（ｎｅｗ）、プログラムＢ（ｎｅｗ））が書き込まれ、次いで、更新用のヘッダー情報（ｎｅｗ）が書き込まれ、その後、更新用の実行処理プログラム（プログラムＣ（ｎｅｗ）、プログラムＤ（ｎｅｗ））が書き込まれるようにした。
【００５５】
これにより、更新用の起動処理プログラム（プログラムＡ（ｎｅｗ）、プログラムＢ（ｎｅｗ））が書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリー１０には更新前のヘッダー情報（ｏｌｄ）と起動処理プログラム（プログラムＡ（ｏｌｄ）、プログラムＢ（ｏｌｄ））が残っているため、更新前のヘッダー情報（ｏｌｄ）と起動処理プログラム（プログラムＡ（ｏｌｄ）、プログラムＢ（ｏｌｄ））に基づいての更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などの再書き込みが可能となる。
【００５６】
また、更新用のヘッダー情報（ｎｅｗ）が書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリー１０には更新前の起動処理プログラム（プログラムＡ（ｏｌｄ）、プログラムＢ（ｏｌｄ））が残っているため、更新前の起動処理プログラム（プログラムＡ（ｏｌｄ）、プログラムＢ（ｏｌｄ））に基づいての更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などの再書き込みが可能となる。
【００５７】
また、更新用の実行処理プログラム（プログラムＣ（ｎｅｗ）、プログラムＤ（ｎｅｗ））が書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリー１０には更新用のヘッダー情報（ｎｅｗ）と起動処理プログラム（プログラムＡ（ｎｅｗ）、プログラムＢ（ｎｅｗ））が残っているため、更新用のヘッダー情報と起動処理プログラムに基づいての更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などの再書き込みが可能となる。
【００５８】
このように、不揮発性メモリー１０に対する更新用の複数のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などの書き込みの最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリー１０に更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などの再書き込みに必要なプログラムなどが残されるようにしているため、更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などの再書き込みを確実に行うことができ、起動不良状態に陥らないようにすることができる。
【００５９】
また、本実施形態では、プロセッサー３０により、揮発性メモリー２０に対して複数のプログラムが記憶される際、更新用の複数のプログラムの配置が不揮発性メモリー１０に書き込まれている更新前の複数のプログラムＡ（ｏｌｄ）〜Ｄ（ｏｌｄ）の配置とは逆になることを示す情報を有したヘッダー情報（ｎｅｗ）が生成されるようにしている。
【００６０】
これにより、たとえば、更新用の実行処理プログラム（プログラムＣ（ｎｅｗ）、プログラムＤ（ｎｅｗ））が書き込まれる最中に、ユーザーが誤って電源をオフしたり、停電などによる電源オフが生じた場合でも、不揮発性メモリー１０に残されているヘッダー情報（ｎｅｗ）を参照することで、起動処理プログラム（プログラムＡ（ｎｅｗ）、プログラムＢ（ｎｅｗ））の配置などの確認を行うことができる。
【００６１】
また、不揮発性メモリー１０に全ての更新用のプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）などが書き込まれた後では、ヘッダー情報（ｎｅｗ）を参照することでプログラムＡ（ｎｅｗ）〜Ｄ（ｎｅｗ）の読み込みを確実に行うことができる。
【符号の説明】
【００６２】
１０  不揮発性メモリー
１１  不揮発領域
２０  ＲＡＭ
２１  メモリー領域
３０  プロセッサー
【図１】
0005976729.tif 000002
【図２】
0005976729.tif 000003
【図３】
0005976729.tif 000004
【図４】
0005976729.tif 000005
【図５】
0005976729.tif 000006