(57)【特許請求の範囲】
【請求項１】
第１及び第２のコントローラを備え、前記第１及び第２のコントローラの各々が異なるジョブ処理を分担する情報処理装置であって、
前記第１及び第２のコントローラにはそれぞれ前記異なるジョブ処理に用いられるメモリデバイスが接続されており、
前記第１及び第２のコントローラは互いに他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有し、
前記第１及び第２のコントローラの各々は、
自己が起動された際、起動段階が一段階進む毎に、前記アクセス手段によって前記他方のコントローラに接続された前記メモリデバイスにアクセスし、前記一段階進んだ起動段階を起動情報として書き込む書き込み手段と、
自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、前記他方のコントローラの起動に異常が生じたか否かを検知する異常検知手段とを有することを特徴とする情報処理装置。
【請求項２】
前記異常検知手段は予め定められた時間で前記起動情報が更新されないと前記他方のコントローラの起動に異常が生じたと判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１及び第２のコントローラの各々には異常を報知するための報知手段が接続されており、
さらに、前記第１及び第２のコントローラの各々は、前記異常検知手段で前記他方のコントローラの異常が検知されると、自己に接続された前記報知手段によって異常を報知する通知手段を有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１及び第２のコントローラの各々には異常を報知するための報知手段が接続されており、
さらに、前記第１及び第２のコントローラの各々は、前記異常検知手段で前記他方のコントローラの異常が検知されると、前記他方のコントローラに接続された前記報知手段によって異常を報知する通知手段を有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記異常検知手段は前記起動情報に応じて前記他方のコントローラにおける起動停止状態を判定し、
前記起動停止状態に応じて前記他方のコントローラに通知するか否かを決定する通知決定手段を有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項６】
前記第１及び第２のコントローラの各々は、前記異常検知手段による判定の結果、前記他方のコントローラの起動に異常が生じている場合、自己に接続された不揮発性デバイスに前記起動情報を保持することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第１のコントローラは、自己の起動が完了したときに前記第１及び第２のコントローラの夫々に接続された前記不揮発性デバイスに保持された起動情報を取出し、前記取り出された起動情報に基づき、前記第１及び第２のコントローラにおいて起動が正常終了したか異常終了したかを判定する第１の判定手段をさらに備えることを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記起動情報には、起動段階が更新された場合にその起動開始からの経過時刻を示す起動遷移時刻情報及び前記起動情報の内容が有効であるか否かを識別するためのチェックサム情報が含まれ、
前記第１のコントローラは、
自己の起動が完了したときに、前記第１の判定手段による判定の前に、前記取り出された各起動情報に含まれる前記起動遷移時刻情報及び前記チェックサム情報に基づき、前記取り出された各起動情報に有効な情報が記録されているか否かを判定する第２の判定手段をさらに備え、
前記第２の判定手段により有効な情報が記録されていると判定された場合に、前記第１の判定手段による判定を行うことを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記第１のコントローラは、
前記第１の判定手段により、前記第１及び第２のコントローラの少なくとも一つの起動が異常終了であると判定された場合、当該異常終了をログ情報として保持する保持手段を更に備え、
前記保持手段により前記ログ情報が保持された後、前記不揮発性デバイスの夫々から前記保持された起動情報を削除することを特徴とする請求項７又は８に記載の情報処理装置。
【請求項１０】
第１及び第２のコントローラを備え、前記第１及び第２のコントローラの各々が異なるジョブ処理を分担する情報処理装置であって、前記第１及び第２のコントローラにはそれぞれ前記異なるジョブ処理に用いられるメモリデバイスが接続されており、前記第１及び第２のコントローラは互いに他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置の制御方法であって、
前記第１及び第２のコントローラの一方が起動された際、当該起動されたコントローラの起動段階が一段階進む毎に、前記アクセス手段によって前記第１及び第２のコントローラの他方に接続された前記メモリデバイスにアクセスし、前記一段階進んだ起動段階を起動情報として書き込む書き込みステップと、
前記他方のコントローラに接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、前記一方のコントローラの起動に異常が生じたか否かを検知する検知ステップとを有することを特徴とする制御方法。
【請求項１１】
第１及び第２のコントローラを備え、前記第１及び第２のコントローラの各々が異なるジョブ処理を分担する情報処理装置であって、前記第１及び第２のコントローラにはそれぞれ前記異なるジョブ処理に用いられるメモリデバイスが接続されており、前記第１及び第２のコントローラは互いに他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置で用いられる制御プログラムであって、
前記第１及び第２のコントローラの一方が起動された際、当該起動されたコントローラの起動段階が一段階進む毎に、前記アクセス手段によって前記第１及び第２のコントローラの他方に接続された前記メモリデバイスにアクセスし、前記一段階進んだ起動段階を起動情報として書き込む書き込みステップと、
前記他方のコントローラに接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、前記一方のコントローラの起動に異常が生じたか否かを検知する検知ステップとを実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、および制御プログラムに関する。
【背景技術】
【０００２】
一般に、情報処理装置の１つとして、複合機（ＭＦＰ）などの画像形成装置がある。近年、情報処理技術の発展に伴って、画像形成装置における主たる処理が画像処理から情報処理に移行しつつある。そして、リアルタイム制御が必要な画像処理用プロセッサと通信およびユーザインタフェースを処理する情報処理用プロセッサとを分離する構成が一般化している。
【０００３】
このようなプロセッサの分離に応じてメモリデバイスが各プロセッサに接続される。一方、メモリデバイスは、搬入時の振動に起因する接触不良又は導電性の浮遊ゴミなどの付着によって、誤動作することがある。特に、画像形成装置全体でみた場合には、メモリデバイスが多くなるほど、誤動作などの危険性は高まることになる。そして、メモリデバイスの接触不良又は短絡などによる誤動作（異常動作）によって、画像処理装置の起動処理の際に、起動中のまま表示画面が変化しないという形態で最も顕著に現われる。
【０００４】
上述のように、メモリデバイスが接触不良等によって画像処理装置全体が起動できなくなった際に、当該異常状態を通知して早急に不具合対処を行うことが求められている。
【０００５】
ところで、画像形成装置において、電圧異常を検知して、その履歴を不揮発メモリに保存するようにしたものがある（例えば、特許文献１参照）。
【０００６】
さらに、画像形成装置において、複数のプロセッサを備えて、これらプロセッサが相互監視を行って、異常検出の際には監視体制を再構築するようにしたものがある（例えば、特許文献２参照）。
【０００７】
また、画像形成装置において、複数のプロセッサを備えて、各プロセッサが自己に生じたイベントをログとして揮発メモリに記録した後、所定のタイミングで不揮発メモリに保存するようにしたものがある（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−１８７２８８号公報
【特許文献２】特開平２−５９９５５号公報
【特許文献３】特開２０１０−２２４７５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記の特許文献１においては、電源回路の出力電圧を検知する際、予め定められた周期で出力電圧が異常であるか否かを検知している。しかしながら、特許文献１では、出力電圧の異常検知を行っているのみであり、メモリデバイスに接続不良が発生した際には、画像形成装置を起動することができない。この結果、出力電圧の異常を検知することができないという課題がある。そして、この状況では、電圧検知動作が正常であるとしても、画像形成装置が起動しないという状況に陥ってしまう。
【００１０】
一方、特許文献２および特許文献３においては、複数のプロセッサが共有メモリを用いて情報を共有している。そして、特許文献２では、共有メモリ上に監視リンク情報を記録して相互監視を行い、異常検出の際に監視体制を再構築するとともに監視リンク情報を共有メモリに保持するようにしている。特許文献３では、共有メモリを用いてイベントを保持し、同期をとって不揮発メモリにロギングするようにしている。
【００１１】
ところが、メモリデバイスに異常が発生すると、共有メモリに保存された情報が破壊されるか又は正しく読み取れない恐れがある。特許文献２および３ともに、共有メモリを一系統備えているだけであるので、共有メモリであるメモリデバイスに異常があると起動異常を検知することはできない。さらに、画像形成装置の起動の際に異常が発生すると、正しく起動した状況であれば動作する異常検知機能が正しく動作するという保証がない。
【００１２】
従って、本発明の目的は、少なくとも２つのコントローラを備える際に、起動異常を確実に検知することのできる情報処理装置、その制御方法、および制御プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記の目的を達成するため、本発明による情報処理装置は、第１及び第２のコントローラを備え、前記第１及び第２のコントローラの各々が異なるジョブ処理を分担する情報処理装置であって、前記第１及び第２のコントローラにはそれぞれ前記異なるジョブ処理に用いられるメモリデバイスが接続されており、前記第１及び第２のコントローラは互いに他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有し、前記第１及び第２のコントローラの各々は、自己が起動された際、起動段階が一段階まで進む毎に、前記アクセス手段によって前記他方のコントローラに接続された前記メモリデバイスにアクセスし、前記一段階進んだ起動段階を起動情報として書き込む書き込み手段と、自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、前記他方のコントローラの起動に異常が生じたか否かを検知する異常検知手段とを有することを特徴とする。
【００１４】
本発明による制御方法は、第１及び第２のコントローラを備え、前記第１及び第２のコントローラの各々が異なるジョブ処理を分担する情報処理装置であって、前記第１及び第２のコントローラにはそれぞれ前記異なるジョブ処理に用いられるメモリデバイスが接続されており、前記第１及び第２のコントローラは互いに他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置の制御方法であって、前記第１及び第２のコントローラの一方が起動された際、当該起動されたコントローラの起動段階が一段階進む毎に前記アクセス手段によって前記第１及び第２のコントローラの他方に接続された前記メモリデバイスにアクセスし、前記一段階進んだ起動段階を起動情報として書き込む書き込みステップと、前記他方のコントローラに接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、前記一方のコントローラの起動に異常が生じたか否かを検知する検知ステップとを有することを特徴とする。
【００１５】
本発明による制御プログラムは、第１及び第２のコントローラを備え、前記第１及び第２のコントローラの各々が異なるジョブ処理を分担する情報処理装置であって、前記第１及び第２のコントローラにはそれぞれ前記異なるジョブ処理に用いられるメモリデバイスが接続されており、前記第１及び第２のコントローラは互いに他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置で用いられる制御プログラムであって、前記第１及び第２のコントローラの一方が起動された際、当該起動されたコントローラの起動段階が一段階進む毎に、前記アクセス手段によって前記第１及び第２のコントローラの他方に接続された前記メモリデバイスにアクセスし、前記一段階進んだ起動段階を起動情報として書き込む書き込みステップと、前記他方のコントローラに接続された前記メモリデバイスに前記書き込みステップで書き込まれた前記起動情報を参照して、前記一方のコントローラの起動に異常が生じたか否かを検知する検知ステップとを実行させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、少なくとも２つのコントローラを備える際に、起動異常を確実に検知することができるという効果がある。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態による画像形成装置のハードウェア構成の一例を示すブロック図である。
【図２】図１に示す画像形成装置におけるメモリマップ構成の概念説明するための図である。
【図３】図１に示す画像形成装置における起動シーケンスの処理を説明するためのフロー図である。
【図４】図１に示す画像形成装置に保存される起動状態の管理テーブルを示す図である。
【図５】図１に示す画像形成装置における起動異常検知処理を説明するためのフローチャートである。
【図６】図１に示す画像形成装置における異常検知処理において異常通知の際に用いられる異常検知処理決定テーブルの一例を示す図である。
【図７】図１に画像形成装置が正常起動した後の異常検知処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態による情報処理装置の一例を図面を参照して説明する。なお、以下の説明では、情報処理装置の１つである画像形成装置を例に挙げて説明する。
【００１９】
図１は、本発明の実施の形態による画像形成装置のハードウェア構成の一例を示すブロック図である。
【００２０】
図１において、図示の画像形成装置はコントローラメインユニット１００およびコントローラサブユニット１０１を有している。コントローラメインユニット１００は、画像形成装置において情報処理部を司る。また、コントローラサブユニット１０１は画像形成装置において画像処理部を司る。そして、コントローラメインユニット１００はバスブリッジ１１６を有しており、バスブリッジ１１６を介してコントローラサブユニット１０１と接続されている。
【００２１】
コントローラメインユニット１００はＣＰＵ１０８を有しており、ＣＰＵ１０８はフラッシュＲＯＭ（ＦＬＡＳＨ  ＲＯＭ）１１０又はＨＤＤ１１１に記憶されたソフトウェア（プログラム）を実行する。そして、ＣＰＵ１０８はシステムバス１１５に接続されたデバイスを総括的に制御する。ＦＬＡＳＨ  ＲＯＭ１１０およびＨＤＤ１１１は、画像データおよびユーザ設定の記憶領域としても用いられる。
【００２２】
ＲＡＭ１０９は、ＣＰＵ１０８の主メモリおよびワークエリアなどとして用いられる。操作部インタフェース（Ｉ／Ｆ）１１２は画像形成装置に備えられた各種ボタン（図示せず）からの指示入力を受けるとともに、タッチパネル付きＬＣＤパネル１０４に描画を行い、当該ＬＣＤパネル１０４から指示入力を受ける。
【００２３】
この操作部Ｉ／Ｆ１１２には、電力状態ＬＥＤ１０３にも接続されている。電力状態ＬＥＤ１０３はコントローラメインユニット１００の動作状態を示すインジケータ部である。
【００２４】
ネットワークインタフェースカード（ＮＩＣ：ネットワークＩ／Ｆともいう）１１３は他のネットワーク機器あるいはファイルサーバ等とＬＡＮ１０２を介して双方向にデータを送受する。外部ストレージＩ／Ｆ（外部シリアルＩ／Ｆともいう）１１４は、例えば、ＵＳＢであり、メモリメディアリーダ又はＩＣカードリーダなどの外部装置に接続され、双方向にデータを送受する。
【００２５】
コントローラサブユニット１０１はＣＰＵ１１７を有しており、ＣＰＵ１１７はスキャナ１０５およびプリンタ１０６に接続されている。プリンタ１０６は、例えば、電子写真プロセス又はインクジェット方式などを用いて画像データに応じて印刷を行う。スキャナ１０５は、原稿上の画像を読み込んで画像データとしてコントローラサブユニット１０１に与える。スキャナ（画像読み取り部）１０５には、一般にオプションとしてオートドキュメントフィーダ（図示せず）が装着されており、複数枚の原稿を自動的に読み込むことができる。
【００２６】
スキャナ１０５およびプリンタ１０６はデバイスＩ／Ｆ１２０を介して画像データおよび制御信号をＣＰＵ１１７との間で授受する。ＣＰＵ１１７はシステムバス１２７に接続されたデバイスを総括的に制御する。スキャナ１０５から入力された画像データは、スキャナ画像処理部１２１を介してＲＡＭ１１８に読み取り画像データとして入力される。
【００２７】
メモリ画像処理部（ＩＭＡＧＥＣ）１２３は、ＲＡＭ１１８に記憶された画像データを処理して、再びＲＡＭ１１８に格納する。この画像処理には、回転・変倍・色空間変換・グレースケール変換・合成・符号化・復号化などの処理が含まれる。
【００２８】
上述のように、メモリ画像処理部１２３で画像処理が行われた後、ＣＰＵ１１７はバスブリッジ１１６を介して、ＦＬＡＳＨ  ＲＯＭ１１０又はＨＤＤ１１１に画像データを保存する。また、ＣＰＵ１１７は、バスブリッジ１１６を介してＦＬＡＳＨ  ＲＯＭ１１０又はＨＤＤ１１１に保存された画像データをＲＡＭ１１８に読み出す。そして、ＣＰＵ１１７はプリンタ画像処理部１２２で所定の処理を行った後、画像データをプリンタ１０６に出力する。
【００２９】
なお、スキャナ画像処理部１２１およびプリンタ画像処理部１２２においては、色空間変換、移動、色調整、および濃度制御などの処理が行われる。
【００３０】
ラスターイメージプロセッサ（ＲＩＰ）１１９は、ＰＤＬコードをビットマップイメージに展開する。操作部Ｉ／Ｆ１２４は、ＣＰＵ１１７からの指示に応じて実行中ＬＥＤ１２８の点滅の制御を行う。ＳＲＡＭ（不揮発性メモリ）１２５は、ＣＰＵ１１７との間でデータを高速に入出力する。モデム（ＭＯＤＥＭ）１２６は、公衆回線１０７に接続され、ファクス画像の入出力に応じて変復調を行う。
【００３１】
図２は、図１に示す画像形成装置におけるメモリマップ構成の概念説明するための図である。
【００３２】
図１および図２を参照して、ＣＰＵ１０８は、物理的に接続されたＲＡＭ１０９（ＤＲＡＭ）を符号１５１で示す下位アドレス空間にマッピングして利用する。また、ＣＰＵ１０８は、物理的に接続されたバスブリッジ１１６を設定して、当該バス上のデバイスのＩ／Ｏ又はメモリ空間を、符号１５０で示す上位アドレス空間にマッピングする。
【００３３】
次に、ＣＰＵ１１７は、物理的に接続されたＲＡＭ１１８（ＤＲＡＭ）を符号１５３で示す下位アドレス空間にマッピングして利用する。また、ＣＰＵ１１７は、物理的に接続されたバスブリッジ１１６を経由して、当該バス上のデバイスのＩ／Ｏ又はメモリ空間を、符号１５２で示す上位アドレス空間にマッピングする。
【００３４】
ＣＰＵ１０８はバスブリッジ１１６の設定により、ウィンドウ（Ｗｉｎｄｏｗ）１５４を介して符号１５３で示すＤＲＡＭの一部又は全領域に対して、ＣＰＵ１１７がリードおよびライトを行えるように、上位アドレス空間１５０を割り付ける。
【００３５】
同様に、ＣＰＵ１０８はバスブリッジ１１６の設定により、Ｗｉｎｄｏｗ１５５を介して符号１５１で示すＤＲＡＭの一部又は全領域に、ＣＰＵ１１７がリードおよびライトを行えるように、上位アドレス空間１５２を割り付ける。
【００３６】
図３は、図１に示す画像形成装置における起動シーケンスの処理を説明するためのフロー図である。なお、図示の例では、シーケンシャルに処理が行われるように記載されているが、ＣＰＵ１０８および１１７が並行に動作するようにしてもよい。
【００３７】
図１〜図３を参照して、起動が行われると、ＣＰＵ１０８は、ＦＬＡＳＨ  ＲＯＭ１１０に記録されたＢＩＯＳを実行する。ＢＩＯＳの実行によって、ＣＰＵ１０８は、ＣＰＵ１０８に接続されたタイマー（図示せず）、ブートデバイス（ＦＬＡＳＨ  ＲＯＭ）１１０、メモリ（ＲＡＭ）１０９、およびビデオ（操作部Ｉ／Ｆ）１１２などの組み込みデバイスを初期化する。
【００３８】
初期化に成功すると、コントローラメインユニット１００の起動状態はＢＩＯＳ起動完了となる（Ｓ２０１）。この際、ＣＰＵ１０８は、メモリ空間１５１に対して、ＢＩＯＳ起動完了を記録する。なお、記録情報については後述する。
【００３９】
次に、ＣＰＵ１０８は、ブートデバイス１１０に格納されたＭＢＲ（マスターブートレコード）に記録された一次ローダを実行する。一次ローダを実行すると、ＣＰＵ１０８は同一のブートデバイス１１０に格納された二次ローダ（カーネルローダ）を実行する。
【００４０】
二次ローダには、前述のバスブリッジの設定処理が含まれ、これが完了すると、メモリ空間１５３がＣＰＵ１（ＣＰＵ１０８）のアドレス空間に配置される。これにより、ＣＰＵ１０８はＲＡＭ１１８にアクセスできるようになる。
【００４１】
続いて、ＣＰＵ１０８は、ブートデバイス１１０からカーネルおよび初期ラムイメージ（ｉｎｉｔｒｄ）を読み出す。そして、読み出しに成功すると、コントローラメインユニット１００の起動状態はメインローダ起動完了となる（Ｓ２０２）。この際、ＣＰＵ１０８は、メモリ空間１５１に対して、メインローダ完了を記録して、Ｗｉｎｄｏｗ１（Ｗｉｎｄｏｗ１５４）を介してメモリ空間１５３に同一の状態を記録する。
【００４２】
続いて、ＣＰＵ１０８は、カーネルおよび初期ラムイメージを実行する。ＣＰＵ１０８は、カーネルに含まれるデバイスドライバを介して、ハードウェアを初期化し、初期ラムイメージをマウントする。マウント処理が完了すると、ＣＰＵ１０８は初期プロセス（ｉｎｉｔｄ）を実行する。初期プロセスの起動に成功すると、コントローラメインユニット１００の起動状態はカーネル起動完了となる（Ｓ２０３）。この際、ＣＰＵ１０８は、メモリ空間１５１に対して、カーネル起動完了を記録して、Ｗｉｎｄｏｗ１（Ｗｉｎｄｏｗ１５４）を介してメモリ空間１５３に同一の状態を記録する。
【００４３】
次に、ＣＰＵ１０８は、初期プロセスを介してサブローダを実行する。ＣＰＵ１０８は、サブローダに含まれるＣＰＵ１１７の起動イメージを、ＲＡＭ１１８に転送する。転送が完了すると、ＣＰＵ１０８は、ＣＰＵ１１７のリセットを解除する。これによって、ＣＰＵ１１７は、ＲＡＭ１１８に転送された実行イメージ（起動イメージ）を読み出して起動を行う。
【００４４】
コントローラサブユニット１０１の起動処理が完了すると、コントローラメインユニット１００の起動状態は、サブローダ起動完了となる（Ｓ２０４）。この際、ＣＰＵ１０８は、メモリ空間１５１に対して、サブローダ起動完了を記録して、Ｗｉｎｄｏｗ１５４を介してメモリ空間１５３に同一の状態を記録する。
【００４５】
続いて、ＣＰＵ１０８は、初期プロセスを介してＯＳサービスを起動して実行する。ＣＰＵ１０８は、ＯＳサービスを介してＣＰＵ間通信のための初期化を行って、ＣＰＵ１１７が起動するのを待つ。このＯＳサービスの初期化には、ＬＣＤパネル１０４の初期化が含まれる。これによって、ローカライズされていない文字ベースの画面表示の描画および起動画面のビットマップ表示が行われる。
【００４６】
ＯＳサービスの起動処理が完了すると、コントローラメインユニット１００の起動状態はＯＳサービス起動完了となる（Ｓ２０５）。この際、ＣＰＵ１０８は、メモリ空間１５１に対して、ＯＳサービス起動完了を記録して、Ｗｉｎｄｏｗ１５４を介してメモリ空間１５３に同一の状態を記録する。
【００４７】
次に、ＣＰＵ１１７は、メモリ空間に転送されたＯＳを実行する。ＣＰＵ１１７は、ＯＳの実行によって、システムバス１２７上のデバイスの初期化を行うとともに、ＣＰＵ間通信のための初期化を行う。そして、ＣＰＵ１１７はＣＰＵ１０８に応答する。
【００４８】
ＯＳが起動完了すると、コントローラサブユニット１０１の起動状態は、ＯＳ起動完了となる（Ｓ２０６）。この際、ＣＰＵ１１７は、メモリ空間１５３に対して、ＯＳ起動完了を記録して、Ｗｉｎｄｏｗ１５５を介してメモリ空間１５１に同一の状態を記録する。
【００４９】
続いて、ＣＰＵ１０８は、初期プロセスを介して電力制御プロセスを起動して実行する。ＣＰＵ１０８は、電力制御プロセスの実行によって、電力および機器全体制御のための初期化を行う。電力制御起動処理が完了すると、コントローラメインユニット１００の起動状態は、電力制御起動完了となる（Ｓ２０７）。この際、ＣＰＵ１０８は、メモリ空間１５１に対して電力制御起動完了を記録して、Ｗｉｎｄｏｗ１５４を介してメモリ空間１５３に同一の状態を記録する。
【００５０】
次に、ＣＰＵ１１７は、スキャナ１０５およびプリンタ１０６と通信するために、画像処理プロセスを実行する。ＣＰＵ１１７は、画像処理プロセスの実行によってシステムバス１２７上の画像処理デバイスの初期化を行って、スキャナ１０５およびプリンタ１０６と通信する。
【００５１】
画像処理装置の初期化が完了すると、コントローラサブユニット１０１の起動状態は画像処理起動完了となる（Ｓ２０８）。この際、ＣＰＵ１１７は、メモリ空間１５３に対して画像処理起動完了を記録して、Ｗｉｎｄｏｗ１５５を介して、メモリ空間１５１に同一の状態を記録する。
【００５２】
さらに、ＣＰＵ１０８は、初期プロセスの実行によってデータ処理プロセスを起動して実行する。ＣＰＵ１０８は、データ処理プロセスの実行によってセキュリティ・システム構成、設定値、ログ、および文書などの機器共有データ制御のための初期化を行う。
【００５３】
データ処理起動が完了すると、コントローラメインユニット１００の起動状態は、データ処理起動完了となる（Ｓ２０９）。この際、ＣＰＵ１０８は、メモリ空間１５１に対してデータ処理起動完了を記録して、Ｗｉｎｄｏｗ１５４を介してメモリ空間１５３に同一の状態を記録する。
【００５４】
次に、ＣＰＵ１１７は、スキャナ１０５およびプリンタ１０６の初期動作を実行する。ＣＰＵ１１７は、画像処理プロセスの実行によってスキャナ１０５およびプリンタ１０６と通信を行って、初期色調整および動作検証を行う。
【００５５】
スキャナ１０５およびプリンタ１０６が正常動作できる状態になると、コントローラサブユニット１０１の起動状態は、エンジン起動完了となる（Ｓ２１０）。この際、ＣＰＵ１１７は、メモリ空間に対してエンジン起動完了を記録して、Ｗｉｎｄｏｗ１５５を介してメモリ空間１５１に同一の状態を記録する。
【００５６】
続いて、ＣＰＵ１０８は、初期プロセスの実行によってジョブ処理プロセスを起動して実行する。ＣＰＵ１０８は、ジョブ処理プロセスの実行によってスキャナ１０５およびプリンタ１０６の構成を取得して、ジョブ制御のための初期化を行う。ジョブ制御の初期化には、ファクス通信制御が含まれており、ＣＰＵ１０８は、ＣＰＵ１１７に対して通信を行って、ファクスの初期化を要求する。
【００５７】
ジョブ処理起動が完了すると、コントローラメインユニット１００の起動状態は、ジョブ処理起動完了となる（Ｓ２１１）。この際、ＣＰＵ１０８は、メモリ空間１５１に対してジョブ処理起動完了を記録して、Ｗｉｎｄｏｗ１５４を介してメモリ空間１５３に同一の状態を記録する。
【００５８】
次に、ＣＰＵ１１７は、ＣＰＵ１０８からファクス初期要求を受けると、ファクス処理プロセスを実行する。ＣＰＵ１７は、ファクス処理プロセスの実行によって、ＭＯＤＥＭ１２６の初期化を行って、その動作検証を行う。ファクスが正常動作できる状態になると、コントローラサブユニット１０１の起動状態は、ファクス起動完了となる（Ｓ２１２）。この際、ＣＰＵ１１７は、メモリ空間１５３に対してファクス起動完了を記録して、Ｗｉｎｄｏｗ１５５を介してメモリ空間に同一の状態を記録する。
【００５９】
続いて、ＣＰＵ１１７は、全ての起動プロセスを完了して、ジョブ待ち受け状態になる。コントローラサブユニット１０１の起動状態は起動完了となる（Ｓ２１３）。この際、ＣＰＵ１１７は、メモリ空間１５３に対して起動完了を記録して、Ｗｉｎｄｏｗ１５５を介してメモリ空間１５１に同一の状態を記録する。
【００６０】
次に、ＣＰＵ１０８は、初期プロセスの実行によって表示処理プロセスを起動して実行する。ＣＰＵ１０８は、表示処理プロセスの実行によって画面出力および操作入力制御のための初期化を行う。表示処理制御の初期化に伴って、ＣＰＵ１０８は、ＬＣＤパネル１０４に対してローカライズされたグラフィカルな画面表示の描画を行う。
【００６１】
ＣＰＵ１０８は表示処理プロセスの実行によってメニュー、コピー、スキャン、およびファクスなどのアプリケーションを起動する。表示処理起動が完了すると、コントローラメインユニット１００の起動状態は画面処理起動完了となる（Ｓ２１４）。この際、ＣＰＵ１０８は、メモリ空間に対してジョブ処理起動完了を記録して、Ｗｉｎｄｏｗ１５４を介してメモリ空間１５３に同一の状態を記録する。
【００６２】
続いて、ＣＰＵ１０８は、初期プロセスの実行によってネットワーク処理プロセスを起動して実行する。ＣＰＵ１０８は、ネットワーク処理プロセスの実行によってＬＡＮ１０２を介したプロトコル制御のための初期化を行う。
【００６３】
ＣＰＵ１０８はネットワーク処理プロセスの実行によってＰＤＬプリントおよびウェブサーバなどのアプリケーションを起動する。ネットワーク処理起動が完了すると、メインコントローラ１００の起動状態はネットワーク起動完了となる（Ｓ２１５）。この際、ＣＰＵ１０８は、メモリ空間１５１に対してネットワーク起動完了を記録して、Ｗｉｎｄｏｗ１５４を介してメモリ空間に同一の状態を記録する。
【００６４】
続いて、ＣＰＵ１０８は、全ての起動プロセスが完了すると、操作待ち受け状態となる。コントローラメインユニット１００の起動状態は起動完了となる（Ｓ２１６）。この際、ＣＰＵ１０８は、メモリ空間１５３に対して起動完了を記録して、Ｗｉｎｄｏｗ１５５を介してメモリ空間１５１に同一の状態を記録する。
【００６５】
通常動作の際には、上述のフローで起動が完了する。一方、起動処理の途中で、初期化失敗又はハードウェアの異常があると、ＣＰＵ１０８および１１７は起動状態が進行せず所定の状態で停止することになる。
【００６６】
図４は、図１に示す画像形成装置に保存される起動状態の管理テーブル（起動状態管理テーブル）を示す図である。
【００６７】
図４において、起動状態管理テーブル（起動情報ともいう）３０１には、図３で説明した起動状態を示す詳細なデータが保持される。ＣＰＵ１０８は、起動状態管理テーブル３０１の構造に応じてＲＡＭ１０９およびＷｉｎｄｏｗ１５４を介してＲＡＭ１１８に保存されたＣＰＵ１０８の起動状態を更新する。
【００６８】
ＣＰＵ１１７は、起動状態管理テーブル３０１の構造に応じてＲＡＭ１１８およびＷｉｎｄｏｗ１５５を介してＲＡＭ１０９に保存されたＣＰＵ１１７の起動状態を更新する。
【００６９】
起動状態管理テーブル３０１は、起動段階情報（起動段階）３０２を有しており、起動段階情報３０２は、前述したようにして、コントローラメインユニット１００およびコントローラ１０１の起動段階について番号（Ｍ）を割り付けたものである。起動段階詳細状態情報（起動段階詳細状態）３０３は、コントローラメインユニット１００およびコントローラ１０１についてその起動段階の一段階においてさらに詳細な起動段階が存在する場合に、その詳細起動段階に番号を割り付けたものである。例えば、画像処理初期化中であれば、初期化対象デバイスの個数に応じて降順に番号が振られる。
【００７０】
起動遷移理由情報（起動遷移理由）３０４は、コントローラメインユニット１００およびコントローラ１０１についてその起動段階情報３０２を更新する際に、更新した理由に番号を割り付けたものである。起動遷移理由情報３０４は、例えば、正常終了、システム要因の異常終了、ユーザ要因の異常終了、およびハードウェア要因の異常終了を意味するコードとなる。
【００７１】
起動遷移時刻情報（起動遷移時刻）３０５は、起動段階情報３０２を更新した場合にその起動開始からの経過時刻を示している。チェックサム情報３０７は、起動状態管理テーブル３０１の内容が有効であるか否かを識別するためのレコード全体のチェックサムを示している。
【００７２】
さらに、起動状態管理テーブル３０１は状態更新タイムアウト情報（状態更新タイムアウト値）３０６を備えるようにしてもよい。起動状態管理テーブル３０１について、状態更新タイムアウト値３０６で示す時間を経過しても起動状態が更新しない場合には、起動が停止したと看做されるタイムアウト時間である。この状態更新タイムアウト値３０６として、次回の更新までの処理が長い場合には処理を完了するまでに必要十分な時間が指定される。
【００７３】
図５は、図１に示す画像形成装置における起動異常検知処理を説明するためのフローチャートである。図１および図５を参照して、ＣＰＵ１０８および１１７の各々は、他方のＣＰＵに係る起動状態管理テーブルの更新に応じて異常発生の判定を行う。
【００７４】
起動異常検知処理を開始すると、ＣＰＵ１０８および１１７は、現在の時刻ｔ１をタイマー（図示せず）から取得する（ステップＳ４０１）。続いて、ＣＰＵ１０８および１１７は、それぞれＲＡＭ１０９および１１８の所定のメモリアドレスにアクセスして、他方のＣＰＵの起動状態を取得する（ステップＳ４０２：起動状況のチェック処理）。
【００７５】
ＣＰＵ１０８および１１７は、他方のＣＰＵの起動状態が前回取得した起動状態と比較して変化したか否かを確認する（ステップＳ４０３）。他方のＣＰＵの起動状態が前回取得した起動状態と変化していると（ステップＳ４０３において、ＹＥＳ）、ＣＰＵ１０８および１１７は、当該変化した起動状態が最終を示す番号（最終番号）であるか否かを判定する（ステップＳ４０４）。そして、変化した起動状態が最終番号でないと（ステップＳ４０４において、ＮＯ）、ＣＰＵ１０８および１１７は、ステップＳ４０１の処理に戻る。
【００７６】
一方、変化した起動状態が最終番号であると（ステップＳ４０４において、ＹＥＳ）、ＣＰＵ１０８および１１７は、正常に起動したとして、後述する正常起動処理を行う（ステップＳ４０５）。そして、ＣＰＵ１０８および１１７は、他方のＣＰＵの起動監視処理を終了する。
【００７７】
他方のＣＰＵの起動状態が前回取得した起動状態と変化していないと（ステップＳ４０３において、ＮＯ）、ＣＰＵ１０８および１１７は、起動停止状態の判定のために、タイマーから現在時刻ｔ２を取得する（ステップＳ４０５）。
【００７８】
続いて、ＣＰＵ１０８および１１７は、起動停止判定を行う（ステップＳ４０７）。この起動停止状態の判定では、起動状態の変化確認処理を開始してから、起動状態変化がないまま経過した時間（つまり、ｔ２−ｔ１）が起動状態変化するはずの所定の状態更新タイムアウト値を超えていないかを確認する。
【００７９】
図４で説明したように、状態更新タイムアウト値は他方のＣＰＵの起動状態が変化した際に更新される。このため、前述のステップＳ４０２において、ＣＰＵ１０８および１１７は、起動状態管理テーブル３０１から状態更新タイムアウト値を取得する。なお、状態更新タイムアウト値は起動状態毎に変化しうる。
【００８０】
起動状態の変化がないまま状態更新タイムアウト値が経過すると（ステップＳ４０７において、ＹＥＳ）、ＣＰＵ１０８および１１７は異常検知処理を実行する（ステップＳ４０８）。ここでは、ＣＰＵ１０８および１１７は、後述する異常検知処理決定テーブルに応じて異常通知を行う。そして、ＣＰＵ１０８および１１７は、他方のＣＰＵの起動監視処理を終了する。
【００８１】
一方、状態更新タイムアウト値が経過していないと（ステップＳ４０７において、ＮＯ）、ＣＰＵ１０８および１１７は所定の状態取得ポーリング時間が経過したか否かを判定する（ステップＳ４０９）。所定の状態取得ポーリング時間が経過していなければ（ステップＳ４０９において、ＮＯ）、ＣＰＵ１０８および１１７はポーリング時間が経過するまで待機する。
【００８２】
所定の状態取得ポーリング時間が経過すると（ステップＳ４０９において、ＹＥＳ）、ＣＰＵ１０８および１１７はステップＳ４０２の処理に戻って、再び起動状態のチェックを行う。
【００８３】
このようにして、ＣＰＵ１０８および１１７は、自己のＣＰＵに係るメモリ空間を読み出して、他方のＣＰＵの起動状態を監視する。そして、他方のＣＰＵの起動状態が所定時間で更新されて、最終状態に進むか又はタイムアウトによる異常状態に進むまで、ＣＰＵ１０８および１１７は他方のＣＰＵの起動状態の監視を継続する。
【００８４】
図６は、図１に示す画像形成装置における異常検知処理において異常通知の際に用いられる異常検知処理決定テーブルの一例を示す図である。
【００８５】
図６において、図示の異常検知処理決定テーブルは、例えば、不揮発性メモリに保存される。異常検知処理決定テーブルにおいて、起動停止位置６０１は、コントローラメインユニット１００の起動状態変化の停止（Ｍ）であるか又はコントローラサブユニット１０１の起動状態変化の停止（Ｓ）であるかを示している。さらに、起動停止位置６０２はコントローラメインユニット１００およびコントローラサブユニット１０１の各々がいずれの起動状態に遷移する際にタイムアウトが発生したかを示している。
【００８６】
起動停止名称６０２は、タイムアウトが発生した際の異常の種類および名称を示す。起動検出６０３は、ＣＰＵ１０８および１１７のいずれが検出しうる異常であるかを示す。異常通知処理６０４は、起動検出６０３に示されたＣＰＵが制御可能な異常通知手段を示す。履歴保持位置（情報保持位置）６０５は、起動検出６０３に示されたＣＰＵがＣＰＵ１０８および１１７の起動状態を保存するために制御可能な不揮発性デバイスを示している。
【００８７】
異常検知処理６０４および履歴保持位置６０５で示す異常検知手段および不揮発性デバイスは、ＣＰＵが暴走又はストールして正常動作できない状態に陥った場合には動作できない。
【００８８】
また、図４に示す起動段階詳細状態３０３を更新するか否かに応じて起動停止位置６０１は若干前後する。例えば、ＯＳサービス処理中に起動停止すると、起動段階詳細状態３０３を更新する場合であれば、ＯＳサービス処理の処理中に、Ｍは”４”から”５”に更新される。一方、起動段階詳細状態３０３を更新しない場合であれば、処理が完了するまでＭは”５”にならない。
【００８９】
図６において、起動不良６０６は、ＢＩＯＳ実行中に発生した異常によってＣＰＵ１０８が起動できないケースである。この場合、異常通知デバイスは電力ＬＥＤ１０３であり、電力ＬＥＤ１０３は短く一回点滅を繰り返す。また、このケースでは履歴保持処理を行うことができない。
【００９０】
起動不良６０７は、ブートローダ（ｂｏｏｔ  ｌｏａｄｅｒ）の実行中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１０８は異常通知デバイスとして電力ＬＥＤ１０３を制御し、電力ＬＥＤ１０３を短く二回点滅を繰り返して起動を停止する。この場合、ＣＰＵ１０８はＦＬＡＳＨ  ＲＯＭ１１０に前述の起動状態管理テーブルの内容を保存する。
【００９１】
起動不良６０８は、カーネル実行中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１０８は、異常通知デバイスとして電力ＬＥＤ１０３を制御し、電力ＬＥＤ１０３を短く三回点滅を繰り返して起動を停止する。この場合、ＣＰＵ１０８はＦＬＡＳＨ  ＲＯＭ１１０に前述の起動状態管理テーブルの内容を保存する。
【００９２】
起動不良６０９は、ＣＰＵ１０８がＣＰＵ１１７の起動処理中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１０８は、異常通知デバイスとしてＬＣＤパネル１０４を制御して、ＬＣＤパネル１０４に”Ｂｏｏｔ  Ｅｒｒｏｒ  ［Ｍ＝３／Ｓ＝０］”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、ＣＰＵ１０８はＦＬＡＳＨ  ＲＯＭ１１０に前述の起動状態管理テーブルの内容を保存する。
【００９３】
起動不良６１０は、ＯＳサービス起動処理中に発生した異常によって、ＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１０８は、異常通知デバイスとしてＬＣＤパネル１０４を制御して、ＬＣＤパネル１０４に”Ｂｏｏｔ  Ｅｒｒｏｒ  ［Ｍ＝４／Ｓ＝０］”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、ＣＰＵ１０８はＦＬＡＳＨ  ＲＯＭ１１０に前述の起動状態管理テーブルの内容を保存する。
【００９４】
起動不良６１１は、ＯＳ起動処理中に発生した異常によってＣＰＵ１１７が起動できないケースである。ＣＰＵ１０８は、ＣＰＵ１１７の異常を検知して、異常通知デバイスとしてＬＣＤパネル１０４を制御する。そして、ＣＰＵ１０８は、ＬＣＤパネル１０４に”Ｂｏｏｔ  Ｅｒｒｏｒ  ［Ｍ＝５／Ｓ＝１］”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、ＣＰＵ１０８はＦＬＡＳＨ  ＲＯＭ１１０に前述の起動状態管理テーブルの内容を保存する。
【００９５】
起動不良６１２は、電力制御・全体制御初期化処理中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１１７は、ＣＰＵ１０８の異常を検知して異常通知デバイスとして実行中ＬＥＤ１２８を制御して、実行中ＬＥＤ１２８を短く五回点滅を繰り返して起動を停止する。この場合、ＣＰＵ１１７は、ＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【００９６】
起動不良６１３は、画像制御初期化処理中に発生した異常によって、ＣＰＵ１１７が起動できないケースである。ここでは、ＣＰＵ１０８は、ＣＰＵ１１７の異常を検知して異常通知デバイスとしてＬＣＤパネル１０４を制御する。そして、ＣＰＵ１０８はＬＣＤパネル１０４に”Ｂｏｏｔ  Ｅｒｒｏｒ  ［Ｍ＝５／Ｓ＝２］”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、ＣＰＵ１０８は、バスブリッジ１１６を介してＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【００９７】
起動不良６１４は、データ制御初期化処理中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１１７は、ＣＰＵ１０８の異常を検知して異常通知デバイスとして実行中ＬＥＤ１２８を制御して、実行中ＬＥＤ１２８を短く六回点滅を繰り返す。そして、ＣＰＵ１１７はＣＰＵ１０８に異常通知を行い、ＬＣＤパネル１０４に”Ｂｏｏｔ  Ｅｒｒｏｒ  ［Ｍ＝７／Ｓ＝２］”などの言語ローカライズされていないエラー情報を出力指示して起動を停止する。この場合、ＣＰＵ１１７は、ＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【００９８】
起動不良６１５は、エンジン制御初期化処理中に発生した異常によって、ＣＰＵ１１７が起動できないケースである。ここでは、ＣＰＵ１０８は、ＣＰＵ１１７の異常を検知して、異常通知デバイスとしてＬＣＤパネル１０４を制御する。そして、ＣＰＵ１０８はＬＣＤパネル１０４に”起動不良が発生しました。［Ｍ＝７／Ｓ＝３］”などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、ＣＰＵ１０８は、バスブリッジ１１６を介してＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【００９９】
起動不良６１６は、ジョブ制御初期化処理中に発生した異常によって、ＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１１７は、ＣＰＵ１０８の異常を検知して異常通知デバイスとして実行中ＬＥＤ１２８を制御して、実行中ＬＥＤ１２８短く８回点滅を繰り返す。そして、ＣＰＵ１１７はＣＰＵ１０８に異常通知を行って、ＬＣＤパネル１０４に”起動不良が発生しました。［Ｍ＝８／Ｓ＝３］”などの言語ローカライズされたエラー情報を出力指示して起動を停止する。この場合、ＣＰＵ１１７は、ＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【０１００】
起動不良６１７は、ファクス初期化処理中に発生した異常によってＣＰＵ１１７が起動できないケースである。ここでは、ＣＰＵ１０８は、ＣＰＵ１１７の異常を検知して異常通知デバイスとしてＬＣＤパネル１０４を制御する。そして、ＣＰＵ１０８はＬＣＤパネル１０４に”起動不良が発生しました。［Ｍ＝８／Ｓ＝４］”などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、ＣＰＵ１０８は、バスブリッジ１１６を介してＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【０１０１】
起動不良６１８は、初期化処理の最終処理中に発生した異常によってＣＰＵ１１７が起動できないケースである。ここでは、ＣＰＵ１０８は、ＣＰＵ１１７の異常を検知して異常通知デバイスとしてＬＣＤパネル１０４を制御する。そして、ＣＰＵ１０８はＬＣＤパネル１０４に”起動不良が発生しました。［Ｍ＝９／Ｓ＝Ｅ］”などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、ＣＰＵ１０８は、バスブリッジ１１６を介してＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【０１０２】
起動不良６１９は、操作制御初期化処理中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここで、ＣＰＵ１１７は、ＣＰＵ１０８の異常を検知して異常通知デバイスとして実行中ＬＥＤ１２８を制御して、実行中ＬＥＤ１２８に短く９回点滅を繰り返す。そして、ＣＰＵ１１７はＣＰＵ１０８に異常通知を行って、ＬＣＤパネル１０４に”起動不良が発生しました。［Ｍ＝９／Ｓ＝Ｅ］”などの言語ローカライズされたエラー情報を出力指示して起動を停止する。この場合、ＣＰＵ１１７は、ＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【０１０３】
起動不良６２０は、ネットワーク制御初期化処理中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１１７は、ＣＰＵ１０８の異常を検知して異常通知デバイスとして実行中ＬＥＤ１２８を制御して、実行中ＬＥＤ１２８短く１０回点滅を繰り返す。そして、ＣＰＵ１１７はＣＰＵ１０８に異常通知を行って、ＬＣＤパネル１０４にグラフィカルなサービスエラー情報を出力指示して起動を停止する。この場合、ＣＰＵ１１７は、ＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。
【０１０４】
起動不良６２１は、ＰＤＬ制御初期化処理中に発生した異常によってＣＰＵ１０８が起動できないケースである。ここでは、ＣＰＵ１１７は、ＣＰＵ１０８の異常を検知して異常通知デバイスとして実行中ＬＥＤ１２８を制御して、実行中ＬＥＤ１２８に短く１０回点滅を繰り返す。そして、ＣＰＵ１１７はＣＰＵ１０８に異常通知を行って、ＬＣＤパネル１０４にグラフィカルなサービスエラー情報を出力指示して起動を停止する。この場合、ＣＰＵ１１７は、ＳＲＡＭ１２５に前述の起動状態管理テーブルの内容を保存する。そして、ＣＰＵ１０８は、通知されたサービスエラー情報に基づいてＬＡＮ１０２を介して、サービスセンターに異常を通知する。
【０１０５】
次に、図１に画像形成装置が正常起動した後の異常検知処理（異常検知後処理）について説明する。
【０１０６】
図７は、図１に画像形成装置が正常起動した後の異常検知処理を説明するためのフローチャートである。
【０１０７】
図１および図７を参照して、一般に、画像形成装置における起動不良は、浮遊ゴミおよび接触不良に加えて、温度および湿度などの不確定要素により引き起こされる。よって、オン／オフ動作を繰り返しているとそのうちに画像形成装置が起動してしまうことが往々にしてある。このような場合に、起動時の異常検知の際に保存した起動状態情報を回収してログとして記録する必要がある。
【０１０８】
前述したようにして、ＣＰＵ１０８の起動が完了した後、ＣＰＵ１０８はＦＬＡＳＨＲＯＭ１１０およびＳＲＡＭ１２５の所定のアドレス（位置）にアクセスして、ＲＡＭ１０９に起動状態レコード（起動状態情報）を取り出す（ステップＳ６０１）。
【０１０９】
次に、ＣＰＵ１０８は、起動段階３０２から起動遷移時刻３０５（状態更新タイムアウト値が記憶されている場合には当該タイムアウト値も含む）のチェックサムを計算する。ＣＰＵ１０８は算出されたチェックサムとチェックサム情報３０７の情報と比較する。つまり、ＣＰＵ１０８は前回の起動情報のチェックサム情報が正常値であるか否かを判定する（ステップＳ６０２）。ここでは、ＣＰＵ１０８は起動情報に有効な情報が記録されているか否かを判定することになる。
【０１１０】
算出されたチェックサムとチェックサム情報とが一致しないと（ステップＳ６０２において、ＮＯ）、ＣＰＵ１０８は起動情報に有効な情報が記録されていないとして、起動情報をクリアする（ステップＳ６０３）。そして、ＣＰＵ１０８は異常検知後処理を終了する。
【０１１１】
一方、チェックサム情報が正常であると判定すると（ステップＳ６０２において、ＹＥＳ）、ＣＰＵ１０８は起動情報の内容を確認する。ここでは、ＣＰＵ１０８は前回の起動の際最後のチェックポイントまで通過したか否かを確認する（ステップＳ６０４）。つまり、ＣＰＵ１０８はコントローラメインユニット１００およびコントローラサブユニット１０１において起動が正常終了であるか否かを判定する。
【０１１２】
コントローラメインユニット１００およびコントローラサブユニット１０１において起動が正常終了であると（ステップＳ６０４において、ＹＥＳ）、ＣＰＵ１０８はステップＳ６０３に進んで、起動情報をクリアする。
【０１１３】
コントローラメインユニット１００およびコントローラサブユニット１０１のいずれかにおいて起動が異常終了であると（ステップＳ６０４において、ＮＯ）、ＣＰＵ１０８は当該異常終了を履歴情報として保全するため、ＨＤＤ１１１の起動異常ログに空き領域があるか否かを判定する（ステップＳ６０５）。起動異常ログに空き領域があると（ステップＳ６０５において、ＹＥＳ）、ＣＰＵ１０８は起動情報を起動異常ログに追加して保存する（ステップＳ６０６）。そして、ＣＰＵ１０８は、ステップＳ６０３に進んで不揮発性メモリに記録された起動情報をクリアする。
【０１１４】
起動異常ログに空き領域が無いと（ステップＳ６０５において、ＮＯ）、ＣＰＵ１０８は不揮発性メモリから読み出した起動情報を、起動異常ログに保存された最も古いレコードに上書きして保存する（ステップＳ６０７）。ＣＰＵ１０８は、ステップＳ６０３に進んで不揮発性メモリに記録された起動情報をクリアする。
【０１１５】
このように、上述の実施の形態では、画像形成装置がコントローラメインユニット１００およびコントローラサブユニット１０１を備える際、一方のＣＰＵがその起動情報を他方のＣＰＵに物理的に接続されたＲＡＭに記録する。そして、他方のＣＰＵが当該起動情報の更新を監視するようにする。
【０１１６】
これによって、ハード的な故障でＣＰＵの処理が停止した場合であっても、どのような要因で起動不良が発生したかを解析する際に有益な情報を確実に残すことができる。また、起動異常が発生しなかったＣＰＵを用いて起動不良情報を起動段階に応じた最適なデバイスでオペレータに通知することができる。
【０１１７】
つまり、本実施の形態では、各ＣＰＵに個別にメモリデバイスを接続して、ＣＰＵの各々が他方のメモリデバイスにアクセスして、メモリデバイスの異常による起動停止の状況（起動情報）を記録して、当該起動情報に応じて起動異常を検知する。
【０１１８】
この結果、一方のＣＰＵが停止又は異常動作によるメモリ破壊などの起動不良を発生させた場合であっても、他方のＣＰＵはメモリ破壊の影響を受けずに自己のメモリを参照することで、起動が正しく進まない状態を検知することができる。さらには、他方のＣＰＵの起動状況および自己の起動状況に応じて、エラー通知を行い、起動段階が初期段階では最小限の通知、後期段階では、例えば、メール又はＷｅｂを用いて高度なエラー通知を行うことができる。
【０１１９】
上述の説明から明らかなように、図１において、コントローラメインユニット１００およびコントローラサブユニット１０１がそれぞれコントローラであり、これらコントローラがジョブ処理を分担することになる。さらに、ＣＰＵ１０８、ＣＰＵ１１７、およびバスブリッジ１１６がアクセス手段として機能する。そして、ＣＰＵ１０８および１１７の各々が特定手段、書き込み手段、および異常検知手段として機能する。また、ＬＣＤパネル１０４、電力ＬＥＤ１０３、および実行ＬＥＤ１２８の各々は報知手段として機能し、ＣＰＵ１０８および１１７の各々は通知手段および通知決定手段として機能する。
【０１２０】
以上、本発明について実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【０１２１】
例えば、上記の実施の形態の機能を制御方法として、この制御方法を、情報処理装置に実行させるようにすればよい。また、上述の実施の形態の機能を有するプログラムを制御プログラムとして、この制御プログラムを情報処理装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
【０１２２】
この際、制御方法および制御プログラムは、少なくとも起動段階特定ステップ、書き込みステップ、および異常検知ステップを有することになる。
【０１２３】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１２４】
１００  コントローラメインユニット
１０１  コントローラサブユニット
１０３  電力ＬＥＤ
１０４  ＬＣＤパネル
１０８，１１７  ＣＰＵ
１０９，１１８  ＲＡＭ
１１０  ＦＬＡＳＨ  ＲＯＭ
１１１  ＨＤＤ
１２５  ＳＲＡＭ
１２８  実行ＬＥＤ  
【図１】
0005822527.tif 000002
【図２】
0005822527.tif 000003
【図３】
0005822527.tif 000004
【図４】
0005822527.tif 000005
【図５】
0005822527.tif 000006
【図６】
0005822527.tif 000007
【図７】
0005822527.tif 000008