(57)【特許請求の範囲】
【請求項１】
画像形成装置であって、
前記画像形成装置の動作を制御する制御部と、
印刷処理を実行する印刷部とを備え、
前記制御部は、
第１のパーティションと第２のパーティションとを含む複数のパーティションに分割された第１の記憶手段を備え、
前記印刷部は、
前記印刷処理を実行するためのプログラムを記憶する第２の記憶手段を備え、
前記第１のパーティションには、
前記画像形成装置の動作を制御するためのプログラムと、
前記第２のパーティションに記憶されているプログラムを更新するための第１の更新プログラムとが含まれ、
前記第２のパーティションには、
前記第１のパーティションに記憶されているプログラムを更新するための第２の更新プログラムと、
前記第２の記憶手段に記憶されているプログラムを更新するための第３の更新プログラムとが含まれ、
前記画像形成装置は、前記画像形成装置のプログラムを更新する場合に、前記第１の更新プログラム、前記第２の更新プログラム、前記第３の更新プログラムのいずれか又は複数を選択して実行することを特徴とする画像形成装置。
【請求項２】
前記画像形成装置は、前記画像形成装置のプログラムを更新するための更新情報を取得し、当該取得した更新情報に基づいて、前記画像形成装置のプログラムを更新することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記画像形成装置は、ネットワーク上のサーバ装置から前記更新情報を取得することを特徴とする請求項２に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置に関する。
【背景技術】
【０００２】
従来から、画像形成装置等の情報処理装置が実行するプログラムを更新する技術が知られている。
【０００３】
そして、プログラムの更新処理が完了しなかった場合や更新されたプログラム自体に不具合がある場合に備え、更新前のプログラムを予め退避させておき、更新処理が完了しなかった場合に退避させたプログラムにより復元を行う技術が知られている。
【０００４】
また、情報処理装置が実行する複数のプログラムを更新する際に複数のプログラムを更新する更新モードで起動し、複数のプログラムが更新された後に自動的に再起動を行う技術が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２８２０９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１は、更新モードにおいて複数のプログラムをまとめて更新するので、例えば、いずれかのプログラムの更新処理が完了しなかった場合には、情報処理装置自体が起動不能となってしまう可能性がある。この場合、更新が完了しなかったプログラムが実行できなくなるばかりでなく、他のプログラムまでもが実行できなくなってしまうという問題がある。
【０００７】
そこで、上記の点に鑑み、本発明は、画像形成装置が実行する複数のプログラムの更新にあたって、適切にプログラムを更新する画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に係る画像形成装置は、前記画像形成装置の動作を制御する制御部と、印刷処理を実行する印刷部とを備え、前記制御部は、第１のパーティションと第２のパーティションとを含む複数のパーティションに分割された第１の記憶手段を備え、前記印刷部は、前記印刷処理を実行するためのプログラムを記憶する第２の記憶手段を備え、前記第１のパーティションには、前記画像形成装置の動作を制御するためのプログラムと、前記第２のパーティションに記憶されているプログラムを更新するための第１の更新プログラムとが含まれ、前記第２のパーティションには、前記第１のパーティションに記憶されているプログラムを更新するための第２の更新プログラムと、前記第２の記憶手段に記憶されているプログラムを更新するための第３の更新プログラムとが含まれ、前記画像形成装置は、前記画像形成装置のプログラムを更新する場合に、前記第１の更新プログラム、前記第２の更新プログラム、前記第３の更新プログラムのいずれか又は複数を選択して実行することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、画像形成装置が実行する複数のプログラムの更新にあたって、適切にプログラムを更新する画像形成装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置１００の構成を示すブロック図である。
【図２】制御部２００のＣＰＵ２１０により実行されるプログラムの構成を示す図である。
【図３】メインパーティション４０１のプログラムを通常起動モードにて実行した場合の処理を示すフローチャートである。
【図４】サブパーティション４０２のプログラムを実行した場合の処理を示すフローチャートである。
【図５】メインパーティション４０１のプログラムをアップデートモードにて実行した場合の処理を示すフローチャートである。
【図６】情報処理装置１００の起動モードを決定し、決定された起動モードにて起動する処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、本発明を実施するための形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。また、初めに本実施例に必要となる構成ブロックについて説明し、次に、処理の詳細について説明する。
【００１３】
［第１の実施例］
図１は、情報処理装置１００の構成を示すブロック図である。
【００１４】
図１において、制御部２００は、情報処理装置１００全体を制御するための構成である。制御部２００は、情報処理装置１００を制御するための構成として、以下に示すものを含む。
【００１５】
ＣＰＵ２１０は、ＦｌａｓｈＲＯＭ２１１に記憶された制御部２００用のプログラム（第１プログラム）をＲＡＭ２１２に読出して実行する。
【００１６】
ハードディスクドライブ（ＨＤＤ）２１３は、ネットワークＩ／Ｆ２１８を介してＰＣ２２６から受信した印刷データを記憶する。なお、ＣＰＵ２１０により実行されるプログラムには、後述するプリント用アプリケーションプログラムが含まれる。そして、このプリント用アプリケーションプログラムにより、ＨＤＤ２１３に記憶された印刷データがプリンタ部２２０によるプリントが可能な画像データに変換される。そして、ＨＤＤ２１３には、プリンタ部２２０によるプリントが可能な画像データも記憶される。また、ＣＰＵ２１０により実行されるプログラムには、後述するスキャン用アプリケーションプログラムが含まれる。そして、このスキャン用アプリケーションプログラムにより、スキャナ部２２１により画像データが読み取られるとともに、読み取られた画像データがＨＤＤ２１３に転送される。そして、ＨＤＤ２１３には、読み取られた画像データが記憶される。ＳＲＡＭ２２７は、情報処理装置１００が起動する際に、後述するメインパーティションとサブパーティションのいずれのプログラムで起動をするべきかを示す情報が記憶される。なお、メインパーティションにより起動するべきことを示す情報が記憶される場合は、後述する通常起動モードとサブパーティションのプログラムをアップデートするためのアップデートモードのいずれで起動するべきかを示す情報が更に記憶される。
【００１７】
操作部Ｉ／Ｆ２１４は、操作部２１９を介して情報処理装置１００の操作者により入力される指示をＣＰＵ２１０に伝達するためのＩ／Ｆである。また、操作部Ｉ／Ｆ２１４は、操作部２１９に表示される内容を切替えるためのＣＰＵ２１０から受信して操作部２１９に伝達する。
【００１８】
プリンタＩ／Ｆ２１５は、制御部２００とプリンタ部２２０及びフィニッシャ部２２２を接続するためのインターフェースである。ここで、プリンタ部２２０は、プリンタＩ／Ｆ２１５を介してＨＤＤ２１３から転送される画像データに基づいてシート上にプリントを行う。なお、プリンタ部２２０（プリント手段）は、ＣＰＵ２２０ａとＦｌａｓｈＲＯＭ２２０ｂを有する。ＣＰＵ２２０ａは、ＦｌａｓｈＲＯＭ２２０ｂに記憶されたプログラム（第２プログラム）を実行することにより、プリント処理に伴う各種の動作をプリンタ部２２０に実行させる。
【００１９】
また、フィニッシャ部２２２は、プリンタ部２２０によりプリントが行われたシートに対して各種のフィニッシング処理を行うものである。フィニッシング処理とは、例えば、シートに対するステイプル処理、シートへのパンチ処理（穿孔処理）等である。なお、フィニッシャ部２２２は、ＣＰＵ２２２ａとＦｌａｓｈＲＯＭ２２２ｂを有する。ＣＰＵ２２２ａは、ＦｌａｓｈＲＯＭ２２２ｂに記憶されたプログラム（第２プログラム）を実行することにより、フィニッシング処理に伴う各種の動作をフィニッシャ部２２２に実行させる。
【００２０】
スキャナＩ／Ｆ２１６は、制御部２００とスキャナ部２２１を接続するためのインターフェースである。ここで、スキャナ部２２０（画像データを入力する入力手段）は、原稿上の画像をＣＣＤ（ＣｈａｒｇｅＣｏｕｐｌｅｄＤｅｖｉｃｅ）等により構成されるラインセンサを用いて画像データとして読み取るものである。そして、スキャナ部２２０は、読み取った画像データをスキャナＩ／Ｆ２１６を介してＨＤＤ２１３へ転送する。ＨＤＤ２１３へ転送され、記憶された画像データは、前述したプリント部２２０によりプリントすることが可能であり、スキャナ部２２１により読み取った画像データをプリント部２２０によりプリントすることにより、複写（コピー）処理が可能となる。なお、スキャナ部２２１は、ＣＰＵ２２１ａとＦｌａｓｈＲＯＭ２２１ｂを有する。ＣＰＵ２２１ａは、ＦｌａｓｈＲＯＭ２２１ｂに記憶されたプログラム（第２プログラム）を実行することにより、スキャン処理に伴う各種の動作をスキャナ部２２１に実行させる。
【００２１】
ＵＳＢ−ＨｏｓｔＩ／Ｆ２１７は、制御部２００とＵＳＢ−ＦＡＸ部２２３を接続するためのインターフェースである。ここで、ＵＳＢ−ＦＡＸ部２２３は、ＵＳＢ−ＨｏｓｔＩ／Ｆ２１３を介してＨＤＤ２１３から転送される画像データに基づいてＦＡＸ回線１１５を介したＦＡＸ送信を行う。また、ＵＳＢ−ＦＡＸ部２２３は、ＦＡＸ回線１１５を介して受信するデータに基づいて画像データを生成し、ＵＳＢ−ＨｏｓｔＩ／Ｆ２１３を介してＨＤＤ２１３に画像データを転送する。なお、ＨＤＤ２１３に記憶された画像データは前述したようにプリンタ部２２０によりシートへプリントされる。なお、ＵＳＢ−ＦＡＸ部２２３は、ＣＰＵ２２３ａとＦｌａｓｈＲＯＭ２２３ｂを有する。ＣＰＵ２２３ａは、ＦｌａｓｈＲＯＭ２２３ｂに記憶されたプログラム（第２プログラム）を実行することにより、ＦＡＸ通信処理に伴う各種の動作をＵＳＢ−ＦＡＸ部２２３に実行させる。
【００２２】
ネットワークＩ／Ｆ２１８は、制御部２００をＬＡＮ１１０に接続し、ＬＡＮ１１０上のＰＣ２２６やサーバ装置２２５との通信を行う。なお、サーバ装置２２５は、後述する各種のプログラム（情報処理装置１００により実行されるもの）をアップデート（更新）するための更新情報が記憶されており、情報処理装置１００からの要求に応じて、更新情報を情報処理装置１００へ送信する。
【００２３】
次に、制御部２００のＣＰＵ２１０（第１制御手段）により実行されるプログラムの構成について図２を用いて説明する。
【００２４】
なお、図２に示されるプログラムは、図１のＦｌａｓｈＲＯＭ２１１に記憶されているものとする。
【００２５】
ＦｌａｓｈＲＯＭ２１１に記憶されるプログラムは、ＦｌａｓｈＲＯＭ２１１上の２つのパーティションに分けて格納されている。１つはメインパーティション４０１であり、もう１つはサブパーティション４０２である。情報処理装置１００に通常の動作をさせる際には、メインパーティションに格納されたオペレーティングシステムプログラム（以下、ＯＳ）をＣＰＵ２１０に実行させる。その一方で、情報処理装置１００の通常の動作をさせるためのプログラム（後述するメインモジュール４１０）を更新する際には、サブパーティションに格納されたＯＳをＣＰＵ２１０に実行させる。
【００２６】
メインパーティション４０１には、ＯＳ４１１、メインモジュール４１０及びアップデートモジュール４２０の３つのプログラムモジュールが含まれている。ＯＳ４１１は、情報処理装置１００を制御するためのＯＳであり、プリンタ部２２０、スキャナ部２２１、フィニッシャ部２２２、ＵＳＢ−ＦＡＸ部２２３を含む情報処理装置１００の各部の動作を制御するためのドライバプログラムを含むものである。
【００２７】
また、サブパーティション４０２には、ＯＳ４３１及びアップデートモジュール４３０の２つのプログラムモジュールが含まれている。ＯＳ４３１は、情報処理装置１００を制御するためのＯＳであり、プリンタ部２２０、スキャナ部２２１、フィニッシャ部２２２、ＵＳＢ−ＦＡＸ部２２３を含む情報処理装置１００の各部の動作を制御するためのドライバプログラムを含むものである。なお、ＯＳ４３１は、前述したＯＳ４１１と同様のものである。
【００２８】
メインパーティション４０１に、ＯＳ４１１以外に２つのモジュールが格納されているのは、各モジュールを情報処理装置１００の起動モードに応じて選択的に実行するためである。具体的には、情報処理装置１００に通常の動作をさせるための通常起動モードにおいて、ＣＰＵ２１０はＯＳ４１１を実行するとともに、メインモジュール４１０に含まれる各プログラムを実行する。そして、この通常起動モードにおいて、ＣＰＵ２１０は、アップデートモジュール４２０に含まれるプログラムを実行しない。また、サブパーティション４０２に格納されたプログラムを更新するアップデートモードにおいて、ＣＰＵ２１０はＯＳ４１１を実行するとともに、アップデートモジュール４２０に含まれるプログラムを実行する。そして、このアップデートモードにおいて、ＣＰＵ２１０は、メインモジュール４１０に含まれる各プログラムを実行しない。
【００２９】
ここで、メインパーティション４０１のメインモジュール４１０に含まれる各プログラムモジュールについて説明する。なお、各プログラムモジュールは、ＯＳ４１１が起動した後に、ＯＳ４１１により実行されるアプリケーションプログラムである。
【００３０】
メインモジュール４１０に含まれる操作部アプリケーションプログラム４１２は、操作部２１９を介して情報処理装置１００の操作者により入力される指示をＣＰＵ２１０に伝達し、伝達された指示に応じた処理を実行するためのプログラムである。また、スキャンアプリケーションプログラム４１３は、前述したスキャナ部２２１によるスキャン処理を制御するためのプログラムである。また、プリントアプリケーションプログラム４１４は、前述したプリンタ部２２０によるプリント処理を制御するためのプログラムである。ネットワークアプリケーションプログラム４１５は、ＬＡＮ１１０上のＰＣ２２６やサーバ装置２２５との通信を行うためのプログラムである。アップデート準備プログラム４１６は、通常起動モードで動作中の情報処理装置１００が、プログラムのアップデートを実行するための準備動作を実行するためのプログラムである。
【００３１】
アップデートモジュール４２０に含まれるサブパーティションアップデート４２１は、サブパーティション４０２に含まれるアップデートモジュール４３０及びＯＳ４３１をアップデートするためのプログラムである。
【００３２】
次に、サブパーティション４０２のアップデートモジュール４３０に含まれる各プログラムモジュールについて説明する。なお、各プログラムモジュールは、ＯＳ４１１が起動した後に、ＯＳ４１１により実行されるアプリケーションプログラムである。
【００３３】
メインパーティションアップデートプログラム４３２は、メインパーティション４０１に含まれるメインモジュール４１０、アップデートモジュール４２０及びＯＳ４１１をアップデートするためのプログラム（第１更新プログラム）である。処理部アップデートプログラム４３３（第２更新プログラム）は、ＦｌａｓｈＲＯＭ２２０ｂに含まれるプリント処理を実行するためのプログラム、ＦｌａｓｈＲＯＭ２２１ｂに含まれるスキャン処理を実行するためのプログラムを更新するためのプログラムである。また、処理部アップデートプログラム４３３は、ＦｌａｓｈＲＯＭ２２２ｂに含まれるフィニッシング処理を実行するためのプログラムである。また、処理部アップデートプログラム４３３は、ＦｌａｓｈＲＯＭ２２３ｂに含まれるＦＡＸ通信処理を実行するためのプログラムを更新するためのプログラムでもある。
【００３４】
次に、第１の実施例におけるプログラムの更新処理について図３〜図６を用いて説明する。
【００３５】
図６は、情報処理装置１００がオフ状態からオン状態へ切替えられたことに応じて開始される処理を示すフローチャートである。
【００３６】
図３は、メインパーティション４０１のプログラムを通常起動モードにて実行した場合の処理を示すフローチャートである。
【００３７】
図４は、サブパーティション４０２のプログラムを実行した場合の処理を示すフローチャートである。
【００３８】
図５は、メインパーティション４０１のプログラムをアップデートモードにて実行した場合の処理を示すフローチャートである。
【００３９】
なお、図３〜５の各ステップにおける処理は、制御部２００のＣＰＵ２１０がＦｌａｓｈＲＯＭ２１１に記憶されたプログラムを実行することにより行われる。
【００４０】
まず、図６を用いて、情報処理装置１００の起動モードを決定し、決定された起動モードにて起動する処理について説明する。
【００４１】
なお、図６の処理は、情報処理装置１００がオフ状態からオン状態へ切替えられたことに応じて開始される。オフ状態とは、情報処理装置１００の各部に電源からの電力が供給されない状態をいう。そして、オフ状態からオン状態に切替えられる場合とは、メインスイッチ（不図示）をオンした場合や、後述するように情報処理装置１００が再起動された場合をいう。
【００４２】
また、図６の処理は、制御部２００のＦｌａｓｈＲＯＭ２１１に記憶されたブートプログラムをＲＡＭ２１２に読み出して、それをＣＰＵ２１０が実行することにより行われる処理である。
【００４３】
図６のステップＳ６０１で、ＣＰＵ２１０は、ＳＲＡＭ２２７にサブパーティションにより起動されるべきことを示す情報が記憶されているかどうかを判定する。そして、ＣＰＵ２１０は、ＹＥＳと判定した場合はステップＳ６０３へ処理を進め、ＮＯと判定した場合はステップＳ６０２へ処理を進める。
【００４４】
ステップＳ６０３で、ＣＰＵ２１０は、サブパーティションのプログラムを起動させることにより、メインパーティションのプログラムの更新処理を行う。このステップＳ６０３の処理は、図４を用いて説明する。
【００４５】
ステップＳ６０２で、ＣＰＵ２１０は、ＳＲＡＭ２２７にメインパーティションにより起動されるべきことを示す情報が記憶されており、かつ、アップデートモードが指定されているかどうかを判定する。そして、ＣＰＵ２１０は、ＹＥＳと判定した場合はステップＳ６０４へ処理を進め、ＮＯと判定した場合はステップＳ６０５へ処理を進める。なお、ステップＳ６０２でＮＯと判定される場合、ＳＲＡＭ２２７には、メインパーティションにより起動されるべきことを示す情報が記憶されており、更に通常起動モードで記憶されるべきであることを示す情報が記憶されている。
【００４６】
ステップＳ６０４で、ＣＰＵ２１０は、メインパーティションのプログラムをアップデートモードで起動させることにより、サブパーティションのプログラムの更新処理を行う。このステップＳ６０４の処理は、図５を用いて説明する。
【００４７】
ステップＳ６０５で、ＣＰＵ２１０は、メインパーティションのプログラムを通常起動モードで起動させる。このステップＳ６０５の処理は、図３を用いて説明する。
【００４８】
なお、ステップＳ６０３、Ｓ６０４及びＳ６０５の処理を実行した後は、情報処理装置１００を自動的に再起動させるために、情報処理装置１００の電源をオフ状態に切替えた後にオン状態に切替えられる。このようにすることで、再び図６の処理が開始され、ＳＲＡＭ２２７に記憶された情報に応じた適切なモードにて情報処理装置１００が起動する。
【００４９】
また、ＳＲＡＭ２２７に記憶される情報については、後述する図３のフローチャートの説明中に示す。
【００５０】
次に、図３を用いて、メインパーティション４０１のプログラムを通常起動モードにて実行した場合の処理を説明する。図３の各処理は、前述した図６のステップＳ６０５に対応するものである。
【００５１】
ステップＳ３０１で、ＣＰＵ２１０は、情報処理装置１００を通常起動モードにて起動させる。具体的には、ＣＰＵ２１０がＯＳ４１１を起動させ、起動したＯＳ４１１によりメインモジュール４１０に含まれる各プログラムモジュールを実行する。
【００５２】
ステップＳ３０２で、ＣＰＵ２１０は、情報処理装置１００のプログラムを更新するための更新処理の実行指示がなされたかどうかを判定し、なされたと判定された場合はステップＳ３０３へ処理を進める。ここで、更新処理の実行指示とは、例えば、情報処理装置１００の操作者が操作部２１９を介してなされる指示を言う。また、一定期間（例えば、２週間）毎にプログラムを定期的に更新するようにスケジュールを予め設定しておき、定期的に更新処理の実行指示が自動的になされるようにしても良い。
【００５３】
ステップＳ３０３で、ＣＰＵ２１０は、ＯＳ４１１を介してアップデート準備プログラム４１６を実行することにより、ＦｌａｓｈＲＯＭ２１１、ＦｌａｓｈＲＯＭ２２０ｂ〜２２３ｂに記憶された各プログラムのうち、更新候補となるプログラムを特定する。例えば、各プログラムを指定するための表示画面を操作部２１９に表示させ、操作部２１９を介して操作者により指示されたプログラムを更新候補として特定する。なお、操作者による指示に基づくことなく、更新候補となり得る全てのプログラムを更新候補として特定しても良い。
【００５４】
ステップＳ３０４で、ＣＰＵ２１０は、アップデート準備プログラム４１６を実行し、情報処理装置１００を特定するための機種ＩＤ情報とバージョン情報の取得要求をサーバ装置に送信する。そして、情報処理装置１００は、サーバ装置２２５により管理されるバージョン情報を取得する。ここでバージョン情報とは、前述したメインモジュール４１０に含まれる各プログラムモジュールのバージョンを示す情報である。なお、サーバ装置２２５は、情報処理装置１００から機種ＩＤとバージョン情報の取得要求を受信した場合、機種ＩＤに対応するバージョン情報を特定し、特定したバージョン情報を情報処理装置１００へ送信する。
【００５５】
ステップＳ３０５で、ＣＰＵ２１０は、アップデート準備プログラム４１６を実行し、情報処理装置１００のバージョン情報を取得する。ここで、情報処理装置１００のバージョン情報とは、ＦｌａｓｈＲＯＭ２１１、ＦｌａｓｈＲＯＭ２２０ｂ〜２２３ｂに記憶された各プログラムのバージョンを示す情報をいう。
【００５６】
ステップＳ３０６で、ＣＰＵ２１０は、アップデート準備プログラム４１６を実行し、更新対象のプログラムを特定する。具体的には、ステップＳ３０３で特定された更新候補となるプログラムの中から、サーバ装置２２５と情報処理装置１００とでバージョン情報が異なるものを特定する。これにより、情報処理装置１００よりもバージョンの新しいプログラムがサーバ装置２２５からダウンロードすることが可能であることがわかる。
【００５７】
ステップＳ３０７で、ＣＰＵ２１０は、ステップＳ３０５で特定された更新対象のプログラム（更新情報）をサーバ装置２２５から取得する。具体的に、情報処理装置１００は、ステップＳ３０６で特定された更新対象のプログラムを示すプログラム特定情報をサーバ装置２２５へ送信する。サーバ装置２２５は、情報処理装置１００からプログラム特定情報を受信した場合、プログラム特定情報に対応するプログラムを情報処理装置１００へ送信する。なお、サーバ装置２２５から受信した更新対象のプログラムは、ＦｌａｓｈＲＯＭ２１１のメインパーティション４０１に記憶させるものとする。
【００５８】
ステップＳ３０８で、ＣＰＵ２１０は、ステップＳ３０６にて特定された更新対象のプログラムに、メインパーティション４０１のプログラムが含まれるかどうかを判定し、含まれる場合はステップＳ３０９へ処理を進め、含まれない場合はステップＳ３１０へ処理を進める。
【００５９】
ステップＳ３０９で、ＣＰＵ２１０は、メインパーティションにより起動されるべきことを示す情報と更にアップデートモードで記憶されるべきであることを示す情報をＳＲＡＭ２２７に記憶させる。
【００６０】
ステップＳ３１０で、ＣＰＵ２１０は、ステップＳ３０６にて特定された更新対象のプログラムに、処理部のプログラム（ＦｌａｓｈＲＯＭ２２０ｂ〜２２３ｂに記憶された各プログラム）が含まれるかどうかを判定する。そして、含まれると判定した場合はステップＳ３０９へ処理を進め、含まれないと判定した場合はステップＳ３１１へ処理を進める。
【００６１】
ステップＳ３１１で、ＣＰＵ２１０は、ステップＳ３０６にて特定された更新対象のプログラムに、サブパーティション４０２のプログラムが含まれるかどうかを判定し、含まれる場合はステップＳ３１２へ処理を進め、含まれない場合は処理を終了させる。
【００６２】
ステップＳ３１２で、ＣＰＵ２１０は、サブパーティションにより起動されるべきことを示す情報をＳＲＡＭ２２７に記憶させる。
【００６３】
次に、図４を用いて、サブパーティション４０２のプログラムを実行した場合の処理（情報処理装置１００のプログラムを更新する処理）を説明する。図４の各処理は、前述した図６のステップＳ６０３に対応するものである。
【００６４】
ステップＳ４０１で、ＣＰＵ２１０は、ＳＲＡＭ２２７にサブパーティションのプログラムを起動させることを示すフラグが記憶されていることを確認し、サブパーティションのプログラムを起動させる。
【００６５】
ステップＳ４０２で、ＣＰＵ２１０は、メインパーティション４０１に記憶されたプログラム（退避情報）を退避させる退避処理を実行する。具体的には、メインパーティション４０１に記憶された全てのプログラムをサブパーティション４０２へ複写することで退避させる。なお、サブパーティション４０２に十分な空き容量が無い場合には、ＨＤＤ２１３に退避させるようにしてもよい。このような退避処理を実行させるのは、メインパーティション４０１のプログラムの更新処理が完了しなかった場合に、更新前の状態に復元できるようにするためである。
【００６６】
ステップＳ４０３で、ＣＰＵ２１０は、メインパーティションアップデートプログラム４３２を実行することにより、メインパーティション４０１の各プログラムの更新処理を実行する。
【００６７】
ステップＳ４０４で、ＣＰＵ２１０は、メインパーティション４０１の各プログラムの更新処理が成功したかどうかを判定し、成功したと判定した場合はステップＳ４０５へ処理を進める。一方、更新処理が成功（完了）しなかったと判定した場合は、ステップＳ４０８へ処理を進める。なお、更新処理が成功（完了）しなかったと判定する場合は、例えば、更新処理を開始してからの経過時間が一定時間を経過しても更新処理が終了しない場合である。
【００６８】
ステップＳ４０５で、ＣＰＵ２１０は、処理部アップデートプログラム４３３を実行する。そして、ＣＰＵ２１０は、各処理部（プリンタ部２２０、スキャナ部２２１、ＵＳＢ−ＦＡＸ部２２３、フィニッシャ部２２２）に記憶されたプログラム（退避情報）を退避させる退避処理を実行する。具体的には、各処理部に記憶された全てのプログラムをサブパーティション４０２へ複写することで退避させる。なお、サブパーティション４０２に十分な空き容量が無い場合には、ＨＤＤ２１３に退避させるようにしてもよい。
【００６９】
ステップＳ４０６で、ＣＰＵ２１０は、処理部アップデートプログラム４３３を実行することにより、各処理部（プリンタ部２２０、スキャナ部２２１、ＵＳＢ−ＦＡＸ部２２３、フィニッシャ部２２２）が実行するプログラムの更新処理を実行する。
【００７０】
ステップＳ４０７で、ＣＰＵ２１０は、各処理部のプログラムの更新処理が成功したかどうかを判定し、成功したと判定した場合はステップＳ４０７へ処理を進める。一方、更新処理が成功しなかった場合は、ステップＳ４０９へ処理を進める。なお、更新処理が成功しない状態となる場合は、例えば、更新処理を開始してからの経過時間が一定時間を経過しても更新処理が終了しない場合である。また、第１の実施例では、処理部として、プリンタ部２２０、スキャナ部２２１、ＵＳＢ−ＦＡＸ部２２３、フィニッシャ部２２２が存在するが、いずれか処理部の更新処理が完了しない場合に、ステップＳ４０７の判定をＮＯとする。
【００７１】
ステップＳ４０８で、ＣＰＵ２１０は、メインパーティションのプログラムの更新処理が成功したので、次回の起動でメインパーティションのプログラムの更新処理が行われないようにするために、サブパーティションのプログラムを起動させることを指定するフラグをＯＦＦとする情報をＳＲＡＭ２２７へ記憶させる。
【００７２】
ステップＳ４０９で、ＣＰＵ２１０は、各処理部のプログラム（複数のサブプログラム）をサブパーティション４０２へステップＳ４０５で退避済みのプログラムで復元する。具体的には、サブパーティション４０２へ退避済みのプログラムを各処理部のＦｌａｓｈＲＯＭ（２２０ｂ〜２２３ｂ）へ複写することで復元する。このように復元するのは、ステップＳ４０７でプログラム（第２プログラム）の更新処理が成功（完了）しなかったと判定されたからである。
【００７３】
ステップＳ４１０で、ＣＰＵ２１０は、メインパーティション４０１のプログラムをサブパーティション４０２へステップＳ４０２で退避済みのプログラムで復元する。具体的には、サブパーティション４０２へ退避済みのプログラムをメインパーティション４０１へ複写することで復元する。このように復元するのは、ステップＳ４０４又はステップＳ４０７でプログラムの更新処理が成功（完了）しなかったと判定されたからである。
【００７４】
なお、メインパーティション４０１のプログラムの復元は、ステップＳ４０４にてメインパーティション４０１のプログラムの更新処理が成功したと判定された場合であってもステップＳ４０７でＮＯと判定された場合に実行される。ステップＳ４０７でＮＯと判定されるのは、各処理部のプログラムの更新処理が成功（完了）しなかった場合である。このように、メインパーティション４０１のプログラムの更新処理が成功した場合であっても、メインパーティション４０１のプログラムを更新前のプログラムに復元しているのは、次の理由による。それは、メインパーティション４０１のプログラムと各処理部のプログラムのバージョンの組み合わせを適切なものとするためである。例えば、メインパーティション４０１のプログラムがバージョンアップされる一方で、各処理部のプログラムがバージョンアップされない場合、メインパーティション４０１のプログラムと各処理部のプログラムのバージョンの組み合わせが適切なものとならない。この場合、制御部２００と各処理部のデータの受け渡しや、制御部２００から各処理部への指示とその応答が適切になされないこととなる。従って、このようなバージョンの組み合わせの不適合が発生しないように、メインパーティション４０１のプログラムの更新処理が成功した場合であっても、メインパーティション４０１のプログラムを更新前のプログラムに復元する。
【００７５】
次に、図５を用いて、メインパーティション４０１のサブパーティションアップデートプログラムを実行した場合の処理を説明する。図５の各処理は、前述した図６のステップＳ６０４に対応するものである。
【００７６】
ステップＳ５０１で、ＣＰＵ２１０は、ＳＲＡＭ２２７にメインパーティションのプログラムを起動させ、かつアップデートモードで起動させることを指定するフラグが記憶されていることを確認し、情報処理装置１００をアップデートモードにて起動させる。具体的には、ＣＰＵ２１０がＯＳ４１１を起動させ、起動したＯＳ４１１によりサブパーティションアップデートプログラム４２１を起動させる。
【００７７】
ステップＳ５０２で、ＣＰＵ２１０は、サブパーティション４０２に記憶されたプログラムを退避させる退避処理を実行する。具体的には、サブパーティション４０２に記憶された全てのプログラムをメインパーティション４０１へ複写することで退避させる。なお、メインパーティション４０１に十分な空き容量が無い場合には、ＨＤＤ２１３に退避させるようにしてもよい。このような退避処理を実行させるのは、サブパーティション４０２のプログラムの更新処理が完了しなかった場合に、更新前の状態に復元できるようにするためである。
【００７８】
ステップＳ５０３で、ＣＰＵ２１０は、サブパーティションアップデートプログラム４２１を実行することにより、サブパーティション４０２の各プログラムの更新処理を実行する。
【００７９】
ステップＳ５０４で、ＣＰＵ２１０は、サブパーティション４０２の各プログラムの更新処理が成功したかどうかを判定し、成功したと判定した場合はステップＳ５０５へ処理を進める。一方、更新処理が成功（完了）しなかった場合は、ステップＳ５０６へ処理を進める。なお、更新処理が成功（完了）しなかった場合は、例えば、更新処理を開始してからの経過時間が一定時間を経過しても更新処理が終了しない場合である。
【００８０】
ステップＳ５０５で、ＣＰＵ２１０は、サブパーティションのプログラムの更新処理が成功したので、次回の起動でサブパーティションのプログラムの更新処理が行われないようにするために、メインパーティションのプログラムをアップデートモードで起動させることを指定するフラグをＯＦＦとする情報をＳＲＡＭ２２７へ記憶させる。
【００８１】
ステップＳ５０６で、ＣＰＵ２１０は、ステップＳ５０４でプログラムの更新処理が成功しなかったので、各処理部のプログラムをメインパーティション４０１へステップＳ５０２で退避済みのプログラムで復元する。具体的には、メインパーティション４０１へ退避済みのプログラムをサブパーティション４０２へ複写することで復元する。
【００８２】
以上説明したように、第１の実施例によれば、情報処理装置が実行する複数のプログラムの更新にあたって、いずれかのプログラムの更新処理が完了しない場合であっても、他のプログラムの実行が出来ない状態とならないようにする情報処理装置及びその制御方法を提供することができる。より具体的には、複数のプログラムをメインパーティションとサブパーティションに分けておき、一方のパーティションのプログラムにより他方のパーティションのプログラムを更新するようにする。これにより、一方のプログラムの更新処理が完了しなかった場合であっても、他方のプログラムの実行が出来ない状態となるのを防止することができる。
【００８３】
更に、複数のプログラムのうち、いずれを更新対象とするかを特定し、更新対象として特定されたプログラムを更新するための処理のみを」実行するようにする。これにより、更新対象となっていないプログラムを更新するために情報処理装置１００を再起動させる処理を無駄に実行しないようにすることができる。
【００８４】
［他の実施例］
以上の説明においては、更新情報は、ネットワークＩ／Ｆ２１８を介してサーバ装置２２５から受信するものとして説明したが、他の態様であってもよい。例えば、ＵＳＢ−ＨｏｓｔＩ／Ｆ２１７を介してＵＳＢメモリ（外部メモリ）が接続されるようにし、ＵＳＢメモリに記憶された更新情報をＵＳＢ−ＨｏｓｔＩ／Ｆ２１７を介して受信するような態様であっても良い。
【００８５】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005679714.tif 000002
【図２】
0005679714.tif 000003
【図３】
0005679714.tif 000004
【図４】
0005679714.tif 000005
【図５】
0005679714.tif 000006
【図６】
0005679714.tif 000007