説明

情報処理装置、その制御方法、および制御プログラム

【課題】情報処理装置において起動異常を確実に検知する。
【解決手段】CPU108および117にはそれぞれ異なるメモリデバイスが接続されている。CPUの各々には、自己が起動された際、起動段階のいずれの段階まで進んだかについて特定して、特定された起動段階を起動情報として、別のCPUに接続されたメモリデバイスに書き込む。CPUの各々は自己に接続されたメモリデバイスに書き込まれた起動情報を参照して、別のCPUの起動に異常が生じたか否かを検知する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、その制御方法、および制御プログラムに関する。
【背景技術】
【0002】
一般に、情報処理装置の1つとして、複合機(MFP)などの画像形成装置がある。近年、情報処理技術の発展に伴って、画像形成装置における主たる処理が画像処理から情報処理に移行しつつある。そして、リアルタイム制御が必要な画像処理用プロセッサと通信およびユーザインタフェースを処理する情報処理用プロセッサとを分離する構成が一般化している。
【0003】
このようなプロセッサの分離に応じてメモリデバイスが各プロセッサに接続される。一方、メモリデバイスは、搬入時の振動に起因する接触不良又は導電性の浮遊ゴミなどの付着によって、誤動作することがある。特に、画像形成装置全体でみた場合には、メモリデバイスが多くなるほど、誤動作などの危険性は高まることになる。そして、メモリデバイスの接触不良又は短絡などによる誤動作(異常動作)によって、画像処理装置の起動処理の際に、起動中のまま表示画面が変化しないという形態で最も顕著に現われる。
【0004】
上述のように、メモリデバイスが接触不良等によって画像処理装置全体が起動できなくなった際に、当該異常状態を通知して早急に不具合対処を行うことが求められている。
【0005】
ところで、画像形成装置において、電圧異常を検知して、その履歴を不揮発メモリに保存するようにしたものがある(例えば、特許文献1参照)。
【0006】
さらに、画像形成装置において、複数のプロセッサを備えて、これらプロセッサが相互監視を行って、異常検出の際には監視体制を再構築するようにしたものがある(例えば、特許文献2参照)。
【0007】
また、画像形成装置において、複数のプロセッサを備えて、各プロセッサが自己に生じたイベントをログとして揮発メモリに記録した後、所定のタイミングで不揮発メモリに保存するようにしたものがある(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−187288号公報
【特許文献2】特開平2−59955号公報
【特許文献3】特開2010−224751号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上記の特許文献1においては、電源回路の出力電圧を検知する際、予め定められた周期で出力電圧が異常であるか否かを検知している。しかしながら、特許文献1では、出力電圧の異常検知を行っているのみであり、メモリデバイスに接続不良が発生した際には、画像形成装置を起動することができない。この結果、出力電圧の異常を検知することができないという課題がある。そして、この状況では、電圧検知動作が正常であるとしても、画像形成装置が起動しないという状況に陥ってしまう。
【0010】
一方、特許文献2および特許文献3においては、複数のプロセッサが共有メモリを用いて情報を共有している。そして、特許文献2では、共有メモリ上に監視リンク情報を記録して相互監視を行い、異常検出の際に監視体制を再構築するとともに監視リンク情報を共有メモリに保持するようにしている。特許文献3では、共有メモリを用いてイベントを保持し、同期をとって不揮発メモリにロギングするようにしている。
【0011】
ところが、メモリデバイスに異常が発生すると、共有メモリに保存された情報が破壊されるか又は正しく読み取れない恐れがある。特許文献2および3ともに、共有メモリを一系統備えているだけであるので、共有メモリであるメモリデバイスに異常があると起動異常を検知することはできない。さらに、画像形成装置の起動の際に異常が発生すると、正しく起動した状況であれば動作する異常検知機能が正しく動作するという保証がない。
【0012】
従って、本発明の目的は、少なくとも2つのコントローラを備える際に、起動異常を確実に検知することのできる情報処理装置、その制御方法、および制御プログラムを提供することにある。
【課題を解決するための手段】
【0013】
上記の目的を達成するため、本発明による情報処理装置は、少なくとも2つのコントローラを備え、前記コントローラの各々がジョブ処理を分担する情報処理装置であって、前記コントローラにはそれぞれ異なるメモリデバイスが接続されており、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有し、前記コントローラの各々には、自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定手段と、前記特定手段によって特定された起動段階を起動情報として前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込み手段と、自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知手段とを有することを特徴とする。
【0014】
本発明による制御方法は、少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置の制御方法であって、前記コントローラの1つが起動された際、当該コントローラの1つについて起動段階のいずれの段階まで進んだかについて特定する特定ステップと、前記特定ステップによって特定された起動段階を起動情報として前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する検知ステップとを有することを特徴とする。
【0015】
本発明による制御プログラムは、少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置で用いられる制御プログラムであって、前記コントローラの各々に、自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定ステップと、前記特定ステップによって特定された起動段階を起動情報として前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知ステップとを実行させることを特徴とする。
【発明の効果】
【0016】
本発明によれば、少なくとも2つのコントローラを備える際に、起動異常を確実に検知することができるという効果がある。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態による画像形成装置のハードウェア構成の一例を示すブロック図である。
【図2】図1に示す画像形成装置におけるメモリマップ構成の概念説明するための図である。
【図3】図1に示す画像形成装置における起動シーケンスの処理を説明するためのフロー図である。
【図4】図1に示す画像形成装置に保存される起動状態の管理テーブルを示す図である。
【図5】図1に示す画像形成装置における起動異常検知処理を説明するためのフローチャートである。
【図6】図1に示す画像形成装置における異常検知処理において異常通知の際に用いられる異常検知処理決定テーブルの一例を示す図である。
【図7】図1に画像形成装置が正常起動した後の異常検知処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態による情報処理装置の一例を図面を参照して説明する。なお、以下の説明では、情報処理装置の1つである画像形成装置を例に挙げて説明する。
【0019】
図1は、本発明の実施の形態による画像形成装置のハードウェア構成の一例を示すブロック図である。
【0020】
図1において、図示の画像形成装置はコントローラメインユニット100およびコントローラサブユニット101を有している。コントローラメインユニット100は、画像形成装置において情報処理部を司る。また、コントローラサブユニット101は画像形成装置において画像処理部を司る。そして、コントローラメインユニット100はバスブリッジ116を有しており、バスブリッジ116を介してコントローラサブユニット101と接続されている。
【0021】
コントローラメインユニット100はCPU108を有しており、CPU108はフラッシュROM(FLASH ROM)110又はHDD111に記憶されたソフトウェア(プログラム)を実行する。そして、CPU108はシステムバス115に接続されたデバイスを総括的に制御する。FLASH ROM110およびHDD111は、画像データおよびユーザ設定の記憶領域としても用いられる。
【0022】
RAM109は、CPU108の主メモリおよびワークエリアなどとして用いられる。操作部インタフェース(I/F)112は画像形成装置に備えられた各種ボタン(図示せず)からの指示入力を受けるとともに、タッチパネル付きLCDパネル104に描画を行い、当該LCDパネル104から指示入力を受ける。
【0023】
この操作部I/F112には、電力状態LED103にも接続されている。電力状態LED103はコントローラメインユニット100の動作状態を示すインジケータ部である。
【0024】
ネットワークインタフェースカード(NIC:ネットワークI/Fともいう)113は他のネットワーク機器あるいはファイルサーバ等とLAN102を介して双方向にデータを送受する。外部ストレージI/F(外部シリアルI/Fともいう)114は、例えば、USBであり、メモリメディアリーダ又はICカードリーダなどの外部装置に接続され、双方向にデータを送受する。
【0025】
コントローラサブユニット101はCPU117を有しており、CPU117はスキャナ105およびプリンタ106に接続されている。プリンタ106は、例えば、電子写真プロセス又はインクジェット方式などを用いて画像データに応じて印刷を行う。スキャナ105は、原稿上の画像を読み込んで画像データとしてコントローラサブユニット101に与える。スキャナ(画像読み取り部)105には、一般にオプションとしてオートドキュメントフィーダ(図示せず)が装着されており、複数枚の原稿を自動的に読み込むことができる。
【0026】
スキャナ105およびプリンタ106はデバイスI/F120を介して画像データおよび制御信号をCPU117との間で授受する。CPU117はシステムバス127に接続されたデバイスを総括的に制御する。スキャナ105から入力された画像データは、スキャナ画像処理部121を介してRAM118に読み取り画像データとして入力される。
【0027】
メモリ画像処理部(IMAGEC)123は、RAM118に記憶された画像データを処理して、再びRAM118に格納する。この画像処理には、回転・変倍・色空間変換・グレースケール変換・合成・符号化・復号化などの処理が含まれる。
【0028】
上述のように、メモリ画像処理部123で画像処理が行われた後、CPU117はバスブリッジ116を介して、FLASH ROM110又はHDD111に画像データを保存する。また、CPU117は、バスブリッジ116を介してFLASH ROM110又はHDD111に保存された画像データをRAM118に読み出す。そして、CPU117はプリンタ画像処理部122で所定の処理を行った後、画像データをプリンタ106に出力する。
【0029】
なお、スキャナ画像処理部121およびプリンタ画像処理部122においては、色空間変換、移動、色調整、および濃度制御などの処理が行われる。
【0030】
ラスターイメージプロセッサ(RIP)119は、PDLコードをビットマップイメージに展開する。操作部I/F124は、CPU117からの指示に応じて実行中LED128の点滅の制御を行う。SRAM(不揮発性メモリ)125は、CPU117との間でデータを高速に入出力する。モデム(MODEM)126は、公衆回線107に接続され、ファクス画像の入出力に応じて変復調を行う。
【0031】
図2は、図1に示す画像形成装置におけるメモリマップ構成の概念説明するための図である。
【0032】
図1および図2を参照して、CPU108は、物理的に接続されたRAM109(DRAM)を符号151で示す下位アドレス空間にマッピングして利用する。また、CPU108は、物理的に接続されたバスブリッジ106を設定して、当該バス上のデバイスのI/O又はメモリ空間を、符号150で示す上位アドレス空間にマッピングする。
【0033】
次に、CPU117は、物理的に接続されたRAM118(DRAM)を符号153で示す下位アドレス空間にマッピングして利用する。また、CPU117は、物理的に接続されたバスブリッジ106を経由して、当該バス上のデバイスのI/O又はメモリ空間を、符号152で示す上位アドレス空間にマッピングする。
【0034】
CPU108はバスブリッジ106の設定により、ウィンドウ(Window)154を介して符号153で示すDRAMの一部又は全領域に対して、CPU117がリードおよびライトを行えるように、上位アドレス空間150を割り付ける。
【0035】
同様に、CPU108はバスブリッジ106の設定により、Window155を介して符号151で示すDRAMの一部又は全領域に、CPU117がリードおよびライトを行えるように、上位アドレス空間152を割り付ける。
【0036】
図3は、図1に示す画像形成装置における起動シーケンスの処理を説明するためのフロー図である。なお、図示の例では、シーケンシャルに処理が行われるように記載されているが、CPU108および117が並行に動作するようにしてもよい。
【0037】
図1〜図3を参照して、起動が行われると、CPU108は、FLASH ROM110に記録されたBIOSを実行する。BIOSの実行によって、CPU108は、CPU108に接続されたタイマー(図示せず)、ブートデバイス(FLASH ROM)110、メモリ(RAM)109、およびビデオ(操作部I/F)112などの組み込みデバイスを初期化する。
【0038】
初期化に成功すると、コントローラメインユニット100の起動状態はBIOS起動完了となる(S201)。この際、CPU108は、メモリ空間151に対して、BIOS起動完了を記録する。なお、記録情報については後述する。
【0039】
次に、CPU108は、ブートデバイス110に格納されたMBRに記録された一次ローダを実行する。一次ローダを実行すると、CPU108は同一のブートデバイス110に格納された二次ローダ(カーネルローダ)を実行する。
【0040】
二次ローダには、前述のバスブリッジの設定処理が含まれ、これが完了すると、メモリ空間153がCPU1(CPU108)のアドレス空間に配置される。これにより、CPU108はRAM118にアクセスできるようになる。
【0041】
続いて、CPU108は、ブートデバイス110からカーネルおよび初期ラムイメージ(initrd)を読み出す。そして、読み出しに成功すると、コントローラメインユニット100の起動状態はメインローダ起動完了となる(S202)。この際、CPU108は、メモリ空間151に対して、メインローダ完了を記録して、Window1(Window154)を介してメモリ空間153に同一の状態を記録する。
【0042】
続いて、CPU108は、カーネルおよび初期ラムイメージを実行する。CPU108は、カーネルに含まれるデバイスドライバを介して、ハードウェアを初期化し、初期ラムイメージをマウントする。マウント処理が完了すると、CPU108は初期プロセス(initd)を実行する。初期プロセスの起動に成功すると、コントローラメインユニット100の起動状態はカーネル起動完了となる(S203)。この際、CPU108は、メモリ空間151に対して、カーネル起動完了を記録して、Window1(Window154)を介してメモリ空間153に同一の状態を記録する。
【0043】
次に、CPU108は、初期プロセスを介してサブローダを実行する。CPU108は、サブローダに含まれるCPU117の起動イメージを、RAM118に転送する。転送が完了すると、CPU108は、CPU117のリセットを解除する。これによって、CPU117は、RAM118に転送された実行イメージ(起動イメージ)を読み出して起動を行う。
【0044】
コントローラサブユニット101の起動処理が完了すると、コントローラメインユニット100の起動状態は、サブローダ起動完了となる(S204)。この際、CPU108は、メモリ空間151に対して、サブローダ起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。
【0045】
続いて、CPU108は、初期プロセスを介してOSサービスを起動して実行する。CPU108は、OSサービスを介してCPU間通信のための初期化を行って、CPU117が起動するのを待つ。このOSサービスの初期化には、LCDパネル104の初期化が含まれる。これによって、ローカライズされていない文字ベースの画面表示の描画および起動画面のビットマップ表示が行われる。
【0046】
OSサービスの起動処理が完了すると、コントローラメインユニット100の起動状態はOSサービス起動完了となる(S205)。この際、CPU108は、メモリ空間151に対して、OSサービス起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。
【0047】
次に、CPU117は、メモリ空間に転送されたOSを実行する。CPU117は、OSの実行によって、システムバス127上のデバイスの初期化を行うとともに、CPU間通信のための初期化を行う。そして、CPU117はCPU108に応答する。
【0048】
OSが起動完了すると、コントローラサブユニット101の起動状態は、OS起動完了となる(S206)。この際、CPU117は、メモリ空間153に対して、OS起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。
【0049】
続いて、CPU108は、初期プロセスを介して電力制御プロセスを起動して実行する。CPU108は、電力制御プロセスの実行によって、電力および機器全体制御のための初期化を行う。電力制御起動処理が完了すると、コントローラメインユニット100の起動状態は、電力制御起動完了となる(S207)。この際、CPU108は、メモリ空間151に対して電力制御起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。
【0050】
次に、CPU117は、スキャナ105およびプリンタ106と通信するために、画像処理プロセスを実行する。CPU117は、画像処理プロセスの実行によってシステムバス127上の画像処理デバイスの初期化を行って、スキャナ105およびプリンタ106と通信する。
【0051】
画像処理装置の初期化が完了すると、コントローラサブユニット101の起動状態は画像処理起動完了となる(S208)。この際、CPU117は、メモリ空間153に対して画像処理起動完了を記録して、Window155を介して、メモリ空間151に同一の状態を記録する。
【0052】
さらに、CPU108は、初期プロセスの実行によってデータ処理プロセスを起動して実行する。CPU108は、データ処理プロセスの実行によってセキュリティ・システム構成、設定値、ログ、および文書などの機器共有データ制御のための初期化を行う。
【0053】
データ処理起動が完了すると、コントローラメインユニット100の起動状態は、データ処理起動完了となる(S209)。この際、CPU108は、メモリ空間151に対してデータ処理起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。
【0054】
次に、CPU117は、スキャナ105およびプリンタ106の初期動作を実行する。CPU117は、画像処理プロセスの実行によってスキャナ105およびプリンタ106と通信を行って、初期色調整および動作検証を行う。
【0055】
スキャナ105およびプリンタ106が正常動作できる状態になると、コントローラサブユニット101の起動状態は、エンジン起動完了となる(S210)。この際、CPU117は、メモリ空間に対してエンジン起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。
【0056】
続いて、CPU108は、初期プロセスの実行によってジョブ処理プロセスを起動して実行する。CPU108は、ジョブ処理プロセスの実行によってスキャナ105およびプリンタ106の構成を取得して、ジョブ制御のための初期化を行う。ジョブ制御の初期化には、ファクス通信制御が含まれており、CPU108は、CPU117に対して通信を行って、ファクスの初期化を要求する。
【0057】
ジョブ処理起動が完了すると、コントローラメインユニット100の起動状態は、ジョブ処理起動完了となる(S211)。この際、CPU108は、メモリ空間151に対してジョブ処理起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。
【0058】
次に、CPU117は、CPU108からファクス初期要求を受けると、ファクス処理プロセスを実行する。CPU17は、ファクス処理プロセスの実行によって、MODEM126の初期化を行って、その動作検証を行う。ファクスが正常動作できる状態になると、コントローラサブユニット101の起動状態は、ファクス起動完了となる(S212)。この際、CPU117は、メモリ空間153に対してファクス起動完了を記録して、Window155を介してメモリ空間に同一の状態を記録する。
【0059】
続いて、CPU117は、全ての起動プロセスを完了して、ジョブ待ち受け状態になる。コントローラサブユニット101の起動状態は起動完了となる(S213)。この際、CPU117は、メモリ空間153に対して起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。
【0060】
次に、CPU108は、初期プロセスの実行によって表示処理プロセスを起動して実行する。CPU108は、表示処理プロセスの実行によって画面出力および操作入力制御のための初期化を行う。表示処理制御の初期化に伴って、CPU108は、LCDパネル104に対してローカライズされたグラフィカルな画面表示の描画を行う。
【0061】
CPU108は表示処理プロセスの実行によってメニュー、コピー、スキャン、およびファクスなどのアプリケーションを起動する。表示処理起動が完了すると、コントローラメインユニット100の起動状態は画面処理起動完了となる(S214)。この際、CPU108は、メモリ空間に対してジョブ処理起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。
【0062】
続いて、CPU108は、初期プロセスの実行によってネットワーク処理プロセスを起動して実行する。CPU108は、ネットワーク処理プロセスの実行によってLAN102を介したプロトコル制御のための初期化を行う。
【0063】
CPU108はネットワーク処理プロセスの実行によってPDLプリントおよびウェブサーバなどのアプリケーションを起動する。ネットワーク処理起動が完了すると、メインコントローラ100の起動状態はネットワーク起動完了となる(S215)。この際、CPU108は、メモリ空間151に対してネットワーク起動完了を記録して、Window154を介してメモリ空間に同一の状態を記録する。
【0064】
続いて、CPU108は、全ての起動プロセスが完了すると、操作待ち受け状態となる。コントローラメインユニット100の起動状態は起動完了となる(S216)。この際、CPU108は、メモリ空間153に対して起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。
【0065】
通常動作の際には、上述のフローで起動が完了する。一方、起動処理の途中で、初期化失敗又はハードウェアの異常があると、CPU108および117は起動状態が進行せず所定の状態で停止することになる。
【0066】
図4は、図1に示す画像形成装置に保存される起動状態の管理テーブル(起動状態管理テーブル)を示す図である。
【0067】
図4において、起動状態管理テーブル(起動情報ともいう)301には、図3で説明した起動状態を示す詳細なデータが保持される。CPU108は、起動状態管理テーブル301の構造に応じてRAM109およびWindow154を介してRAM118に保存されたCPU108の起動状態を更新する。
【0068】
CPU117は、起動状態管理テーブル301の構造に応じてRAM118およびWindow155を介してRAM109に保存されたCPU117の起動状態を更新する。
【0069】
起動状態管理テーブル301は、起動段階情報(起動段階)302を有しており、起動段階情報302は、前述したようにして、コントローラメインユニット100およびコントローラ101の起動段階について番号(M)を割り付けたものである。起動段階詳細状態情報(起動段階詳細状態)303は、コントローラメインユニット100およびコントローラ101についてその起動段階の一段階においてさらに詳細な起動段階が存在する場合に、その詳細起動段階に番号を割り付けたものである。例えば、画像処理初期化中であれば、初期化対象デバイスの個数に応じて降順に番号が振られる。
【0070】
起動遷移理由情報(起動遷移理由)304は、コントローラメインユニット100およびコントローラ101についてその起動段階情報302を更新する際に、更新した理由に番号を割り付けたものである。起動遷移理由情報304は、例えば、正常終了、システム要因の異常終了、ユーザ要因の異常終了、およびハードウェア要因の異常終了を意味するコードとなる。
【0071】
起動遷移時刻情報(起動遷移時刻)305は、起動段階情報302を更新した場合にその起動開始からの経過時刻を示している。チェックサム情報307は、起動状態管理テーブル301の内容が有効であるか否かを識別するためのレコード全体のチェックサムを示している。
【0072】
さらに、起動状態管理テーブル301は状態更新タイムアウト情報(状態更新タイムアウト値)306を備えるようにしてもよい。起動状態管理テーブル301について、状態更新タイムアウト値306で示す時間を経過しても起動状態が更新しない場合には、起動が停止したと看做されるタイムアウト時間である。この状態更新タイムアウト値306として、次回の更新までの処理が長い場合には処理を完了するまでに必要十分な時間が指定される。
【0073】
図5は、図1に示す画像形成装置における起動異常検知処理を説明するためのフローチャートである。図1および図5を参照して、CPU108および117の各々は、他方のCPUに係る起動状態管理テーブルの更新に応じて異常発生の判定を行う。
【0074】
起動異常検知処理を開始すると、CPU108および117は、現在の時刻t1をタイマー(図示せず)から取得する(ステップS401)。続いて、CPU108および117は、それぞれRAM109および118の所定のメモリアドレスにアクセスして、他方のCPUの起動状態を取得する(ステップS402:起動状況のチェック処理)。
【0075】
CPU108および117は、他方のCPUの起動状態が前回取得した起動状態と比較して変化したか否かを確認する(ステップS403)。他方のCPUの起動状態が前回取得した起動状態と変化していると(ステップS403において、YES)、CPU108および117は、当該変化した起動状態が最終を示す番号(最終番号)であるか否かを判定する(ステップS404)。そして、変化した起動状態が最終番号でないと(ステップS404において、NO)、CPU108および117は、ステップS401の処理に戻る。
【0076】
一方、変化した起動状態が最終番号であると(ステップS404において、YES)、CPU108および117は、正常に起動したとして、後述する正常起動処理を行う(ステップS405)。そして、CPU108および117は、他方のCPUの起動監視処理を終了する。
【0077】
他方のCPUの起動状態が前回取得した起動状態と変化していないと(ステップS403において、NO)、CPU108および117は、起動停止状態の判定のために、タイマーから現在時刻t2を取得する(ステップS405)。
【0078】
続いて、CPU108および117は、起動停止判定を行う(ステップS407)。この起動停止状態の判定では、起動状態の変化確認処理を開始してから、起動状態変化がないまま経過した時間(つまり、t2−t1)が起動状態変化するはずの所定の状態更新タイムアウト値を超えていないかを確認する。
【0079】
図4で説明したように、状態更新タイムアウト値は他方のCPUの起動状態が変化した際に更新される。このため、前述のステップS402において、CPU108および117は、起動状態管理テーブル301から状態更新タイムアウト値を取得する。なお、状態更新タイムアウト値は起動状態毎に変化しうる。
【0080】
起動状態の変化がないまま状態更新タイムアウト値が経過すると(ステップS407において、YES)、CPU108および117は異常検知処理を実行する(ステップS408)。ここでは、CPU108および117は、後述する異常検知処理決定テーブルに応じて異常通知を行う。そして、CPU108および117は、他方のCPUの起動監視処理を終了する。
【0081】
一方、状態更新タイムアウト値が経過していないと(ステップS407において、NO)、CPU108および117は所定の状態取得ポーリング時間が経過したか否かを判定する(ステップS409)。所定の状態取得ポーリング時間が経過していなければ(ステップS409において、NO)、CPU108および117はポーリング時間が経過するまで待機する。
【0082】
所定の状態取得ポーリング時間が経過すると(ステップS409において、YES)、CPU108および117はステップS402の処理に戻って、再び起動状態のチェックを行う。
【0083】
このようにして、CPU108および117は、自己のCPUに係るメモリ空間を読み出して、他方のCPUの起動状態を監視する。そして、他方のCPUの起動状態が所定時間で更新されて、最終状態に進むか又はタイムアウトによる異常状態に進むまで、CPU108および117は他方のCPUの起動状態の監視を継続する。
【0084】
図6は、図1に示す画像形成装置における異常検知処理において異常通知の際に用いられる異常検知処理決定テーブルの一例を示す図である。
【0085】
図6において、図示の異常検知処理決定テーブルは、例えば、不揮発性メモリに保存される。異常検知処理決定テーブルにおいて、起動停止位置601は、コントローラメインユニット100の起動状態変化の停止(M)であるか又はコントローラサブユニット101の起動状態変化の停止(S)であるかを示している。さらに、起動停止位置602はコントローラメインユニット100およびコントローラサブユニット101の各々がいずれの起動状態に遷移する際にタイムアウトが発生したかを示している。
【0086】
起動停止名称602は、タイムアウトが発生した際の異常の種類および名称を示す。起動検出603は、CPU108および117のいずれが検出しうる異常であるかを示す。異常通知処理604は、起動検出603に示されたCPUが制御可能な異常通知手段を示す。履歴保持位置(情報保持位置)605は、起動検出603に示されたCPUがCPU108および117の起動状態を保存するために制御可能な不揮発性デバイスを示している。
【0087】
異常検知処理604および履歴保持位置605で示す異常検知手段および不揮発性デバイスは、CPUが暴走又はストールして正常動作できない状態に陥った場合には動作できない。
【0088】
また、図4に示す起動段階詳細状態303を更新するか否かに応じて起動停止位置601は若干前後する。例えば、OSサービス処理中に起動停止すると、起動段階詳細状態303を更新する場合であれば、OSサービス処理の処理中に、Mは”4”から”5”に更新される。一方、起動段階詳細状態303を更新しない場合であれば、処理が完了するまでMは”5”にならない。
【0089】
図6において、起動不良606は、BIOS実行中に発生した異常によってCPU108が起動できないケースである。この場合、異常通知デバイスは電力LED103であり、電力LED103は短く一回点滅を繰り返す。また、このケースでは履歴保持処理を行うことができない。
【0090】
起動不良607は、ブートローダ(boot loader)の実行中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU108は異常通知デバイスとして電力LED103を制御し、電力LED103を短く二回点滅を繰り返して起動を停止する。この場合、CPU108はFLASH ROM110に前述の起動状態管理テーブルの内容を保存する。
【0091】
起動不良608は、カーネル実行中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU108は、異常通知デバイスとして電力LED103を制御し、電力LED103を短く三回点滅を繰り返して起動を停止する。この場合、CPU108はFLASH ROM110に前述の起動状態管理テーブルの内容を保存する。
【0092】
起動不良609は、CPU108がCPU117の起動処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU108は、異常通知デバイスとしてLCDパネル104を制御して、LCDパネル104に”Boot Error [M=3/S=0]”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108はFLASH ROM110に前述の起動状態管理テーブルの内容を保存する。
【0093】
起動不良610は、OSサービス起動処理中に発生した異常によって、CPU108が起動できないケースである。ここでは、CPU108は、異常通知デバイスとしてLCDパネル104を制御して、LCDパネル104に”Boot Error [M=4/S=0]”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108はFLASH ROM110に前述の起動状態管理テーブルの内容を保存する。
【0094】
起動不良611は、OS起動処理中に発生した異常によってCPU117が起動できないケースである。CPU108は、CPU117の異常を検知して、異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108は、LCDパネル104に”Boot Error [M=5/S=1]”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108はFLASH ROM110に前述の起動状態管理テーブルの内容を保存する。
【0095】
起動不良612は、電力制御・全体制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128を短く五回点滅を繰り返して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。
【0096】
起動不良613は、画像制御初期化処理中に発生した異常によって、CPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104に”Boot Error [M=5/S=2]”などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。
【0097】
起動不良614は、データ制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128を短く六回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行い、LCDパネル104に”Boot Error [M=7/S=2]”などの言語ローカライズされていないエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。
【0098】
起動不良615は、エンジン制御初期化処理中に発生した異常によって、CPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して、異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104に”起動不良が発生しました。[M=7/S=3]”などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。
【0099】
起動不良616は、ジョブ制御初期化処理中に発生した異常によって、CPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128短く8回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104に”起動不良が発生しました。[M=8/S=3]”などの言語ローカライズされたエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。
【0100】
起動不良617は、ファクス初期化処理中に発生した異常によってCPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104に”起動不良が発生しました。[M=8/S=4]”などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。
【0101】
起動不良618は、初期化処理の最終処理中に発生した異常によってCPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104に”起動不良が発生しました。[M=9/S=E]”などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。
【0102】
起動不良619は、操作制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここで、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128に短く9回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104に”起動不良が発生しました。[M=9/S=E]”などの言語ローカライズされたエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。
【0103】
起動不良620は、ネットワーク制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128短く10回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104にグラフィカルなサービスエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。
【0104】
起動不良621は、PDL制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128に短く10回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104にグラフィカルなサービスエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。そして、CPU108は、通知されたサービスエラー情報に基づいてLAN102を介して、サービスセンターに異常を通知する。
【0105】
次に、図1に画像形成装置が正常起動した後の異常検知処理(異常検知後処理)について説明する。
【0106】
図7は、図1に画像形成装置が正常起動した後の異常検知処理を説明するためのフローチャートである。
【0107】
図1および図7を参照して、一般に、画像形成装置における起動不良は、浮遊ゴミおよび接触不良に加えて、温度および湿度などの不確定要素により引き起こされる。よって、オン/オフ動作を繰り返しているとそのうちに画像形成装置が起動してしまうことが往々にしてある。このような場合に、起動時の異常検知の際に保存した起動状態情報を回収してログとして記録する必要がある。
【0108】
前述したようにして、CPU108の起動が完了した後、CPU108はFLASHROM110およびSRAM125の所定のアドレス(位置)にアクセスして、RAM109に起動状態レコード(起動状態情報)を取り出す(ステップS601)。
【0109】
次に、CPU108は、起動段階302から起動遷移時刻305(状態更新タイムアウト値が記憶されている場合には当該タイムアウト値も含む)のチェックサムを計算する。CPU108は算出されたチェックサムとチェックサム情報307の情報と比較する。つまり、CPU108は前回の起動情報のチェックサム情報が正常値であるか否かを判定する(ステップS602)。ここでは、CPU108は起動情報に有効な情報が記録されているか否かを判定することになる。
【0110】
算出されたチェックサムとチェックサム情報とが一致しないと(ステップS602において、NO)、CPU108は起動情報に有効な情報が記録されていないとして、起動情報をクリアする(ステップS603)。そして、CPU108は異常検知後処理を終了する。
【0111】
一方、チェックサム情報が正常であると判定すると(ステップS602において、YES)、CPU108は起動情報の内容を確認する。ここでは、CPU108は前回の起動の際最後のチェックポイントまで通過したか否かを確認する(ステップS604)。つまり、CPU108はコントローラメインユニット100およびコントローラサブユニット101において起動が正常終了であるか否かを判定する。
【0112】
コントローラメインユニット100およびコントローラサブユニット101において起動が正常終了であると(ステップS604において、YES)、CPU108はステップS603に進んで、起動情報をクリアする。
【0113】
コントローラメインユニット100およびコントローラサブユニット101のいずれかにおいて起動が異常終了であると(ステップS604において、NO)、CPU108は当該異常終了を履歴情報として保全するため、HDD111の起動異常ログに空き領域があるか否かを判定する(ステップS605)。起動異常ログに空き領域があると(ステップS605において、YES)、CPU108は起動情報を起動異常ログに追加して保存する(ステップS606)。そして、CPU108は、ステップS603に進んで不揮発性メモリに記録された起動情報をクリアする。
【0114】
起動異常ログに空き領域が無いと(ステップS605において、NO)、CPU108は不揮発性メモリから読み出した起動情報を、起動異常ログに保存された最も古いレコードに上書きして保存する(ステップS607)。CPU108は、ステップS603に進んで不揮発性メモリに記録された起動情報をクリアする。
【0115】
このように、上述の実施の形態では、画像形成装置がコントローラメインユニット100およびコントローラサブユニット101を備える際、一方のCPUがその起動情報を他方のCPUに物理的に接続されたRAMに記録する。そして、他方のCPUが当該起動情報の更新を監視するようにする。
【0116】
これによって、ハード的な故障でCPUの処理が停止した場合であっても、どのような要因で起動不良が発生したかを解析する際に有益な情報を確実に残すことができる。また、起動異常が発生しなかったCPUを用いて起動不良情報を起動段階に応じた最適なデバイスでオペレータに通知することができる。
【0117】
つまり、本実施の形態では、各CPUに個別にメモリデバイスを接続して、CPUの各々が他方のメモリデバイスにアクセスして、メモリデバイスの異常による起動停止の状況(起動情報)を記録して、当該起動情報に応じて起動異常を検知する。
【0118】
この結果、一方のCPUが停止又は異常動作によるメモリ破壊などの起動不良を発生させた場合であっても、他方のCPUはメモリ破壊の影響を受けずに自己のメモリを参照することで、起動が正しく進まない状態を検知することができる。さらには、他方のCPUの起動状況および自己の起動状況に応じて、エラー通知を行い、起動段階が初期段階では最小限の通知、後期段階では、例えば、メール又はWebを用いて高度なエラー通知を行うことができる。
【0119】
上述の説明から明らかなように、図1において、コントローラメインユニット100およびコントローラサブユニット101がそれぞれコントローラであり、これらコントローラがジョブ処理を分担することになる。さらに、CPU108、CPU117、およびバスブリッジ116がアクセス手段として機能する。そして、CPU108および117の各々が特定手段、書き込み手段、および異常検知手段として機能する。また、LCDパネル104、電力LED103、および実行LED128の各々は報知手段として機能し、CPU108および117の各々は通知手段および通知決定手段として機能する。
【0120】
以上、本発明について実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【0121】
例えば、上記の実施の形態の機能を制御方法として、この制御方法を、情報処理装置に実行させるようにすればよい。また、上述の実施の形態の機能を有するプログラムを制御プログラムとして、この制御プログラムを情報処理装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
【0122】
この際、制御方法および制御プログラムは、少なくとも起動段階特定ステップ、書き込みステップ、および異常検知ステップを有することになる。
【0123】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0124】
100 コントローラメインユニット
101 コントローラサブユニット
103 電力LED
104 LCDパネル
108,117 CPU
109,118 RAM
110 FLASH ROM
111 HDD
125 SRAM
128 実行LED

【特許請求の範囲】
【請求項1】
少なくとも2つのコントローラを備え、前記コントローラの各々がジョブ処理を分担する情報処理装置であって、
前記コントローラにはそれぞれ異なるメモリデバイスが接続されており、
前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有し、
前記コントローラの各々には、
自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定手段と、
前記特定手段によって特定された起動段階を起動情報として、前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込み手段と、
自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知手段とを有することを特徴とする情報処理装置。
【請求項2】
前記異常検知手段は予め定められた時間で前記起動情報が更新されないと別の前記コントローラの起動に異常が生じたと判定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記コントローラの各々には異常を報知するための報知手段が接続されており、
さらに、前記コントローラの各々は、前記異常検知手段で別の前記コントローラの異常が検知されると、自己に接続された前記報知手段によって異常を報知する通知手段を有することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記コントローラの各々には異常を報知するための報知手段が接続されており、
さらに、前記コントローラの各々は、前記異常検知手段で別の前記コントローラの異常が検知されると、別の前記コントローラに接続された前記報知手段によって異常を報知する通知手段を有することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項5】
異常検知手段は前記起動情報に応じて別の前記コントローラにおける起動停止状態を判定し、
前記起動停止状態に応じて別の前記コントローラに通知するか否かを決定する通知決定手段を有することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項6】
少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置の制御方法であって、
前記コントローラの1つが起動された際、当該コントローラの1つについて起動段階のいずれの段階まで進んだかについて特定する特定ステップと、
前記特定ステップによって特定された起動段階を起動情報として、前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、
前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する検知ステップとを有することを特徴とする制御方法。
【請求項7】
少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置で用いられる制御プログラムであって、
前記コントローラの各々に、
自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定ステップと、
前記特定ステップによって特定された起動段階を起動情報として、前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、
自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知ステップとを実行させることを特徴とする制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−234483(P2012−234483A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−104367(P2011−104367)
【出願日】平成23年5月9日(2011.5.9)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】