(57)【要約】【課題】  情報処理装置のプログラムを更新する際、新バージョンのプログラムへの更新が正常に完了しなかった場合であっても、装置の起動や動作に支障を生じさせない。【解決手段】  情報処理装置１は、展開プログラム格納部１７に展開されたメインプログラムを演算部２１が実行するものであって、演算部２１が展開プログラム格納部１７に展開されたメインプログラムを実行する前に、当該メインプログラムと、新バージョンのメインプログラムとの差分情報を有するパッチデータを用いて、展開プログラム格納部１７に展開されたメインプログラムを書き換えることによって、当該メインプログラムを更新するプログラム更新部１４を備える。これにより、メインプログラムの更新に失敗しても、装置が完全に起動しなくなることを防止できる。【選択図】  図１
2005242930.tif 000002
【特許請求の範囲】
【請求項１】
主記憶部に展開されたメインプログラムを演算部が実行する情報処理装置において、
上記演算部が上記主記憶部に展開されたメインプログラムを実行する前に、当該メインプログラムと新バージョンのメインプログラムとの差分情報を有するパッチデータを用いて、上記主記憶部に展開されたメインプログラムを書き換えることによって、上記メインプログラムを新バージョンに更新するプログラム更新手段を備えることを特徴とする情報処理装置。
【請求項２】
上記プログラム更新手段は、上記メインプログラムを更新した後に、この更新が正常に完了したか否かを判定するものであり、
上記プログラム更新手段が上記メインプログラムの更新は正常に完了したと判定した場合に、上記主記憶部に展開されている、新バージョンに更新されたメインプログラムを上記演算部に実行させる起動手段をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
上記プログラム更新手段が、上記メインプログラムの更新は正常に完了しなかったと判定した場合に、上記メインプログラムを格納した第１不揮発性記憶部から上記メインプログラムを読み出し、上記演算部によって実行可能な形式に展開して、上記主記憶部に格納するプログラム展開手段をさらに備えるとともに、
上記起動手段が、上記プログラム展開手段によって上記主記憶部に展開されたメインプログラムを上記演算部に実行させるものであることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
上記プログラム更新手段が、上記メインプログラムの更新は正常に完了しなかったと判定した場合に、上記メインプログラムを格納した第１不揮発性記憶部から上記メインプログラムを読み出し、上記演算部によって実行可能な形式に展開して、上記主記憶部に格納するプログラム展開手段をさらに備えるとともに、
上記プログラム更新手段が、上記プログラム展開手段によって上記主記憶部に展開されたメインプログラムを上記パッチデータを用いて更新するものであることを特徴とする請求項２に記載の情報処理装置。
【請求項５】
上記パッチデータを外部から取得して、第２不揮発性記憶部に格納するパッチデータ取得手段をさらに備えており、
上記プログラム更新手段は、上記パッチデータ取得手段が外部から取得して上記第２不揮発性記憶部に格納したパッチデータを用いて、上記主記憶部に展開されたメインプログラムを更新することを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。
【請求項６】
上記パッチデータ取得手段は、外部からのパッチデータの取得に成功した場合に、当該外部から取得したパッチデータを上記第２不揮発性記憶部に格納するものであることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
上記パッチデータ取得手段は、自装置の電源が投入された後であり、かつ上記プログラム更新手段が上記主記憶部に展開されたメインプログラムを更新する前に、外部からパッチデータを取得することを特徴とする、請求項５または６に記載の情報処理装置。
【請求項８】
主記憶部に展開されたメインプログラムを演算部が実行する情報処理装置のプログラム更新方法であって、
上記演算部が上記主記憶部に展開されたメインプログラムを実行する前に、当該メインプログラムと、新バージョンのメインプログラムとの差分情報を有するパッチデータを用いて、上記主記憶部に展開されたメインプログラムを書き換えるプログラム更新工程を含むことを特徴とするプログラム更新方法。
【請求項９】
請求項１から７のいずれか１項に記載の情報処理装置を動作させるプログラム更新プログラムであって、コンピュータを上記の各手段として機能させるためのプログラム更新プログラム。
【請求項１０】
請求項９に記載のプログラム更新プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自装置の動作を制御するために実行されるプログラムを更新可能な情報処理装置、プログラム更新方法、プログラム更新プログラム、およびプログラム更新プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
プリンタや複写機などの情報処理装置では、通常、不揮発性メモリに、装置の動作を制御するためにＣＰＵ（Central Processing Unit）などの演算手段によって実行されるメインプログラムが格納されている。そして、これらの装置では、電源が投入されると、まず、不揮発性メモリ内のメインプログラムが、ＲＡＭなどの揮発性メモリにコピーされる。これにより、情報処理装置は、コピーされたメインプログラムに従い、起動して動作する。
【０００３】
多くの情報処理装置は、メインプログラム格納用の不揮発性メモリとして、書き換え可能なフラッシュメモリを備えている。このフラッシュメモリ内のメインプログラムは、専用のメモリライタを用いることによって、電子的に消去したり書き換えたりできる。
【０００４】
情報処理装置が正常に動作している限り、フラッシュメモリ内のメインプログラムを変更する必要は特にない。しかし、装置の仕様を変更する場合や、メインプログラムにおける不具合を修正する場合などには、フラッシュメモリ内のメインプログラムを、新バージョンのプログラムに更新する必要が生ずる。
【０００５】
メインプログラムを更新する場合、通常、旧プログラムを更新するために用いられるパッチデータを、インターネットに置かれたサーバ等からダウンロードして入手する。このパッチデータは、旧プログラムと新バージョンのプログラムとの差分情報を有するデータである。そして、入手したパッチデータをフラッシュメモリへ書き込むことによって、フラッシュメモリ内の旧プログラムを新バージョンに更新する。
【０００６】
しかし、従来、フラッシュメモリ内のデータを変更する場合、ある一定領域に含まれるデータを、いったん全て消去した後、この消去した領域に、相当するデータを全て書き込む必要があった。そのため、旧プログラムを更新するためのデータが、一定領域内のほんの一部分を占めるものに過ぎなくても、その一定領域全体に含まれるデータを全て更新していた。したがって、旧プログラムの更新に必要な時間は、一定領域内の一部分を占めるデータのみを書き換える場合であっても、領域全体を占めるデータを書き換えるために必要な時間と同等であるという問題が生じていた。
【０００７】
この問題点を解消するための方法として、特許文献１には、格納されている旧プログラムから新プログラムへの変更を、旧プログラムデータの変更部分をフラッシュメモリからＲＡＭへコピーし、ＲＡＭ上で書き換えたプログラムデータを前記フラッシュメモリに戻すことにより行うことを特徴とするフラッシュメモリの書き換え方法が開示されている。この方法によれば、フラッシュメモリに格納された旧プログラムのうち、変更対象となる部分のみをＲＡＭに読み出して修正し、修正されたデータを再びフラッシュメモリに書き込むため、プログラムの更新に必要な時間を短縮できる。
【０００８】
しかし、特許文献１に開示された方法では、旧プログラム更新用のパッチデータに不備がある場合、更新される新プログラムに不具合が生じてしまう。そのため、この不具合のある新プログラムをフラッシュメモリに格納すると、装置が正常に起動しなくなる可能性があるという問題点があった。
【０００９】
そこで、この問題点を解消するための方法として、特許文献２に開示されている方法がある。この方法では、まず、書き換え用のユーザプログラムを、外部のプログラミング装置から、いったん、コンデンサによって内容の保持が可能なＲＡＭに転送してから、情報処理装置を起動する。そして、この装置は、起動時に、ＲＡＭ内のユーザプログラムが正常か否かをチェックし、正常であれば、フラッシュメモリに格納されている旧ユーザプログラムを消去して、ＲＡＭ内の新ユーザプログラムをフラッシュメモリに書き込む。この手順によって、特許文献２の方法では、更新されたユーザプログラムの信頼性を向上させることができる。
【特許文献１】特開２００２−０１４８３３号公報（公開日：平成１４年（２００２年）１月１８日）
【特許文献２】特開２００３−１６７６０９号公報（公開日：平成１５年（２００３年）６月１３日）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、上記した従来の方法は、プログラムを更新した後に、装置が正常に起動したり動作したりできない可能性があるという問題点を有する。
【００１１】
すなわち、これらの方法では、いずれも、フラッシュメモリ内の旧プログラムを、最終的には、新バージョンに更新する。ここで、例えば、新バージョンのプログラムへの更新を行う途中に、停電によって装置の電源が強制的オフになる状況を想定する。この場合、新プログラムのフラッシュメモリにおける更新が、完了せずに中断してしまう可能性が生ずる。そして、もし更新処理が完了しなかったら、フラッシュメモリに格納される新バージョンのプログラムは、不完全なものとなる。
【００１２】
このとき、装置を起動する際、不完全なプログラムを使用することになる。これにより、装置がまったく起動しなくなるおそれもあるし、仮に起動に成功したとしても、装置が安定して動作するか否か定かではない。また、従来の方法では、このような事態が発生した時には、すでにフラッシュメモリから旧プログラムは消去されている。そのため、不具合のある新プログラムではなく、正常な旧プログラムを用いて機器を起動させたくても、不可能である。
【００１３】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、プログラムを更新した後に正常に起動したり動作したりすることを確実にする情報処理装置、プログラム更新方法、プログラム更新プログラム、およびプログラム更新プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために、本発明に係る情報処理装置は、主記憶部に展開されたメインプログラムを演算部が実行する情報処理装置において、上記演算部が上記主記憶部に展開されたメインプログラムを実行する前に、当該メインプログラムと新バージョンのメインプログラムとの差分情報を有するパッチデータを用いて、上記主記憶部に展開されたメインプログラムを書き換えることによって、上記メインプログラムを新バージョンに更新するプログラム更新手段を備えることを特徴としている。
【００１５】
この構成により、本装置では、主記憶部に展開されたメインプログラムを、演算部が実行する前に、プログラム更新手段がパッチデータを使用して新バージョンに更新する。これにより、演算部は、主記憶部内に展開される、新バージョンのメインプログラムを実行する。すなわち、本装置は、新バージョンのメインプログラムに従って起動し、動作する。
【００１６】
このように、本装置では、例えばフラッシュメモリなどの不揮発性メモリに予め格納されているメインプログラムを更新するのではなく、主記憶部に展開されたメインプログラムを更新する。したがって、仮にプログラム更新手段によるメインプログラムの更新が失敗に終わり、不具合のあるメインプログラムに従って装置が起動した結果、装置の起動が行われなかったり、あるいは起動後の装置の動作が不安定になったりしても、例えば装置を再起動すればよい。すると、更新前のメインプログラムが再び主記憶部に展開され、さらに、このメインプログラムが更新される。
【００１７】
これにより、本装置は、メインプログラムの更新に失敗しても、装置が完全に起動しなくなることを防止できるという効果を奏する。
【００１８】
また、本発明に係るプログラム更新方法（本方法）は、主記憶部に展開されたメインプログラムを演算部が実行する情報処理装置のプログラム更新方法であって、上記演算部が上記主記憶部に展開されたメインプログラムを実行する前に、当該メインプログラムと、新バージョンのメインプログラムとの差分情報を有するパッチデータを用いて、上記主記憶部に展開されたメインプログラムを書き換えるプログラム更新工程を含むことを特徴としている。
【００１９】
この構成により、本方法は、上述した本装置と同様の効果を奏する。
【００２０】
また、本発明に係る情報処理装置では、さらに、上記プログラム更新手段は、上記メインプログラムを更新した後に、この更新が正常に完了したか否かを判定するものであり、上記プログラム更新手段が上記メインプログラムの更新は正常に完了したと判定した場合に、上記主記憶部に展開されている、新バージョンに更新されたメインプログラムを上記演算部に実行させる起動手段をさらに備えることを特徴としている。
支障を生じさせない。  この構成により、プログラム更新手段によるメインプログラムの更新が正常に完了した場合に、起動手段が、この正常に更新されたメインプログラムを演算部に実行させる。そのため、本装置は、正常な新バージョンのメインプログラムに従って起動し、動作する。
【００２１】
これにより、メインプログラムの更新に失敗した場合であっても、不具合を有するメインプログラムに従って装置が起動することはない。それゆえ、正常な新バージョンのメインプログラムに従った装置の起動および動作が、確実に行われるという効果を奏する。
【００２２】
また、本発明に係る情報処理装置では、さらに、上記プログラム更新手段が、上記メインプログラムの更新は正常に完了しなかったと判定した場合に、上記メインプログラムを格納した第１不揮発性記憶部から上記メインプログラムを読み出し、上記演算部によって実行可能な形式に展開して、上記主記憶部に格納するプログラム展開手段をさらに備えるとともに、上記起動手段が、上記プログラム展開手段によって上記主記憶部に展開されたメインプログラムを上記演算部に実行させるものであることを特徴としている。
【００２３】
この構成により、プログラム更新手段によるメインプログラムの更新が正常に完了しなかった場合に、プログラム展開手段が、第１不揮発性記憶部からメインプログラムを読み出し、演算部によって実行可能な形式に展開して、主記憶部に格納する。そして、起動手段は、この新たに主記憶部に展開されたメインプログラムを演算部に実行させる。
【００２４】
そのため、本装置は、メインプログラムの更新に失敗しても、不具合のあるメインプログラムではなく、更新される前の正常なメインプログラムに従って起動し、動作する。これにより、メインプログラムの更新に失敗した場合に、起動後において装置の動作に異常が生じたり、あるいは装置そのものが起動できなくなったりすることを未然に防止できるという効果を奏する。
【００２５】
また、本発明に係る情報処理装置では、さらに、上記プログラム更新手段が、上記メインプログラムの更新は正常に完了しなかったと判定した場合に、上記メインプログラムを格納した第１不揮発性記憶部から上記メインプログラムを読み出し、上記演算部によって実行可能な形式に展開して、上記主記憶部に格納するプログラム展開手段をさらに備えるとともに、上記プログラム更新手段が、上記プログラム展開手段によって上記主記憶部に展開されたメインプログラムを上記パッチデータを用いて更新するものであることを特徴としている。
【００２６】
この構成により、プログラム更新手段によるメインプログラムの更新が正常に完了しなかった場合に、プログラム展開手段が、第１不揮発性記憶部からメインプログラムを読み出し、演算部によって実行可能な形式に展開して、主記憶部に格納する。そして、プログラム更新手段は、この新たに主記憶部に展開されたメインプログラムを、新バージョンのメインプログラムに更新する。
【００２７】
これにより、プログラム更新手段は、メインプログラムの更新処理に失敗しても、再び、メインプログラムの更新を実行する。したがって、起動手段は、不具合のあるメインプログラムを演算部に実行させることはない。すなわち、本装置は、不具合のあるメインプログラムに従って起動し、動作することがない。それゆえ、本装置は、メインプログラムの更新に失敗した場合に、起動後において装置の動作に異常が生じたり、あるいは装置そのものが起動できなくなったりすることを、未然に防止できるという効果を奏する。
【００２８】
また、本発明に係る情報処理装置では、さらに、上記パッチデータを外部から取得して、第２不揮発性記憶部に格納するパッチデータ取得手段をさらに備えており、上記プログラム更新手段は、上記パッチデータ取得手段が外部から取得して上記第２不揮発性記憶部に格納したパッチデータを用いて、上記主記憶部に展開されたメインプログラムを更新することを特徴としている。
【００２９】
この構成により、本装置では、外部（例えば外部記憶ディスクや、インターネット上のサーバなど）から新たに取得したパッチデータを用いて、主記憶部に展開されたメインプログラムの更新が行われる。そのため、メインプログラムのバージョンアップがさらに行われた場合であっても、最新のパッチデータを取得し、最新のメインプログラムに更新できるという効果を奏する。
【００３０】
また、本発明に係る情報処理装置では、さらに、上記パッチデータ取得手段は、外部からのパッチデータの取得に成功した場合に、当該外部から取得したパッチデータを上記第２不揮発性記憶部に格納するものであることを特徴としている。
【００３１】
この構成により、パッチデータ取得手段は、正常であることを確認できたパッチデータを、第２不揮発性記憶部に格納する。その結果、プログラム更新手段は、第２不揮発性記憶部に格納された正常なパッチデータを使用して、主記憶部に展開されたメインプログラムの更新を行うことができる。それゆえ、本装置は、プログラム更新手段が不具合を有するパッチデータを使用することによって、メインプログラムの更新を正常に完了させられなくなる事態を、未然に防止できるという効果を奏する。
【００３２】
また、本発明に係る情報処理装置では、さらに、上記パッチデータ取得手段は、自装置の電源が投入された後であり、かつ上記プログラム更新手段が上記主記憶部に展開されたメインプログラムを更新する前に、外部からパッチデータを取得することを特徴としている。
【００３３】
この構成により、パッチデータ取得手段は、装置の動作中ではなく、装置の電源が投入されてから、プログラム更新手段がメインプログラムを更新する前に、パッチデータを取得する。そのため、過去に取得したパッチデータの不具合が原因となって、装置が起動しなくなった場合であっても、新たなパッチデータを取得でき、メインプログラムの更新を実行できるという効果を奏する。
【００３４】
なお、上記情報処理装置は、コンピュータによって実現してもよい。この場合、コンピュータを上記各手段として動作させることにより上記情報処理装置をコンピュータにて実現させるプログラム更新プログラム、およびそのプログラム更新プログラムを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【発明の効果】
【００３５】
以上のように本発明の情報処理装置では、主記憶部に展開されたメインプログラムを、演算部が実行する前に、プログラム更新手段がパッチデータを使用して新バージョンのメインプログラムに更新するため、メインプログラムの更新に失敗しても、装置が完全に起動しなくなることを防止できるという効果を奏する。
【発明を実施するための最良の形態】
【００３６】
本発明の一実施形態を、以下に、図１から図７を参照して説明する。
【００３７】
図２は、本実施形態に係る情報処理装置１の概略的な構成を示すブロック図である。図２によると、情報処理装置１は、制御部２、この制御部２に備えられる起動処理部３、ＲＡＭ４、ＦＬＡＳＨ５、ダイレクト通信部６（通信手段）、通信部７、ディスクドライブ８、表示部９、操作パネル１０、電源スイッチ１１，および演算部２１を備えた構成である。
【００３８】
制御部２は、ＣＰＵ（Central Processing Unit）などの演算部２１によって情報処理装置１の起動や動作を制御する。また、起動処理部３は、この制御部２が有する機能の一部を実現するものであり、情報処理装置１における起動処理やプログラム更新処理を行う。この起動処理部３の詳細については後述する。
【００３９】
ＲＡＭ４は揮発性メモリであり、図１に示すように、少なくともデータバッファ部１６（副記憶部）および展開プログラム格納部１７（主記憶部）を含む。ここで、データバッファ部１６は、インターネットに接続されたサーバ２０から取得されたパッチデータを一時的に格納するために使用される。また、展開プログラム格納部１７は、後述するプログラム格納部１８に格納されているメインプログラムを、ＣＰＵなどの演算部２１によって実行可能な形式に展開して格納するために使用される。
【００４０】
なお、本発明で言う「メインプログラム」とは、ＣＰＵなどの演算部２１によって実行され、情報処理装置１の起動や動作の制御に使用されるプログラムを言う。また、「パッチデータ」とは、メインプログラムを更新するために使用される、旧プログラムと新プログラムとの差分情報を有するデータを言う。このパッチデータには、更新が正常に行われた場合の、更新後のメインプログラムの総バイト数（サム）を表す情報も含まれている。
【００４１】
ＦＬＡＳＨ５は、フラッシュメモリからなる不揮発性メモリであり、図１に示すように、少なくともプログラム格納部１８（第１不揮発性記憶部）およびパッチデータ格納部１９（第２不揮発性記憶部）を含む。ここで、プログラム格納部１８には、情報処理装置１の動作を制御するために使用されるメインプログラムが格納されている。また、パッチデータ格納部１９は、インターネットに接続されたサーバ２０から取得されたパッチデータを格納するために使用される。
【００４２】
ここで、情報処理装置１では、プログラム格納部１８は、データの消去や書き込みを受け付けない、読み出し専用メモリ（Read Only Memory、ＲＯＭ）としての機能を有する。そのため、本発明の情報処理装置１では、プログラム格納部１８内のメインプログラムが、何らかの原因によって書き換えられることはない。
【００４３】
一方、パッチデータ格納部１９は、外部からの電気信号によってデータの消去や書き込みを受け付ける、書き換え可能なメモリとしての機能を有する。したがって、パッチデータ格納部１９には、後述するデータ書き込み部２３によって、サーバ２０から取得されたパッチデータが書き込まれることができる。
【００４４】
ダイレクト通信部６は、ＲＳ−２３２ＣやＵＳＢ（Universal Serial Bus）などのインターフェースを備えることによって、コンピュータ２５と通信する機能を有する。本発明の情報処理装置１では、パッチデータ取得部１２に備えられるデータ取得部２２は、このダイレクト通信部６を通じて、コンピュータ２５からパッチデータを取得することもできる。この詳細については、後述する。
【００４５】
通信部７は、通信ネットワーク回線を介して、インターネットに接続されるサーバ２０などの、他のコンピュータと通信する機能を有する。具体的には、通信部７は、モジュラージャック等の通信ネットワーク接続インターフェースを備えることによって、電話回線を通じた通話、ＦＡＸの送受信、インターネットへの接続、およびメールの送受信を担当する。本発明の情報処理装置１では、パッチデータ取得部１２に備えられるデータ取得部２２が、この通信部７を通じて、サーバ２０からパッチデータを取得する。この詳細については、後述する。
【００４６】
ディスクドライブ８は、後述するリムーバブルディスク２４を挿入するためのドライブである。情報処理装置１では、パッチデータ取得部１２に備えられるデータ取得部２２は、このディスクドライブ８に挿入されたリムーバブルディスク２４から、パッチデータを取得することもできる。この詳細については、後述する。
【００４７】
表示部９は、情報処理装置１に関する様々な情報を表示する機能を有する。例えば、表示部９は、情報処理装置１におけるメインプログラム更新処理の進展状況や、あるいは更新の失敗・成功等の結果を表示する。
【００４８】
操作パネル１０は、情報処理装置１を操作するために、ユーザによって用いられる。本発明の情報処理装置１では、この操作パネル１０を通じたユーザのプログラム更新指示によって、メインプログラムの更新処理の初期段階に相当する、パッチデータ取得処理が行われる。
【００４９】
電源スイッチ１１は、ユーザの操作によって、情報処理装置１の電源をオン・オフするためのものである。情報処理装置１は、この電源スイッチ１１がユーザによってオンにされると起動し、オフにされるとシャットダウンする。また、情報処理装置１には、ユーザによって押下されると装置が再起動されるリセットボタンが備えられていてもよい。
【００５０】
本発明の情報処理装置１は、メインプログラムを新プログラムに更新する際、更新処理中に何らかの問題が発生した結果、新プログラムに不具合が生じた場合であっても、何度でもプログラム更新処理を再開したり、あるいは旧プログラムに従って装置を起動できたりすることによって、プログラム更新の際の信頼性を確保することを目的としている。そして、情報処理装置１は、この目的を達成するために、特に起動処理部３に特徴を有するものである。そこで、以下に、図１、および図３〜５を使用して、起動処理部３の構成、作用、および効果について詳細に説明する。
【００５１】
図１は、本実施形態に係る情報処理装置１の構成を詳細に示すブロック図である。図１によると、起動処理部３は、パッチデータ取得部１２（パッチデータ取得手段）、プログラム展開部１３（プログラム展開手段）、プログラム更新部１４（プログラム更新手段）、およびシステム起動部１５（起動手段）から構成されている。ここで、情報処理装置１は、通信部７を通じて、サーバ２０に接続されている。
【００５２】
パッチデータ取得部１２は、インターネットに接続されているサーバ２０から、通信部７を通じてパッチデータを取得する。このパッチデータ取得部１２の詳細を、図３に示す。図３は、パッチデータ取得部１２におけるパッチデータの取得および格納処理の流れを表す説明図である。図３によると、パッチデータ取得部１２は、データ取得部２２およびデータ書き込み部２３から構成されている。
【００５３】
ここで、データ取得部２２は、通信部７を通じてサーバ２０にアクセスし、このサーバ２０に保存されているパッチデータを取得して、データバッファ部１６に一時的に格納する。また、データ取得部２２は、取得したパッチデータが正常か否かを判定する機能も有する。一方、データ書き込み部２３は、データバッファ部１６内のパッチデータを、パッチデータ格納部１９に書き込む。
【００５４】
プログラム展開部１３は、プログラム格納部１８に格納されているメインプログラムを読み出し、これを演算部２１が実行可能な形式に展開してから、展開プログラム格納部１７に書き込む。このプログラム展開部１３は、メインプログラムがプログラム格納部１８内にデータ圧縮された形式で格納されている場合、それを伸長して展開プログラム格納部１７に書き込むこともできる。
【００５５】
プログラム更新部１４は、パッチデータ格納部１９内のパッチデータを使用することによって、展開プログラム格納部１７内のメインプログラムを、修正された新メインプログラムに更新する。また、プログラム更新部１４は、さらに、メインプログラムの更新が正常に完了したか否かを判定する機能も有する。
【００５６】
システム起動部１５は、展開プログラム格納部１７に展開されたメインプログラムに従って、情報処理装置１を起動させる。本発明の情報処理装置１では、後述するように、このシステム起動部１５は、メインプログラムの更新が正常に完了した場合、更新されたメインプログラムを使用して装置を起動させる。一方、システム起動部１５は、メインプログラムの更新が正常に完了しなかった場合、未更新の旧メインプログラムを使用して装置を起動させる。このことを実現する方法については、後述する。
【００５７】
サーバ２０は、メインプログラムの更新に用いられるパッチデータを保存して、情報処理装置１に提供する外部格納場所としての役割を有するものである。データ取得部２２は、通信部７を通じてこのサーバ２０にアクセスすることによって、パッチデータを取得する。この点については、後述する。
【００５８】
以上の構成からなる情報処理装置１において、パッチデータを用いてメインプログラムを更新する手順を、以下に説明する。
【００５９】
上記の情報処理装置１は、装置の動作中に、操作パネル１０がユーザからの入力を受け付けることによって、メインプログラムの更新処理を開始する。ここで、操作パネル１０は、ユーザからのメインプログラム更新指示を受け付けると、パッチデータ取得部１２に備えられるデータ取得部２２に対して、動作開始命令（トリガ）を出力する。
【００６０】
トリガを入力されたデータ取得部２２は、通信部７を通じて、インターネットに接続されているサーバ２０にアクセスする。そして、データ取得部２２は、このサーバ２０に保存されているパッチデータを取得して、データバッファ部１６に書き込む。また、データ取得部２２は、サーバ２０内のパッチデータの取得を完了するまで、この動作を続ける。
【００６１】
パッチデータの取得が完了した後、データ取得部２２は、データバッファ部１６内のパッチデータが正常であるか否かを判定する。このとき、データ取得部２２は、この判定を行うために、サーバ２０内のパッチデータと、データバッファ部１６内のパッチデータが、同一であるか否かを調べる。具体的には、データ取得部２２は、データバッファ部１６に書き込んだパッチデータのバイト数（サム）と、サーバ２０内にある取得対象としたパッチデータのバイト数（サム）とを比較し、これらが一致すればパッチデータは正常であると判定し、一致しなければ異常と判定する、いわゆる「サムチェック」を行う。
【００６２】
そして、データ取得部２２は、データバッファ部１６内のパッチデータが正常でないと判定した場合、表示部９に対して、エラーメッセージを出力して動作を終了する。これにより、不備のあるパッチデータを用いたメインプログラム更新処理が行われることがないため、プログラム更新の失敗を未然に防止できる。
【００６３】
一方、データ取得部２２は、データバッファ部１６内のパッチデータが正常であると判定した場合、データ書き込み部２３に対してトリガを出力する。
【００６４】
トリガを入力されたデータ書き込み部２３は、データバッファ部１６内のパッチデータを、パッチデータ格納部１９に格納する。これにより、情報処理装置１は、外部格納場所であるサーバ２０から、最新のパッチデータを取得できる。したがって、メインプログラムのバージョンアップがさらに行われた場合であっても、情報処理装置１は、最新のパッチデータを取得し、メインプログラムを最新のプログラムに更新できる。また、データ書き込み部２３は、パッチデータが正常であることをデータ取得部２２が確認してから、パッチデータ格納部１９にパッチデータを格納するため、後述するプログラム更新部１４が不具合を有するパッチデータを使用してメインプログラムの更新を正常に完了させられなくなる事態を、未然に防止できる。
【００６５】
パッチデータ格納部１９にパッチデータを格納した後、データ書き込み部２３は、ＦＬＡＳＨ５に保存されている更新失敗履歴を「無」に設定する。この更新失敗履歴は、過去にメインプログラムの更新が失敗に終わったことを表す一種のフラッグであり、何らかの原因によってメインプログラムの更新が失敗に終わった場合に、後述するプログラム更新部１４によって「有」に設定されるものである。なお、情報処理装置１が工場から出荷される段階では、この更新失敗履歴は「無」に設定されている。
【００６６】
ここで、データ書き込み部２３は、パッチデータの書き込みを終了し、更新失敗履歴を「無」に設定した後、情報処理装置１を再起動する。
【００６７】
以上の処理によって、情報処理装置１は、まず、サーバ２０から、メインプログラム更新用のパッチデータを取得する。この後、再起動された情報処理装置１は、取得したパッチデータを用いて、メインプログラムを更新する。この処理について、以下に説明する。
【００６８】
データ書き込み部２３によって再起動されるか、または、電源スイッチ１１がユーザによってオンにされた場合、情報処理装置１は、メインプログラムの更新処理および装置の起動処理を開始する。このとき、まず、プログラム展開部１３が、プログラム格納部１８内のメインプログラムを読み出して、演算部２１によって実行可能な形式に展開する。そして、プログラム展開部１３は、展開したメインプログラムを、展開プログラム格納部１７に書き込む。その後、プログラム展開部１３は、プログラム更新部１４にトリガを出力する。
【００６９】
トリガを入力されたプログラム更新部１４は、まず、パッチデータ格納部１９内の所定のアドレスに、パッチデータが格納されているか否かを確認する。パッチデータが格納されていない場合、プログラム更新部１４は、システム起動部１５にトリガを出力する。この場合、システム起動部１５は、未更新のメインプログラムを使用して装置を起動させるため、情報処理装置１は、未更新のメインプログラムに従って起動し、動作する。すなわち、情報処理装置１では、パッチデータ格納部１９にパッチデータが格納されていない場合、メインプログラムの更新処理は行われない。
【００７０】
一方、パッチデータが格納されている場合、プログラム更新部１４は、更新失敗履歴の状態を確認する。ここで、プログラム更新部１４は、更新失敗履歴が「有」であれば、これを「無」に設定して、システム起動部１５にトリガを出力する。この場合も、システム起動部１５は、未更新のメインプログラムを使用して装置を起動させるため、情報処理装置１は、未更新のメインプログラムに従って起動し、動作する。すなわち、情報処理装置１では、パッチデータ格納部１９にパッチデータが格納されていても、更新失敗履歴が「有」に設定されている場合は、メインプログラムの更新処理は行われない。
【００７１】
一方、プログラム更新部１４は、更新失敗履歴が「無」であれば、パッチデータ格納部１９にアクセスしてパッチデータを読み出す。そして、プログラム更新部１４は、読み出したパッチデータを使用して、展開プログラム格納部１７内に展開されているメインプログラムを更新する。具体的には、プログラム更新部１４は、パッチデータが有する差分情報を基に、メインプログラムにおけるデータ更新場所を特定して、これをパッチデータで置き換える。
【００７２】
このように、本発明の情報処理装置１では、プログラム格納部１８（不揮発性メモリ）に保存されているメインプログラムを消去したり改変したりすることなく、展開プログラム格納部１７（揮発性メモリ）に展開されているメインプログラムを書き換える。これにより、メインプログラムの更新に失敗した場合であっても、プログラム格納部１８に保存されているメインプログラムに変化は生じない。そのため、たとえ不具合のあるメインプログラムに従って装置の動作処理が行われた結果、装置が起動しなくなる事態が生じても、電源をいったんオフしたあと再びオンにしたり、あるいはリセットボタンを押下したりするなどして、装置を強制的に再起動すればよい。すると、情報処理装置１は、保存されている旧メインプログラムを再び読み出すことによって、上述したメインプログラムの更新処理が再び行う。そのため、メインプログラムの更新に失敗しても、装置が完全に起動できなくなることを防止できる。
【００７３】
なお、本実施の形態に係る情報処理装置１では、メインプログラムに更新に失敗した場合に対処するため、プログラム更新部１４が、メインプログラムの更新を終了させた後、この更新に成功したか否かを判定する。具体的には、プログラム更新部１４は、展開プログラム格納部１７に格納されている更新後のメインプログラムの総バイト数（サム）を計算し、これを、パッチデータに予め含まれている、正常に更新された場合のメインプログラムの総バイト数（サム）と比較する、いわゆる「サムチェック」を行う。そして、プログラム更新部１４は、これらが一致すればプログラム更新に成功したと判定し、一致しなければ失敗したと判定する。
【００７４】
ここで、プログラム更新部１４は、メインプログラムの更新に成功したと判定した場合、システム起動部１５にトリガを出力する。この場合、システム起動部１５は、展開プログラム格納部１７にアクセスして、更新された新メインプログラムを読み出し、このプログラムに従って、情報処理装置１を起動する。したがって、起動された情報処理装置１は、更新された新メインプログラムに従って動作することになる。すなわち、このような判定をプログラム更新部１４が行うことによって、正常に更新されたメインプログラムによる装置の起動が、確実に行われる。
【００７５】
一方、プログラム更新部１４は、メインプログラムの更新に失敗したと判定した場合、更新失敗履歴を「有」に設定して、プログラム展開部１３にトリガを出力する。この場合、トリガを入力されたプログラム展開部１３は、再び、プログラム格納部１８にアクセスして、メインプログラムを読み出し、演算部２１によって実行可能な形式に展開して、展開プログラム格納部１７に格納する。そして、プログラム展開部１３は、プログラム更新部１４にトリガを出力する。
【００７６】
次に、トリガを入力されたプログラム更新部１４は、上述のように、まず、パッチデータ格納部１９にパッチデータが格納されているか確認する。この場合、パッチデータ格納部１９には上述したようにパッチデータが格納されているため、プログラム更新部１４は、更新失敗履歴の状態を確認する。ここで、上述したように、メインプログラムの更新は過去に失敗しているため、更新失敗履歴は「有」となっている。そのため、プログラム更新部１４は、今度はこの更新失敗履歴を「無」に設定し、システム起動部１５にトリガを出力する。
【００７７】
すると、システム起動部１５は、展開プログラム格納部１７にアクセスして、未更新のメインプログラムを読み出し、このプログラムに従って、情報処理装置１を起動させる。これにより、情報処理装置１は、プログラム更新部１４によるメインプログラムの更新が失敗した場合、未更新の旧メインプログラムに従って動作することになる。
【００７８】
こうすることによって、システム起動部１５は、もし、過去に展開プログラム格納部１７内のメインプログラムが正常に更新されなかった場合でも、プログラム格納部１８に格納されている、未更新の正常な旧メインプログラムを使用することによって、情報処理装置１を起動できる。
【００７９】
したがって、情報処理装置１は、たとえメインプログラムの更新に失敗し、その結果、メインプログラムに不具合が生じたとしても、不具合のあるメインプログラムに従って起動することはない。そのため、本発明の情報処理装置１では、起動後において装置の動作に異常が生じたり、あるいは装置そのものが起動できなくなったりすることを、未然に防止できる。
【００８０】
以上のように説明した、情報処理装置１におけるパッチデータ取得処理およびメインプログラム更新処理の流れを、図４および図５に示すフローチャートを使用して以下に説明する。
【００８１】
図４は、パッチデータ取得部１２における処理の流れを表すフローチャートである。この図に示すように、まず、操作パネル１０が、ユーザによるプログラム更新指示を受け付ける（Ｓ１０）。次に、データ取得部２２が、通信部７を通じてサーバ２０からパッチデータを取得して、データバッファ部１６に格納する（Ｓ１１）。そして、データ取得部２２は、１６内のパッチデータが正常であるか否かを判定する（Ｓ１２）。
【００８２】
ここで、データ取得部２２が、パッチデータは正常でないと判定した場合（ＮＯ）、パッチデータ取得部１２の動作は終了する。一方、データ取得部２２が、パッチデータは正常であると判定した場合（ＹＥＳ）、データ書き込み部２３が、データバッファ部１６内のパッチデータをパッチデータ格納部１９に格納する（Ｓ１３）。そして、データ書き込み部２３は、更新失敗履歴を「無」に設定して（Ｓ１４）、プログラム展開部１３にトリガを出力する（Ｓ１５）。これによって、パッチデータ取得部１２の動作は終了する。
【００８３】
図５は、プログラム展開部１３、プログラム更新部１４、およびシステム起動部１５における処理の流れを表すフローチャートである。この図によると、まず、プログラム展開部１３が、プログラム格納部１８内のメインプログラムを、展開プログラム格納部１７に展開する（Ｓ２０）。次に、プログラム更新部１４は、パッチデータ格納部１９内にパッチデータが存在するか否かを確認する（Ｓ２２）。
【００８４】
ここで、パッチデータがパッチデータ格納部１９に存在しないことを確認した場合（ＮＯ）、プログラム更新部１４は、更新失敗履歴を「無」に設定する（Ｓ２６）。そして、システム起動部１５が、未更新のメインプログラムを展開プログラム格納部１７から読み出し、この未更新のメインプログラムに従って、情報処理装置１を起動させる（Ｓ２７）。
【００８５】
一方、パッチデータがパッチデータ格納部１９に存在することを確認した場合（ＹＥＳ）、プログラム更新部１４は、更新失敗履歴が「無」であるか否かを判定する（Ｓ２２）。ここで、更新失敗履歴が「有」であると判定した場合（ＮＯ）、プログラム更新部１４は、更新失敗履歴を「無」に設定する（Ｓ２６）。そして、システム起動部１５が、未更新のメインプログラムを展開プログラム格納部１７から読み出し、この未更新のメインプログラムに従って、情報処理装置１を起動させる（Ｓ２７）。
【００８６】
一方、更新失敗履歴が「無」であると判定した場合（ＹＥＳ）、プログラム更新部１４は、パッチデータ格納部１９からパッチデータを読み出し、さらに、このパッチデータを使用して、展開プログラム格納部１７内のメインプログラムを更新する（Ｓ２３、プログラム更新工程）。プログラムの更新を終了させた後、プログラム更新部１４は、メインプログラムの更新が成功したか失敗したかを判定する（Ｓ２４）。
【００８７】
ここで、メインプログラムの更新に失敗したと判定した場合、プログラム更新部１４は、更新失敗履歴を「有」に設定する（Ｓ２５）。このとき、処理はＳ２０に戻って、プログラム展開部１３が再び、プログラム格納部１８からメインプログラムを読み出して、展開プログラム格納部１７に格納する。この場合、Ｓ２２において、プログラム更新部１４は更新失敗履歴が「有」と判定するため、上述したように、プログラム更新部１４が更新失敗履歴を「無」に設定する（Ｓ２６）。そして、システム起動部１５は、未更新のメインプログラムを展開プログラム格納部１７から読み出し、かつ、この未更新のメインプログラムに従って、情報処理装置１を起動させる（Ｓ２７）。
【００８８】
一方、プログラム更新部１４が、メインプログラムの更新に成功したと判定した場合、次の処理は、Ｓ２０ではなくＳ２７に移る。そして、システム起動部１５が、展開プログラム格納部１７内にある更新されたメインプログラムを読み出し、かつ、この更新されたメインプログラムに従って、情報処理装置１を起動させる（Ｓ２７）。すなわち、ここで初めて、本発明の情報処理装置１において、メインプログラムの更新が正常に完了し、この更新された新メインプログラムに従って装置が起動することになる。
【００８９】
以上のように説明した情報処理装置１は、あくまで本発明を実施するための１つの形態に過ぎないものである。すなわち、本発明の情報処理装置１は、以下に説明するように、請求項に示す範囲内において、様々に変形された形態で実施できる。
【００９０】
例えば、データバッファ部１６は、ＲＡＭ４ではなくＦＬＡＳＨ５に備えられていてもよいし、または、ＣＰＵなどの演算手段内に形成されるメモリからなってもよい。
【００９１】
また、ＦＬＡＳＨ５は、フラッシュメモリである必要は必ずしもなく、他の不揮発性メモリであってもよい。例えば、ＦＬＡＳＨ５は、一般的なＥＰＲＯＭ（erasable and programmable read only memory）であってもよい。
【００９２】
また、本実施形態では、パッチデータ取得部１２がインターネットに接続されたサーバ２０からパッチデータを取得する例を挙げて説明した。しかし、サーバ２０が接続される通信ネットワークはインターネットに限定されず、例えば、イントラネット、エキストラネット、ＬＡＮ、ＩＳＤＮ、ＶＡＮ、ＣＡＴＶ通信網、仮想専用網（virtual private network）、電話回線網、移動体通信網、衛星通信網等であってもよい。また、この通信ネットワークを構成する伝送媒体も特に限定されず、具体的には、ＩＥＥＥ１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ回線等の有線でも、ＩｒＤＡやリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ、８０２．１１無線、ＨＤＲ、携帯電話網、衛星回線、地上波デジタル網等の無線でもよい。
【００９３】
また、パッチデータ取得部１２がサーバ２０からパッチデータを取得する場合、このサーバ２０が提供するＦＴＰ（File Transfer Protocol）サービスを使用してもよいし、あるいは、Ｗｅｂページ（ホームページ）にパッチデータのリンクを記載したＷＷＷ（World Wide Web）サービスを利用してもよい。
【００９４】
また、パッチデータ取得部１２は、図６に示すように、リムーバブルディスク２４や、あるいはコンピュータ２５からパッチデータを取得してもよい。ここで、図６は、パッチデータ取得部１２がリムーバブルディスク２４またはコンピュータ２５からパッチデータを取得する形態を表したブロック図である。
【００９５】
データ取得部２２がリムーバブルディスク２４からパッチデータを取得する場合、まず、コンピュータ２５に保存されているパッチデータを、ユーザが、リムーバブルディスク２４にコピーする。そして、パッチデータが保存されたリムーバブルディスク２４を、ユーザが、ディスクドライブ８に挿入する。次に、操作パネル１０が、ユーザからの入力を受け付けて、パッチデータの取得先をリムーバブルディスク２４に設定した形で、データ取得部２２に対してトリガを出力する。すると、トリガを入力されたデータ取得部２２は、ディスクドライブ８を通じてリムーバブルディスク２４にアクセスし、パッチデータを取得して、データバッファ部１６に格納する。
【００９６】
この形態では、サーバ２０からパッチデータを取得する場合に比べ、高速にパッチデータを取得できる。
【００９７】
また、データ取得部２２がコンピュータ２５からパッチデータを取得する場合、まず、操作パネル１０が、ユーザからの入力を受け付けて、パッチデータの取得先をコンピュータ２５に設定した形で、データ取得部２２に対してトリガを出力する。次に、データ取得部２２が、ダイレクト通信部６を通じて、コンピュータ２５にアクセスする。そして、データ取得部２２は、コンピュータ２５からパッチデータを読み出して、データバッファ部１６に格納する。
【００９８】
この場合、例えばディスクドライブ８や通信部７を有さず、リムーバブルディスク２４にアクセスしたり、通信ネットワークに接続したりできない情報処理装置１においても、パッチデータを取得できる。また、装置を他のコンピュータに直接、ダイレクト通信部６を介して接続するだけで、データ取得部２２がパッチデータを取得できるため、パッチデータを取得するための手間を簡略化できる。
【００９９】
なお、上述したサーバ２０、リムーバブルディスク２４、およびコンピュータ２５のうち、パッチデータの取得先をサーバ２０にすることが、データを取得する手間を簡略化できるため好ましい。特に、多数の情報処理装置１においてメインプログラムを更新したい場合、通信部７を通じて通信ネットワーク回線に接続すればサーバ２０からパッチデータを取得できるため、それぞれの情報処理装置１をコンピュータ２５に接続させたり、あるいはそれぞれの情報処理装置１に対してリムーバブルディスク２４を用意したり場合に比べて、メインプログラムの更新に必要な労力を大幅に低減できる。
【０１００】
また、リムーバブルディスク２４は、パッチデータを記録できる記録媒体であれば任意の媒体でよい。例えば、リムーバブルディスク２４は、磁気テープやカセットテープなどのテープ、フロッピー（登録商標）ディスクなどの磁気ディスク、ＣＤ−ＲＯＭや光磁気ディスク（ＭＯ）、ミニディスク（ＭＤ）、デジタルビデオディスク（ＤＶＤ）などのディスク、またはＩＣカードや光カードとすることができる。
【０１０１】
また、データ取得部２２は、リムーバブルディスク２４ではなく、固定式の記憶ディスクからパッチデータを取得してもよい。このような固定式記憶ディスクとして、例えば、ハードディスクなどの磁気ディスクがある。この場合、ディスクドライブ８は必要ではなく、固定式記憶ディスクを、ＳＣＳＩ（Small Computer System Interface）やＵＳＢ等のインターフェースを通じて情報処理装置１に接続させればよい。
【０１０２】
また、本実施形態では、パッチデータ取得部１２は、データ取得部２２によるパッチデータの判定処理において、データが正常でないと判定された場合、即座に動作を終了する。しかし、パッチデータ取得部１２は、このとき、即座に動作を終了するのではなく、例えば表示部９に対して、「データの取得に失敗しました。再度データを取得しますか？」などのメッセージを表示させるように、トリガを出力してもよい。
【０１０３】
この場合、操作パネル１０において、ユーザからのパッチデータ再取得指示が入力されると、データ取得部２２が再びサーバ２０等にアクセスしてパッチデータを取得し、データバッファ部１６に格納する。この処理は、パッチデータの取得が正常に行われるか、あるいは、操作パネル１０において、ユーザが、パッチデータの再取得を行わない旨の入力を行うまで、続けられる。
【０１０４】
なお、パッチデータ取得部１２は、データ取得部２２が取得したパッチデータが、何度か（例えば３回）連続して正常でないと判定された場合、上述したように表示部９に対してメッセージ表示を促すトリガを出力するまでもなく、自動的に動作を終了してもよい。これにより、無用なパッチデータ取得処理の繰り返しを防止できる。
【０１０５】
また、本実施形態では、プログラム更新部１４は、一度でもメインプログラムの更新に失敗した場合、即座に更新失敗履歴を「有」に設定する。これにより、システム起動部１５は、更新される前の旧メインプログラムを使用して、装置を起動する。しかし、プログラム更新部１４は、プログラムの更新に失敗したと判定した場合であっても、即座に更新失敗履歴を「有」に設定せず、例えば、表示部９に対して、「プログラムの更新の失敗しました。プログラムを更新を再度実行しますか？」等のメッセージを表示させるように、トリガを出力してもよい。
【０１０６】
このとき、操作パネル１０を通じて、再度のメインプログラム更新を行う旨の入力がユーザによってなされた場合、プログラム更新部１４は、更新失敗履歴を「無」に設定したまま、プログラム展開部１３にトリガを出力する。すると、更新失敗履歴が「無」に設定されているため、プログラム更新部１４は、再びメインプログラムの更新処理を行う。これにより、メインプログラムの更新に失敗した場合であっても、装置を再起動することなく再びメインプログラムの更新を試みることができる。
【０１０７】
一方、操作パネル１０を通じて、プログラムの更新を行わない旨の入力がユーザによってなされた場合、プログラム更新部１４は、更新失敗履歴を「有」に設定して、プログラム展開部１３にトリガを出力する。この場合、上述したように、システム起動部１５が、未更新のメインプログラムを使用して、装置を起動させる。
【０１０８】
なお、プログラム更新部１４は、メインプログラムの更新が、何度か（例えば３回）連続して失敗したと判定した場合、自動的に更新失敗履歴を「有」に設定し、上述したように表示部９に対してメッセージ表示を促すトリガを出力するまでもなく、プログラム展開部１３にトリガを出力するように構成してもよい。これにより、プログラム更新の試みが無用に繰り返されることを防止できる。
【０１０９】
また、本実施形態では、パッチデータ格納部１９に格納されるパッチデータは１種類のみである。しかし、パッチデータ格納部１９には、メインプログラムのバージョン段階に対応した、複数種類のパッチデータが格納されてもよい。
【０１１０】
この場合、プログラム更新部１４は、メインプログラムを更新する際、パッチデータ格納部１９内のパッチデータの種類を確認し、まず、最初に使用すべき第１パッチデータを特定する。そして、プログラム更新部１４は、この第１パッチデータを使用して、メインプログラムを更新し、かつ、更新処理が正常に行われたかを判定する。
【０１１１】
ここで、プログラム更新部１４は、更新処理が正常に行われたと判定した場合、再び、パッチデータ格納部１９にアクセスして、残りのパッチデータの種類を確認し、次に使用すべき第２パッチデータを特定する。次に、プログラム更新部１４は、この第２パッチデータを使用して、更新されたメインプログラムを、さらに更新し、かつ、この更新処理が正常に行われた否かを判定する。
【０１１２】
このような一連のプログラム更新・判定処理を、プログラム更新部１４は、使用すべきパッチデータを全て特定するまで続ける。この間、プログラム更新部１４は、一度でもプログラム更新が正常に行われなかったと判定した場合、上述したように更新失敗履歴を「有」にして、プログラム展開部１３にトリガを出力する。
【０１１３】
以上の処理によって、情報処理装置１では、様々なバージョンのメインプログラムに対応した、複数のパッチデータを用いることによって、展開プログラム格納部１７に展開されたメインプログラムを、複数回上の最新のバージョンに更新できる。したがって、最新バージョンのメインプログラムに従って情報処理装置１を動作させたい場合において、プログラム格納部１８に最新バージョンの直前のバージョンのメインプログラムを用意する必要がない。また、プログラム格納部１８に格納されている旧バージョンのメインプログラムを、最新バージョンの直前のバージョンに書き換えておく必要もない。すなわち、情報処理装置１では、プログラム格納部１８に格納されているメインプログラムを、最新バージョンやあるいはそれ以前の新たなバージョンに書き換えることなく、展開プログラム格納部１７に展開されたメインプログラムを、複数回のバージョンアップ処理によって最新バージョンに更新することができる。したがって、情報処理装置１は、メインプログラムの更新途中においてプログラム更新処理が失敗に終わった場合であっても、プログラム格納部１８に格納されている旧メインプログラムに従って起動し、かつ動作することができる。
【０１１４】
例えば、プログラム格納部１８にバージョン１．０のメインプログラムが格納されており、かつ、パッチデータ格納部１９においてバージョン１．２のメインプログラムに対応した第１パッチデータと、バージョン２．０（最新版）のメインプログラムに対応した第２パッチデータとが格納されている場合、情報処理装置１は、まず、展開プログラム格納部１７に展開されているメインプログラムを、第１パッチデータを用いることによってバージョン１．２に更新する。この更新に成功すると、情報処理装置１は、次に、展開プログラム格納部１７に展開されているバージョン１．２のメインプログラムを、第２パッチデータを用いてバージョン２．０に更新する。
【０１１５】
このように、例えばバージョン１．２および２．０に対応した２つのパッチデータを用いることによって、情報処理装置１は、展開プログラム格納部１７に展開されているバージョン１．０のメインプログラムに対して複数回のバージョンアップ処理を行い、これを最新のバージョン２．０に更新する。すなわち、情報処理装置１は、プログラム格納部１８に格納されているバージョン１．０のメインプログラムを、途中段階のバージョン１．２やあるいは最新のバージョン２．０に書き換えることはない。したがって、情報処理装置１は、バージョン１．０のメインプログラムをプログラム格納部１８に保持したまま、最新のバージョン２．０のメインプログラムに従って起動し、かつ動作する。
【０１１６】
また、本実施形態では、まず、起動中の情報処理装置１において、パッチデータ取得部１２がパッチデータを取得し、次に装置を再起動させていた。しかし、図７に示すように、パッチデータ取得部１２は、装置の起動中ではなく、装置の電源が投入された後であり、かつプログラム更新部１４によるメインプログラムの更新処理が行われる前に、パッチデータを取得することもできる。ここで、図７は、本発明の他の実施形態に係る情報処理装置１における、パッチデータ取得部１２におけるパッチデータの取得および格納処理の流れを表す説明図である。
【０１１７】
この形態の場合、図７に示すように、まず、電源スイッチ１１がユーザによってオンにされる際、同時に、操作パネル１０を通じて、ユーザによるプログラム更新指示が受け付けられる。これにより、操作パネル１０は、パッチデータ取得部１２に備えられるデータ取得部２２に対してトリガを出力する。すると、トリガを受け取ったデータ取得部２２は、サーバ２０やリムーバブルディスク２４などにアクセスして、パッチデータを取得する。これ以降の処理は、基本的に、上述したパッチデータ取得部１２が行う処理と同一である。
【０１１８】
しかし、この形態の場合、データ書き込み部２３は、データバッファ部１６内のパッチデータをパッチデータ格納部１９に格納した後に、図１に示すような情報処理装置１の再起動を行わず、その代わりに、プログラム展開部１３にトリガを出力する。これにより、装置の再起動は行われず、引き続き、プログラム展開部１３によるメインプログラムの展開処理に始まる、一連のメインプログラムの更新および装置の起動処理が行われる。
【０１１９】
以上の構成により、情報処理装置１は、過去に取得したパッチデータの不具合が原因となって、装置が起動しなくなった場合であっても、新たなパッチデータを取得でき、メインプログラムの更新処理を実行できる。
【０１２０】
なお、情報処理装置１は、装置の起動中にユーザからのプログラム更新処理を受け付けた後、いったん再起動して、パッチデータを取得する形態であってもよい。この形態の場合、まず、情報処理装置１の起動中に、操作パネル１０を通じて、ユーザによるプログラム更新指示が受け付けられる。すると、操作パネル１０は、ＦＬＡＳＨ５に、プログラム更新指示フラッグを保存する。そして、操作パネル１０は、情報処理装置１を再起動させる。
【０１２１】
装置の再起動後、パッチデータ取得部１２に備えられるデータ取得部２２が、ＦＬＡＳＨ５内にプログラム更新指示フラッグが保存されているか確認する。そして、プログラム更新指示フラッグが保存されている場合、データ取得部２２は、このフラッグを消去してから、サーバ２０にアクセスしてパッチデータを取得し、データバッファ部１６に格納する。そのため、パッチデータの取得が正常に行われれば、上述したように、プログラム更新部１４によるプログラム更新処理が行われる。一方、更新指示フラッグが保存されていない場合、データ取得部２２はパッチデータの取得を行わず、動作を終了する。
【０１２２】
なお、情報処理装置１では、例えば、メインプログラム更新の際、サーバ２０等から取得したパッチデータに欠陥があったり、あるいは、プログラムの更新に失敗したりした結果、装置を通常に起動できなくなった場合、リムーバブルディスク２４や、通信ネットワーク回線を経由したサーバ２０から、パッチデータを取得できなくなる可能性がある。
【０１２３】
このような事態が生じた場合、情報処理装置１は、電源スイッチ１１をオンにした時に、操作パネル１０を通じたユーザからの特別起動モード指示を受け付けることによって、ダイレクト通信部６を通じたコンピュータ２５からのパッチデータの取得のみが可能な、特別起動モードにより起動できる。
【０１２４】
この起動モードでは、データ取得部２２は、ダイレクト通信部６を通じて、コンピュータ２５から直接、パッチデータを取得して、データバッファ部１６に格納する。これにより、情報処理装置１が起動しない状況においても、システム起動部１５による起動処理が開始される前に、データ取得部２２がコンピュータ２５からパッチデータを取得できる。したがって、プログラム更新部１４がこのパッチデータを使用してメインプログラムの更新を行うことにより、情報処理装置１を再び起動させることができる。
【０１２５】
なお、上述した各部材（起動処理部３、パッチデータ取得部１２、プログラム展開部１３、プログラム更新部１４、システム起動部１５、データ取得部２２、およびデータ書き込み部２３）は、いずれも機能ブロックであり、ＣＰＵなどの演算部２１が図示しない記憶部に格納されたプログラム更新プログラムを実行し、図示しない入出力回路などの周辺回路を制御することによって、実現される。
【０１２６】
したがって、本発明の目的は、上述した機能を実現するソフトウェアであるプログラム更新プログラムのプログラムコード（実行形式プログラム、中間コードプログラム、ソースプログラム）をコンピュータによって読み取り可能に記録した記録媒体を、情報処理装置に供給し、この装置に備えられるコンピュータ（またはＣＰＵやＭＰＵ、ＤＳＰ）が、記録媒体に記録されているプログラムコードを読み出し実行することによって、達成可能である。
【０１２７】
この場合、記録媒体から読み出されたプログラムコード自体が上述した機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。具体的には、情報処理装置１が備える起動処理部３は、情報処理装置１のメモリ（図示せず）に格納された所定のプログラムを、マイクロプロセッサなどの演算部２１が実行することにより実現される。
【０１２８】
一方で、上述した各部材は、上述したソフトウェアと同様の処理を行うハードウェアとして実現してもよい。この場合、本発明の目的は、ハードウェアである情報処理装置によって達成されることになる。
【０１２９】
また、演算部２１は、単体の構成であってもよいし、あるいは、装置内部のバスや各種の通信路を介して接続された複数の演算部２１が、協同してプログラムコードを実行する構成であってもよい。
【０１３０】
ここで、演算部２１によって直接的に実行可能なプログラムコードそのもの、または、後述する解凍などの処理によってプログラムコードを生成可能な、データとしてのプログラムは、これらのプログラムまたはデータを記録媒体に格納し、この記録媒体を配布したり、あるいは、プログラムを、有線または無線の通信路を介して伝送するための通信ネットワークによって送信したりして配布したりすることによって、演算部２１で実行されるものとする。
【０１３１】
このとき、通信ネットワークとしては、特に限定されず、具体的には、インターネット、イントラネット、エキストラネット、ＬＡＮ、ＩＳＤＮ、ＶＡＮ、ＣＡＴＶ通信網、仮想専用網（virtual private network）、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体（通信路）としては、特に限定されず、具体的には、ＩＥＥＥ１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ回線等の有線でも、ＩｒＤＡやリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ、８０２．１１無線、ＨＤＲ、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。
【０１３２】
なお、プログラムを配布する際の記録媒体は、取り外し可能であることが好ましい。しかし、プログラムを配布した後の記録媒体は、取り外し可能であるか否かを問わない。また、記録媒体は、プログラム更新プログラムが記録されている媒体であれば、書き換え（書き込み）可能か否か、あるいは揮発性か否かは問われず、また、記録方法および形状も問われない。
【０１３３】
このような記録媒体を例示すると、磁気テープやカセットテープなどのテープ、フロッピー（登録商標）ディスクやハードディスクなどの磁気ディスク、ＣＤ−ＲＯＭや光磁気ディスク（ＭＯ）、ミニディスク（ＭＤ）、デジタルビデオディスク（ＤＶＤなどのディスクなどである。また、上記記録媒体は、ＩＣカードや光カードのようなカード、あるいは、マスクＲＯＭやＥＰＲＯＭ、ＥＥＰＲＯＭまたはフラッシュＲＯＭなどの半導体メモリであっても良い。あるいは、ＣＰＵなどの演算部２１内に形成されるメモリであってもよい。
【０１３４】
なお、プログラムコードを記録媒体から読み出して主記憶に格納するためのプログラム、および、通信ネットワークからプログラムコードをダウンロードするためのプログラムは、コンピュータによって実行可能にあらかじめ装置に格納されているものとする。
【０１３５】
また、プログラムコードは、上述した各処理の全手段を演算部２１へ指示するコードであればよい。または、プログラムコードは、所定の手順で呼び出すことによって、各処理の一部または全部を実行可能な基本プログラム（例えば、オペレーティングシステムやライブラリなど）がすでに存在していれば、この基本プログラムの呼び出しを、演算部２１へ指示するコードやポインタなどによって、全手順の一部または全部を置き換えても良い。
【０１３６】
また、記録媒体にプログラムを格納する際の形式は、例えば、実メモリに配置した状態のように、演算部２１がアクセスして実行可能な格納形式であればよい。または、実メモリに配置する前で、演算部２１が常時アクセス可能なローカルな記録媒体（例えば、実メモリやハードディスクなど）にインストールした後の格納形式や、あるいは、通信ネットワークや搬送可能な記録媒体などから、ローカルな記録媒体にインストールする前の格納形式であっても良い。
【０１３７】
また、プログラムは、コンパイルされた後のオブジェクトコードに限る物ではなく、ソースコードや、インタプリトまたはコンパイルの途中で生成される中間コードとして、記録媒体に格納されていてもよい。いずれの場合であっても、圧縮された情報の解凍、符号化された情報の復元、インタプリト、コンパイル、リンク、または、実メモリへの配置などの処理、あるいは、これらの処理の組み合わせによって、中間コードを演算部２１が実行可能な形式に変換可能であれば、プログラムを記録媒体に格納する際の形式にかかわらず、同様の効果を得ることができる。
【０１３８】
なお、本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【０１３９】
本発明の情報処理装置は、例えばプリンタ、複写機、ファックスなど、プログラムに従って動作し、そのプログラムを更新可能な装置に広く適用できる。
【図面の簡単な説明】
【０１４０】
【図１】本発明の一実施形態に係る情報処理装置の概略的な構成を示すブロック図である。
【図２】本発明の一実施形態に係る情報処理装置の構成をさらに詳細に示すブロック図である。
【図３】パッチデータ取得部におけるパッチデータの取得および格納処理の流れを表す説明図である。
【図４】パッチデータ取得部における処理の流れを表すフローチャートである。
【図５】プログラム展開部、プログラム更新部、およびシステム起動部における処理の流れを表すフローチャートである。
【図６】パッチデータ取得部がリムーバブルディスクまたはコンピュータからパッチデータを取得する形態を表したブロック図である。
【図７】本発明の他の実施形態に係る情報処理装置における、パッチデータ取得部におけるパッチデータの取得および格納処理の流れを表す説明図である。
【符号の説明】
【０１４１】
１      情報処理装置
２      制御部
３      起動処理部
４      ＲＡＭ
５      ＦＬＡＳＨ
６      ダイレクト通信部
７      通信部
８      ディスクドライブ
９      表示部
１０    操作パネル
１１    電源スイッチ
１２    パッチデータ取得部（パッチデータ取得手段）
１３    プログラム展開部（プログラム展開手段）
１４    プログラム更新部（プログラム更新手段）
１５    システム起動部（起動手段）
１６    データバッファ部（副記憶部）
１７    展開プログラム格納部（主記憶部）
１８    プログラム格納部（第１不揮発性記憶部）
１９    パッチデータ格納部（第２不揮発性記憶部）
２０    サーバ（外部）
２１    演算部
２２    データ取得部
２３    データ書き込み部
２４    リムーバブルディスク（外部）
２５    コンピュータ（外部）
Ｓ２３  プログラム更新工程
【図１】
2005242930.tif 000003
【図２】
2005242930.tif 000004
【図３】
2005242930.tif 000005
【図４】
2005242930.tif 000006
【図５】
2005242930.tif 000007
【図６】
2005242930.tif 000008
【図７】
2005242930.tif 000009