(57)【要約】【課題】ソフトウェアの更新処理において、更新対象のソフトウェアにカーネルが含まれない場合はシステム全体を初期化することなくリブートすることにより更新処理時間を低減する情報処理装置を提供すること。【解決手段】情報処理装置１は、記憶部に記憶されたソフトウェアの更新対象にアプリケーションだけが含まれているか否かを判断し、更新対象のソフトウェアを更新し、更新対象のソフトウェアにアプリケーションだけが含まれている場合はリブートせず、更新対象のソフトウェアにアプリケーション以外のソフトウェアが含まれている場合であって、更新対象のソフトウェアにカーネルが含まれているときはハードウェアの初期化を伴うリブートを行い、更新対象のソフトウェアに前記カーネルが含まれないときは前記ハードウェアの初期化を伴わないリブートを行う。【選択図】図５
2014002613.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの更新処理を行う情報処理装置であって、
記憶部に記憶された前記ソフトウェアの更新対象にアプリケーションだけが含まれているか否かを判断する判断手段と、
前記更新対象のソフトウェアを更新する更新手段と、
前記更新対象のソフトウェアにアプリケーションだけが含まれている場合はリブートせず、前記更新対象のソフトウェアに前記アプリケーション以外のソフトウェアが含まれている場合であって、前記更新対象のソフトウェアにカーネルが含まれているときはハードウェアの初期化を伴うリブートを行い、前記更新対象のソフトウェアに前記カーネルが含まれないときは前記ハードウェアの初期化を伴わないリブートを行うリブート手段とを備える
ことを特徴とする情報処理装置。
【請求項２】
前記更新手段は、前記更新対象のソフトウェアに前記アプリケーションだけが含まれている場合は、前記記憶部に記憶されたソフトウェアを更新し、前記更新対象のソフトウェアに前記アプリケーション以外のソフトウェアが含まれている場合に、前記記憶部に記憶されたソフトウェアを前記記憶部とは異なる他の記憶部に複製した後に、複製された前記ソフトウェアを更新し、
前記リブート手段は、前記ソフトウェアの更新対象に前記カーネルが含まれている場合は、前記記憶部に記憶された前記更新対象のソフトウェアを保持して前記ハードウェアの初期化を行い、前記初期化の終了後に前記他の記憶部に複製され更新されたソフトウェアを実装し、前記ソフトウェアの更新対象に前記カーネルが含まれていない場合は、カーネルによる起動対象を前記記憶部に記憶された前記更新対象のソフトウェアから前記他の記憶部に複製され更新されたソフトウェアに切り替える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶部に記憶されたソフトウェアは、デマンドローディングされて実行される
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶部に記憶された全てのソフトウェアが実行時に読み込まれる作業部をさらに備え、
前記更新手段は、前記ソフトウェアの更新対象にアプリケーションだけが含まれている場合は、前記作業部に読み込まれたソフトウェアおよび前記記憶部に記憶された前記ソフトウェアを更新し、前記更新対象のソフトウェアに前記アプリケーション以外のソフトウェアが含まれている場合は、前記記憶部に記憶されたソフトウェアを更新し、
前記リブート手段は、前記ソフトウェアの更新対象に前記カーネルが含まれている場合は、前記作業部に読み込まれた前記ソフトウェアを保持して前記ハードウェアの初期化を行い、前記初期化の終了後に前記記憶部に記憶されたソフトウェアを実装し、前記ソフトウェアの更新対象に前記カーネルが含まれない場合は、前記作業部に読み込まれたソフトウェアを削除して前記記憶部に記憶されたソフトウェアを実装する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記ハードウェアの初期化を伴うリブートは、前記情報処理装置の電源断を必要とするリブートであり、前記ハードウェアの初期化を伴わないリブートは、前記情報処理装置の電源断を必要としないリブートであることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
ソフトウェアの更新処理を行う情報処理装置の制御方法であって、
記憶部に記憶された前記ソフトウェアの更新対象にアプリケーションだけが含まれているか否かを判断する判断工程と、
前記更新対象のソフトウェアを更新する更新工程と、
前記更新対象のソフトウェアにアプリケーションだけが含まれている場合はリブートせず、前記更新対象のソフトウェアに前記アプリケーション以外のソフトウェアが含まれている場合であって、前記更新対象のソフトウェアにカーネルが含まれているときはハードウェアの初期化を伴うリブートを行い、前記更新対象のソフトウェアに前記カーネルが含まれないときは前記ハードウェアの初期化を伴わないリブートを行うリブート工程とを含む
ことを特徴とする制御方法。
【請求項７】
請求項６に記載の制御方法をコンピュータにより実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年の複合機は汎用ＰＣと同様に、市場に設置した後も定期的にソフトウェアを更新することで、機能追加や不具合修正を実施している。ソフトウェアは大きく分けて、独立性の高いアプリケーション部分と、システム全体に依存するＯＳ部分から構成されている。アプリケーションのソフトウェアを更新する場合は、独立性が高いため対象のプログラムファイルを更新して、対象のアプリケーションのみを再立ち上げ（以下リブートまたはリブート処理と呼ぶ）すれば更新が完了する。ＯＳのソフトウェアはシステム全体に依存するため更新したＯＳのソフトウェアのみをリブートすることができない。そのため、ＯＳのソフトウェアを更新する時は、更新対象のファイルを更新用のプログラムファイルで差し換えた後にシステム全体をリブートすることが必要になる。このリブート処理はアプリケーション単体のリブートに比べて時間がかかるため、ダウンタイムが生じ、ユーザはシステムがリブートを完了するまで待たなければならない。汎用ＰＣ用のディストリビューションでは、更新対象にＯＳのソフトウェアが含まれているか否かを判断して、ＯＳのソフトウェアが含まれていた場合のみリブートすることで、アプリケーションの更新には不要なリブートのダウンタイムを作らない様にしている。
【０００３】
また、ＯＳのソフトウェアを更新する場合は、更新処理自体もＯＳが実施することになるが、更新の対象と更新の実行が同一であることから、更新処理中にプログラムファイルの不整合が発生し、システムが更新処理を実施できない課題がある。この課題への対処手段としては、従来からＯＳ部分を機器内に２つ持ち、片方から他方を更新する手段がとられている。特許文献１は、更新用のファームウェアを非運用面のメモリ領域に記憶させ、運用面のメモリ領域で更新対象のファームウェアを同時並行的に実行し、両方のファームウェアの同期が取れたタイミングで更新用のファームウェアに切り替えるシステムを開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−７３８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＯＳを２つ備えることで、更新処理におけるプログラムファイルの不整合を防ぐことが可能となったが、ＯＳのソフトウェアを更新する場合はシステム全体を再立ち上げするリブート処理が必要であり、一般的には電源断を伴う。しかしながら、リブート処理で実施されるハードウェアの初期化は、必ずしも必要ではない。具体的には、ＯＳの内、ハードウェア制御ソフトが含まれるカーネルの更新時は、システム全体の初期化が必要である。ＯＳの内、ハードウェア制御ソフトが含まれないカーネル以外のソフトウェアの更新時は、システム全体の初期化は不要である。従来、ＯＳのソフトウェアを更新する際には、カーネルが対象か否かに関わらずシステム全体の初期化、つまり電源断を伴う初期化を行っていたため、更新処理に時間がかかるという課題がある。そこで本発明は、ソフトウェアの更新処理において、更新対象のソフトウェアにカーネルが含まれない場合はシステム全体を初期化することなくリブートすることにより更新処理時間を低減する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態の情報処理装置は、ソフトウェアの更新処理を行う情報処理装置である。前記情報処理装置は、記憶部に記憶された前記ソフトウェアの更新対象にアプリケーションだけが含まれているか否かを判断する判断手段と、前記更新対象のソフトウェアを更新する更新手段と、前記更新対象のソフトウェアにアプリケーションだけが含まれている場合はリブートせず、前記更新対象のソフトウェアに前記アプリケーション以外のソフトウェアが含まれている場合であって、前記更新対象のソフトウェアにカーネルが含まれているときはハードウェアの初期化を伴うリブートを行い、前記更新対象のソフトウェアに前記カーネルが含まれないときは前記ハードウェアの初期化を伴わないリブートを行うリブート手段とを備える。
【発明の効果】
【０００７】
本発明の情報処理装置によれば、ソフトウェアの更新処理において、更新対象のソフトウェアにカーネルが含まれない場合はシステム全体を初期化することなくリブートすることにより更新処理時間を低減することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】本発明の画像形成装置の構成例を示す図である。
【図２】画像形成装置の内部構成図である。
【図３】画像形成装置のコントローラ部の詳細を示すブロック図である。
【図４】画像形成装置のＦｌａｓｈ上に配置されるデータの構造図である。
【図５】実施例１のバージョンアップを実施するフロー図である。
【図６】画像形成装置のＦｌａｓｈ上に配置されるデータの構造図である。
【図７】実施例２のバージョンアップを実施するフロー図である。
【発明を実施するための形態】
【０００９】
（実施例１）
図１は、本実施例の情報処理装置として機能する画像形成装置の構成例を示す図である。本実施例では画像形成装置を例に説明するが、本発明は計算機システム全般に適用可能な技術である。画像形成装置１は、イーサネット（登録商標）等のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）４００を介してホストコンピュータ（本実施例ではＰＣ３，４）に接続されている。
【００１０】
画像形成装置１は、リーダ部２、プリンタ部６操作部７、コントローラ部１１０、ハードディスク８を備える。リーダ部２は、画像データの読取処理を行う。プリンタ部６は、画像データの入出力処理を行う。操作部７は、ユーザの操作に応じた処理を実行する。例えば、操作部７は、画像データや各種機能の表示処理を行う液晶パネルを備える。コントローラ部１１０は、画像形成装置１が備える各処理部に指示することによって、画像形成装置全体を制御する。
【００１１】
リーダ部２は、原稿給紙ユニット１０、スキャナユニット１１を備える。原稿給紙ユニット１０は、原稿用紙を搬送する。スキャナユニット１１は、搬送された原稿画像を光学的に読み取って電気信号としての画像データに変換する。
【００１２】
プリンタ部６は、給紙ユニット１２、マーキングユニット１３、排紙ユニット１４を備える。給紙ユニット１２は、記録用紙を収容する。このために、給紙ユニット１２は、複数段の給紙カセットを備える。マーキングユニット１３は、画像データを記録用紙に転写、定着する。排紙ユニット１４は、印字された記録用紙にソート処理やステイプル処理を施して、外部に排出する+。ハードディスク８には、制御プログラムや画像データ等が予め書き込まれている。
【００１３】
図２は、図１に示す画像形成装置が備えるリーダ部２及びプリンタ部６の詳細を示す内部構造であり、リーダ部２はプリンタ部６に載置されている。リーダ部２では、原稿給送ユニット２１０に積層された原稿用紙がその積層順にしたがって、先頭から順次１枚ずつプラテンガラス２１５上に給送される。スキャナユニット１１が所定の読取動作を終了した後、読み取られた原稿用紙がプラテンガラス２１５上から原稿給送ユニット２１０に排出される。また、スキャナユニット１１では、原稿用紙がプラテンガラス２１５上に搬送されてくるとランプ２１６が点灯し、次いで光学ユニット２１７が移動を開始する。このとき、原稿用紙は読み取り位置で固定される。光学ユニット２１７は、読取り位置で固定された原稿用紙を下方から照射し、走査する。原稿用紙からの反射光は、複数のミラー２１８乃至２２０、及びレンズ２２１を介してＣＣＤイメージセンサー（以下、単に「ＣＣＤ」と記す）２２２へと導かれ、走査された原稿画像はＣＣＤ２２２によって読み取られる。そして、ＣＣＤ２２２によって読み取られた画像データは、所定の処理が施された後、コントローラ部１１０（図２では図示省略）に転送される。
【００１４】
別の方法として、プラテンガラス２１５上に原稿用紙が載置された時点でランプ２１６を点灯し、次いで光学ユニット２１７の移動を開始させ、原稿用紙を下方から照射し、走査することで、走査された原稿画像をＣＣＤ２２２によって読み取ることも可能である。以上の手順で送出されたリーダからの画像データは、コネクタ５６を介してコントローラ部１１０に送出される。
【００１５】
次いで、プリンタ部６では、不図示のレーザドライバ２３によって駆動されるレーザ発光部２２４が、コントローラ部１１０から出力された画像データに対応するレーザ光を発光する。該レーザ光により、マーキング部１３の感光ドラム２２５にはレーザ光に応じた静電潜像が形成される。現像器２２６は、形成された静電潜像の部分に現像剤を付着する。
【００１６】
一方、レーザ光の照射開始と同期したタイミングで、給紙部１２（給紙カセット２１２ａ，２１２ｂ）は、記録用紙を給紙して転写部２２７に搬送する。転写部２２７は、感光ドラム２２５に付着している現像剤を給紙された記録用紙に転写する。画像データが転写された記録用紙は定着部２２８に搬送され、定着部２２８は加熱・加圧処理により画像データを記録紙に定着する。画像データが記録用紙に片面記録される場合は、排出ローラ２２９が定着部２２８を通過した記録用紙をそのまま排紙ユニット１４に排出する。
【００１７】
排紙ユニット１４は、排出された記録用紙を束ねて記録用紙の仕分けを行う。また、排紙ユニット１４は仕分けされた記録用紙のステイプル処理を行う。また、排紙ユニット１４は、画像データが記録用紙に両面記録される場合は、排出ローラ２２９まで記録用紙を搬送した後、排出ローラ２２９の回転方向を逆転させる。その後、記録用紙は、フラッパ２３０によって再給紙搬送路２３１へと導かれ、上述と同様にして転写部２２７に搬送される。コントローラ部１１０は、上述したように単一の電子部品で構成される。コントローラ部１１０はリーダ部２が読み取った画像データをコードに変換し、ＬＡＮ４００を介して第一及び第二のホストコンピュータ３、４に送信するスキャナ機能を有する。さらに、コントローラ部１１０は、ホストコンピュータ３、４から不図示のＬＡＮを介して受信したコードデータを画像データに変換し、プリンタ部６に出力するプリンタ機能を有する。上述した機能は一例であり、コントローラ部はその他の機能を有することが可能である。
【００１８】
図３は、図１に示す画像形成装置が備えるコントローラ部の構成例を示す図である。コントローラ部１１０が備える構成要素のうち、メインコントローラ３２は、ＣＰＵ３３とバスコントローラ３４と後述する各種コントローラ回路を含む機能ブロックとを備える。本実施形態の画像形成装置の制御方法は、ＣＰＵ３３がＦＬＡＳＨメモリ９９に格納されたコンピュータプログラムを実行することによって実現される。
【００１９】
メインコントローラ３２は、ＤＲＡＭＩ／Ｆ３７を介して、ＤＲＡＭ３８と接続される。また、メインコントローラ３２は、コーデックＩ／Ｆ３９を介して、コーデック４０と接続される。また、メインコントローラ３２は、ネットワークＩ／Ｆ４１を介して、ネットワークコントローラ３２と接続される。また、メインコントローラ３２は、スキャナバス４５を介して、スキャナＩ／Ｆ４６に接続される。また、メインコントローラ３２は、プリンタバス４７を介して、プリンタＩ／Ｆ４８に接続される。また、メインコントローラ３２は、ＰＣＩバス等の汎用高速バス４９を介して拡張ボードを接続するための拡張コネクタ５０及び入出力制御部（Ｉ／Ｏ制御部）５１に接続されている。
【００２０】
ＤＲＡＭ３８は、ＣＰＵ３３が動作するための作業領域や画像データを蓄積するための領域として使用される。コーデック４０は、ＤＲＡＭ３８に蓄積されたラスターイメージデータをＭＨ／ＭＲ／ＭＭＲ／ＪＢＩＧなどの周知の圧縮方式で圧縮する。また、コーデック４０は、圧縮されたデータをラスターイメージに伸長する。また、コーデック４０にはＳＲＡＭ４３が接続されており、ＳＲＡＭ４３は、コーデック４０の一時的な作業領域として使用される。
【００２１】
ネットワークコントローラ４２は、ネットワークコネクタ４４を介して、ＬＡＮ４００（図２）との間で所定の制御動作を行う。Ｉ／Ｏ制御部５１は、図２に示すリーダ部２やプリンタ部６との間で、制御コマンドを送受信する。Ｉ／Ｏ制御部５１には、上記制御コマンドを送受信するための調歩同期式のシリアル通信コントローラ５２が２チャンネル装備されている。シリアル通信コントローラ５２は、Ｉ／Ｏバス５３を介して、スキャナＩ／Ｆ４６及びプリンタＩ／Ｆ４８に接続されている。
【００２２】
スキャナＩ／Ｆ４６は、第一の調歩同期シリアルＩ／Ｆ５４及び第一のビデオＩ／Ｆ５５を介して、スキャナコネクタ５６に接続されている。また、スキャナコネクタ５６は、リーダ部２のスキャナユニット１１に接続されている。そして、スキャナＩ／Ｆ４６は、スキャナユニット１１から受信した画像データに対して、所望の２値化処理や、主走査方向及び／又は副走査方向の変倍処理を行う。また、スキャナＩ／Ｆ４６は、スキャナユニット１１から送られてきたビデオ信号に基づいて制御信号を生成し、スキャナバス４５を介して、メインコントローラ３２に転送する。
【００２３】
また、プリンタＩ／Ｆ４８は、第２の調歩同期シリアルＩ／Ｆ５７及び第２のビデオＩ／Ｆ５８を介して、プリンタコネクタ５９に接続されている。また、プリンタコネクタ５９は、プリンタ部６のマーキングユニット１３に接続されている。そして、プリンタＩ／Ｆ４８は、メインコントローラ３２から出力された画像データにスムージング処理を施して、マーキングユニット１３に出力する。また、プリンタＩ／Ｆ４８は、マーキングユニット１３から送られたビデオ信号に基づいて、生成された制御信号をプリンタバス４７に出力する。プリンタＩ／Ｆ４８は、例えば、ＬＡＮ４００に接続されたホストコンピュータから受信したＰＤＬ（ページ記述言語）データを解釈し、ラスターイメージデータに展開する。
【００２４】
また、バスコントローラ３４は、スキャナＩ／Ｆ４６プリンタＩ／Ｆ４８、その他拡張コネクタ５０等に接続された外部機器から入出力されるデータ転送を制御する。具体的には、バスコントローラ３４は、バスの使用権のアービトレーション（調停）やＤＭＡデータ転送の制御を行う。例えば、上述したＤＲＡＭ３８とコーデック４０との間のデータ転送や、スキャナユニット１１からＤＲＡＭ３８へのデータ転送、ＤＲＡＭ３８からマーキングユニット１３へのデータ転送等は、バスコントローラ３４によって制御され、ＤＭＡ転送される。
【００２５】
また、Ｉ／Ｏ制御部５１は、ＬＣＤコントローラ６０及びキー入力Ｉ／Ｆ６１を介して、パネルＩ／Ｆ６２に接続されている。パネルＩ／Ｆ６２は、操作部７に接続されている。また、Ｉ／Ｏ制御部５１は、Ｅ−ＩＤＥコネクタ６３を介して、ハードディスク８および９、Ｆｌａｓｈメモリ９９に接続されている。
【００２６】
Ｆｌａｓｈメモリ９９は、メインコントローラ制御用の各種制御プログラム、各種データ記憶領域を記憶する。また、Ｆｌａｓｈメモリ９９は、機器内で管理する日付と時刻を更新／保存するリアルタイムクロックモジュール６４に接続されている。リアルタイムクロックモジュール６４は、バックアップ用電池６５に接続されて、バックアップ用電池６５によりバックアップされている。ＢＩＯＳ
ＲＯＭ９８は、メインコントローラ３２に接続され、ＩＯ初期化プログラムを記憶する。
【００２７】
次に図３と図４を参照し、Ｆｌａｓｈ９９の内部に配置されたソフトウェアの構成について説明する。Ｆｌａｓｈ９９は記憶部として機能し、内部的にソフトウェアとして、Ｂｏｏｔ
Ｌｏａｄｅｒ１００７、ＫｅｒｎｅｌＡ１００８、ＩｎｉｔｒｄＡ１００９、Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＡ１０１０を有する。さらに、Ｆｌａｓｈ９９は、ＫｅｒｎｅｌＢ１０１１、ＩｎｉｔｒｄＢ１０１２、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＢ１０１３を有する。
【００２８】
Ｂｏｏｔ Ｌｏａｄｅｒ１００７は、ＢＩＯＳ９８によって、ＤＲＡＭ３８に読み込まれたのち実行され、ＫｅｒｎｅｌＡ１００８、ＩｎｉｔｒｄＡ１００９、ＫｅｒｎｅｌＢ１０１１およびＩｎｉｔｒｄＢ１０１２をＤＲＡＭ３８に読み込む。
【００２９】
ＩｎｉｔｒｄＡ１００９およびＩｎｉｔｒｄＢ１０１２は、ＤＲＡＭ３８に読み込まれたのちに、カーネル初期化時の一時的な起動ディスクとして使用される。ＫｅｒｎｅｌＡ１００８およびＫｅｒｎｅｌＢ１０１１はそれぞれ、ＩｎｉｔｒｄＡ１００９およびＩｎｉｔｒｄＢ１０１２を一時起動ディスクとして起動する。その後、ＫｅｒｎｅｌＡ１００８およびＫｅｒｎｅｌＢ１０１１はそれぞれ、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０またはＰｒｏｇｒａｍ ＳｔｏｒａｇｅＢ１０１３を実際の起動ディスクとして実装する。Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＡ１０１０およびＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＢ１０１３はそれぞれ、アプリケーション部およびＯＳ部を含むソフトウェアを記憶する。ＫｅｒｎｅｌＡ１００８もしくはＫｅｒｎｅｌＢ１０１１は、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０およびＰｒｏｇｒａｍ ＳｔｏｒａｇｅＢ１０１３を実装後に、内部に配置されたソフトウェアを起動することで複写機の機能を実行する。
【００３０】
本実施例では、ＣＰＵ３３は、作業部として使用するＤＲＡＭ３８上に全てのプログラムを展開してから実行するのではなく、デマンドローディング機構により、必要なプログラムだけをオンデマンドに選択してＤＲＡＭ３８に読み込むものとする。ＫｅｒｎｅｌＡ１００８、ＩｎｉｔｒｄＡ１００９、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０とＫｅｒｎｅｌＢ１０１１、ＩｎｉｔｒｄＢ１０１２、Ｐｒｏｇｒａｍ Ｓｔｏｒａｇｅ１００１３はソフトウェア更新のため、冗長的に構成されている。片方が他方を更新することで、更新処理中の不整合を回避すると共に、更新失敗時のリカバリ処理を可能としている。ＫｅｒｎｅｌＡ１００８とＩｎｉｔｒｄＡ１００９、ＫｅｒｎｅｌＢ１０１１とＩｎｉｔｒｄＢ１０１２は、それぞれ組み合わせて用いられる。Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０とＰｒｏｇｒａｍ ＳｔｏｒａｇｅＢ１０１３は更新処理のシーケンスによって、ＫｅｒｎｅｌＡ１００８とＫｅｒｎｅｌＢ１０１１と任意の組み合わせで用いられる。
【００３１】
次に図５は、画像形成装置のソフトウェアのバージョンアップを説明する図である。図５に示すフローチャートは、Ｆｌａｓｈメモリ９９に格納されたプログラムに従ってメインコントローラ３２のＣＰＵ３３が実行することによって実現される。ステップ２００１でＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０内に配置され、起動しているメインコントローラ３２のソフトウェアがユーザの指示を受けバージョンアップを開始する。ステップ２００１で使用されているソフトウェアは、ＫｅｒｎｅｌＡ１００８、ＩｎｉｔｒｄＡ１００９、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０であるものとする。
【００３２】
ステップ２００２で、ＣＰＵ３３は、バージョンアップを指示されたソフトウェアの一覧を作成する。ステップ２００３で、ＣＰＵ３３は、ステップ２００２で作成したソフトウェア一覧にアプリケーションソフトウェア以外のソフトウェアが含まれているかを各ソフトウェアが有するメタデータを参照し確認する。すなわち、ＣＰＵ３３は、ソフトウェアの更新対象にアプリケーションだけが含まれているかを判断する判断手段として機能する。ステップ２００３でアプリケーションソフトウェア以外のソフトウェアが検出されなかった場合、ＣＰＵ３３は、ステップ２０３１の処理を実施する。
【００３３】
ステップ２０３１で、ＣＰＵ３３は更新手段として機能し、更新対象のアプリケーションに対応するプログラムファイルをＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０内で差し換えることで更新を実施する。そして、ステップ２０１３で、ＣＰＵ３３はバージョンアップを終了する。アプリケーションは、他のプロセスとの依存関係がなく独立性が高いため、ＣＰＵ３３はこの様に簡単な処理で更新することができる。また、この様に独立性の高いソフトウェアだけが、メタデータとしてアプリケーションであることを示す情報を有する。ハードウェアの初期化を伴わないとしてもリブート処理は数十秒から数分かかるため、アプリケーションのみの更新がもっとも高速に実施される。
【００３４】
ステップ２００３で、ＣＰＵ３３は、アプリケーション以外のソフトウェアを検出した場合には、ステップ２００４の処理を実施する。ステップ２００４で、ＣＰＵ３３は、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡの内容をＰｒｏｇｒａｍ ＳｔｏｒａｇｅＢへ複製した後に、更新対象のＯＳのソフトウェアに対応するプログラムファイルを差し換えることで更新を実施する。これにより、更新処理中にプログラムファイルの不整合が発生することを防止する。カーネル、Ｉｎｉｔｒｄのソフトウェアが更新対象として含まれていた場合は、ＫｅｒｎｅｌＡ１００８、ＩｎｉｔｒｄＡ１００９を更新後、ＫｅｒｎｅｌＢ１０１１、ＩｎｉｔｒｄＢ１０１２に複製し、ステップ２００５の処理を実施する。
【００３５】
ステップ２００５で、ＣＰＵ３３は、システム内で起動し、実行しているプログラムに関する全プロセスに終了処理を依頼する。各プロセスは、ＣＰＵ３３から指示を受け、データの書き出しなど終了していない処理を実施し、プロセスの実行を終了する。この様にシステム全体の終了処理が必要なのは、ＯＳのロジックが全てのプロセスに渡って影響を及ぼしており、それ故ＯＳのソフトウェアを部分的に再起動するだけでは、各プロセスは、プロセス間の整合性が取れた状態で処理を再開できないためである。ＣＰＵ３３は、ステップ２００６で全プロセスの終了が確認できるとステップ２００７の処理を実施する。
【００３６】
ステップ２００７で、ＣＰＵ３３は、ステップ２００２で作成したソフトウェア一覧にカーネルとＩｎｉｔｒｄのソフトウェアが含まれているか確認する。ＣＰＵ３３は、ステップ２００７でカーネルとＩｎｉｔｒｄのソフトウェアが含まれていることを確認した場合は、ステップ２００８の処理を実施する。ステップ２００８ではＣＰＵ３３をリセットすることで、ＣＰＵを電源投入時の初期状態へ遷移させ、ステップ２００９の処理を実施する。つまり、ステップ２００７で更新対象のソフトウェアにカーネルが含まれていると判定された場合は、電源断（画像形成装置１を電源ＯＦＦにしてその後電源ＯＮにする）を必要とするリブートを実行する。
【００３７】
ステップ２００９で、ＣＰＵ３３は、ＢＩＯＳ ＲＯＭ９８をＤＲＡＭ３８へ読み込み、ＢＩＯＳの初期化を開始する。ＢＩＯＳの初期化で、ＣＰＵ３３は、ＩＯデバイスを中心とした部分のハードウェアの初期化を実施した後、ステップ２０１０の処理を実施する。ステップ２０１０で、ＣＰＵ３３は、ＫｅｒｎｅｌＢ１０１１とＩｎｉｔｒｄＢ１０１２をＤＲＡＭ３８へ読み込み、カーネルの初期化を開始する。つまり、ＣＰＵ３３は、カーネルを初期化する必要がある場合は、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０を保持しておく。カーネルの初期化で、ＣＰＵ３３は、カーネル内にデバイスドライバとして記述された全ハードウェアの初期化を実行し、終了後にステップ２０１１の処理を実施する。
【００３８】
ステップ２００７でカーネルが含まれていないと判断された場合はステップ２０２１の処理を実施する。ステップ２０２１では、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０の実装を解除し、ステップ２０１１の処理を実施する。カーネルが含まれていない場合は、電源断を伴うハードウェアの初期化が必要ないため、ＣＰＵ３３は、ＯＳのソフトウェアに対応するプログラムを差し換えるだけで更新を実現できる。換言すれば、ＣＰＵ３３は、カーネルによる起動対象を実装していたＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０からＰｒｏｇｒａ ＳｔｏｒａｇｅＢ１０１３に切り替える。更新処理が完了した後は、Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＡ１０１０に含まれる内容は任意のタイミングで削除されてよい。上述の構成により、Ｐｒｏｇｒａ
ＳｔｏｒａｇｅＢ１０１３を実装後にバージョンアップが指示された場合は、ＣＰＵ３３は、Ｐｒｏｇｒａ ＳｔｏｒａｇｅＢ１０１３をＰｒｏｇｒａｍ ＳｔｏｒａｇｅＡ１０１０に複製する。そして複製されたＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０が更新されることになる。つまり、ステップ２００７で更新対象のソフトウェアにカーネルが含まれていないと判定された場合は、電源断を必要としないリブートを実行する。
【００３９】
ステップ２０１１では、ＣＰＵ３３はＰｒｏｇｒａｍ ＳｔｏｒａｇｅＢ１０１３を実装し、ステップ２０１２の処理を実施する。ステップ２０１２で、ＣＰＵ３３は、予め設計された起動シーケンスに従い、必要なプロセス群を起動する。例えば、ステップ２００５で終了させたＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０に含まれるプロセスと対応するＰｒｏｇｒａｍ ＳｔｏｒａｇｅＢ１０１３に含まれるプロセスを再起動する。すなわち、ＣＰＵ３３は、更新対象のソフトウェアに含まれるソフトウェアの種類に応じてリブートするリブート手段として機能する。つまり、ＣＰＵ３３は、更新対象のソフトウェアがアプリケーションのみの場合はリブートしない。ＣＰＵ３３は、更新対象のソフトウェアにアプリケーション以外のソフトウェアが含まれている場合であって、更新対象のソフトウェアがカーネルを含む場合は初期化を行い、カーネルを含まない場合は初期化を伴わないリブートを行う。そしてステップ２０１３で、ＣＰＵ３３はバージョンアップを終了する。
【００４０】
ステップ２００３で、アプリケーションが含まれないとＣＰＵ３３が判断した場合のバージョンアップ後に使用されるソフトウェアは、ＫｅｒｎｅｌＡ１００８、ＩｎｉｔｒｄＡ１００９、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ１０１０である。ステップ２００７でカーネルが含まれていないとＣＰＵ３３が判断した場合のバージョンアップ後に使用されるソフトウェアは、ＫｅｒｎｅｌＡ１００８、ＩｎｉｔｒｄＡ１００９、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＢ１０１３である。ステップ２００７でカーネルが含まれているとＣＰＵ３３が判断した場合のバージョンアップ後に使用されるソフトウェアはＫｅｒｎｅｌＢ１０１１、ＩｎｉｔｒｄＢ１０１２、Ｐｒｏｇｒａ
ＳｔｏｒａｇｅＢ１０１３である。
【００４１】
（実施例２）
次にＣＰＵ３３がＰｒｏｇｒａｍ ＳｔｏｒａｇｅＡ１０１０およびＰｒｏｇｒａｍ ＳｔｏｒａｇｅＢ１０１３に配置したプログラムをデマンドローディングせず、起動時にＤＲＡＭ３８に全て読み込んでから実行する場合の実施例を説明する。
図３と図６を用いてＦｌａｓｈ９９の内部に配置されたソフトウェアの構成について説明する。
【００４２】
図６に示すように、Ｆｌａｓｈ９９は内部的に、Ｂｏｏｔ Ｌｏａｄｅｒ３００７、ＫｅｒｎｅｌＡ３００８、ＩｎｉｔｒｄＡ３００９、及びＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ３０１０を有する。ＣＰＵ３３は、ＢＩＯＳ９８によって、ＤＲＡＭ３８にＢｏｏｔ Ｌｏａｄｅｒ３００７を読み込み、読み込まれたＢｏｏｔ Ｌｏａｄｅｒ３００７が次にＫｅｒｎｅｌＡ３００８、ＩｎｉｔｒｄＡ３００９をＤＲＡＭ３８に読み込む。ＩｎｉｔｒｄＡ３００９はＤＲＡＭ３８に読み込まれたのちに、カーネル初期化時の一時的な起動ディスクとして使用される。ＫｅｒｎｅｌＡ３００８は、ＩｎｉｔｒｄＡ３００９を一時起動ディスクとして起動する。その後、ＣＰＵ３３は、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ３０１０の内容をＤＲＡＭ３８に全て読み込む。
【００４３】
このため、本実施例ではデマンドローディングを実行しないため、Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＡ３０１０の容量よりも容量が大きいＤＲＡＭ３８が必要になる。Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ３０１０は、アプリケーションおよびＯＳのソフトウェアを記憶する。Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＡ３０１０を読み込んだ後にＫｅｒｎｅｌＡ３００８が内部に配置されたソフトウェアを起動することで複写機の機能を実行する。起動処理が完了するとＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ３０１０はアクセスされないため、ＣＰＵ３３は実行時の任意のタイミングでＰｒｏｇｒａｍ ＳｔｏｒａｇｅＡ３０１０を書き換え、バージョンアップを実施することができる。
【００４４】
次に図７を用いて、バージョンアップ実施のフローを説明する。本フローチャートはＦｌａｓｈメモリ９９に格納されたプログラムに従ってメインコントローラ３２のＣＰＵ３３が実行することによって実現される。
【００４５】
ステップ４００１でＰｒｏｇｒａｍ ＳｔｏｒａｇｅＡ３０１０内に配置され、起動しているメインコントローラのソフトウェアがユーザの指示を受けてバージョンアップを開始する。ステップ４００２で、ＣＰＵ３３は、バージョンアップを指示されたソフトウェアの一覧を作成する。ステップ４００３で、ＣＰＵ３３は、ステップ４００２で作成されたソフトウェア一覧にアプリケーションソフトウェア以外のソフトウェアが含まれているか、各ソフトウェアが有するメタデータを参照し確認する。
【００４６】
ステップ４００３で、アプリケーションソフトウェア以外のソフトウェアが検出されなかった場合は、ＣＰＵ３３はステップ４０３１の処理を実施する。ステップ４０３１で、ＣＰＵ３３は、更新対象のアプリケーションに対応するプログラムファイルをＰｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ３００１０内およびＤＲＡＭ３８内で差し換える。その後、ステップ４０１３の処理を実施する。
【００４７】
ステップ４００３でアプリケーション以外のソフトウェアが検出された場合には、ＣＰＵ３３はステップ４００４の処理を実施する。ステップ４００４で、ＣＰＵ３３は、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ３０１０上で、更新対象のＯＳのソフトウェアに対応するプログラムファイルを差し換えることで更新を実施する。さらに、カーネル、Ｉｎｉｔｒｄが含まれていた場合は、ＫｅｒｎｅｌＡ３００８、ＩｎｉｔｒｄＡ３００９を更新し、ＣＰＵ３３は、ステップ４００５の処理を実施する。
【００４８】
ステップ４００５で、ＣＰＵ３３は、システム内で起動し、実行しているプログラムに関する全プロセスに終了処理を依頼する。各プロセスは、ＣＰＵ３３から指示を受け、データの書き出しなど終了していない処理を実施し終了した後に、プロセスの実行を終了する。ステップ４００６で全プロセスの終了が確認できるとステップ４００７の処理を実施する。ステップ４００７で、ＣＰＵ３３は、ステップ４００２で作成したソフトウェア一覧にカーネルとＩｎｉｔｒｄが含まれているか確認する。
【００４９】
ステップ４００７で、ＣＰＵ３３は、カーネルとＩｎｉｔｒｄ含まれていることが確認された場合は、ステップ４００８の処理を実施する。ステップ４００８ではＣＰＵ３３をリセットすることで、ＣＰＵを電源投入時の初期状態へ遷移させ、ステップ４００９の処理を実施する。ステップ４００９で、ＣＰＵ３３は、ＢＩＯＳ
ＲＯＭ９８をＤＲＡＭ３８へ読み込み、ＢＩＯＳの初期化を開始する。ＢＩＯＳの初期化ではＩＯデバイスを中心とした部分のハードウェアの初期化を実施した後、ステップ４０１０の処理を実施する。ステップ４０１０ではＫｅｒｎｅｌＡ３００８とＩｎｉｔｒｄＡ３００９をＤＲＡＭ３８へ読み込み、カーネルの初期化を開始する。カーネルの初期化で、ＣＰＵ３３はカーネル内にデバイスドライバとして記述された全ハードウェアの初期化を実行した後、ステップ４０１１の処理を実施する。
【００５０】
ステップ４００７で、ＣＰＵ３３はカーネルが含まれていないと判断した場合、ステップ４０２１の処理を実施する。ステップ４０２１で、ＣＰＵ３３は、Ｐｒｏｇｒａｍ
ＳｔｏｒａｇｅＡ３０１０の再読み込みに備えて、ＤＲＡＭ３８の内容を削除する。ステップ４０１１で、ＣＰＵ３３は、Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＡ３０１０の内容をＤＲＡＭ３８に全て読み込み、ステップ４０１２の処理を実施する。ステップ４０１２で、ＣＰＵ３３は予め設計された起動シーケンスに従い、必要なプロセス群を起動する。そしてステップ４０１３で、ＣＰＵ３３はバージョンアップを終了する。
【００５１】
これらの処理により、ＤＲＡＭ３８の容量を増やすことでＦｌａｓｈ９９の容量を削減することができる。
【００５２】
上記制御を行う事で、アプリケーション部のみの場合はファイルの差し換えのみを実施し、カーネルを含まないＯＳ部の場合はハードウェアの初期化を伴わないリブートを実施し、カーネルを含む場合はハードウェアの初期化を伴うリブートを実施する。これにより、ユーザは不要なダウンタイムを待たされることが無くなる。
【００５３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００５４】
９９  Ｆｌａｓｈ
１００７  Ｂｏｏｔ Ｌｏａｄｅｒ
１００８  ＫｅｒｎｅｌＡ
１００９  ＩｎｉｔｒｄＡ
１０１０  Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＡ
１０１１  ＫｅｒｎｅｌＢ
１０１２  ＩｎｉｔｒｄＢ
１０１３  Ｐｒｏｇｒａｍ ＳｔｏｒａｇｅＢ
【図１】
2014002613.tif 000003
【図２】
2014002613.tif 000004
【図３】
2014002613.tif 000005
【図４】
2014002613.tif 000006
【図５】
2014002613.tif 000007
【図６】
2014002613.tif 000008
【図７】
2014002613.tif 000009