(57)【特許請求の範囲】
【請求項１】
画像データに基づく画像を記録紙に形成する画像形成部と、
前記画像形成部を制御する第１のＣＰＵと、
前記第１のＣＰＵによる動作を監視する第２のＣＰＵと、
を備え、
前記第１のＣＰＵは、所定の領域に記憶されているブートプログラムにしたがって起動処理を実行し、
前記第２のＣＰＵは、前記監視によって前記第１のＣＰＵによる起動処理の動作の異常を検出した場合には、再起動後の前記第１のＣＰＵが最初に実行するプログラムを前記ブートプログラムから、前記異常の原因がハードウェアの異常であるか否かを診断して診断結果を前記第２のＣＰＵに通知する診断プログラムに切り換えて前記第１のＣＰＵを再起動させる
ことを特徴とする画像形成装置。
【請求項２】
前記第２のＣＰＵは、前記診断プログラムを実行した前記第１のＣＰＵから通知された前記診断結果がハードウェアの正常を示す場合には、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記ブートプログラムの書き換えを行う書き換えプログラムに切り換えて前記第１のＣＰＵを再起動させ、この再起動後に前記第１のＣＰＵによって前記書き換えプログラムが実行されることによって、所定の記憶場所から取得した書き換え用ブートプログラムが前記ブートプログラムに上書きされたら、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記上書きにより前記所定の領域に記憶された前記書き換え用ブートプログラムに切り換えて前記第１のＣＰＵを再起動させる
ことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記第１のＣＰＵが前記起動処理の完了後に実行するファームウェアは、該ファームウェアを実行する前記第１のＣＰＵによる動作の異常を検出して前記第２のＣＰＵに通知する機能を前記第１のＣＰＵに実行させるエラーチェックプログラムを含み、
前記第２のＣＰＵは、前記ファームウェアを実行する前記第１のＣＰＵによる動作の異常を前記通知によって認識した場合は、再起動後の前記第１のＣＰＵが最初に実行するプログラムを前記ブートプログラムから、前記異常の原因がハードウェアの異常であるか否かを診断して診断結果を通知する診断プログラムに切り換えて前記第１のＣＰＵを再起動させ、前記診断プログラムを実行した前記第１のＣＰＵから通知された前記診断結果がハードウェアの正常を示す場合には、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記ファームウェアの書き換えを行う第２の書き換えプログラムに切り換えて前記第１のＣＰＵを再起動させ、この再起動後に前記第１のＣＰＵによって前記第２の書き換えプログラムが実行されることによって、所定の記憶場所から取得した書き換え用ファームウェアで前記ファームウェアが上書きされたら、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記ブートプログラムに切り換えて前記第１のＣＰＵを再起動させる
ことを特徴とする請求項１または２に記載の画像形成装置。
【請求項４】
前記第１のＣＰＵは、前記第１のＣＰＵによる動作の状況を前記第２のＣＰＵに通知し、
前記第２のＣＰＵは、前記通知に基づいて前記監視を行う
ことを特徴とする請求項１〜３のいずれか１項に記載の画像形成装置。
【請求項５】
前記第１のＣＰＵによる前記第２のＣＰＵへの通知はメモリを介して行う
ことを特徴とする請求項３または４に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作の異常に対処する機能を備えた画像形成装置に関する。
【背景技術】
【０００２】
コンピュータシステムはブートと呼ばれる起動処理を行って起動し、何らかの異常で起動処理に失敗すると起動できない状態になる。この起動不可状態に陥るブートエラーは、システムのトラブル修復において重要であるため、様々な対処技術が考案されている。
【０００３】
たとえば、同一内容のブートプログラム（起動プログラム）を格納したフラッシュＲＯＭ（Read Only Memory）を２つ搭載し、一方のフラッシュＲＯＭ内のブートプログラムに基づくブート制御が異常で、他方のフラッシュＲＯＭ内のブートプログラムに基づくブート制御が正常である場合には、正常な方のブートプログラムで異常な方のブートプログラムを更新し修復する技術がある（特許文献１参照）。
【０００４】
また、処理用と監視用の２つのＣＰＵ（Central Processing Unit）を備えた情報処理装置において、処理用のＣＰＵはブート時の状態（ログ、メッセージなど）をフラッシュメモリに記憶する。ブートエラーが発生し、ブートリカバリボタンが操作されると、監視用のＣＰＵは電話回線を介して情報処理装置をサービスセンターに接続させ、フラッシュメモリ内のデータを読み出してサービスセンターに伝送する。このデータからサービスセンターのスタッフがブートエラーの原因を解析し、ソフトウェア障害の場合には電話回線を介して所定のコマンドを処理用のＣＰＵに伝送し、障害除去処理を実行させる技術がある（特許文献２参照）。
【０００５】
また、コンピュータがブートに失敗すると、ＣＰＵがＢＩＯＳ中の所定のコードを実行して遠隔診断修復コンピュータとの通信を確立させる。この遠隔診断修復コンピュータが内部の診断修復プログラムをオペレータの操作によってまたは自動で、ブートに失敗した通信相手のコンピュータに実行させる技術がある（特許文献３参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１２２１５１号公報
【特許文献２】特開平１０−１６１９００号公報
【特許文献３】特表平１１−５０４４５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
同じブートプログラムを２つのフラッシュＲＯＭに格納し、異常な方を正常な方で更新し修復する特許文献１の技術は、両方のブートプログラムに異常が発生した場合には対処することができない。また、同じブートプログラムを２つ記憶することになるため、記憶容量の無駄が大きい。
【０００８】
ブートエラーの発生した情報処理装置がサービスセンターと通信して診断・修復される特許文献２の技術、および、ブートに失敗したコンピュータが遠隔診断修復コンピュータと通信して診断修復プログラムを実行する特許文献３の技術は、ブートエラーを自己診断および自己修復することができない。また、通信機能を持たない装置はブートエラーを診断・修復することができない。
【０００９】
また、コンピュータシステムにおける動作の異常は、ブートエラーの他に、ハードウェアやファームウェアなどの異常によるシステムエラーがある。上記の特許文献１〜３の技術では、このシステムエラーに自己対処することもできない。
【００１０】
本発明は、上記の問題を解決しようとするものであり、ブートエラーやシステムエラーなどの動作の異常に自己対処することができる画像形成装置を提供することを目的としている。
【課題を解決するための手段】
【００１１】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【００１２】
［１］画像データに基づく画像を記録紙に形成する画像形成部と、
前記画像形成部を制御する第１のＣＰＵと、
前記第１のＣＰＵによる動作を監視する第２のＣＰＵと、
を備え、
前記第１のＣＰＵは、所定の領域に記憶されているブートプログラムにしたがって起動処理を実行し、
前記第２のＣＰＵは、前記監視によって前記第１のＣＰＵによる起動処理の動作の異常を検出した場合には、再起動後の前記第１のＣＰＵが最初に実行するプログラムを前記ブートプログラムから、前記異常の原因がハードウェアの異常であるか否かを診断して診断結果を通知する診断プログラムに切り換えて前記第１のＣＰＵを再起動させる
ことを特徴とする画像形成装置。
【００１３】
上記発明では、画像形成部を制御する第１のＣＰＵによる動作を第２のＣＰＵが監視する。第２のＣＰＵは、この監視結果に応じたプログラムを再起動後の第１のＣＰＵが実行するように設定して第１のＣＰＵを再起動させる。
【００１４】
たとえば、第１のＣＰＵによる動作が異常となり、第１のＣＰＵ自身がその異常の診断や修復を行えない状態（たとえば、プログラムの暴走状態）になっても、第２のＣＰＵによって、第１のＣＰＵによる動作の監視結果に応じたプログラムを設定し第１のＣＰＵを再起動させて、第１のＣＰＵにそのプログラムを実行させることができる。このプログラムは、第１のＣＰＵによる動作を監視した結果に応じて、たとえば、異常を診断するプログラムや異常を修復するプログラムなどが設定される。これにより、画像形成装置はブートエラーやシステムエラーなどの動作の異常に自己対処することができる。
【００１８】
上記発明では、第１のＣＰＵによる起動処理の動作の異常を検出した場合には、第２のＣＰＵはその異常の原因がハードウェアの異常であるか否かを診断するプログラムを再起動後の第１のＣＰＵに実行させる。これにより、画像形成装置は第１のＣＰＵによる起動処理の動作の異常を自己診断し、診断結果に応じて自己対処できる。
【００１９】
［２］前記第２のＣＰＵは、前記診断プログラムを実行した前記第１のＣＰＵから通知された前記診断結果がハードウェアの正常を示す場合には、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記ブートプログラムの書き換えを行う書き換えプログラムに切り換えて前記第１のＣＰＵを再起動させ、この再起動後に前記第１のＣＰＵによって前記書き換えプログラムが実行されることによって、所定の記憶場所から取得した書き換え用ブートプログラムが前記ブートプログラムに上書きされたら、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記上書きにより前記所定の領域に記憶された前記書き換え用ブートプログラムに切り換えて前記第１のＣＰＵを再起動させる
ことを特徴とする［１］に記載の画像形成装置。
【００２１】
［３］前記第１のＣＰＵが前記起動処理の完了後に実行するファームウェアは、該ファームウェアを実行する前記第１のＣＰＵによる動作の異常を検出して前記第２のＣＰＵに通知する機能を前記第１のＣＰＵに実行させるエラーチェックプログラムを含み、
前記第２のＣＰＵは、前記ファームウェアを実行する前記第１のＣＰＵによる動作の異常を前記通知によって認識した場合は、再起動後の前記第１のＣＰＵが最初に実行するプログラムを前記ブートプログラムから、前記異常の原因がハードウェアの異常であるか否かを診断して診断結果を通知する診断プログラムに切り換えて前記第１のＣＰＵを再起動させ、前記診断プログラムを実行した前記第１のＣＰＵから通知された前記診断結果がハードウェアの正常を示す場合には、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記ファームウェアの書き換えを行う第２の書き換えプログラムに切り換えて前記第１のＣＰＵを再起動させ、この再起動後に前記第１のＣＰＵによって前記第２の書き換えプログラムが実行されることによって、所定の記憶場所から取得した書き換え用ファームウェアで前記ファームウェアが上書きされたら、再起動後の前記第１のＣＰＵが最初に実行するプログラムを、前記ブートプログラムに切り換えて前記第１のＣＰＵを再起動させる
ことを特徴とする［１］または［２］に記載の画像形成装置。
【００２２】
上記発明では、第１のＣＰＵは起動完了後にファームウェアを実行すると、ファームウェアに含まれているエラーチェックプログラムを実行し、第１のＣＰＵによる動作の異常を検出して第２のＣＰＵに通知する。これにより、第２のＣＰＵが第１のＣＰＵによる動作の異常を検出する場合に比べて、第２のＣＰＵの処理負荷が軽減され、第１のＣＰＵよりも第２のＣＰＵの処理能力が低い場合に、装置全体のパフォーマンス低下が抑えられる。
【００２３】
［４］前記第１のＣＰＵは、前記第１のＣＰＵによる動作の状況を前記第２のＣＰＵに通知し、
前記第２のＣＰＵは、前記通知に基づいて前記監視を行う
ことを特徴とする［１］〜［３］のいずれか１項に記載の画像形成装置。
【００２４】
上記発明では、第１のＣＰＵは、第１のＣＰＵによる動作の状況を第２のＣＰＵに通知し、第２のＣＰＵはこの通知に基づいて、第１のＣＰＵによる動作の監視を行う。たとえば、第１のＣＰＵが、第１のＣＰＵによる動作の異常を検出して第２のＣＰＵに通知した場合には、第２のＣＰＵはその第１のＣＰＵによる動作の異常を認識する。また、第１のＣＰＵがたとえばプログラムの暴走状態に陥って動作の状況を第２のＣＰＵに通知できない場合には、第２のＣＰＵは第１のＣＰＵからの通知が無いことで第１のＣＰＵによるプログラムの暴走状態を認識する。
【００２５】
［５］前記第１のＣＰＵによる前記第２のＣＰＵへの通知はメモリを介して行う
ことを特徴とする［３］または［４］に記載の画像形成装置。
【００２６】
上記発明では、第１のＣＰＵによる第２のＣＰＵへの通知を、メモリを介して行うことで、第１のＣＰＵと第２のＣＰＵが個別に動作し、個々の任意のタイミングにメモリにアクセスして通知を行うことができる。
【発明の効果】
【００２７】
本発明の画像形成装置によれば、ブートエラーやシステムエラーなどの動作の異常に自己対処することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態に係る画像形成装置としての複合機の構成を示すブロック図である。
【図２】共有メモリにおける複数のメモリ位置と、各メモリ位置を通じてＣＰＵ（Ａ）からＣＰＵ（Ｂ）へ通知される情報の一例を示す図である。
【図３】複合機のＣＰＵ（Ａ）による起動処理の動作を示す流れ図である。
【図４】複合機のＣＰＵ（Ａ）によるハードウェアチェック動作を示す流れ図である。
【図５】複合機のＣＰＵ（Ａ）によるブートプログラム書き換え動作を示す流れ図である。
【図６】複合機のＣＰＵ（Ａ）によるファームウェア書き換え動作を示す流れ図である。
【図７】複合機のＣＰＵ（Ｂ）によるエラー対処処理の動作を示す流れ図である。
【図８】図７のＳ５０３によるブートエラー対処処理のサブルーチンの動作を示す流れ図である。
【図９】図７のＳ５０５によるシステムエラー対処処理のサブルーチンの動作を示す流れ図である。
【発明を実施するための形態】
【００２９】
以下、図面に基づき本発明の実施形態を説明する。
【００３０】
図１は、本発明の一実施形態に係る画像形成装置としての複合機１０の構成を示すブロック図である。
【００３１】
複合機１０は、原稿の画像を光学的に読み取ってその複製画像を記録紙に印刷して出力するコピー機能、読み取った原稿の画像データをファイルにして保存したり端末装置やサーバなどへ転送したりするスキャン機能、端末装置から受信した印刷データに係る画像や当該複合機１０に保存されている画像データに係る画像を記録紙に印刷して出力するプリンタ機能、画像データを送受信するファクシミリ機能などを備えている。
【００３２】
また複合機１０は、２つのＣＰＵを備えたマルチプロセッサシステムの装置であり、当該複合機１０を起動し当該複合機１０の動作を制御するメインＣＰＵ（第１のＣＰＵ）と、メインＣＰＵによる動作を監視し、この監視結果に応じたプログラムを再起動後のメインＣＰＵが実行するように設定してメインＣＰＵを再起動させるサブＣＰＵ（第２のＣＰＵ）とを備えている。この２つのＣＰＵの処理能力は同じでもよいし異なっていてもよい。処理能力が異なる場合には、処理能力の高い方をメインＣＰＵとし、処理能力の低い方をサブＣＰＵとする。
【００３３】
メインＣＰＵは、ブートプログラムを実行して起動処理（ブート）を行い、当該複合機１０を起動させる機能と、起動完了後にファームウェアを実行して当該複合機１０の動作を制御する機能とを備えている。サブＣＰＵは、上記の監視によってメインＣＰＵによる起動処理の異常（ブートエラー）または動作の異常（システムエラー）を検出した場合には、その異常に対処するプログラム（異常対処プログラム）を再起動後のメインＣＰＵが実行するように設定して（起動プログラムの切り替えを行って）、メインＣＰＵを再起動させる機能を備えている。メインＣＰＵは、サブＣＰＵによって再起動されると、サブＣＰＵによって設定された異常対処プログラムを実行し、異常に対処する動作を行う。
【００３４】
異常対処プログラムは、複合機１０内のハードウェアをチェックしてチェック結果をサブＣＰＵに通知（報告）するハードウェアチェックプログラム、ブートプログラムの書き換えを行うブートプログラム書き換えプログラム、ファームウェアの書き換えを行うファームウェア書き換えプログラムなどである。
【００３５】
なお、異常対処プログラムの種類はこれらに限定されない。異常（エラー）の内容に応じた各種の対処プログラムを用いてその異常に対処することができる。
【００３６】
複合機１０は、メインＣＰＵとしてのＣＰＵ（Ａ）１１と、サブＣＰＵとしてのＣＰＵ（Ｂ）１２と、ＲＯＭ（Read Only Memory（ＢＩＯＳ ＲＯＭ；Basic Input/Output System Read Only Memory））１３と、ＲＡＭ（Random Access Memory）１４と、不揮発メモリ１５と、ハードディスク装置（ＨＤＤ；Hard Disk Drive）１６と、表示部１７と、操作部１８と、ファクシミリ通信部１９と、ネットワーク通信部２０と、画像処理部２１と、スキャナ部２２と、プリンタ部２３とがバス２４に接続され、ＣＰＵ（Ａ）１１とＣＰＵ（Ｂ）１２とに共有メモリ（通信用メモリ）２５が接続されて構成される。
【００３７】
ＣＰＵ（Ａ）１１は、ＲＯＭ１３に格納されているブートプログラムを実行して起動処理を行い、複合機１０を起動させる。複合機１０の起動を完了すると、ＲＯＭ１３に格納されているファームウェアを実行して複合機１０の動作を制御する。
【００３８】
ＣＰＵ（Ｂ）１２は、ＲＯＭ１３に格納されているプログラムを実行してＣＰＵ（Ａ）１１による動作（起動を含む）を監視し、監視結果に応じて起動プログラムの切り替えおよびＣＰＵ（Ａ）１１の再起動を行う。
【００３９】
なお、ＣＰＵ（Ｂ）１２（サブＣＰＵ）は、電源からＣＰＵ（Ａ）１１（メインＣＰＵ）に電力が供給されていない状態（電源オフ状態）でも、電源から常時電力が供給され常時動作を継続できる構成としてもよい。
【００４０】
共有メモリ２５は、ＣＰＵ（Ａ）１１とＣＰＵ（Ｂ）１２にアクセスされるメモリであり、両ＣＰＵ間で通信（プロセス間通信）を行うために使用される。本実施形態では、ＣＰＵ（Ｂ）１２がＣＰＵ（Ａ）１１による動作を監視するための情報を、ＣＰＵ（Ａ）１１からＣＰＵ（Ｂ）１２へ通知するために使用される。
【００４１】
ＲＯＭ１３は、記憶内容を書き換え可能なフラッシュＲＯＭ（フラッシュメモリ）であり、ＣＰＵ（Ａ）１１によって実行されるプログラム（ブートプログラム、ファームウェアなど）と、ＣＰＵ（Ｂ）１２によって実行されるプログラム（ＣＰＵ（Ａ）１１による動作を監視するためのプログラム）などを格納する。ＲＡＭ１４は、ＣＰＵ（Ａ）１１およびＣＰＵ（Ｂ）１２がプログラムを実行する際に各種データを一時的に格納するワークメモリとして使用されるほか、画像データを一時的に保存するための画像メモリなどにも使用される。
【００４２】
不揮発メモリ１５は、電源がオフにされても記憶が保持されるメモリであり、装置固有の情報や各種の設定情報などが記憶される。ハードディスク装置１６は、異常対処プログラムや各種の保存データを格納するほか、入力された画像データなども保存する。
【００４３】
なお、異常対処プログラムはハードディスク装置１６ではなくＲＯＭ１３に格納するようにしてもよい。また異常対処プログラムは、複合機１０とネットワークで接続された外部記憶装置（ストレージ）に格納しておき、複合機１０がその外部記憶装置にアクセスして実行するようにしてもよい。異常対処プログラムにおけるブートプログラム書き換えプログラムがＲＯＭ１３内のブートプログラムを書き換えるのに使用する書き換え用のブートプログラムは、内蔵のハードディスク装置１６に記憶しておくようにしてもよく外部記憶装置から取得するようにしてもよい。異常対処プログラムにおけるファームウェア書き換えプログラムがＲＯＭ１３内のファームウェアを書き換えるのに使用する書き換え用のファームウェアは、ハードディスク装置１６に記憶しておくようにしてもよく外部記憶装置から取得するようにしてもよい。
【００４４】
表示部１７は、液晶ディスプレイなどで構成され、操作画面、設定画面、案内画面などの各種の画面を表示する。操作部１８は、スタートボタン、ストップボタン、テンキーなどの各種のボタン類と、液晶ディスプレイの表面に設けられて押下された座標位置を検出するタッチパネルなどで構成され、ユーザが複合機１０に対して行う各種の操作を受け付ける。
【００４５】
ファクシミリ通信部１９は、ファクシミリ機能を備えた外部装置と公衆回線を通じて画像データを送受信する。ネットワーク通信部２０は、ＬＡＮ（Local Area Network）などのネットワークを通じて端末装置やサーバなどと通信を行う。
【００４６】
画像処理部２１は、画像データに対して、画像補正、回転、拡大／縮小、圧縮／伸張など各種の画像処理を施す。
【００４７】
スキャナ部２２は、原稿を光学的に読み取って画像データを取得する。スキャナ部２２は、たとえば、原稿に光を照射する光源と、その反射光を受けて原稿を幅方向に１ライン分読み取るラインイメージセンサと、ライン単位の読取位置を原稿の長さ方向に順次移動させる移動手段と、原稿からの反射光をラインイメージセンサに導いて結像させるレンズやミラーなどからなる光学経路と、ラインイメージセンサの出力するアナログ画像信号をデジタルの画像データに変換する変換部などを備えて構成される。
【００４８】
プリンタ部２３は、画像データに基づく画像を電子写真プロセスによって記録紙上に形成して出力する。プリンタ部２３は、たとえば、記録紙の搬送装置と、感光体ドラムと、帯電装置と、入力される画像データに応じて点灯制御されるＬＤ（Laser Diode）と、ＬＤから射出されたレーザ光を感光体ドラム上で走査させる走査ユニットと、現像装置と、転写分離装置と、クリーニング装置と、定着装置とを有する、いわゆるレーザープリンタとして構成されている。レーザ光に代えてＬＥＤ（Light Emitting Diode）で感光体ドラムを照射するＬＥＤプリンタのほか他の方式のプリンタであってもかまわない。
【００４９】
前述したように、ＣＰＵ（Ａ）１１は複合機１０の起動を完了すると、ＲＯＭ１３内のファームウェアを実行して複合機１０の動作を制御する。ファームウェアは、所定のタイミングでシステムの異常（エラー）をチェックするプログラム（システムエラーチェックプログラム）を含んでいる。システムチェックは、複合機１０内のハードウェアに異常が発生していないことをチェックするハードウェアチェックと、ファームウェアに異常（バグ）が発生していないことをチェックするファームウェアチェックを含む。
【００５０】
ハードウェアチェックにおけるチェック対象のハードウェアは、ＲＡＭ１４、ハードディスク装置１６、制御基板、ＤＭＡコントローラ（Direct Memory Access controller）、ＦＡＮ（冷却ファン）などである。この場合のハードウェアチェックは、ＲＡＭ１４に対するメモリチェック、ハードディスク装置１６に対するＨＤＤチェック、制御基板に対するボードチェック、ＤＭＡコントローラなどの制御チップに対するチップチェックなどである。
【００５１】
たとえば、メモリチェックとＨＤＤチェックでは、ライト・リードを行って異常が発生していないことをチェックする。ボードチェックでは、ＣＰＵ（Ａ）１１が制御基板の各端子に入力される信号をモニタリングすることで異常が発生していないことをチェックする。端子毎の信号の入出力を確認することで、制御基板のいずれの箇所で異常が発生しているかを特定することができる。またボードチェックでは、ＣＰＵ（Ａ）１１がＦＡＸボードなどの制御基板にエラーチェックのコマンドを送信し応答を受信することで異常が発生していないことをチェックしたり、ＣＰＵ（Ａ）１１が制御基板から割り込みなどでエラー発生の通知を受信し異常が発生したことを認識したりするようにしてもよい。ＤＭＡコントローラに対するチップチェックでは、ＣＰＵ（Ａ）１１が内部レジスタを読めない場合に異常が発生したことを認識する。
【００５２】
上記のハードウェアチェックを行うタイミングについては、メモリチェックとＨＤＤチェックは定期的やジョブの間に行う。ボードチェックとチップチェックは、ハードウェアを実際に使用するときやジョブの間に行う。
【００５３】
ＣＰＵ（Ａ）１１がシステムチェックにおけるハードウェアチェックを行ってハードウェアの異常を検出した場合には、ハードウェアの異常によるシステムエラーが発生したと判断する。
【００５４】
また、システムチェックにおけるファームウェアチェックでは、ＣＰＵ（Ａ）１１は、たとえばファームウェアのパラメータの取り得る値として１〜３を想定しているなかで、それ以外の数値（４や５など）となっている場合であってハードウェアに異常がなければ、ファームウェアのバグによるシステムエラーが発生したと判断する。
【００５５】
ＣＰＵ（Ａ）１１は上記のシステムチェックを行い、システムエラーが発生したと判断した場合は、ＣＰＵ（Ｂ）１２に対してシステムエラーが発生したことを通知する。
【００５６】
また、ＣＰＵ（Ａ）１１はハードウェアチェックプログラムを実行したときも、そのプログラムに基づいて複合機１０内のハードウェアの異常をチェック（診断）する。チェック対象のハードウェアとチェック方法は、システムチェックにおけるハードウェアチェックと同様である。ＣＰＵ（Ａ）１１は、ハードウェアチェックプログラムを実行してハードウェアの異常をチェックし、異常を検出しない場合はＣＰＵ（Ｂ）１２に対してハードウェア正常を通知し、異常を検出した場合はＣＰＵ（Ｂ）１２に対してハードウェア異常を通知する。
【００５７】
図２は、共有メモリ２５における複数のメモリ位置（アドレス）と、各メモリ位置を通じてＣＰＵ（Ａ）１１からＣＰＵ（Ｂ）１２へ通知される情報（通知情報）の一例を示す図である。
【００５８】
ここでは、ＣＰＵ（Ａ）１１が通知情報を共有メモリ２５に書き込み、ＣＰＵ（Ｂ）１２が共有メモリ２５から通知情報を読み出す。この通知情報とメモリ位置とを対応付けておくことにより、ＣＰＵ（Ａ）１１からＣＰＵ（Ｂ）１２への通知情報の通信（伝達）を行う。
【００５９】
通知情報は、ＣＰＵ（Ａ）１１による動作の状況（ブートエラー／システムエラー／ハードウェアチェックプログラムの実行によるチェック結果／プログラムの書き換え完了など）を示す情報である。たとえば、ＣＰＵ（Ａ）１１による複合機１０の起動の状況を示す情報（起動完了）、ＣＰＵ（Ａ）１１による複合機１０の動作の制御で使用されるハードウェアの状況を示す情報（メモリ異常、ＨＤＤ異常）、ハードウェアチェックプログラムを実行した結果、ハードウェアの異常を検出しなかったこと（ハードウェア正常）またはハードウェアの異常を検出したこと（ハードウェア異常および異常箇所）を示す情報、ブートプログラム書き換えプログラムを実行してブートプログラムの書き換えを完了したことを示す情報（ブートプログラム書き換え完了）、ファームウェア書き換えプログラムを実行してファームウェアの書き換えを完了したことを示す情報（ファームウェア書き換え完了）などである。
【００６０】
本例では、ＣＰＵ（Ａ）１１は複合機１０の起動が完了すると、共有メモリ２５におけるメモリ位置１にフラグ（正常フラグ）をセットする。システムチェックにおけるハードウェアチェックと、ハードウェアチェックプログラムの実行によるハードウェアチェックで、ＲＡＭ１４の異常を検出すると共有メモリ２５におけるメモリ位置２にフラグ（異常フラグ）をセットする。ハードディスク装置１６の異常を検出すると共有メモリ２５におけるメモリ位置３にフラグ（異常フラグ）をセットする。
【００６１】
またＣＰＵ（Ａ）１１、ハードウェアチェックプログラムの実行によるハードウェアチェックで、ハードウェアの異常を検出しなければ、所定のメモリ位置（たとえばメモリ位置ｎ１）にフラグ（正常フラグ）をセットする。ブートプログラムの書き換え完了時も所定のメモリ位置（たとえばメモリ位置ｎ２）にフラグ（正常フラグ）をセットし、ファームウェアの書き換え完了時も所定のメモリ位置（たとえばメモリ位置ｎ３）にフラグ（正常フラグ）をセットする。
【００６２】
ＣＰＵ（Ｂ）１２は、複合機１０の起動開始（電源オン）から所定時間が経過するまでの間に、共有メモリ２５のメモリ位置１にフラグがセットされていることを確認した場合には起動に成功したと認識し、そのフラグをリセットする。複合機１０の起動開始から所定時間が経過しても、共有メモリ２５のメモリ位置１にフラグがセットされていないことを確認した場合には起動に失敗したと認識する。
【００６３】
またＣＰＵ（Ｂ）１２は、複合機１０の通常動作中に、共有メモリ２５のメモリ位置２にフラグがセットされていないことを確認した場合にはＲＡＭ１４が正常であると認識し、フラグがセットされていることを確認した場合にはＲＡＭ１４に異常が発生したと認識し、そのフラグをリセットする。また、複合機１０の通常動作中に、共有メモリ２５のメモリ位置３にフラグがセットされていないことを確認した場合にはハードディスク装置１６が正常であると認識し、フラグがセットされていることを確認した場合にはハードディスク装置１６に異常が発生したと認識し、そのフラグをリセットする。
【００６４】
なお、ＣＰＵ（Ａ）１１がウォッチドッグタイマなどによって周期的に共有メモリ２５の所定のメモリ位置に正常フラグをセットするようにし、ＣＰＵ（Ｂ）１２がその所定のメモリ位置の正常フラグを確認するとリセットする。ＣＰＵ（Ｂ）１２が共有メモリ２５をリードしたとき上記の所定のメモリ位置に正常フラグがセットされていない場合は、ＣＰＵ（Ａ）１１の処理異常（ファームウェア異常による暴走中)と判断するようにしてもよい。
【００６５】
またＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１がハードウェアチェックプログラムを実行し、共有メモリ２５の所定のメモリ位置（たとえばメモリ位置ｎ１）にフラグがセットされていることを確認した場合にはハードウェアが正常であると認識し、そのフラグをリセットする。共有メモリ２５のメモリ位置２にフラグがセットされていることを確認した場合にはＲＡＭ１４に異常が発生したと認識し、そのフラグをリセットする。メモリ位置３にフラグがセットされていることを確認した場合にはハードディスク装置１６に異常が発生したと認識し、そのフラグをリセットする。
【００６６】
またＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１がブートプログラム書き換えプログラムを実行し、共有メモリ２５の所定のメモリ位置（たとえばメモリ位置ｎ２）にフラグがセットされていることを確認した場合にはブートプログラムの書き換えが完了したと認識し、そのフラグをリセットする。また、ＣＰＵ（Ａ）１１がファームウェア書き換えプログラムを実行し、共有メモリ２５の所定のメモリ位置（たとえばメモリ位置ｎ３）にフラグがセットされていることを確認した場合にはファームウェアの書き換えが完了したと認識し、そのフラグをリセットする。
【００６７】
次に、複合機１０の動作について説明する。
【００６８】
本実施形態では、以下の２つの事例における対処動作を説明する。
事例１．ハードウェアもしくはブートプログラムに問題があるためにファームウェアが起動しない場合。
事例２．ハードウェアもしくは組み込まれたファームウェアに問題があるために内部異常が発生した場合。
【００６９】
事例１における対処動作の概要は以下の通りである。
【００７０】
１．複合機１０の電源がオンにされると、ＣＰＵ（Ｂ）１２は所定時間内に起動処理が完了したか否かを確認する。
【００７１】
２．ＣＰＵ（Ａ）１１から共有メモリ２５を介して所定時間内に起動完了の通知を受信しない場合は、ＣＰＵ（Ｂ）１２はブートエラーが発生したと認識する。
【００７２】
３．ＣＰＵ（Ｂ）１２は、ブートエラーの原因がハードウェアの異常であるかブートプログラムの異常であるかを判別するために、まずハードウェアチェックプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定して、ＣＰＵ（Ａ）１１を再起動させる。
【００７３】
４．ＣＰＵ（Ａ）１１の再起動開始（もしくはＣＰＵ（Ａ）１１によるハードウェアチェックプログラムの実行開始）から所定時間内に、ＣＰＵ（Ａ）１１から共有メモリ２５を介してハードウェア正常の通知を受信しない場合とハードウェア異常の通知を受信した場合は（ハードウェアチェックプログラムの起動不可または動作異常）、ＣＰＵ（Ｂ）１２は異常の発生をサービスセンターに通知する。ハードウェア正常の通知を受信した場合は、ＣＰＵ（Ｂ）１２はハードウェアが正常でブートプログラムに異常が発生した可能性があると認識し、ブートプログラム書き換えプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定して、ＣＰＵ（Ａ）１１を再起動させる。
【００７４】
５．ＣＰＵ（Ａ）１１の再起動開始（もしくはＣＰＵ（Ａ）１１によるブートプログラム書き換えプログラムの実行開始）から所定時間内に、ＣＰＵ（Ａ）１１から共有メモリ２５を介してブートプログラムの書き換え完了の通知を受信しない場合は（ブートプログラム書き換えプログラムの起動不可または動作異常）、ＣＰＵ（Ｂ）１２は異常の発生をサービスセンターに通知する。ブートプログラムの書き換え完了の通知を受信した場合は、ＣＰＵ（Ｂ）１２はそのブートプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定して、ＣＰＵ（Ａ）１１を再起動させる。
【００７５】
事例２における対処動作の概要は以下の通りである。
【００７６】
１．ＣＰＵ（Ａ）１１は起動処理を完了するとファームウェアを実行して複合機１０の動作を制御すると共に、定期的やジョブの間などにシステムチェック（ハードウェアチェックなど）を行う。
【００７７】
２．ＣＰＵ（Ａ）１１は内部異常（ハードウェア異常／ファームウェア異常）などのシステムエラーを検出した場合には、そのシステムエラーの異常を共有メモリ２５に書き込む。
【００７８】
３．ＣＰＵ（Ｂ）１２は定期的にシステムエラーの異常を確認する。
【００７９】
４．ＣＰＵ（Ａ）１１から共有メモリ２５を介してシステムエラーの異常の通知を受信した場合は、ＣＰＵ（Ｂ）１２はシステムエラーが発生したと認識する。
【００８０】
５．ＣＰＵ（Ｂ）１２は、システムエラーの原因（異常箇所）を詳細に特定するために、ハードウェアチェックプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定して、ＣＰＵ（Ａ）１１を再起動させる。
【００８１】
６．ＣＰＵ（Ａ）１１の再起動開始（もしくはＣＰＵ（Ａ）１１によるハードウェアチェックプログラムの実行開始）から所定時間内に、ＣＰＵ（Ａ）１１から共有メモリ２５を介してハードウェア正常の通知を受信しない場合とハードウェア異常の通知（異常箇所が特定された通知）を受信した場合は（ハードウェアチェックプログラムの起動不可または動作異常）、ＣＰＵ（Ｂ）１２は異常の発生をサービスセンターに通知する。ハードウェア正常の通知を受信した場合は、ＣＰＵ（Ｂ）１２はハードウェアが正常でファームウェアに異常が発生した可能性があると認識し、ファームウェア書き換えプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定して、ＣＰＵ（Ａ）１１を再起動させる。
【００８２】
７．ＣＰＵ（Ａ）１１の再起動開始（もしくはＣＰＵ（Ａ）１１によるファームウェア書き換えプログラムの実行開始）から所定時間内に、ＣＰＵ（Ａ）１１から共有メモリ２５を介してファームウェアの書き換え完了の通知を受信しない場合は（ファームウェア書き換えプログラムの起動不可または動作異常）、ＣＰＵ（Ｂ）１２は異常の発生をサービスセンターに通知する。ファームウェアの書き換え完了の通知を受信した場合は、ＣＰＵ（Ｂ）１２はブートプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定して、ＣＰＵ（Ａ）１１を再起動させ、この再起動による起動処理の完了後に、書き換えられたファームウェアをＣＰＵ（Ａ）１１に実行させる。
【００８３】
上記の事例１および事例２における対処動作の詳細を図３〜図９を用いて説明する。なお、図中ではハードウェア（hardware）を「ＨＷ」、ブートプログラム（boot program）を「ＢＰ」、ファームウェア（firmware）を「ＦＷ」と表記している。
【００８４】
また、ＣＰＵ（Ｂ）１２が行う起動プログラムの切り替え（再起動後のＣＰＵ（Ａ）１１に実行させるプログラムの設定）は、起動後に実行するプログラムの格納先を示す情報（ベクター）をＣＰＵ（Ｂ）１２が書き換えることによって行う。ＣＰＵ（Ｂ）１２がサービスセンターに対して行う通知は、電子メールなどを使用して行う。
【００８５】
図３は、複合機１０のＣＰＵ（Ａ）１１による起動処理の動作の流れを示す図である。
【００８６】
複合機１０の電源がオンにされると、ＣＰＵ（Ａ）１１はブートプログラムを実行して起動処理を開始する（ステップＳ１０１）。起動が完了すると、起動完了通知を行う（ステップＳ１０２）。この通知は、図２に示したように、共有メモリ２５のメモリ位置１にフラグをセットすることで行う。
【００８７】
続いてＣＰＵ（Ａ）１１は、ファームウェアを実行して複合機１０の動作を制御すると共に、所定のタイミングでシステムチェックを行い（ステップＳ１０３）、システムエラーの発生を監視する（ステップＳ１０４；Ｎｏ）。システムエラーの発生を検出した場合は（ステップＳ１０４；Ｙｅｓ）、システムエラー発生通知を行う（ステップＳ１０５／Ｅｎｄ）。この通知は、図２に示したように、検出した異常に対応する共有メモリ２５のメモリ位置にフラグをセットすることで行う。
【００８８】
図７は、複合機のＣＰＵ（Ｂ）１２によるエラー対処処理の動作を示す流れ図である。
【００８９】
複合機１０の電源がオンにされると、ＣＰＵ（Ｂ）１２はＣＰＵ（Ａ）１１から所定時間内に起動完了通知を受信するか否かを監視する（ステップＳ５０１；Ｎｏ→ステップＳ５０２；Ｎｏ）。ＣＰＵ（Ａ）１１から起動完了通知を受信せずに所定時間を経過した場合は（ステップＳ５０２；Ｙｅｓ）、ＣＰＵ（Ｂ）１２は起動に失敗したと判断し、ブートエラー対処処理をサブルーチンで行う（ステップＳ５０３）。
【００９０】
ＣＰＵ（Ａ）１１から所定時間内に起動完了通知を受信した場合は（ステップＳ５０１；Ｙｅｓ（共有メモリ２５のメモリ位置１のフラグ・セット確認））、ＣＰＵ（Ｂ）１２は起動に成功したと判断し、複合機１０の通常動作中にＣＰＵ（Ａ）１１からシステムエラー発生通知を受信するか否かを監視する（ステップＳ５０４；Ｎｏ）。ＣＰＵ（Ａ）１１からシステムエラー発生通知を受信した場合は（ステップＳ５０４；Ｙｅｓ（共有メモリ２５の所定のメモリ位置のフラグ・セット確認））、ＣＰＵ（Ｂ）１２はシステムエラー対処処理をサブルーチンで行う（ステップＳ５０５）。
【００９１】
図８は、図７のＳ５０３によるブートエラー対処処理のサブルーチンの動作を示す流れ図である。
【００９２】
ＣＰＵ（Ｂ）１２は、再起動後のＣＰＵ（Ａ）１１が実行する起動プログラムをハードウェアチェックプログラムに変更し（ステップＳ６０１）、ＣＰＵ（Ａ）１１を再起動させる（ステップＳ６０２）。ここでＣＰＵ（Ｂ）１２は、起動後に実行するプログラムの格納先を示す情報を、ブートプログラムを示す情報からハードウェアチェックプログラムを示す情報に書き換え、ＣＰＵ（Ａ）１１を再起動させる。
【００９３】
ＣＰＵ（Ａ）１１は、この再起動でハードウェアチェックプログラムを実行し、ハードウェアに異常が発生していないかチェックを行う（図４参照）。
【００９４】
ＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１から所定時間内にハードウェアのチェック結果（正常／異常）の通知を受信しない場合は（ステップＳ６０３；Ｎｏ）、サービスセンターに当該複合機１０の異常発生（起動不可異常）を通知する（ステップＳ６１０／Ｅｎｄ）。ＣＰＵ（Ａ）１１から所定時間内にハードウェアのチェック結果の通知を受信し（ステップＳ６０３；Ｙｅｓ）、受信したのがハードウェア異常の通知である場合は（ステップＳ６０４；Ｎｏ）、ＣＰＵ（Ｂ）１２はサービスセンターに当該複合機１０のハードウェア異常を通知する（ステップＳ６１０／Ｅｎｄ）。この場合は、ＣＰＵ（Ａ）１１からハードウェアの異常箇所が通知されるため、ＣＰＵ（Ｂ）１２はそのハードウェアの異常箇所もサービスセンターに通知する。
【００９５】
またＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１から所定時間内にハードウェアのチェック結果の通知を受信し（ステップＳ６０３；Ｙｅｓ）、受信したのがハードウェア正常の通知である場合は（ステップＳ６０４；Ｙｅｓ）、再起動後のＣＰＵ（Ａ）１１が実行する起動プログラムをブートプログラム書き換えプログラムに変更し（ステップＳ６０５）、ＣＰＵ（Ａ）１１を再起動させる（ステップＳ６０６）。ここでＣＰＵ（Ｂ）１２は、起動後に実行するプログラムの格納先を示す情報を、ハードウェアチェックプログラムを示す情報からブートプログラム書き換えプログラムを示す情報に書き換え、ＣＰＵ（Ａ）１１を再起動させる。
【００９６】
ＣＰＵ（Ａ）１１は、この再起動でブートプログラム書き換えプログラムを実行し、ブートプログラムの書き換えを行う（図５参照）。
【００９７】
ＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１から所定時間内にブートプログラム書き換え完了通知を受信しない場合は（ステップＳ６０７；Ｎｏ）、サービスセンターに当該複合機１０の異常発生（ブートプログラム書き換え不可異常）を通知する（ステップＳ６１０）。ＣＰＵ（Ａ）１１から所定時間内にブートプログラム書き換え完了通知を受信した場合は（ステップＳ６０７；Ｙｅｓ）、ＣＰＵ（Ｂ）１２は再起動後のＣＰＵ（Ａ）１１が実行する起動プログラムを書き換え後のブートプログラムに変更し（ステップＳ６０８）、ＣＰＵ（Ａ）１１を再起動させる（ステップＳ６０９／Ｒｅｔｕｒｎ）。ここでＣＰＵ（Ｂ）１２は、起動後に実行するプログラムの格納先を示す情報を、ブートプログラム書き換えプログラムを示す情報からブートプログラムを示す情報に書き換え、ＣＰＵ（Ａ）１１を再起動させる。
【００９８】
ＣＰＵ（Ａ）１１は、この再起動で書き換え後のブートプログラムを実行し、ブートプログラムに基づいて起動処理を行う（図３参照）。ブートエラーの原因がブートプログラムの異常（バグ）にあり、ブートプログラムの書き換えによって修復された場合には、ＣＰＵ（Ａ）１１はその書き換え後のブートプログラムを実行すると、起動を正常に完了させる。
【００９９】
図９は、図７のＳ５０５によるシステムエラー対処処理のサブルーチンの動作を示す流れ図である。
【０１００】
図７におけるステップＳ７０１〜Ｓ７０４およびＳ７１０は、図６におけるステップＳ６０１〜Ｓ６０４およびＳ６１０と同じ内容であり、ここでは説明を省略する。
【０１０１】
ＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１から所定時間内にハードウェアのチェック結果の通知を受信し（ステップＳ７０３；Ｙｅｓ）、受信したのがハードウェア正常の通知である場合は（ステップＳ７０４；Ｙｅｓ）、再起動後のＣＰＵ（Ａ）１１が実行する起動プログラムをファームウェア書き換えプログラムに変更し（ステップＳ７０５）、ＣＰＵ（Ａ）１１を再起動させる（ステップＳ７０６）。ここでＣＰＵ（Ｂ）１２は、起動後に実行するプログラムの格納先を示す情報を、ハードウェアチェックプログラムを示す情報からファームウェア書き換えプログラムを示す情報に書き換え、ＣＰＵ（Ａ）１１を再起動させる。
【０１０２】
ＣＰＵ（Ａ）１１は、この再起動でファームウェア書き換えプログラムを実行し、ファームウェアの書き換えを行う（図６参照）。
【０１０３】
ＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１から所定時間内にファームウェア書き換え完了通知を受信しない場合は（ステップＳ７０７；Ｎｏ）、サービスセンターに当該複合機１０の異常発生（ファームウェア書き換え不可異常）を通知する（ステップＳ７１０）。ＣＰＵ（Ａ）１１から所定時間内にファームウェア書き換え完了通知を受信した場合は（ステップＳ７０７；Ｙｅｓ）、ＣＰＵ（Ｂ）１２は再起動後のＣＰＵ（Ａ）１１が実行する起動プログラムをブートプログラムに変更し（ステップＳ７０８）、ＣＰＵ（Ａ）１１を再起動させる（ステップＳ７０９／Ｒｅｔｕｒｎ）。ここでＣＰＵ（Ｂ）１２は、起動後に実行するプログラムの格納先を示す情報を、ファームウェア書き換えプログラムを示す情報からブートプログラムを示す情報に書き換え、ＣＰＵ（Ａ）１１を再起動させる。
【０１０４】
ＣＰＵ（Ａ）１１は、この再起動でブートプログラムを実行し、ブートプログラムに基づいて起動処理を行う（図３参照）。起動を完了すると、ＣＰＵ（Ａ）１１は書き換え後のファームウェアを実行する。システムエラーの原因がファームウェアの異常（バグ）にあり、ファームウェアの書き換えによって修復された場合には、ＣＰＵ（Ａ）１１はその書き換え後のファームウェアを実行すると、複合機１０を正常に動作させる。
【０１０５】
図４は、ＣＰＵ（Ａ）１１によるハードウェアチェック動作を示す流れ図である。
【０１０６】
ＣＰＵ（Ａ）１１は、ハードウェアチェックプログラムを実行し、プログラムに基づいて複合機１０のハードウェアに異常が発生していないかチェックを行う（ステップＳ２０１）。ハードウェアの異常を検出しない場合は（ステップＳ２０２；Ｎｏ）、ＣＰＵ（Ｂ）１２にハードウェア正常を通知する（ステップＳ２０３／Ｅｎｄ）。ハードウェアの異常を検出した場合は（ステップＳ２０２；Ｙｅｓ）、ＣＰＵ（Ｂ）１２にハードウェア異常を通知する（ステップＳ２０４／Ｅｎｄ）。ハードウェア異常の通知では、特定した異常箇所も通知する。
【０１０７】
図５は、ＣＰＵ（Ａ）１１によるブートプログラム書き換え動作を示す流れ図である。
【０１０８】
ＣＰＵ（Ａ）１１は、ブートプログラム書き換えプログラムを実行し、プログラムに基づいてブートプログラムの書き換え処理を行う（ステップＳ３０１）。ここでは、ＲＯＭ１３に格納されているブートプログラムを、複合機１０内のハードディスク装置１６または外部記憶装置から取得した書き換え用のブートプログラムで上書きする。
【０１０９】
ＣＰＵ（Ａ）１１は、ブートプログラムの書き換えを完了すると、ＣＰＵ（Ｂ）１２にブートプログラム書き換え完了を通知する（ステップＳ３０２／Ｅｎｄ）。
【０１１０】
図６は、ＣＰＵ（Ａ）１１によるファームウェア書き換え動作を示す流れ図である。
【０１１１】
ＣＰＵ（Ａ）１１は、ファームウェア書き換えプログラムを実行し、プログラムに基づいてファームウェアの書き換え処理を行う（ステップＳ４０１）。ここでは、ＲＯＭ１３に格納されているファームウェアを、複合機１０内のハードディスク装置１６または外部記憶装置から取得した書き換え用のファームウェアで上書きする。
【０１１２】
ＣＰＵ（Ａ）１１は、ファームウェアの書き換えを完了すると、ＣＰＵ（Ｂ）１２にファームウェア書き換え完了を通知する（ステップＳ４０２／Ｅｎｄ）。
【０１１３】
このように、本実施形態に係る複合機１０は、ＣＰＵ（Ａ）１１（メインＣＰＵ）による起動処理でブートエラーとなり、ＣＰＵ（Ａ）１１自身がそのブートエラーの診断や修復を行えない状態（ブートプログラムの暴走状態など）になっても、ＣＰＵ（Ｂ）１２（サブＣＰＵ）によって、ハードウェアチェックプログラムやブートプログラム書き換えプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定し、ＣＰＵ（Ａ）１１を再起動させて、ＣＰＵ（Ａ）１１にそのプログラムを実行させることができる。また、ＣＰＵ（Ａ）１１によるファームウェアの実行中（通常動作中）にシステムエラーとなった場合も、ＣＰＵ（Ｂ）１２によって、ハードウェアチェックプログラムやファームウェア書き換えプログラムを再起動後のＣＰＵ（Ａ）１１が実行するように設定し、ＣＰＵ（Ａ）１１を再起動させて、ＣＰＵ（Ａ）１１にそのプログラムを実行させることができる。これにより、複合機１０はブートエラーやシステムエラーなどの動作の異常に自己対処することができる。
【０１１４】
またＣＰＵ（Ｂ）１２は、ＣＰＵ（Ａ）１１にハードウェアチェックプログラムを実行させた場合は、ＣＰＵ（Ａ）１１からのハードウェアチェック結果の通知（非通知を含む）に応じた対処動作を行う。ハードウェア正常の通知を受けた場合には、ＣＰＵ（Ａ）１１に実行させるプログラム（ブートプログラム書き換えプログラム／ファームウェア書き換えプログラム）を決定し、そのプログラムを再起動後のＣＰＵ（Ａ）１１に実行させる。これにより、複合機１０はＣＰＵ（Ａ）１１による動作の異常を自己診断し、診断結果に応じて自己対処できる。
【０１１５】
また、ＣＰＵ（Ａ）１１にブートプログラム書き換えプログラムを実行させた場合は、ブートプログラムを書き換えて自己修復し、ブートエラーから自己回復することができる。ＣＰＵ（Ａ）１１にファームウェア書き換えプログラムを実行させた場合は、ファームウェアを書き換えて自己修復し、システムエラーから自己回復することができる。
【０１１６】
また、ＣＰＵ（Ａ）１１は起動完了後にファームウェアを実行すると、ファームウェアに含まれているシステムエラーチェックプログラムを実行してシステムチェックを行い、システムエラー（ＣＰＵ（Ａ）１１による動作の異常）を検出するとＣＰＵ（Ｂ）１２に通知する。これにより、ＣＰＵ（Ｂ）１２がシステムチェックを行う場合に比べて、ＣＰＵ（Ｂ）１２の処理負荷が軽減され、ＣＰＵ（Ａ）１１よりもＣＰＵ（Ｂ）１２の処理能力が低い場合に、装置全体のパフォーマンス低下が抑えられる。
【０１１７】
また、ＣＰＵ（Ａ）１１によるＣＰＵ（Ｂ）１２への通知は共有メモリ２５を介して行うことで、ＣＰＵ（Ａ）１１とＣＰＵ（Ｂ）１２が個別に動作し、個々の任意のタイミングに共有メモリ２５にアクセスして通知（通信）を行うことができる。
【０１１８】
以上、本発明の実施形態を図面によって説明してきたが、具体的な構成は実施形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【０１１９】
たとえば、ＣＰＵ（Ａ）１１による動作の異常（ブートエラー／システムエラー（ハードウェア異常／ファームウェア異常））を検出した場合に実行するプログラムの順番は、実施形態で説明した順番に限らない。たとえば、ブートエラーを検出した場合には、先にブートプログラム書き換えプログラムを実行する。ブートプログラムの書き換えを行ってもブートエラーが解消されなければ、ハードウェアチェックプログラムを実行するようにしてもよい。また、システムエラーを検出した場合には、先にファームウェア書き換えプログラムを実行する。ファームウェアの書き換えを行ってもシステムエラーが解消されなければ、ハードウェアチェックプログラムを実行するようにしてもよい。
【０１２０】
また、ＣＰＵ（Ｂ）１２がＣＰＵ（Ａ）１１による動作の異常を検出した場合にサービスセンターの通知する情報は、実施形態で説明したものに限らない。たとえば、ＣＰＵ（Ｂ）１２がＣＰＵ（Ａ）１１にブートプログラム書き換えプログラムを実行させる場合、ＣＰＵ（Ａ）１１によってブートプログラムの書き換えが実際に行われた場合、ＣＰＵ（Ｂ）１２がＣＰＵ（Ａ）１１にファームウェア書き換えプログラムを実行させる場合、ＣＰＵ（Ａ）１１によってファームウェアの書き換えが実際に行われた場合などに、ＣＰＵ（Ｂ）１２がその情報をサービスセンターに通知するようにしてもよい。
【０１２１】
また、ＣＰＵ（Ｂ）１２がサービスセンターに電子メールなどで通知する他に、ＣＰＵ（Ｂ）１２が複合機１０の表示部１７にサービスセンターの連絡先などを表示し、ユーザや管理者がサービスセンターに複合機１０の異常を通知できるようにしてもよい。
【０１２２】
また、本発明は実施形態で説明した複合機に限らず、複写機、プリンタ機、ファクシミリ機などの他の画像形成装置も対象にすることができる。
【符号の説明】
【０１２３】
１０…複合機
１１…ＣＰＵ（Ａ）
１２…ＣＰＵ（Ｂ）
１３…ＲＯＭ
１４…ＲＡＭ
１５…不揮発メモリ
１６…ハードディスク装置
１７…表示部
１８…操作部
１９…ファクシミリ通信部
２０…ネットワーク通信部
２１…画像処理部
２２…スキャナ部
２３…プリンタ部
２４…バス
２５…共有メモリ
【図１】
0005447112.tif 000002
【図２】
0005447112.tif 000003
【図３】
0005447112.tif 000004
【図４】
0005447112.tif 000005
【図５】
0005447112.tif 000006
【図６】
0005447112.tif 000007
【図７】
0005447112.tif 000008
【図８】
0005447112.tif 000009
【図９】
0005447112.tif 000010