(57)【特許請求の範囲】
【請求項１】
プログラムを実行するＣＰＵと前記プログラムを記憶するメモリとデータを送受信する通信部とを備える複数のＣＰＵユニットが互いに通信可能に接続された情報処理装置であって、
複数のＣＰＵユニットが備える各ＣＰＵが実行するプログラムをデバッグし、前記プログラムの実行中における前記ＣＰＵユニットの状態をユーザに通知するためのデバッグ機能を有する第１のＣＰＵユニットと、
前記デバッグ機能を有しない第２のＣＰＵユニットとを備え、
前記第２のＣＰＵユニットの通信部は、前記第１のＣＰＵユニットによって送信された開始指示信号を受信する開始指示信号受信手段を備え、
前記第２のＣＰＵユニットのＣＰＵは、前記開始指示信号受信手段によって前記開始指示信号が受信された場合、前記第２のＣＰＵユニットのメモリに記憶されているプログラムを実行し、当該プログラムに含まれる所定のメッセージを出力するための出力関数を実行することで、前記メッセージを前記プログラムの実行中における前記第２のＣＰＵユニットの状態を表すデータとして前記プログラムから抽出する抽出手段を備え、
前記第２のＣＰＵユニットの通信部は、前記抽出手段によって抽出されたデータを前記第１のＣＰＵユニットへ送信するデータ送信手段をさらに備え、
前記第１のＣＰＵユニットの通信部は、前記データ送信手段によって送信されたデータを受信するデータ受信手段を備え、
前記第１のＣＰＵユニットのＣＰＵは、前記データ受信手段によって受信されたデータを外部装置が有する表示装置に表示するための指示を前記外部装置に対して行うことにより、デバッグ機能を実行する実行手段を備え、
前記第２のＣＰＵユニットのメモリは、前記抽出手段によって抽出されたデータを記憶する記憶手段を備え、
前記第２のＣＰＵユニットのＣＰＵは、前記記憶手段にデータが記憶されたか否かを判断する判断手段をさらに備え、
前記第２のＣＰＵユニットの通信部は、前記判断手段によって前記記憶手段にデータが記憶されたと判断された場合、前記第１のＣＰＵユニットへ割り込み信号を送信する割り込み信号送信手段をさらに備え、
前記第１のＣＰＵユニットの通信部は、前記割り込み信号送信手段によって送信された割り込み信号を受信する割り込み信号受信手段と、前記割り込み信号受信手段によって割り込み信号が受信された場合、データを要求するためのデータ要求信号を前記第２のＣＰＵユニットへ送信するデータ要求信号送信手段とをさらに備え、
前記第２のＣＰＵユニットの通信部は、前記データ要求信号送信手段によって送信されたデータ要求信号を受信するデータ要求信号受信手段をさらに備え、
前記第２のＣＰＵユニットのＣＰＵは、前記データ要求信号受信手段によってデータ要求信号が受信された場合、前記記憶手段に記憶されているデータを読み出す読出手段をさらに備え、
前記データ送信手段は、前記読出手段によって読み出されたデータを前記第１のＣＰＵユニットへ送信し、
前記第１のＣＰＵユニットの通信部は、コマンドを前記第１のＣＰＵユニットへ送信すると共に、前記コマンドの実行結果を前記表示装置に表示する前記外部装置によって送信されるコマンドを受信するコマンド受信手段をさらに備え、
前記コマンドは、第１のＣＰＵユニット及び第２のＣＰＵユニットのうちのいずれをデバッグするかを指定する情報を含み、
前記第１のＣＰＵユニットのＣＰＵは、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、前記データ要求信号送信手段によるデータ要求信号を送信しないよう設定する第１の設定手段をさらに備え、
前記実行手段は、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、前記コマンドに応じて前記第１のＣＰＵユニットのメモリに記憶されているプログラムを実行し、前記プログラムの実行中における前記第１のＣＰＵユニットの状態を表すデータを前記表示装置に表示するための指示を前記外部装置に対して行うことを特徴とする情報処理装置。
【請求項２】
プログラムを実行するＣＰＵと前記プログラムを記憶するメモリとデータを送受信する通信部とを備える複数のＣＰＵユニットが互いに通信可能に接続された情報処理装置であって、
複数のＣＰＵユニットが備える各ＣＰＵが実行するプログラムをデバッグし、前記プログラムの実行中における前記ＣＰＵユニットの状態をユーザに通知するためのデバッグ機能を有する第１のＣＰＵユニットと、
前記デバッグ機能を有しない第２のＣＰＵユニットとを備え、
前記第２のＣＰＵユニットの通信部は、前記第１のＣＰＵユニットによって送信された開始指示信号を受信する開始指示信号受信手段を備え、
前記第２のＣＰＵユニットのＣＰＵは、前記開始指示信号受信手段によって前記開始指示信号が受信された場合、前記第２のＣＰＵユニットのメモリに記憶されているプログラムを実行し、当該プログラムに含まれる所定のメッセージを出力するための出力関数を実行することで、前記メッセージを前記プログラムの実行中における前記第２のＣＰＵユニットの状態を表すデータとして前記プログラムから抽出する抽出手段を備え、
前記第２のＣＰＵユニットの通信部は、前記抽出手段によって抽出されたデータを前記第１のＣＰＵユニットへ送信するデータ送信手段をさらに備え、
前記第１のＣＰＵユニットの通信部は、前記データ送信手段によって送信されたデータを受信するデータ受信手段を備え、
前記第１のＣＰＵユニットのＣＰＵは、前記データ受信手段によって受信されたデータを外部装置が有する表示装置に表示するための指示を前記外部装置に対して行うことにより、デバッグ機能を実行する実行手段を備え、
前記第２のＣＰＵユニットのメモリは、前記抽出手段によって抽出されたデータを記憶する記憶手段を備え、
前記第２のＣＰＵユニットのＣＰＵは、前記記憶手段にデータが記憶されたか否かを判断する判断手段をさらに備え、
前記第２のＣＰＵユニットの通信部は、前記判断手段によって前記記憶手段にデータが記憶されたと判断された場合、前記第１のＣＰＵユニットへ割り込み信号を送信する割り込み信号送信手段をさらに備え、
前記第１のＣＰＵユニットの通信部は、前記割り込み信号送信手段によって送信された割り込み信号を受信する割り込み信号受信手段と、前記割り込み信号受信手段によって割り込み信号が受信された場合、データを要求するためのデータ要求信号を前記第２のＣＰＵユニットへ送信するデータ要求信号送信手段とをさらに備え、
前記第２のＣＰＵユニットの通信部は、前記データ要求信号送信手段によって送信されたデータ要求信号を受信するデータ要求信号受信手段をさらに備え、
前記第２のＣＰＵユニットのＣＰＵは、前記データ要求信号受信手段によってデータ要求信号が受信された場合、前記記憶手段に記憶されているデータを読み出す読出手段をさらに備え、
前記データ送信手段は、前記読出手段によって読み出されたデータを前記第１のＣＰＵユニットへ送信し、
前記第１のＣＰＵユニットの通信部は、コマンドを前記第１のＣＰＵユニットへ送信すると共に、前記コマンドの実行結果を前記表示装置に表示する前記外部装置によって送信されるコマンドを受信するコマンド受信手段をさらに備え、
前記コマンドは、第１のＣＰＵユニット及び第２のＣＰＵユニットのうちのいずれをデバッグするかを指定する情報を含み、
前記第１のＣＰＵユニットのＣＰＵは、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、第２のＣＰＵユニットが割り込み信号を送信しないように設定するための設定信号を出力する設定信号出力手段をさらに備え、
前記第１のＣＰＵユニットの通信部は、前記設定信号出力手段によって出力された前記設定信号を第２のＣＰＵユニットへ送信する設定信号送信手段をさらに備え、
前記第２のＣＰＵユニットの通信部は、前記設定信号送信手段によって送信された前記設定信号を受信する設定信号受信手段をさらに備え、
前記第２のＣＰＵユニットのＣＰＵは、前記設定信号受信手段によって前記設定信号が受信された場合、前記割り込み信号送信手段による割り込み信号を送信しないよう設定する第２の設定手段をさらに備え、
前記実行手段は、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、前記コマンドに応じて前記第１のＣＰＵユニットのメモリに記憶されているプログラムを実行し、前記プログラムの実行中における前記第１のＣＰＵユニットの状態を表すデータを前記表示装置に表示するための指示を前記外部装置に対して行うことを特徴とする情報処理装置。
【請求項３】
前記情報処理装置は、画像を形成する画像形成装置であり、
前記第１のＣＰＵユニットは、前記画像形成装置全体を制御する制御部を含み、
前記第２のＣＰＵユニットは、前記画像形成装置が内蔵する駆動源を制御するエンジン制御部を含むことを特徴とする請求項１又は２記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行するＣＰＵと前記プログラムを記憶するメモリとを備える複数のＣＰＵユニットが互いに通信可能に接続された情報処理装置に関するものである。
【背景技術】
【０００２】
既に広く利用されているプリンタ装置、複写機、ファクシミリ装置などの情報処理装置等において、装置を制御するために複数のＣＰＵを協調動作させることは近年多く行われている。これらのＣＰＵは通常、バス又はシリアルインターフェースにより接続される。これらの各ＣＰＵ上で動作するファームウェアをデバッグするには、一般に各ＣＰＵにデバッグ用のハードウェア資源が搭載される。これには例えば各ＣＰＵにオンチップデバッグ機能を有するものを使用したり、各ＣＰＵにデバッグ用の装置であるＩＣＥ（インサーキットエミュレータ）を接続するためのソケットを備えることが一般的である。また、各ＣＰＵに外部装置との通信手段を設けることも行われている。
【０００３】
また、ＣＰＵから読み書き可能なメモリをＣＰＵ毎に設け、そのメモリ間のデータ転送をＤＭＡ（ダイレクトメモリアクセス）により行い、一方のＣＰＵが制御する制御部から他方のＣＰＵが制御する制御部を監視する方法も提案されている。
【０００４】
例えば、特許文献１には、読み出し書き込み両用の第１のメモリ、この第１のメモリ内のデータにもとづいて制御対象を制御する制御部、及び監視用の第１の通信部を含むコントローラユニットと、読み出し書き込み両用の第２のメモリ、この第２のメモリ内のデータを監視する監視部、及び監視用の第２の通信部を含む監視用ユニットと、コントローラユニットに設けたダイレクトメモリアクセス部とを有するコントローラユニットの監視装置が提案されている。このコントローラユニットの監視装置は、コントローラユニットの第１のメモリ内のデータをダイレクトメモリアクセス部により第１の通信部に転送すると共に、当該データを第１の通信部から第２の通信部へ、更に監視用ユニットの第２のメモリに転送し、この転送されたデータに基づいて監視部にて第１のメモリ内のデータの時間的変化を監視し、この監視結果にもとづいて第２のメモリのデータを更新し、この更新されたデータを第２の通信部から第１の通信部に転送し、更にダイレクトメモリアクセス部により第１の通信部から第１のメモリに転送している。
【０００５】
また、上述のようにデバッグ機能を各ＣＰＵに設ける場合、デバッグ用のハードウェア資源が必要となるため、そのハードウェア資源は確実にコストに反映され特にローエンドを対象とした情報処理装置ではこのコスト増加は容認されないものである。そこで、複数のＣＰＵのうち第１のＣＰＵにはデバッグ機能を設け、第２のＣＰＵにはデバッグ機能を設けないことが考えられる。この場合、第２のＣＰＵのファームウェアをデバッグするデバッグ手段はＩＣＥに限られるが、ＩＣＥを使用するために高価なソケットを用意する必要があり、複数枚の量産基板毎にソケットを装備することはコストの面で困難であった。このようなデバッグ手段を装備していない場合は設計時、製造時、ユーザ使用時に不具合が発生してもその真の原因を突き止めるために多くの時間を費やしてしまい、メーカ、ユーザ双方にとって著しく不利となる問題点があった。
【０００６】
そこで、デバッグ機能を有する第１のＣＰＵと、デバッグ機能を有しない第２のＣＰＵとからなる複数のＣＰＵで構成され、第１のＣＰＵと第２のＣＰＵとは通信にて協調動作する情報処理装置において、通信プロトコルに第２のＣＰＵをデバッグする通信プロトコルを内包し、第１のＣＰＵのデバッグ機能を利用して第２のＣＰＵをデバッグするリモートデバッグ方法が提案されている。
【０００７】
また、上記のハード構成の情報処理装置において、デバッグ機能を有しない第２のＣＰＵをデバッグする通信プロトコルに、第２のＣＰＵ上で動作するファームウェアのサブルーチンを直接実行する情報を通信プロトコルに内包するリモートデバッグ方法が提案されている。
【特許文献１】特許第３０２７０６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記のリモートデバッグ方法では、第２のＣＰＵのファームウェアに不具合が発生した後のＲＡＭの内容等を、第１のＣＰＵのデバッグ機能を用いて取得し、確認するに過ぎなかった。そのため、ソフトウェアのデバッグとして最も有効と考えられる状態遷移を伴う状態の自動表示の機能を有しておらず、デバッグ機能を有していないＣＰＵの不具合が発生した瞬間の状態を捉えることが困難であった。
【０００９】
本発明は、上記の問題を解決するためになされたもので、デバッグ機能を有していないＣＰＵの不具合が発生した瞬間の状態を捉えることができる情報処理装置を提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、プログラムを実行するＣＰＵと前記プログラムを記憶するメモリとデータを送受信する通信部とを備える複数のＣＰＵユニットが互いに通信可能に接続された情報処理装置であって、複数のＣＰＵユニットが備える各ＣＰＵが実行するプログラムをデバッグし、前記プログラムの実行中における前記ＣＰＵユニットの状態をユーザに通知するためのデバッグ機能を有する第１のＣＰＵユニットと、前記デバッグ機能を有しない第２のＣＰＵユニットとを備え、前記第２のＣＰＵユニットの通信部は、前記第１のＣＰＵユニットによって送信された開始指示信号を受信する開始指示信号受信手段を備え、前記第２のＣＰＵユニットのＣＰＵは、前記開始指示信号受信手段によって前記開始指示信号が受信された場合、前記第２のＣＰＵユニットのメモリに記憶されているプログラムを実行し、当該プログラムに含まれる所定のメッセージを出力するための出力関数を実行することで、前記メッセージを前記プログラムの実行中における前記第２のＣＰＵユニットの状態を表すデータとして前記プログラムから抽出する抽出手段を備え、前記第２のＣＰＵユニットの通信部は、前記抽出手段によって抽出されたデータを前記第１のＣＰＵユニットへ送信するデータ送信手段をさらに備え、前記第１のＣＰＵユニットの通信部は、前記データ送信手段によって送信されたデータを受信するデータ受信手段を備え、前記第１のＣＰＵユニットのＣＰＵは、前記データ受信手段によって受信されたデータを外部装置が有する表示装置に表示するための指示を前記外部装置に対して行うことにより、デバッグ機能を実行する実行手段を備え、前記第２のＣＰＵユニットのメモリは、前記抽出手段によって抽出されたデータを記憶する記憶手段を備え、前記第２のＣＰＵユニットのＣＰＵは、前記記憶手段にデータが記憶されたか否かを判断する判断手段をさらに備え、前記第２のＣＰＵユニットの通信部は、前記判断手段によって前記記憶手段にデータが記憶されたと判断された場合、前記第１のＣＰＵユニットへ割り込み信号を送信する割り込み信号送信手段をさらに備え、前記第１のＣＰＵユニットの通信部は、前記割り込み信号送信手段によって送信された割り込み信号を受信する割り込み信号受信手段と、前記割り込み信号受信手段によって割り込み信号が受信された場合、データを要求するためのデータ要求信号を前記第２のＣＰＵユニットへ送信するデータ要求信号送信手段とをさらに備え、前記第２のＣＰＵユニットの通信部は、前記データ要求信号送信手段によって送信されたデータ要求信号を受信するデータ要求信号受信手段をさらに備え、前記第２のＣＰＵユニットのＣＰＵは、前記データ要求信号受信手段によってデータ要求信号が受信された場合、前記記憶手段に記憶されているデータを読み出す読出手段をさらに備え、前記データ送信手段は、前記読出手段によって読み出されたデータを前記第１のＣＰＵユニットへ送信し、前記第１のＣＰＵユニットの通信部は、コマンドを前記第１のＣＰＵユニットへ送信すると共に、前記コマンドの実行結果を前記表示装置に表示する前記外部装置によって送信されるコマンドを受信するコマンド受信手段をさらに備え、前記コマンドは、第１のＣＰＵユニット及び第２のＣＰＵユニットのうちのいずれをデバッグするかを指定する情報を含み、前記第１のＣＰＵユニットのＣＰＵは、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、前記データ要求信号送信手段によるデータ要求信号を送信しないよう設定する第１の設定手段をさらに備え、前記実行手段は、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、前記コマンドに応じて前記第１のＣＰＵユニットのメモリに記憶されているプログラムを実行し、前記プログラムの実行中における前記第１のＣＰＵユニットの状態を表すデータを前記表示装置に表示するための指示を前記外部装置に対して行う。
【００１１】
この構成によれば、情報処理装置は、複数のＣＰＵユニットが備える各ＣＰＵが実行するプログラムをデバッグし、プログラムの実行中におけるＣＰＵユニットの状態をユーザに通知するためのデバッグ機能を有する第１のＣＰＵユニットと、デバッグ機能を有しない第２のＣＰＵユニットとを備えている。そして、第２のＣＰＵユニットにおいて、第１のＣＰＵユニットによって送信された開始指示信号が受信された場合、第２のＣＰＵユニットのメモリに記憶されているプログラムが実行され、当該プログラムに含まれる所定のメッセージを出力するための出力関数が実行されることで、メッセージがプログラムの実行中における第２のＣＰＵユニットの状態を表すデータとしてプログラムから抽出され、抽出されたデータが第１のＣＰＵユニットへ送信される。第１のＣＰＵユニットにおいて、第２のＣＰＵユニットから送信されたデータが受信され、受信されたデータを外部装置が有する表示装置に表示するための指示を外部装置に対して行うことにより、デバッグ機能が実行される。そして、第２のＣＰＵユニットにおいて、抽出されたデータが記憶手段に記憶され、記憶手段にデータが記憶されたか否かが判断され、記憶手段にデータが記憶されたと判断された場合、第１のＣＰＵユニットへ割り込み信号が送信される。第１のＣＰＵユニットにおいて、第２のＣＰＵユニットから送信された割り込み信号が受信された場合、データを要求するためのデータ要求信号が第２のＣＰＵユニットへ送信される。第２のＣＰＵユニットにおいて、第１のＣＰＵユニットから送信されたデータ要求信号が受信された場合、記憶手段に記憶されているデータが読み出され、読み出されたデータが第１のＣＰＵユニットへ送信される。
【００１２】
また、第１のＣＰＵユニットにおいて、外部装置によって送信されるコマンドが受信される。このコマンドには、第１のＣＰＵユニット及び第２のＣＰＵユニットのうちのいずれをデバッグするかを指定する情報が含まれる。第１のＣＰＵユニットにおいて、コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、データ要求信号送信手段によるデータ要求信号を送信しないよう設定される。そして、第１のＣＰＵユニットにおいて、コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、コマンドに応じて第１のＣＰＵユニットのメモリに記憶されているプログラムが実行され、プログラムの実行中における第１のＣＰＵユニットの状態を表すデータを表示装置に表示するための指示が外部装置に対して行われる。
【００１３】
したがって、デバッグ機能を有しない第２のＣＰＵユニットにおいてデバッグに用いるデータが自動的に抽出され、第１のＣＰＵユニットへ送信されるので、デバッグ機能を有していないＣＰＵの不具合が発生した瞬間の状態を捉えることができる。
【００１４】
また、第２のＣＰＵユニットのメモリに記憶されているプログラムが実行され、当該プログラムに含まれる所定のメッセージを出力するための出力関数が実行されることで、メッセージがプログラムの実行中における第２のＣＰＵユニットの状態を表すデータとしてプログラムから抽出されるので、予めプログラムに記述されている出力関数を実行することにより、容易にデバッグに用いるデータを抽出することができる。
【００１５】
また、デバッグ用のデータが記憶手段に記憶された場合、第２のＣＰＵユニットから第１のＣＰＵユニットへ割り込み信号が送信されるので、第１のＣＰＵユニットは常に第２のＣＰＵユニットを監視する必要がなく、第２のＣＰＵユニットにおいてデバッグ用のデータが抽出された場合にのみ第２のＣＰＵユニットをデバッグすることができる。
【００１６】
また、第１のＣＰＵユニットをデバッグする場合、第２のＣＰＵユニットからの割り込み信号を受信したとしてもデータ要求信号が送信されず、第２のＣＰＵユニットからデバッグ用のデータが送信されないので、第１のＣＰＵユニットにおけるデバッグ用のデータと第２のＣＰＵユニットにおけるデバッグ用のデータとが同時に出力されることがなくなり、第１のＣＰＵユニットのみをデバッグすることができる。
【００１７】
本発明に係る情報処理装置は、プログラムを実行するＣＰＵと前記プログラムを記憶するメモリとデータを送受信する通信部とを備える複数のＣＰＵユニットが互いに通信可能に接続された情報処理装置であって、複数のＣＰＵユニットが備える各ＣＰＵが実行するプログラムをデバッグし、前記プログラムの実行中における前記ＣＰＵユニットの状態をユーザに通知するためのデバッグ機能を有する第１のＣＰＵユニットと、前記デバッグ機能を有しない第２のＣＰＵユニットとを備え、前記第２のＣＰＵユニットの通信部は、前記第１のＣＰＵユニットによって送信された開始指示信号を受信する開始指示信号受信手段を備え、前記第２のＣＰＵユニットのＣＰＵは、前記開始指示信号受信手段によって前記開始指示信号が受信された場合、前記第２のＣＰＵユニットのメモリに記憶されているプログラムを実行し、当該プログラムに含まれる所定のメッセージを出力するための出力関数を実行することで、前記メッセージを前記プログラムの実行中における前記第２のＣＰＵユニットの状態を表すデータとして前記プログラムから抽出する抽出手段を備え、前記第２のＣＰＵユニットの通信部は、前記抽出手段によって抽出されたデータを前記第１のＣＰＵユニットへ送信するデータ送信手段をさらに備え、前記第１のＣＰＵユニットの通信部は、前記データ送信手段によって送信されたデータを受信するデータ受信手段を備え、前記第１のＣＰＵユニットのＣＰＵは、前記データ受信手段によって受信されたデータを外部装置が有する表示装置に表示するための指示を前記外部装置に対して行うことにより、デバッグ機能を実行する実行手段を備え、前記第２のＣＰＵユニットのメモリは、前記抽出手段によって抽出されたデータを記憶する記憶手段を備え、前記第２のＣＰＵユニットのＣＰＵは、前記記憶手段にデータが記憶されたか否かを判断する判断手段をさらに備え、前記第２のＣＰＵユニットの通信部は、前記判断手段によって前記記憶手段にデータが記憶されたと判断された場合、前記第１のＣＰＵユニットへ割り込み信号を送信する割り込み信号送信手段をさらに備え、前記第１のＣＰＵユニットの通信部は、前記割り込み信号送信手段によって送信された割り込み信号を受信する割り込み信号受信手段と、前記割り込み信号受信手段によって割り込み信号が受信された場合、データを要求するためのデータ要求信号を前記第２のＣＰＵユニットへ送信するデータ要求信号送信手段とをさらに備え、前記第２のＣＰＵユニットの通信部は、前記データ要求信号送信手段によって送信されたデータ要求信号を受信するデータ要求信号受信手段をさらに備え、前記第２のＣＰＵユニットのＣＰＵは、前記データ要求信号受信手段によってデータ要求信号が受信された場合、前記記憶手段に記憶されているデータを読み出す読出手段をさらに備え、前記データ送信手段は、前記読出手段によって読み出されたデータを前記第１のＣＰＵユニットへ送信し、前記第１のＣＰＵユニットの通信部は、コマンドを前記第１のＣＰＵユニットへ送信すると共に、前記コマンドの実行結果を前記表示装置に表示する前記外部装置によって送信されるコマンドを受信するコマンド受信手段をさらに備え、前記コマンドは、第１のＣＰＵユニット及び第２のＣＰＵユニットのうちのいずれをデバッグするかを指定する情報を含み、前記第１のＣＰＵユニットのＣＰＵは、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、第２のＣＰＵユニットが割り込み信号を送信しないように設定するための設定信号を出力する設定信号出力手段をさらに備え、前記第１のＣＰＵユニットの通信部は、前記設定信号出力手段によって出力された前記設定信号を第２のＣＰＵユニットへ送信する設定信号送信手段をさらに備え、前記第２のＣＰＵユニットの通信部は、前記設定信号送信手段によって送信された前記設定信号を受信する設定信号受信手段をさらに備え、前記第２のＣＰＵユニットのＣＰＵは、前記設定信号受信手段によって前記設定信号が受信された場合、前記割り込み信号送信手段による割り込み信号を送信しないよう設定する第２の設定手段をさらに備え、前記実行手段は、前記コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、前記コマンドに応じて前記第１のＣＰＵユニットのメモリに記憶されているプログラムを実行し、前記プログラムの実行中における前記第１のＣＰＵユニットの状態を表すデータを前記表示装置に表示するための指示を前記外部装置に対して行うことが好ましい。
【００１８】
この構成によれば、情報処理装置は、複数のＣＰＵユニットが備える各ＣＰＵが実行するプログラムをデバッグし、プログラムの実行中におけるＣＰＵユニットの状態をユーザに通知するためのデバッグ機能を有する第１のＣＰＵユニットと、デバッグ機能を有しない第２のＣＰＵユニットとを備えている。そして、第２のＣＰＵユニットにおいて、第１のＣＰＵユニットによって送信された開始指示信号が受信された場合、第２のＣＰＵユニットのメモリに記憶されているプログラムが実行され、当該プログラムに含まれる所定のメッセージを出力するための出力関数が実行されることで、メッセージがプログラムの実行中における第２のＣＰＵユニットの状態を表すデータとしてプログラムから抽出され、抽出されたデータが第１のＣＰＵユニットへ送信される。第１のＣＰＵユニットにおいて、第２のＣＰＵユニットから送信されたデータが受信され、受信されたデータを外部装置が有する表示装置に表示するための指示を外部装置に対して行うことにより、デバッグ機能が実行される。そして、第２のＣＰＵユニットにおいて、抽出されたデータが記憶手段に記憶され、記憶手段にデータが記憶されたか否かが判断され、記憶手段にデータが記憶されたと判断された場合、第１のＣＰＵユニットへ割り込み信号が送信される。第１のＣＰＵユニットにおいて、第２のＣＰＵユニットから送信された割り込み信号が受信された場合、データを要求するためのデータ要求信号が第２のＣＰＵユニットへ送信される。第２のＣＰＵユニットにおいて、第１のＣＰＵユニットから送信されたデータ要求信号が受信された場合、記憶手段に記憶されているデータが読み出され、読み出されたデータが第１のＣＰＵユニットへ送信される。
【００１９】
また、第１のＣＰＵユニットにおいて、外部装置によって送信されるコマンドが受信される。このコマンドには、第１のＣＰＵユニット及び第２のＣＰＵユニットのうちのいずれをデバッグするかを指定する情報が含まれる。第１のＣＰＵユニットにおいて、コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、第２のＣＰＵユニットが割り込み信号を送信しないように設定するための設定信号が出力され、出力された設定信号が第２のＣＰＵユニットへ送信される。第２のＣＰＵユニットにおいて、第１のＣＰＵユニットによって送信された設定信号が受信された場合、割り込み信号送信手段による割り込み信号を送信しないよう設定される。そして、第１のＣＰＵユニットにおいて、コマンドに第１のＣＰＵユニットをデバッグする情報が含まれている場合、コマンドに応じて第１のＣＰＵユニットのメモリに記憶されているプログラムが実行され、プログラムの実行中における第１のＣＰＵユニットの状態を表すデータを表示装置に表示するための指示が外部装置に対して行われる。
【００２０】
したがって、デバッグ機能を有しない第２のＣＰＵユニットにおいてデバッグに用いるデータが自動的に抽出され、第１のＣＰＵユニットへ送信されるので、デバッグ機能を有していないＣＰＵの不具合が発生した瞬間の状態を捉えることができる。
【００２１】
また、第２のＣＰＵユニットのメモリに記憶されているプログラムが実行され、当該プログラムに含まれる所定のメッセージを出力するための出力関数が実行されることで、メッセージがプログラムの実行中における第２のＣＰＵユニットの状態を表すデータとしてプログラムから抽出されるので、予めプログラムに記述されている出力関数を実行することにより、容易にデバッグに用いるデータを抽出することができる。
【００２２】
また、デバッグ用のデータが記憶手段に記憶された場合、第２のＣＰＵユニットから第１のＣＰＵユニットへ割り込み信号が送信されるので、第１のＣＰＵユニットは常に第２のＣＰＵユニットを監視する必要がなく、第２のＣＰＵユニットにおいてデバッグ用のデータが抽出された場合にのみ第２のＣＰＵユニットをデバッグすることができる。
【００２３】
また、第１のＣＰＵユニットをデバッグする場合、第２のＣＰＵユニットから割り込み信号が送信されず、第２のＣＰＵユニットからデバッグ用のデータが送信されないので、第１のＣＰＵユニットにおけるデバッグ用のデータと第２のＣＰＵユニットにおけるデバッグ用のデータとが同時に出力されることがなくなり、第１のＣＰＵユニットのみをデバッグすることができる。
【００２４】
また、上記の情報処理装置において、前記情報処理装置は、画像を形成する画像形成装置であり、前記第１のＣＰＵユニットは、前記画像形成装置全体を制御する制御部を含み、前記第２のＣＰＵユニットは、前記画像形成装置が内蔵する駆動源を制御するエンジン制御部を含むことが好ましい。
【００２５】
この構成によれば、画像形成装置が内蔵する駆動源を制御するエンジン制御部のように装置内部に組み込まれており、外部装置を接続して直接デバッグすることが困難なＣＰＵユニットであっても、外部装置を接続することが容易な画像形成装置全体を制御する制御部を介してデバッグすることができる。
【発明の効果】
【００２６】
本発明によれば、デバッグ機能を有しない第２のＣＰＵユニットにおいてデバッグに用いるデータが自動的に抽出され、第１のＣＰＵユニットへ送信されるので、デバッグ機能を有していないＣＰＵの不具合が発生した瞬間の状態を捉えることができる。
【００２７】
また、第２のＣＰＵユニットのメモリに記憶されているプログラムが実行され、当該プログラムに含まれる所定のメッセージを出力するための出力関数が実行されることで、メッセージがプログラムの実行中における第２のＣＰＵユニットの状態を表すデータとしてプログラムから抽出されるので、予めプログラムに記述されている出力関数を実行することにより、容易にデバッグに用いるデータを抽出することができる。
【００２８】
また、デバッグ用のデータが記憶手段に記憶された場合、第２のＣＰＵユニットから第１のＣＰＵユニットへ割り込み信号が送信されるので、第１のＣＰＵユニットは常に第２のＣＰＵユニットを監視する必要がなく、第２のＣＰＵユニットにおいてデバッグ用のデータが抽出された場合にのみ第２のＣＰＵユニットをデバッグすることができる。
【００２９】
また、第１のＣＰＵユニットをデバッグする場合、第２のＣＰＵユニットからの割り込み信号を受信したとしてもデータ要求信号が送信されず、第２のＣＰＵユニットからデバッグ用のデータが送信されないので、第１のＣＰＵユニットにおけるデバッグ用のデータと第２のＣＰＵユニットにおけるデバッグ用のデータとが同時に出力されることがなくなり、第１のＣＰＵユニットのみをデバッグすることができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の一実施形態に係る情報処理装置について図面を参照しながら説明する。図１は、本発明に係る情報処理装置の一例である画像形成装置及びそれに接続されるＰＣ（パーソナルコンピュータ）のハードウェア構成の概要を示すブロック図である。画像形成装置１０は、例えばプリンタ、複写機及びファクシミリ装置等である。なお、本実施形態においては画像形成装置１０を情報処理装置の一例として説明するが、本発明は特にこれに限定されず、画像形成装置１０以外の情報処理装置等にも適用可能である。
【００３１】
画像形成装置１０は、通信により接続され協調して動作を行う２つのＣＰＵ（中央演算処理装置）１１，２１により制御される組み込み装置である。画像形成装置１０は、第１ＣＰＵユニット１及び第２ＣＰＵユニット２を備えて構成される。第１ＣＰＵユニット１は、ＣＰＵ１１、ＲＯＭ（リードオンリメモリ）１２、ＲＡＭ（ランダムアクセスメモリ）１３、操作パネル部１４、通信部１５及び通信部１６を備える。ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、操作パネル部１４、通信部１５及び通信部１６は、ローカルなバスにより接続される。第２ＣＰＵユニット２は、ＣＰＵ２１、通信部２２、ＲＯＭ２３及びＲＡＭ２４を備える。ＣＰＵ２１、通信部２２、ＲＯＭ２３及びＲＡＭ２４は、ローカルなバスにより接続される。
【００３２】
第１ＣＰＵユニット１及び第２ＣＰＵユニット２は通信部１５と通信部２２とを接続することにより通信可能に接続されている。これらの通信部１５，２２は、例えばシリアル通信インターフェースであり、シリアル通信により通信が行われる。これは例えばバスによる接続であってもよい。画像形成装置１０には第１及び第２ＣＰＵユニット１，２の他にこれらのＣＰＵユニット１，２に接続されＣＰＵ１１，２１によって制御され画像形成機能（例えばコピー機能）を実行する部品群があるがここでは図示せず、説明を省略する。
【００３３】
なお、情報処理装置が画像形成装置である場合、第１ＣＰＵユニット１は、例えば画像形成装置全体を制御するコントローラ（制御部）であり、第２ＣＰＵユニット２は、例えば第１ＣＰＵユニット１によって制御され、画像形成装置が内蔵するローラやクラッチ等を駆動するモータ（駆動源）等を制御するエンジン制御部である。この場合、画像形成装置が内蔵する駆動源を制御するエンジン制御部のように装置内部に組み込まれており、ＰＣを接続して直接デバッグすることが困難なＣＰＵユニットであっても、ＰＣを接続することが比較的容易な画像形成装置全体を制御する制御部を介してデバッグすることができる。また、第２ＣＰＵユニット２は、例えば第１ＣＰＵユニット１によって制御され、画像形成された用紙の後処理（ソート処理やステイプル処理等）を行う後処理装置であってもよい。
【００３４】
画像形成装置１０にはユーザがデバッグ機能を操作する端末としてＰＣ３が通信部１６を介して接続されている。ＰＣ３は主にＣＰＵ３１、通信部３２、ＲＡＭ３３、ＨＤＤ３４、表示装置３５及び入力装置３６により構成される。以下に第１及び第２ＣＰＵユニット１，２及びＰＣ３の各構成部の説明を行う。
【００３５】
ＣＰＵ１１は、ＲＯＭ１２に格納されたプログラムを実行しＣＰＵ２１と協調して画像形成装置１０を制御して画像形成等を行う。通信部１６は、ＰＣ３を接続するためのもので、例えばシリアル通信インターフェースである。ＲＯＭ１２は、ＣＰＵ１１で実行するプログラムを格納するためのメモリである。このプログラムは、画像形成装置１０を制御するファームウェアとデバッグ機能を与えるためのデバッガプログラムとを含む。ＲＡＭ１３は、ＣＰＵ１１に一時的な作業領域等を与えるためのメモリである。操作パネル部１４は、画像形成装置１０に対する操作指示をユーザが入力するためのもので例えば液晶ディスプレイ等の表示部とテンキー及びスタートキー等の操作キー部を有する。ＰＣ３の代わりに操作パネル部１４をデバッグ機能の操作に使用するようにしてもよい。通信部１５は、第２ＣＰＵユニット２の通信部２２と接続するためのものであり、ＣＰＵユニット１，２間でのプロセッサ間通信メッセージ等を送受信しＣＰＵ１１及びＣＰＵ２１が協調して動作を行うため等に使用される。通信部１６は、ＰＣ３の通信部３２と接続するための例えばシリアル通信インターフェースである。
【００３６】
ＣＰＵ２１は、ＲＯＭ２３に格納されたプログラムを実行しＣＰＵ１１と協調して画像形成装置１０を制御して画像形成等を行う。通信部２２は、通信部１５と接続するためのものでＣＰＵユニット１，２間でのプロセッサ間通信メッセージ等を送受信しＣＰＵ１１及びＣＰＵ２１が協調して動作を行うため等に使用される。ＲＯＭ２３は、ＣＰＵ２１で実行するプログラムを格納するためのメモリである。このプログラムは、第１ＣＰＵユニット１とは異なり、デバッガプログラムを含まず、ファームウェアのみを含む。ＲＡＭ２４は、ＣＰＵ２１に一時的な作業領域等を与えるためのメモリである。ＲＡＭ２４は、後述する送信バッファと変化ステータスバッファとを含む。
【００３７】
ＣＰＵ３１は、ＲＡＭ３３内のプログラムを実行する。通信部３２は、第１ＣＰＵユニット１の通信部１６と接続するための例えばシリアル通信インターフェースである。この通信インターフェースによりＰＣ３から第１ＣＰＵユニット１へのデバッグコマンドの送信及び逆経路でデバッグコマンドに対する返信が行われる。ＲＡＭ３３は、ＨＤＤ３４に格納されたプログラムのうちＣＰＵ３１で実行する部分を一時的に格納するための主記憶装置である。ＨＤＤ（ハードディスク駆動装置）３４は、ＣＰＵ３１で実行するプログラム等を格納する外部記憶装置である。表示装置３５は、例えば液晶表示装置等で構成され、ＰＣ３の表示用ユーザインターフェースとして使用されるものである。入力装置３６は、例えばキーボード及びマウスなどで構成され、ＰＣ３の入力用インターフェースとして使用されるものである。
【００３８】
ここで、第１ＣＰＵユニット１のＣＰＵ１１、第２ＣＰＵユニット２のＣＰＵ２１及びＰＣ３のＣＰＵ３１で実行されるプログラムについて説明する。ＣＰＵ３１で実行されるプログラムは、主にＰＣ側デバッガプログラム及びＯＳ（オペレーティングシステム）である。ＯＳは、ＰＣ３の基本ソフトウェアでＰＣ３にて実行するアプリケーションソフトウェア（ＰＣ側デバッガプログラムを含む）とＰＣ３のハードウェアとの仲介を行うソフトウェアである。ＰＣ側デバッガプログラムは、ＰＣ３で動作するアプリケーションソフトウェアであり、ユーザにより入力装置３６を使用して起動／終了され操作される。ユーザは、ＰＣ側デバッガプログラムの操作としてデバッグコマンド、及び第１ＣＰＵユニット１と第２ＣＰＵユニット２とのうちのいずれをデバッグするかを指定する。また、ユーザは、表示装置３５へ表示されたデバッグコマンドの実行結果を確認することが可能である。
【００３９】
ＣＰＵ１１で実行されるプログラムは、第１ＣＰＵユニット側ファームウェア及び第１ＣＰＵユニット側デバッガプログラムである。第１ＣＰＵユニット側ファームウェアは、画像形成装置１０、すなわち第１ＣＰＵユニット１及び第２ＣＰＵユニット２を制御するプログラムであり、デバッグ対象プログラム（デバッグされるプログラム）である。第１ＣＰＵユニット側デバッガプログラムは、ＣＰＵ１１が実行する第１ＣＰＵユニット側ファームウェア及びＣＰＵ２１が実行する第２ＣＰＵユニット側ファームウェアのデバッグのための処理を行うプログラムである。画像形成装置１０が起動された時点で第１ＣＰＵユニット側デバッガプログラムは起動される。第１ＣＰＵユニット側デバッガプログラムは必要に応じて第１ＣＰＵユニット側ファームウェアを起動する。
【００４０】
ＣＰＵ２１で実行されるプログラムは、第２ＣＰＵユニット側ファームウェアである。第２ＣＰＵユニット側ファームウェアは、第２ＣＰＵユニット２を制御するプログラムであり、デバッグ対象プログラムである。
【００４１】
ＰＣ側デバッガプログラムにおいてユーザが実行指示したデバッグコマンドはＯＳを介して第１ＣＰＵユニット側デバッガプログラムにデバッグコマンド送信文字列として送信される。受信したデバッグコマンドに対する返信は送信と逆の経路でＰＣ側デバッガプログラムに送られる。
【００４２】
第１ＣＰＵユニット側ファームウェアと第２ＣＰＵユニット側ファームウェア間のプロセッサ間通信におけるプロセッサ間通信メッセージの送受信は第１ＣＰＵユニット側デバッガプログラム及び第２ＣＰＵユニット側ファームウェアを介して行われる。第１ＣＰＵユニット側ファームウェアから第２ＣＰＵユニット側ファームウェアに対するプロセッサ間通信メッセージは所定の通信フレーム（通信において送受信されるデータの単位）を第１ＣＰＵユニット側デバッガプログラムから第２ＣＰＵユニット側ファームウェアに送られる。第２ＣＰＵユニット側ファームウェアから第１ＣＰＵユニット側ファームウェアへの通信フレームの送信は逆の経路となる。
【００４３】
プロセッサ間通信メッセージで使用する所定の通信フレーム（フォーマット）はデバッグコマンド及びその返信を第１ＣＰＵユニット側デバッガプログラム及び第２ＣＰＵユニット側ファームウェア間で送受信する場合にも使用される。
【００４４】
図２は、第１ＣＰＵユニット１及び第２ＣＰＵユニット２の機能構成を示すブロック図である。第１ＣＰＵユニット１は、ＣＰＵ１１、通信部１５及び通信部１６を備える。通信部１６はデバッグコマンド受信部１６１を備える。デバッグコマンド受信部１６１は、ＰＣ３によって送信されるデバッグコマンドを受信する。なお、デバッグコマンドには、第１ＣＰＵユニット１及び第２ＣＰＵユニット２のうちのいずれをデバッグするかを指定する情報が含まれる。また、デバッグコマンドには、ファームウェアに含まれる所定の関数の実行指示、メモリからのデータの読み出し指示、メモリへのデータの書き換え指示なども含まれる。
【００４５】
ＣＰＵ１１は、デバッグ設定部１１１及びデバッグ実行部１１２を備える。デバッグ設定部１１１は、デバッグコマンド受信部１６１によって受信されたデバッグコマンドを解析し、デバッグ対象が第１ＣＰＵユニット１及び第２ＣＰＵユニット２のいずれであるかを判断する。デバッグ設定部１１１は、デバッグ対象が第１ＣＰＵユニット１である場合、データ要求信号送信部１５３に対してデータ要求信号を送信しないよう設定する。また、デバッグ設定部１１１は、デバッグ対象が第２ＣＰＵユニット２である場合、開始指示信号を第２ＣＰＵユニット２へ送信するべく開始指示信号送信部１５１に指示する。
【００４６】
デバッグ実行部１１２は、デバッグ対象が第１ＣＰＵユニット１である場合、第１ＣＰＵユニット１に記憶されているファームウェアのデバッグを実行する。また、デバッグ実行部１１２は、デバッグ対象が第２ＣＰＵユニット２である場合、デバッグデータ受信部１５４によって受信されたデバッグデータを用いてデバッグを実行する。
【００４７】
通信部１５は、開始指示信号送信部１５１、割り込み信号受信部１５２、データ要求信号送信部１５３及びデバッグデータ受信部１５４を備える。開始指示信号送信部１５１は、デバッグ設定部１１１からの指示に基づき開始指示信号を第２ＣＰＵユニット２へ送信する。割り込み信号受信部１５２は、第２ＣＰＵユニット２によって送信された割り込み信号を受信する。データ要求信号送信部１５３は、割り込み信号受信部１５２によって割り込み信号が受信された場合、デバッグデータを要求するためのデータ要求信号を第２ＣＰＵユニット２へ送信する。デバッグデータ受信部１５４は、第２ＣＰＵユニット２によって送信されたデバッグデータを受信する。
【００４８】
第２ＣＰＵユニット２は、ＣＰＵ２１、通信部２２及びＲＡＭ２４を備える。通信部２２は、開始指示信号受信部２２１、割り込み信号送信部２２２、データ要求信号受信部２２３及びデバッグデータ送信部２２４を備える。ＣＰＵ２１は、デバッグデータ抽出部２１１、判断部２１２及びデバッグデータ読出部２１３を備える。
【００４９】
開始指示信号受信部２２１は、第１ＣＰＵユニット１によって送信された開始指示信号を受信する。デバッグデータ抽出部２１１は、開始指示信号受信部２２１によって開始指示信号が受信された場合、第２ＣＰＵユニット２に記憶されているファームウェアを実行し、デバッグに用いるデバッグデータを抽出する。デバッグデータ抽出部２１１は、送信バッファ２４１及び変化ステータスバッファ２４２に格納されるデータ内容を監視し、抽出したデバッグデータを送信バッファ２４１へ出力するとともに、送信バッファ２４１から変化ステータスバッファ２４２へデバッグデータを出力する。
【００５０】
判断部２１２は、変化ステータスバッファ２４２にデバッグデータが記憶されたか否かを判断する。割り込み信号送信部２２２は、判断部２１２によって変化ステータスバッファ２４２にデバッグデータが記憶されたと判断された場合、第１ＣＰＵユニット１へ割り込み信号を送信する。データ要求信号受信部２２３は、第１ＣＰＵユニット１によって送信されたデータ要求信号を受信する。
【００５１】
デバッグデータ読出部２１３は、データ要求信号受信部２２３によってデータ要求信号が受信された場合、変化ステータスバッファ２４２からデバッグデータを読み出す。デバッグデータ送信部２２４は、デバッグデータ読出部２１３によって読み出されたデバッグデータを第１ＣＰＵユニット１へ送信する。
【００５２】
ＲＡＭ２４は、送信バッファ２４１及び変化ステータスバッファ２４２を備える。送信バッファ２４１は、デバッグデータ抽出部２１１によって抽出されたデバッグデータを記憶する。なお、送信バッファ２４１が記憶するデバッグデータは、例えば複数の文字で構成される。変化ステータスバッファ２４２は、第２ＣＰＵユニット２の状態変化情報を記憶するものであり、送信バッファ２４１から出力されたデバッグデータを記憶する。なお、送信バッファ２４１は、複数の文字を１文字ずつ順次変化ステータスバッファ２４２へ出力する。変化ステータスバッファ２４２が記憶するデバッグデータは、例えば複数の文字を１文字ずつ記憶する。
【００５３】
なお、変化ステータスバッファ２４２が記憶する第２ＣＰＵユニット２の状態変化情報とは、例えば第２ＣＰＵユニット２が後処理装置である場合、側面カバーが開いた状態であることを表す情報等である。つまり、状態変化情報とは、第２ＣＰＵユニット２の状態が変化した場合に、当該変化した状態を自発的に第１ＣＰＵユニット１へ通知するための情報である。
【００５４】
本実施の形態において、画像形成装置１０が情報処理装置の一例に相当し、第１ＣＰＵユニット１が第１のＣＰＵユニットの一例に相当し、第２ＣＰＵユニット２が第２のＣＰＵユニットの一例に相当し、デバッグデータ抽出部２１１が抽出手段の一例に相当し、デバッグデータ送信部２２４がデータ送信手段の一例に相当し、デバッグデータ受信部１５４がデータ受信手段の一例に相当し、デバッグ実行部１１２が実行手段の一例に相当する。
【００５５】
また、ＲＡＭ２４が記憶手段の一例に相当し、判断部２１２が判断手段の一例に相当し、割り込み信号送信部２２２が割り込み信号送信手段の一例に相当し、割り込み信号受信部１５２が割り込み信号受信手段の一例に相当し、データ要求信号送信部１５３がデータ要求信号送信手段の一例に相当し、データ要求信号受信部２２３がデータ要求信号受信手段の一例に相当し、デバッグデータ読出部２１３が読出手段の一例に相当する。さらに、デバッグコマンド受信部１６１がコマンド受信手段の一例に相当し、デバッグ設定部１１１が第１の設定手段の一例に相当する。
【００５６】
次に、第１ＣＰＵユニット１及び第２ＣＰＵユニット２によるデバッグ動作について説明する。図３は、図２に示す第１ＣＰＵユニット１及び第２ＣＰＵユニット２によるデバッグ動作について説明するためのフローチャートである。
【００５７】
まず、ＰＣ３の入力装置３６は、ユーザによるデバッグコマンドの入力を受け付ける。このとき、入力装置３６は、第１ＣＰＵユニット１及び第２ＣＰＵユニット２のうちのいずれのユニットのプログラムをデバッグするかを受け付ける。通信部３２は、入力装置３６によって受け付けられたデバッグコマンドを第１ＣＰＵユニット１へ送信する。そして、第１ＣＰＵユニット１のデバッグコマンド受信部１６１は、ＰＣ３によって送信されたデバッグコマンドを受信する（ステップＳ１）。デバッグコマンド受信部１６１は、受信したデバッグコマンドをデバッグ設定部１１１へ出力する。
【００５８】
次に、デバッグ設定部１１１は、デバッグコマンド受信部１６１によって受信されたデバッグコマンドを解析する（ステップＳ２）。デバッグコマンドを解析した結果、デバッグコマンドに第１ＣＰＵユニット１をデバッグする旨を表す情報が含まれている場合、デバッグ設定部１１１は、割り込み信号が受信されたとしてもデータ要求信号を送信しないようデータ要求信号送信部１５３を設定する（ステップＳ３）。また、デバッグコマンドを解析した結果、デバッグコマンドに第２ＣＰＵユニット２をデバッグする旨を表す情報が含まれている場合、デバッグ設定部１１１は、第２ＣＰＵユニット２をデバッグするべく開始指示信号を開始指示信号送信部１５１へ出力する。
【００５９】
次に、デバッグ設定部１１１は、第１ＣＰＵユニット１をデバッグするか否かを判断する（ステップＳ４）。ここで、第１ＣＰＵユニット１をデバッグすると判断された場合（ステップＳ４でＹＥＳ）、ステップＳ９の処理へ移行し、デバッグ実行部１１２は、ＲＯＭ１２に記憶されているファームウェアのデバッグを実行する。
【００６０】
一方、第１ＣＰＵユニット１をデバッグしない、すなわち第２ＣＰＵユニット２をデバッグすると判断された場合（ステップＳ４でＮＯ）、開始指示信号送信部１５１は、開始指示信号を第２ＣＰＵユニット２へ送信する（ステップＳ５）。
【００６１】
次に、第２ＣＰＵユニット２の開始指示信号受信部２２１は、第１ＣＰＵユニット１によって送信された開始指示信号を受信する（ステップＳ１１）。開始指示信号受信部２２１によって開始指示信号が受信されると、デバッグデータ抽出部２１１は、ＲＯＭ２３に記憶されているファームウェアを実行し、デバッグ用のデータ（デバッグデータ）を抽出し（ステップＳ１２）、抽出したデバッグデータを送信バッファ２４１へ出力する（ステップＳ１３）。なお、デバッグデータの抽出は、デバッグデータ抽出部２１１がファームウェアに含まれるデバッグデータを出力するための出力関数を実行することにより抽出される。この出力関数としては、例えばＣ言語の汎用出力関数であるｐｒｉｎｔｆ関数を用いる。
【００６２】
このように、プログラムの中からデバッグに用いるデータを出力するための出力関数が実行されることでデバッグに用いるデータが抽出されるので、予めプログラムに記述されている出力関数を実行することにより、容易にデバッグに用いるデータを抽出することができる。なお、本実施の形態では、Ｃ言語の汎用出力関数であるｐｒｉｎｔｆ関数を用いているが、本発明は特にこれに限定されず、他の言語の出力関数を用いてもよい。
【００６３】
次に、デバッグデータ抽出部２１１は、送信バッファ２４１の記憶内容を監視し、送信バッファ２４１にデバッグデータが格納されているか否かを判断する（ステップＳ１４）。ここで、送信バッファ２４１にデバッグデータが格納されていないと判断された場合（ステップＳ１４でＮＯ）、ステップＳ１２の処理へ戻り、デバッグデータを抽出する処理を実行する。
【００６４】
一方、送信バッファ２４１にデバッグデータが格納されていると判断された場合（ステップＳ１４でＹＥＳ）、デバッグデータ抽出部２１１は、送信バッファ２４１に記憶されているデバッグデータを変化ステータスバッファ２４２へ出力する（ステップＳ１５）。このとき、送信バッファ２４１に複数の文字で構成されるデバッグデータが記憶されている場合、デバッグデータ抽出部２１１は、先頭の文字から順番に１文字ずつ送信バッファ２４１から取り出し、変化ステータスバッファ２４２へ出力する。
【００６５】
次に、判断部２１２は、変化ステータスバッファ２４２の記憶内容を監視し、変化ステータスバッファ２４２が空であるか否かを判断する（ステップＳ１６）。ここで、変化ステータスバッファ２４２が空であると判断された場合（ステップＳ１６でＹＥＳ）、判断部２１２は、変化ステータスバッファ２４２にデバッグデータが格納されるまで所定間隔でステップＳ１６の判断を繰り返し実行する。
【００６６】
一方、変化ステータスバッファ２４２が空でないと判断された場合（ステップＳ１６でＮＯ）、判断部２１２は、第１ＣＰＵユニット１において割り込み処理を発生させるべく割り込み信号を割り込み信号送信部２２２へ出力する。次に、割り込み信号送信部２２２は、割り込み信号を第１ＣＰＵユニット１へ送信する（ステップＳ１７）。
【００６７】
次に、第１ＣＰＵユニット１の割り込み信号受信部１５２は、第２ＣＰＵユニット２によって送信された割り込み信号を受信する（ステップＳ６）。割り込み信号受信部１５２によって割り込み信号が受信されると、データ要求信号送信部１５３は、デバッグデータの送信を要求するためのデータ要求信号を第２ＣＰＵユニット２へ送信する（ステップＳ７）。
【００６８】
次に、第２ＣＰＵユニット２のデータ要求信号受信部２２３は、第１ＣＰＵユニット１によって送信されたデータ要求信号を受信する（ステップＳ１８）。次に、データ要求信号受信部２２３によってデータ要求信号が受信されると、デバッグデータ読出部２１３は、変化ステータスバッファ２４２に記憶されているデバッグデータを読み出す（ステップＳ１９）。デバッグデータ読出部２１３は、読み出したデバッグデータをデバッグデータ送信部２２４へ出力する。
【００６９】
次に、デバッグデータ送信部２２４は、デバッグデータ読出部２１３によって変化ステータスバッファ２４２から読み出されたデバッグデータを第１ＣＰＵユニット１へ送信する（ステップＳ２０）。そして、デバッグデータが第１ＣＰＵユニット１へ送信された後、ステップＳ１４の処理へ戻り、送信バッファ２４１にデバッグデータがあるか否かが判断され、以降の処理が実行される。
【００７０】
次に、第１ＣＰＵユニット１のデバッグデータ受信部１５４は、第２ＣＰＵユニット２によって送信されたデバッグデータを受信する（ステップＳ８）。デバッグデータ受信部１５４は、受信したデバッグデータをデバッグ実行部１１２へ出力する。
【００７１】
次に、デバッグ実行部１１２は、デバッグデータ受信部１５４によって受信されたデバッグデータを用いてデバッグ機能を実行する（ステップＳ９）。具体的に、デバッグ実行部１１２は、通信部１６を介してデバッグデータをＰＣ３へ出力する。ＰＣ３の通信部３２は、第１ＣＰＵユニット１によって送信されたデバッグデータを受信し、表示装置３５へ出力する。表示装置３５は、通信部３２によって受信されたデバッグデータを表示する。このようにして、入力装置３６により入力されたデバッグコマンドに対するデバッグ結果が、表示装置３５に表示される。
【００７２】
次に、図２に示す第１ＣＰＵユニット１及び第２ＣＰＵユニット２による具体的なデバッグ動作について説明する。図４は、図２に示す第１ＣＰＵユニット１及び第２ＣＰＵユニット２による具体的なデバッグ動作について説明するための模式図である。
【００７３】
まず、第２ＣＰＵユニット２のデバッグデータ抽出部２１１は、ＲＯＭ２３に記憶されているプログラム（ファームウェア）２３１を実行し、デバッグ用のデータ（デバッグデータ）を抽出し、抽出したデバッグデータを送信バッファ２４１へ出力する。なお、図４では、“ＢＵＧ”というデバッグデータを送信する処理について説明する。このとき、デバッグデータ抽出部２１１は、プログラム２３１に含まれるｐｒｉｎｔｆ関数を実行することにより、“ＢＵＧ”というデバッグデータが抽出され、送信バッファ２４１に格納される。
【００７４】
送信バッファ２４１にデバッグデータが格納されると、デバッグデータ抽出部２１１は、送信バッファ２４１の先頭から１文字目のデバッグデータを変化ステータスバッファ２４２へ出力する。この場合、送信バッファ２４１の先頭に位置する“Ｂ”というデバッグデータが変化ステータスバッファ２４２へ出力される。
【００７５】
そして、変化ステータスバッファ２４２に“Ｂ”というデバッグデータが格納されると、割り込み信号送信部２２２は、割り込み信号（割り込み要求）を第１ＣＰＵユニット１へ送信する（ステップＳ１０１）。次に、第１ＣＰＵユニット１において、割り込み信号受信部１５２によって割り込み信号が受信されると、データ要求信号送信部１５３は、データ要求信号（データ要求）を第２ＣＰＵユニット２へ送信する（ステップＳ１０２）。
【００７６】
次に、第２ＣＰＵユニット２において、データ要求信号受信部２２３によってデータ要求信号が受信されると、デバッグデータ読出部２１３は、変化ステータスバッファ２４２に記憶されている“Ｂ”というデバッグデータを読み出し、デバッグデータ送信部２２４へ出力する。次に、デバッグデータ送信部２２４は、データ要求信号の応答信号として、変化ステータスバッファ２４２から読み出された“Ｂ”というデバッグデータを第１ＣＰＵユニット１へ送信する（ステップＳ１０３）。
【００７７】
次に、第１ＣＰＵユニット１のデバッグデータ受信部１５４によって“Ｂ”というデバッグデータが受信されると、デバッグ実行部１１２は、通信部１６を介して“Ｂ”というデバッグデータをＰＣ３へ送信する。ＰＣ３の表示装置３５は、受信した“Ｂ”というデバッグデータを表示する。
【００７８】
以上のようにして、“ＢＵＧ”という複数の文字で構成されるデバッグデータのうちの“Ｂ”というデバッグデータがＰＣ３の表示装置３５に表示される。
【００７９】
続いて、デバッグデータ抽出部２１１は、送信バッファ２４１の先頭から２文字目のデバッグデータを変化ステータスバッファ２４２へ出力する。この場合、送信バッファ２４１の先頭から２文字目に位置する“Ｕ”というデバッグデータが変化ステータスバッファ２４２へ出力される。
【００８０】
そして、変化ステータスバッファ２４２に“Ｕ”というデバッグデータが格納されると、割り込み信号送信部２２２は、割り込み信号（割り込み要求）を第１ＣＰＵユニット１へ送信する（ステップＳ１０４）。次に、第１ＣＰＵユニット１において、割り込み信号受信部１５２によって割り込み信号が受信されると、データ要求信号送信部１５３は、データ要求信号（データ要求）を第２ＣＰＵユニット２へ送信する（ステップＳ１０５）。
【００８１】
次に、第２ＣＰＵユニット２において、データ要求信号受信部２２３によってデータ要求信号が受信されると、デバッグデータ読出部２１３は、変化ステータスバッファ２４２に記憶されている“Ｕ”というデバッグデータを読み出し、デバッグデータ送信部２２４へ出力する。次に、デバッグデータ送信部２２４は、データ要求信号の応答信号として、変化ステータスバッファ２４２から読み出された“Ｕ”というデバッグデータを第１ＣＰＵユニット１へ送信する（ステップＳ１０６）。
【００８２】
次に、第１ＣＰＵユニット１のデバッグデータ受信部１５４によって“Ｕ”というデバッグデータが受信されると、デバッグ実行部１１２は、通信部１６を介して“Ｕ”というデバッグデータをＰＣ３へ送信する。ＰＣ３の表示装置３５は、受信した“Ｕ”というデバッグデータを表示する。
【００８３】
以上のようにして、“ＢＵＧ”という複数の文字で構成されるデバッグデータのうちの“ＢＵ”というデバッグデータがＰＣ３の表示装置３５に表示される。
【００８４】
同様に、デバッグデータ抽出部２１１は、送信バッファ２４１の先頭から３文字目のデバッグデータを変化ステータスバッファ２４２へ出力する。この場合、送信バッファ２４１の先頭から３文字目に位置する“Ｇ”というデバッグデータが変化ステータスバッファ２４２へ出力される。
【００８５】
そして、変化ステータスバッファ２４２に“Ｇ”というデバッグデータが格納されると、割り込み信号送信部２２２は、割り込み信号（割り込み要求）を第１ＣＰＵユニット１へ送信する（ステップＳ１０７）。次に、第１ＣＰＵユニット１において、割り込み信号受信部１５２によって割り込み信号が受信されると、データ要求信号送信部１５３は、データ要求信号（データ要求）を第２ＣＰＵユニット２へ送信する（ステップＳ１０８）。
【００８６】
次に、第２ＣＰＵユニット２において、データ要求信号受信部２２３によってデータ要求信号が受信されると、デバッグデータ読出部２１３は、変化ステータスバッファ２４２に記憶されている“Ｇ”というデバッグデータを読み出し、デバッグデータ送信部２２４へ出力する。次に、デバッグデータ送信部２２４は、データ要求信号の応答信号として、変化ステータスバッファ２４２から読み出された“Ｇ”というデバッグデータを第１ＣＰＵユニット１へ送信する（ステップＳ１０９）。
【００８７】
次に、第１ＣＰＵユニット１のデバッグデータ受信部１５４によって“Ｇ”というデバッグデータが受信されると、デバッグ実行部１１２は、通信部１６を介して“Ｇ”というデバッグデータをＰＣ３へ送信する。ＰＣ３の表示装置３５は、受信した“Ｇ”というデバッグデータを表示する。
【００８８】
以上のようにして、“ＢＵＧ”という複数の文字で構成されるデバッグデータのうちの“ＢＵＧ”というデバッグデータがＰＣ３の表示装置３５に表示される。
【００８９】
このように、画像形成装置１０は、ＣＰＵ１１及びＣＰＵ２１が実行するプログラムをデバッグするためのデバッグ機能を有する第１ＣＰＵユニット１と、デバッグ機能を有しない第２ＣＰＵユニット２とを備えている。そして、第２ＣＰＵユニット２において、デバッグに用いるデータ（デバッグデータ）が抽出され、抽出されたデバッグデータが第１ＣＰＵユニット１へ送信される。第１ＣＰＵユニット１において、第２ＣＰＵユニット２から送信されたデバッグデータが受信され、受信されたデバッグデータを用いてデバッグ機能が実行される。
【００９０】
したがって、デバッグ機能を有しない第２ＣＰＵユニット２においてデバッグに用いるデータが自動的に抽出され、第１ＣＰＵユニット１へ送信されるので、デバッグ機能を有していないＣＰＵ２１の不具合が発生した瞬間の状態を捉えることができる。
【００９１】
また、第２ＣＰＵユニット２において、抽出されたデバッグデータがＲＡＭ２４の変化ステータスバッファ２４２に記憶され、変化ステータスバッファ２４２にデータが記憶されたか否かが判断され、変化ステータスバッファ２４２にデータが記憶されたと判断された場合、第１ＣＰＵユニット１へ割り込み信号が送信される。そして、第１ＣＰＵユニット１において、第２ＣＰＵユニット２によって送信された割り込み信号が受信された場合、デバッグデータを要求するためのデータ要求信号が第２ＣＰＵユニット２へ送信される。続いて、第２ＣＰＵユニット２において、第１ＣＰＵユニット１によって送信されたデータ要求信号が受信された場合、変化ステータスバッファ２４２に記憶されているデバッグデータが読み出され、読み出されたデバッグデータが第１ＣＰＵユニット１へ送信される。
【００９２】
したがって、デバッグ用のデータがＲＡＭ２４の変化ステータスバッファ２４２に記憶された場合、第２ＣＰＵユニット２から第１ＣＰＵユニット１へ割り込み信号が送信されるので、第１ＣＰＵユニット１は常に第２ＣＰＵユニット２を監視する必要がなく、第２ＣＰＵユニット２においてデバッグ用のデータが抽出された場合にのみ第２ＣＰＵユニット２をデバッグすることができる。
【００９３】
さらに、第１ＣＰＵユニット１において、ＰＣ３によって送信されるデバッグコマンドが受信される。このデバッグコマンドには、第１ＣＰＵユニット１及び第２ＣＰＵユニット２のうちのいずれをデバッグするかを指定する情報が含まれる。第１ＣＰＵユニット１において、デバッグコマンドに第１ＣＰＵユニット１をデバッグする情報が含まれている場合、データ要求信号送信部１５３によるデータ要求信号を送信しないよう設定される。
【００９４】
したがって、第１ＣＰＵユニット１をデバッグする場合、第２ＣＰＵユニット２からの割り込み信号を受信したとしてもデータ要求信号が送信されず、第２ＣＰＵユニット２からデバッグ用のデータが送信されないので、第１ＣＰＵユニット１におけるデバッグ用のデータと第２ＣＰＵユニット２におけるデバッグ用のデータとが同時に出力されることがなくなり、第１ＣＰＵユニット１のみをデバッグすることができる。
【００９５】
なお、本実施の形態では、デバッグコマンドに第１ＣＰＵユニット１をデバッグする旨を表す情報が含まれている場合、割り込み信号が受信されたとしてもデータ要求信号を送信しないようデータ要求信号送信部１５３を設定しているが、本発明は特にこれに限定されず、デバッグコマンドに第１ＣＰＵユニット１をデバッグする旨を表す情報が含まれている場合、割り込み信号を送信しないよう割り込み信号送信部２２２を設定してもよい。
【００９６】
図５は、割り込み信号を送信しないよう割り込み信号送信部２２２を設定する場合における第１ＣＰＵユニット１及び第２ＣＰＵユニット２の機能構成を示すブロック図である。なお、図５において、図２に示す第１ＣＰＵユニット１及び第２ＣＰＵユニット２と同じ構成については説明を省略し、異なる構成のみを説明する。
【００９７】
ＣＰＵ１１は、デバッグ実行部１１２及び第１デバッグ設定部１１３を備える。通信部１５は、開始指示信号送信部１５１、割り込み信号受信部１５２、データ要求信号送信部１５３、デバッグデータ受信部１５４及び設定信号送信部１５５を備える。通信部２２は、開始指示信号受信部２２１、割り込み信号送信部２２２、データ要求信号受信部２２３、デバッグデータ送信部２２４及び設定信号受信部２２５を備える。ＣＰＵ２１は、デバッグデータ抽出部２１１、判断部２１２、デバッグデータ読出部２１３及び第２デバッグ設定部２１４を備える。
【００９８】
第１デバッグ設定部１１３は、デバッグ対象が第２ＣＰＵユニット２である場合、開始指示信号を第２ＣＰＵユニット２へ送信するべく開始指示信号送信部１５１に指示する。また、第１デバッグ設定部１１３は、デバッグ対象が第１ＣＰＵユニット１である場合、第２ＣＰＵユニット２が割り込み信号を送信しないように設定するための設定信号を設定信号送信部１５５に出力する。
【００９９】
設定信号送信部１５５は、第１デバッグ設定部１１３によって出力された設定信号を第２ＣＰＵユニット２へ送信する。設定信号受信部２２５は、第１ＣＰＵユニット１の設定信号送信部１５５によって送信された設定信号を受信する。設定信号受信部２２５は、受信した設定信号を第２デバッグ設定部２１４に出力する。第２デバッグ設定部２１４は、設定信号受信部２２５によって設定信号が受信された場合、割り込み信号送信部２２２に対して割り込み信号を送信しないよう設定する。
【０１００】
なお、本実施の形態において、第１デバッグ設定部１１３、設定信号送信部１５５、設定信号受信部２２５及び第２デバッグ設定部２１４が第２の設定手段の一例に相当する。
【０１０１】
このように、設定信号受信部２２５によって第２ＣＰＵユニット２が割り込み信号を送信しないように設定するための設定信号が受信された場合、割り込み信号送信部２２２に対して割り込み信号を送信しないよう設定される。したがって、第１ＣＰＵユニット１をデバッグする場合、第２ＣＰＵユニット２から割り込み信号が送信されず、第２ＣＰＵユニット２からデバッグデータが送信されないので、第１ＣＰＵユニット１におけるデバッグデータと第２ＣＰＵユニット２におけるデバッグデータとが同時に出力されることがなくなり、第１ＣＰＵユニット１のみをデバッグすることができる。
【図面の簡単な説明】
【０１０２】
【図１】本発明に係る情報処理装置の一例である画像形成装置及びそれに接続されるＰＣ（パーソナルコンピュータ）のハードウェア構成の概要を示すブロック図である。
【図２】第１ＣＰＵユニット及び第２ＣＰＵユニットの機能構成を示すブロック図である。
【図３】図２に示す第１ＣＰＵユニット及び第２ＣＰＵユニットによるデバッグ動作について説明するためのフローチャートである。
【図４】図２に示す第１ＣＰＵユニット及び第２ＣＰＵユニットによる具体的なデバッグ動作について説明するための模式図である。
【図５】割り込み信号を送信しないよう割り込み信号送信部を設定する場合における第１ＣＰＵユニット及び第２ＣＰＵユニットの機能構成を示すブロック図である。
【符号の説明】
【０１０３】
１    第１ＣＰＵユニット
２    第２ＣＰＵユニット
１０    画像形成装置
１１，２１，３１    ＣＰＵ
１２，２３    ＲＯＭ
１３，２４，３３    ＲＡＭ
１４    操作パネル部
１５，１６，２２，３２    通信部
３４    ＨＤＤ
３５    表示装置
３６    入力装置
１１１    デバッグ設定部
１１２    デバッグ実行部
１１３    第１デバッグ設定部
１５１    開始指示信号送信部
１５２    割り込み信号受信部
１５３    データ要求信号送信部
１５４    デバッグデータ受信部
１５５    設定信号送信部
１６１    デバッグコマンド受信部
２１１    デバッグデータ抽出部
２１２    判断部
２１３    デバッグデータ読出部
２１４    第２デバッグ設定部
２２１    開始指示信号受信部
２２２    割り込み信号送信部
２２３    データ要求信号受信部
２２４    デバッグデータ送信部
２２５    設定信号受信部
２４１    送信バッファ
２４２    変化ステータスバッファ
【図１】
0004494329.tif 000002
【図２】
0004494329.tif 000003
【図３】
0004494329.tif 000004
【図４】
0004494329.tif 000005
【図５】
0004494329.tif 000006