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