(57)【要約】【課題】  マルチプロセッサシステムにおいて１のＣＰＵ以外のＣＰＵにデバッグ用のハードウェア資源を設けることなくデバッグを可能にする。【解決手段】  マルチプロセッサシステム１の第１のＣＰＵユニット２に外部装置４との通信を行うための接続手段２２を備え、第１のＣＰＵユニット２は外部装置４から送信されたコマンドを受信するコマンド受信手段２１１と、受信したコマンドの内容を第２のＣＰＵユニット３に転送するコマンド転送手段２１２，２１３，２１６とを備え、第２のＣＰＵユニット３はコマンド転送手段２１２，２１３，２１６により転送されたコマンドの内容を受信する転送コマンド受信手段３１１と、転送コマンド受信手段により受信したコマンドの内容に応じてデバッグ機能を実行する実行手段３１４とを備える。【選択図】    図５
2005107909.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵで動作するプログラムをデバッグするためのデバッグ機能を備えるマルチプロセッサシステムであって、
前記プログラムを実行するＣＰＵと前記プログラムを格納するメモリを備えるＣＰＵユニットを複数通信可能に接続したマルチプロセッサシステムにおいて、
外部装置との通信を行うための接続手段を備える第１のＣＰＵユニットと、
前記接続手段を備えない１つ以上の第２のＣＰＵユニットとを有し、
前記第１のＣＰＵユニットは
前記外部装置から送信されたコマンドを受信するコマンド受信手段と、
前記受信したコマンドの内容を前記第２のＣＰＵユニットに転送するコマンド転送手段とを備え、
前記第２のＣＰＵユニットは
前記コマンド転送手段により転送されたコマンドの内容を受信する転送コマンド受信手段と、
前記転送コマンド受信手段により受信したコマンドの内容に応じてデバッグ機能を実行する実行手段とを備えることを特徴とするデバッグ機能を備えるマルチプロセッサシステム。
【請求項２】
前記コマンド転送手段は前記コマンドの内容を解析した内容に従って前記コマンドの内容の送信先を決定する送信先決定手段を備えることを特徴とする請求項１に記載のデバッグ機能を備えるマルチプロセッサシステム。
【請求項３】
前記コマンド転送手段は
前記コマンドの内容を解析し解析した内容に従って予め定められたフォーマットの通信フレームを作成する通信フレーム作成手段と、
前記通信フレームを転送先に送信するフレーム送信手段とを更に備え、
前記予め定められたフォーマットはプロセッサ間通信に用いられる通信フレームと同じフォーマットであることを特徴とする請求項１又は２に記載のデバッグ機能を備えるマルチプロセッサシステム。
【請求項４】
前記第２のＣＰＵユニットで動作するプログラムは
前記デバッグ機能の実行結果を格納する返信フレームを作成する返信フレーム作成手段と、
前記返信フレームを前記第１のＣＰＵユニットに送信するフレーム返信手段とを更に備え、
前記第１のＣＰＵユニットで動作するプログラムは
前記フレーム返信手段により返信された返信フレームの内容を前記外部装置に転送する返信フレーム転送手段を更に備えることを特徴とする請求項１〜３に記載のデバッグ機能を備えるマルチプロセッサシステム。
【請求項５】
ＣＰＵと前記ＣＰＵで実行されるプログラムを格納するメモリを備えるＣＰＵユニットを複数通信可能に接続したマルチプロセッサシステムのプログラムであって、
第１のＣＰＵユニットのプログラムは前記第１のＣＰＵユニットのＣＰＵを
前記第１のＣＰＵユニットに接続された外部装置から送信されたコマンドを受信するコマンド受信手段と、
前記受信したコマンドの内容を前記第１のＣＰＵユニットに接続された１つ以上の第２のＣＰＵユニットに転送するコマンド転送手段として機能させ、
前記第２のＣＰＵユニットのプログラムは前記第２のＣＰＵユニットのＣＰＵを
前記コマンド転送手段により転送されたコマンドの内容を受信する転送コマンド受信手段と、
前記転送コマンド受信手段により受信したコマンドの内容に応じてデバッグ機能を実行する実行手段として機能させることを特徴とするマルチプロセッサシステムのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵで動作するプログラムをデバッグするためのデバッグ機能を備えるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
プリンタ装置、複写機、ファクシミリ装置等の情報処理装置において、装置を制御するために複数のＣＰＵを協調動作させて動作させることは近年多く行われている。これらのＣＰＵは通常、バス又はシリアルインターフェースにより接続される。これらの各ＣＰＵ上で動作するプログラムをデバッグするためには一般に各ＣＰＵにデバッグ用のハードウェア資源を新たに設けることとなる。これには例えば各ＣＰＵにオンチップデバッグ機能を有するものを使用したり、各ＣＰＵにデバッグ用の装置であるＩＣＥ（In Circuit Emulator）を接続するためのソケットを備えることが一般的である。また、各ＣＰＵに外部装置との通信手段を設けることも多く行われている。
【０００３】
また例えば下記特許文献１には、読み出し書き込み両用の第１のメモリ、第１のメモリ内のデータに基づいて制御対象を制御する制御部、及び監視用の第１の通信部を含むコントローラユニットと、読み出し書き込み両用の第２のメモリ、第２のメモリ内のデータを監視する監視部、及び監視用の第２の通信部を含む監視用ユニットと、前記コントローラユニットに設けたダイレクトメモリアクセス部と、を有し、前記コントローラユニットの第１のメモリ内のデータをダイレクトメモリアクセス部により第１の通信部に転送すると共に、当該データを第１の通信部から第２の通信部へ、更に監視用のユニットの第２のメモリに転送し、この転送されたデータに基づいて監視部にて第１のメモリ内のデータの時間的変化を監視し、この監視結果に基づいて第２のメモリのデータを更新し、この更新されたデータを第２の通信部から第１の通信部に転送し、更に前記ダイレクトメモリアクセス部により第１の通信部から第１のメモリに転送することを特徴とするコントローラユニットの監視装置について記載されている。
【特許文献１】特許第３０２７０６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献に記載された従来技術においてはデバッグ用のハードウェア資源として監視用ユニットを設けることが前提になっている。また、上記の従来技術においても各ＣＰＵにデバッグ用に特別なハードウェア資源を設けることが必要となっている。しかしながら、情報処理装置のコスト競争は激しさを増しておりデバッグのためのハードウェア資源を備えることはコスト面において問題となる。また、デバッグ手段を装備していない場合は、設計時、製造時、ユーザ使用時に不具合が発生してもそのデバッグに多くの時間を費やすこととなり問題となっていた。
【０００５】
本発明はかかる問題点に鑑みて成されたものであり、新たなハードウェア資源を必要としないマルチプロセッサシステムのデバッグ環境を提供することを目的とする。
【課題を解決するための手段】
【０００６】
請求項１に係るデバッグ機能を備えるマルチプロセッサシステムは、ＣＰＵで動作するプログラムをデバッグするためのデバッグ機能を備えるマルチプロセッサシステムであって、前記プログラムを実行するＣＰＵと前記プログラムを格納するメモリを備えるＣＰＵユニットを複数通信可能に接続したマルチプロセッサシステムにおいて、外部装置との通信を行うための接続手段を備える第１のＣＰＵユニットと、前記接続手段を備えない１つ以上の第２のＣＰＵユニットとを有し、前記第１のＣＰＵユニットは前記外部装置から送信されたコマンドを受信するコマンド受信手段と、前記受信したコマンドの内容を前記第２のＣＰＵユニットに転送するコマンド転送手段とを備え、前記第２のＣＰＵユニットは前記コマンド転送手段により転送されたコマンドの内容を受信する転送コマンド受信手段と、前記転送コマンド受信手段により受信したコマンドの内容に応じてデバッグ機能を実行する実行手段とを備えることを特徴とする。
【０００７】
請求項２に係るデバッグ機能を備えるマルチプロセッサシステムは、請求項１に記載のデバッグ機能を備えるマルチプロセッサシステムであって、前記コマンド転送手段は前記コマンドの内容を解析した内容に従って前記コマンドの内容の送信先を決定する送信先決定手段を備えることを特徴とする。
【０００８】
請求項３に係るデバッグ機能を備えるマルチプロセッサシステムは、請求項１又は２に記載のデバッグ機能を備えるマルチプロセッサシステムであって、前記コマンド転送手段は前記コマンドの内容を解析し解析した内容に従って予め定められたフォーマットの通信フレームを作成する通信フレーム作成手段と、前記通信フレームを転送先に送信するフレーム送信手段とを更に備え、前記予め定められたフォーマットはプロセッサ間通信に用いられる通信フレームと同じフォーマットであることを特徴とする。
【０００９】
請求項４に係るデバッグ機能を備えるマルチプロセッサシステムは、請求項１〜３に記載のデバッグ機能を備えるマルチプロセッサシステムであって、前記第２のＣＰＵユニットで動作するプログラムは前記デバッグ機能の実行結果を格納する返信フレームを作成する返信フレーム作成手段と、前記返信フレームを前記第１のＣＰＵユニットに送信するフレーム返信手段とを更に備え、前記第１のＣＰＵユニットで動作するプログラムは前記フレーム返信手段により返信された返信フレームの内容を前記外部装置に転送する返信フレーム転送手段を更に備えることを特徴とする。
【００１０】
請求項５に係るマルチプロセッサシステムのプログラムは、ＣＰＵと前記ＣＰＵで実行されるプログラムを格納するメモリを備えるＣＰＵユニットを複数通信可能に接続したマルチプロセッサシステムのプログラムであって、第１のＣＰＵユニットのプログラムは前記第１のＣＰＵユニットのＣＰＵを前記第１のＣＰＵユニットに接続された外部装置から送信されたコマンドを受信するコマンド受信手段と、前記受信したコマンドの内容を前記第１のＣＰＵユニットに接続された１つ以上の第２のＣＰＵユニットに転送するコマンド転送手段として機能させ、前記第２のＣＰＵユニットのプログラムは前記第２のＣＰＵユニットのＣＰＵを前記コマンド転送手段により転送されたコマンドの内容を受信する転送コマンド受信手段と、前記転送コマンド受信手段により受信したコマンドの内容に応じてデバッグ機能を実行する実行手段として機能させることを特徴とする。
【発明の効果】
【００１１】
請求項１に記載の発明によれば、各ＣＰＵにプログラムを格納するためのメモリを備えるマルチプロセッサシステムにおいて、第１のＣＰＵユニットのみに外部装置との通信を行うための接続手段を備え、第１のＣＰＵユニットにおいて、コマンド受信手段により外部装置から送信されたコマンドを受信し、コマンド転送手段によりその受信したコマンドの内容を第１のＣＰＵユニット以外の第２のＣＰＵユニットに転送し、第２のＣＰＵユニットにおいて、転送コマンド受信手段により第１のＣＰＵユニットから転送されたコマンドの内容を受信し、実行手段によりそのコマンドの内容に応じてデバッグ機能を実行するので、第１のＣＰＵユニットにのみデバッグ用のハードウェアとして前記接続手段を設けるのみで、第２のＣＰＵユニットにはデバッグ用に新たなハードウェアを設けることなく第２のＣＰＵユニットで動作するプログラムのデバッグを行うことができる。
【００１２】
請求項２に記載の発明によれば、コマンド転送手段に備えられた送信先決定手段により第１のＣＰＵユニットで受信したコマンドの内容を解析しコマンド内容の転送先を決定するので、コマンド内容の転送先が複数考えられる場合でも適切なＣＰＵユニットにコマンド内容を転送できる。
【００１３】
請求項３に記載の発明によれば、通信フレーム作成手段により前記コマンドの内容は所定のフォーマットの通信フレームに変換され、フレーム送信手段により通信フレームは送信先のＣＰＵユニットに送信され、前記所定のフォーマットはプロセッサ間通信に使用されるフォーマットと同じであるので、デバッグに使用するための通信フレームの受信口をプロセッサ間通信に使用するための通信フレームの受信口と共有することができる。
【００１４】
請求項４に記載の発明によれば、第２のＣＰＵユニットにおいて、返信フレーム作成手段によりデバッグ機能実行結果を格納する返信フレームを作成し、フレーム返信手段により前記返信フレームを第１のＣＰＵユニットに返信し、第１のＣＰＵユニットにおいて、返信フレーム転送手段によりこの返信フレームの内容を外部装置に転送するので、デバッグ機能の実行結果やエラー情報等を外部装置に戻したい場合等にも容易にこのような情報を外部装置に送信することができる。
【００１５】
請求項５に記載の発明によれば、各ＣＰＵにプログラムを格納するためのメモリを備えるマルチプロセッサシステムにおいて、１のＣＰＵユニットのＣＰＵは、コマンド受信手段によりこのＣＰＵユニットに接続された外部装置から送信されたコマンドを受信し、コマンド転送手段によりその受信したコマンドの内容を第１のＣＰＵユニット以外の第２のＣＰＵユニットに転送するようにそのＣＰＵユニットのプログラムにより機能させられ、その他のＣＰＵユニットのＣＰＵは、転送コマンド受信手段により第１のＣＰＵユニットから転送されたコマンドの内容を受信し、実行手段によりそのコマンドの内容に応じてデバッグ機能を実行するようにそのＣＰＵのプログラムにより機能させられるので、１のＣＰＵユニットにのみデバッグ用のハードウェアとして外部装置に接続するための手段を設けるのみで、第２のＣＰＵユニットにはデバッグ用に新たなハードウェアを設けることなく第２のＣＰＵユニットで動作するプログラムのデバッグを行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態に係るデバッグ機能を備えるマルチプロセッサシステムについて図面を参照しながら説明する。図１は本発明の一実施形態としての、例えば複写機等の画像形成装置１等に搭載されるマルチプロセッサシステム（ただし、本実施形態においてはプロセッサ（ＣＰＵ）は２つであるのでデュアルプロセッサシステムと呼ぶこともある。）及びそれに接続されたＰＣ（パーソナルコンピュータ）４のハードウェア構成の概要を示すブロック図である。ただし、本実施形態においては画像形成装置に搭載されるマルチプロセッサシステムを例にとり説明するが、本発明は画像形成装置以外の装置等に搭載されるマルチプロセッサシステムに対しても適用可能である。
【００１７】
画像形成装置１は、通信により接続され協調して動作を行う２つのＣＰＵ２１，３１により制御される組み込み装置である。ＣＰＵ２１は通信インターフェース２２、ＲＯＭ２３、ＲＡＭ２４、操作パネル部２５、及び通信インターフェース２６にローカルなバスにより接続される。これらをまとめて第１ＣＰＵユニット２とする。ＣＰＵ３１は通信インターフェース３２、ＲＯＭ３３、ＲＡＭ３４、及びＮＶＲＡＭ（Non Volatile RAM：不揮発性ＲＡＭ）３５にローカルなバスにより接続される。これらをまとめて第２ＣＰＵユニット３とする。
【００１８】
第１ＣＰＵユニット２及び第２ＣＰＵユニット３は通信インターフェース２６と通信インターフェース３２を接続することにより接続されている。これらの通信インターフェース２６，３２は例えばシリアル通信インターフェースであり、シリアル通信により通信が行われる。これは例えばバスによる接続でもよい。画像形成装置１には第１及び第２ＣＰＵユニット２，３の他にこれらのＣＰＵユニット２，３に接続されＣＰＵ２１，３１によって制御され画像形成機能（例えばコピー機能）を実行する部品群があるがここでは図示せず、説明も行わない。
【００１９】
画像形成装置１にはユーザがデバッグ機能を操作する端末としてＰＣ４が通信インターフェース２２に接続されている。ＰＣ４は主にＣＰＵ４１，通信インターフェース４２，ＲＡＭ４３，ＨＤＤ４４，ディスプレイ４５，キーボード４６により構成される。この他マウス等が接続されてもよい。以下に第１及び第２ＣＰＵユニット２，３及びＰＣ４の各構成部の説明を行う。
【００２０】
ＣＰＵ２１はＲＯＭ２３に格納されたプログラムを実行しＣＰＵ３１と協調して画像形成装置１を制御して画像形成等を行う。通信インターフェース２２はＰＣ４を接続するためのもので、例えばシリアル通信インターフェースである。ＲＯＭ２３はＣＰＵ２１で実行するプログラムを格納するためのメモリである。このプログラムは画像形成装置１を制御するファームウェアとデバッグ機能を与えるためのデバッガプログラムを含む。ＲＡＭ２４はＣＰＵ２１に一時的な作業領域等を与えるためのメモリである。操作パネル部２５は画像形成装置１に対する操作指示をユーザが入力するためのもので例えば液晶ディスプレイ等の表示部とテンキー及びスタートキー等の操作キー部を有する。ＰＣ４の代わりに操作パネル部２５をデバッグ機能の操作に使用するようにしてもよい。通信インターフェース２６は通信インターフェース３２と接続するためのものでＣＰＵユニット２，３間でのプロセッサ間通信メッセージ等を送受信しＣＰＵ２１及びＣＰＵ３１が協調して動作を行うため等に使用される。
【００２１】
ＣＰＵ３１はＲＯＭ３３に格納されたプログラムを実行しＣＰＵ２１と協調して画像形成装置１を制御して画像形成等を行う。通信インターフェース３２は通信インターフェース２６と接続するためのものでＣＰＵユニット２，３間でのプロセッサ間通信メッセージ等を送受信しＣＰＵ２１及びＣＰＵ３１が協調して動作を行うため等に使用される。ＲＯＭメモリ３３はＣＰＵ３１で実行するプログラムを格納するためのメモリである。このプログラムは第１ＣＰＵユニット２の場合と同様、ファームウェアとデバッガプログラムを含む。ＲＡＭ３４はＣＰＵ３１に一時的な作業領域等を与えるためのメモリである。ＮＶＲＡＭ３５は画像形成装置の動作設定値等のデータを保存するための不揮発性のメモリである。
【００２２】
ＣＰＵ４１はＲＡＭ４３内のプログラムを実行する。通信インターフェース４２は通信インターフェース２２と接続するための例えばシリアル通信インターフェースで、この通信インターフェースによりＰＣ４から第１ＣＰＵユニット２へのデバッグコマンドの送信及び逆経路でデバッグコマンドに対する返信の送信が行われる。ＲＡＭ４３はＨＤＤ４４に格納されたプログラムのうちＣＰＵ４１で実行する部分を一時的に格納するための主記憶装置である。ＨＤＤ（Hard Disk Drive：ハードディスク駆動装置）４４はＣＰＵ４１で実行するプログラム等を格納する外部記憶装置である。ディスプレイ４５はＰＣ４の表示用ユーザインターフェースとして使用されるものである。キーボード４６はＰＣ４の入力用インターフェースとして使用されるものである。
【００２３】
図２は本実施形態におけるデュアルマルチプロセッサシステムの各ＣＰＵ２１及びＣＰＵ３１並びにそれに接続されたＰＣ４のＣＰＵ４１で実行されるプログラムと各プログラム間の関係を示すブロック図である。ＣＰＵ４１で実行される（本発明に係る）プログラム４００は主にデバッガプログラム４０１及びＯＳ（オペレーティングシステム）４０２である。ＣＰＵ２１で実行されるプログラム２００はファームウェア２０１とデバッガプログラム２０２である。ＣＰＵ３１で実行されるプログラム３００はファームウェア３０１とデバッガプログラム３０２である。
【００２４】
ＯＳ４０２はＰＣ４の基本ソフトウェアでＰＣ４にて実行するアプリケーションソフトウェア（デバッガプログラム４０１を含む）とＰＣ４のハードウェアとの仲介を行うソフトウェアである。デバッガプログラム４０１はＰＣ４で動作するアプリケーションソフトウェアでユーザによりキーボード４６を使用して起動・終了され操作される。ユーザはデバッガプログラム４０１の操作としてデバッグコマンド及びその引数を指定して実行すること、及びディスプレイ４５へ表示されたデバッグコマンドの実行結果を確認することが行える。デバッグコマンド及びその引数については後述する。
【００２５】
ファームウェア２０１は画像形成装置１を制御するプログラムでデバッグ対象プログラム（デバッグされるプログラム）である。デバッガプログラム２０２はファームウェア２０１及びファームウェア３０１のデバッグのための処理を行うプログラムである。画像形成装置１が起動された時点でデバッガプログラム２０２は起動される。デバッガプログラム２０２は必要に応じてファームウェア２０１を起動する。
【００２６】
ファームウェア３０１は画像形成装置１を制御するプログラムでデバッグ対象プログラムである。デバッガプログラム３０２はファームウェア３０１のデバッグのための処理を行うプログラムである。画像形成装置が起動された時点でデバッガプログラム３０２は起動される。デバッガプログラム３０２は必要に応じてファームウェア３０１を起動する。
【００２７】
デバッガプログラム４０１においてユーザが実行指示したデバッグコマンドはＯＳ４０２を介してデバッガプログラム２０２にデバッグコマンド送信文字列として送信され、このデバッグコマンドがファームウェア３０１に対するものである場合はデバッガプログラム２０２からデバッガプログラム３０２に（フォームを変換された上で）転送される。受信したデバッグコマンドに対する返信は送信と逆の経路でデバッガプログラム４０１に送られる。
【００２８】
ファームウェア２０１とファームウェア３０１間のプロセッサ間通信におけるプロセッサ間通信メッセージの送受信はデバッガプログラム２０２及びデバッガプログラム３０２を介して行われる。ファームウェア２０１からファームウェア３０１に対するプロセッサ間通信メッセージは所定の通信フレーム（通信において送受信されるデータの単位）をデバッガプログラム２０２からデバッガプログラム３０２を介してファームウェア３０１に送られる。ファームウェア３０１からファームウェア２０１への通信フレームの送信は逆の経路となる。
【００２９】
プロセッサ間通信メッセージで使用する所定の通信フレーム（フォーマット）はデバッグコマンド及びその返信をデバッガプログラム２０２，３０２間で送受信する場合にも使用される。この通信フレームフォーマットについては後述する。
【００３０】
図３はユーザがデバッガプログラム４０１において指示することの可能なデバッグコマンドの一覧及びその引数を示す図表である。コマンド名欄５ａはコマンドの名称、コマンド文字列欄５ｂはプログラム上で使用するコマンドを表す文字列、引数欄５ｃはそのコマンドを実行するために必要な引数、送信文字列欄５ｄは引数を含めたＰＣ４からＣＰＵユニット２に送られる文字列（以下、デバッグコマンド送信文字列という。）のイメージが示される。
【００３１】
欄５１のコマンドはメモリの読み出し（５ａ）で、内容はＲＡＭ３４の指定されたアドレスから指定されたサイズ分の内容をＰＣ４のディスプレイ４５に表示するというものである。コマンド文字列５ｂは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｍｅｍ＿ｄｕｍｐ」で引数５ｃは読み出しデータの格納開始アドレスとサイズである。従って送信文字列５ｄは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｍｅｍ＿ｄｕｍｐ（［アドレス］，［サイズ］）」である。ここで［］で囲まれた部分には示された文字列そのものでなく、該当する内容のデータを記入する。上記の場合にはアドレスを表す数値及びサイズを表す数値となる。欄５２のコマンドはメモリの書き換え（５ａ）で、内容はＲＡＭ３４の指定されたアドレスから指定されたデータを書き込むというものである。コマンド文字列５ｂは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｍｅｍ＿ｍｏｄｉｆｙ」で引数５ｃはデータの書き込みを開始するアドレスと書き込むデータである。従って送信文字列５ｄは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｍｅｍ＿ｍｏｄｉｆｙ（［アドレス］，［データ］）」となる。
【００３２】
欄５３のコマンドは関数の実行（５ａ）で、内容はファームウェア３０１中の関数を指定された（関数の）引数によって実行し、実行結果のリターン値を取得してＰＣ４のディスプレイ４５に表示するというものである。コマンド文字列５ｂは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｆｕｎｃ＿ｅｘｅｃ」で引数５ｃは関数の格納開始アドレスと関数の引数である。引数については複数個あればそれらを列挙する。従って送信文字列５ｄは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｆｕｎｃ＿ｅｘｅｃ（［アドレス］，［引数１］，．．．）」となる。
【００３３】
欄５４のコマンドは不揮発性メモリ（ＮＶＲＡＭ：Non-Volatile RAM）の読み出し（５ａ）で、内容はＮＶＲＡＭ３５の指定されたアドレスから指定されたサイズ分の内容をＰＣ４のディスプレイ４５に表示するというものである。コマンド文字列５ｂは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｎｖｒａｍ＿ｄｕｍｐ」で引数５ｃは読み出しデータの格納開始アドレスとサイズである。従って送信文字列５ｄは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｎｖｒａｍ＿ｄｕｍｐ（［アドレス］，［サイズ］）」である。欄５５のコマンドは不揮発性メモリの書き換え（５ａ）で、内容はＮＶＲＡＭ３５の指定されたアドレスから指定されたデータを書き込むというものである。コマンド文字列５ｂは「ｒｅｍｏｔｅ＿ｄｅｂｕｇ＿ｎｖｒａｍ＿ｍｏｄｉｆｙ」で引数５ｃはデータの書き込みを開始するアドレスと書き込むデータである。
【００３４】
図４は第１ＣＰＵユニット２と第２ＣＰＵユニット３の間での通信に使用するフレームのフォーマットを示す図である。この通信フレームはデバッグコマンド及びその返信データを第１ＣＰＵユニット２と第２ＣＰＵユニット３の間で運ぶためのもので（以下、デバッグコマンド送信フレーム及びデバッグコマンド返信フレームという。）基本構造は第１ＣＰＵユニット２と第２ＣＰＵユニット３の間で行うプロセッサ間通信メッセージに使用する通信フレーム（以下、プロセッサ間通信フレームという。）の構造と同じである。このためデバッグコマンド送信／返信フレーム及びプロセッサ間通信フレームに対する受信部を共通にすることができる。
【００３５】
識別コード６１は２バイトで表され、デバッグコマンドの種別を識別するためのコードが格納される。例えばメモリの読み出し５１は「０ｘｆ００１」、メモリの書き換え５２は「０ｘｆ００２」、関数の実行５３は「０ｘｆ００３」、不揮発性メモリの読み出し５４は「０ｘｆ００４」、不揮発性メモリの書き換え５５は「０ｘｆ００５」とする。フレームがデバッグコマンド送信／返信フレームであるかプロセッサ間通信フレームであるかも識別コード６１で識別する。例えば先頭バイトが０ｘｆ０であるか否かで識別する。
【００３６】
アドレス６２は２バイトで表され、デバッグコマンドの引数５ｃであるアドレスが格納される。引数６３はデバッグコマンドの引数５ｃでアドレス以外のものが格納される。引数６３は引数１から引数１０の固定の所定数、例えば１０個の引数格納領域（各１バイト）で構成される。引数の数に応じて必要な引数領域のみ使用し必要でない引数領域には例えば０ｘ００を格納する。
【００３７】
例えばメモリの読み出しコマンド５１及び不揮発性メモリの読み出しコマンド５４においては読み出しデータのサイズを引数１に格納し、その他（引数２から引数１０）には０ｘ００を格納する。例えばメモリの書き換えコマンド５２及び不揮発性メモリの書き換えコマンド５５においては格納データをそのバイト分（１０バイトまで）引数６３に格納する。例えば関数の実行コマンド５３においては実行する関数への引数を引数６３に格納する。
【００３８】
各コマンドに対する（ＣＰＵユニット３からＣＰＵユニット２への）返信（デバッグコマンド返信フレーム）にも同じフォーマット６を使用する。例えば返信時には識別コード６１及びアドレス６２はデバッグコマンド送信フレーム（ＣＰＵユニット３が受信したもの）と同じで、例えばメモリの読み出しコマンド５１及び不揮発性メモリの読み出しコマンド５４に対する返信においては引数６３に読み出しデータを格納して返信する。また例えばメモリの書き換えコマンド５２及び不揮発性メモリの書き換えコマンド５５の返信においては引数６３に何も記入しない（例えば送信時のままとする。）。また例えば関数の実行コマンド５３においては引数６３にリターン値を格納して返信する。
【００３９】
チェックサム６４は通信フレームのデータの整合性をチェックするための１バイトのコードである。終了コード６５は通信フレームの末尾であることを示すためのコードである。
【００４０】
図５はＣＰＵ２１で実行されるプログラム２００及びＣＰＵ３１で実行されるプログラム３００の機能構成を示す図である。プログラム２００はデバッグコマンド受信部２１１、送信先判別部２１２、フレーム変換部２１３、フレーム受信部２１４、フレーム判別部２１５、フレーム送信部２１６、コマンド送信部２１７、デバッグ実行部２１８、通信フレーム転送部２１９を備える。
【００４１】
デバッグコマンド受信部２１１は、ＰＣ４からデバッグコマンドを表す送信文字列５ｄ（デバッグコマンド送信文字列）が送信されてきた場合にそれを受信する。送信先判別部２１２は、受信したデバッグコマンド送信文字列が第１ＣＰＵユニット２に対するコマンドであるか第２ＣＰＵユニット３に対するコマンドであるかを判定する。具体的には図３に示すように送信文字列５ｄの最初が「ｒｅｍｏｔｅ＿」で始まるものは第２ＣＰＵユニット３に対するコマンド、それ以外のものは第１ＣＰＵユニット２に対するコマンドであると判断する。
【００４２】
フレーム変換部２１３は、ＰＣ４から受信した図３の送信文字列５ｄの形のデバッグコマンド送信文字列（ただし、文字列先頭は「ｒｅｍｏｔｅ＿」で始まらない。）を解析し図４に示す通信フレーム（デバッグコマンド送信フレーム）の形に変換する。また、第２ＣＰＵユニット３から受信したデバッグコマンド返信フレームをＰＣ４に返信するための返信用のデバッグコマンド文字列（以下、デバッグコマンド返信文字列という。）に変換する。
【００４３】
フレーム送信部２１６は、フレーム変換部２１３において作成されたデバッグコマンド送信フレームを第２ＣＰＵユニット３に対して送信する。フレーム受信部２１４は、第２ＣＰＵユニット３から通信フレーム（デバッグコマンド返信フレーム及びプロセッサ間通信フレーム）が送信されて来た場合にそれを受信する。フレーム判別部２１５は、フレーム受信部２１４にて受信した通信フレームをデバッグコマンド返信フレームであるかプロセッサ間通信フレームであるか判別する。例えば識別コード６１の先頭バイトにより判別する。
【００４４】
デバッグ実行部２１８は、受信したデバッグコマンド送信文字列が第１ＣＰＵユニット２に対するものである場合にデバッグコマンド送信文字列の内容を解析しデバッグコマンド種別を判別し、そのデバッグコマンド種別に対応したデバッグ機能を実行する。本実施形態においては第２ＣＰＵユニット３に対するデバッグ機能の提供が本題であるので、ここでは第１ＣＰＵユニット２に対するデバッグ機能の実行に対する詳しい説明は省略する。
【００４５】
コマンド送信部２１７は、第１ＣＰＵユニット２に対するデバッグコマンドを実行した後にその実行結果を含む返信をデバッグコマンド返信文字列としてＰＣ４に対して返信する。通信フレーム転送部２１９は、フレーム受信部２１４で受信した通信フレームがフレーム判別部２１５でプロセッサ間通信フレームであると判別された場合にこの通信フレームをファームウェアプロセス２０１に転送する。
【００４６】
プログラム３００はフレーム受信部３１１、フレーム判別部３１２、通信フレーム転送部３１３、デバッグ実行部３１４、返信フレーム作成部３１５、フレーム送信部３１６を備える。デバッグ実行部３１４は更にデバッグコマンド判別部３２１、メモリ読出実行部３２２、メモリ書換実行部３２３、関数実行部３２４、不揮発性メモリ読出実行部３２５、不揮発性メモリ書換実行部３２６を備える。
【００４７】
フレーム受信部３１１は、第１ＣＰＵユニット２から通信フレーム（デバッグコマンド送信フレーム及びプロセッサ間通信フレーム）が送信されて来た場合にそれを受信する。
【００４８】
フレーム判別部３１２は、フレーム受信部３１１で受信した通信フレームをデバッグコマンド送信フレームであるかプロセッサ間通信フレームであるか判別する。通信フレーム転送部３１３は、フレーム受信部３１１で受信した通信フレームがフレーム判別部３１２でプロセッサ間通信フレームであると判別された場合にこのフレームをファームウェアプロセス３０１に転送する。
【００４９】
デバッグ実行部３１４は、デバッグコマンド送信文字列からデバッグコマンド種別を判別してデバッグコマンド種別に応じたデバッグ機能を実行する。デバッグコマンド判別部３２１は、フレーム判別部３１２が受信した通信フレームをデバッグコマンド送信フレームであると判別した場合にデバッグコマンド送信フレームの識別コード６１をチェックしてデバッグコマンドの種別を判別する。
【００５０】
メモリ読出実行部３２２は、受信した通信フレームのアドレス領域６２からアドレス、引数領域６３からサイズを取得し、ＲＯＭ３３又はＲＡＭ３４の上記アドレスから上記サイズ分のデータを読み出し、返信フレーム作成部３１５に渡す。メモリ書換実行部３２３は、受信した通信フレームのアドレス領域６２からアドレス、引数領域６３から格納データを取得し、ＲＡＭ３４の上記アドレスから上記格納データを書き込む。
【００５１】
関数実行部３２４は、受信した通信フレームのアドレス領域６２からアドレス、引数領域６３から関数の引数を取得し、ＲＡＭ３４の関数の引数が格納されるべき所定の位置に上記関数の引数を格納しＲＯＭ３３の上記アドレスからプログラム（関数）を実行する。プログラムの実行が終了したらＲＡＭ３４のリターン値を格納されるべき所定の位置に格納された関数のリターン値を返信フレーム作成部３１５に渡す。
【００５２】
不揮発性メモリ読出実行部３２５は、受信した通信フレームのアドレス領域６２からアドレス、引数領域６３からサイズを取得し、ＮＶＲＡＭ３５の上記アドレスから上記サイズ分のデータを読み出し、返信フレーム作成部３１５に渡す。不揮発性メモリ書換実行部３２６は、受信した通信フレームのアドレス領域６２からアドレス、引数領域６３から格納データを取得し、ＮＶＲＡＭ３５の上記アドレスから上記格納データを書き込む。
【００５３】
返信フレーム作成部３１５は、受信したデバッグコマンド送信フレームの引数領域６３にデバッグコマンド種別に応じて返信データを格納し、これをデバッグコマンド返信フレームとする。フレーム送信部３１６は、返信フレーム作成部３１５が作成したデバッグコマンド返信フレームを第１ＣＰＵユニット２へ送信する。
【００５４】
図６はプログラム２００の処理の流れを示すフローチャートである。ステップＳ１では、デバッグコマンド受信部２１１はＰＣ４からデバッグコマンド送信文字列を受信したか否かをチェックする。デバッグコマンド送信文字列を受信した場合は（ステップＳ１でＹＥＳ）、ステップＳ３へ進む。ステップＳ３では、送信先判別部２１２は受信したデバッグコマンド送信文字列が第１ＣＰＵユニット２へのコマンドか否かを判別し、第１ＣＰＵユニット２へのコマンドであれば（ステップＳ３でＹＥＳ）ステップＳ２１へ進む。
【００５５】
ステップＳ２１では、デバッグ実行部２１８は受信したデバッグコマンド送信文字列からデバッグコマンド種別を判別する。ステップＳ２３では、デバッグ実行部２１８はデバッグコマンド種別に応じてデバッグ機能を実行する。ステップＳ２５では、コマンド送信部２１７は受信したデバッグコマンド送信文字列に対する返信をデバッグコマンド返信文字列としてＰＣ４へ送信する。
【００５６】
ステップＳ３の分岐において受信したデバッグコマンド送信文字列が第１ＣＰＵユニット２に対するコマンドでないと判定された場合には（ステップＳ３でＮＯ）、ステップＳ５へ進む。ステップＳ５では送信先判別部２１２は受信したデバッグコマンド送信文字列が第２ＣＰＵユニット３に対するコマンドか否かを判別し、第２ＣＰＵユニット３へのコマンドでなければ（ステップＳ５でＮＯ）ステップＳ１９へ進む。この場合は受信したデバッグコマンド送信文字列はどのＣＰＵユニットへのコマンドを表すものかが適切に判別できないということなので、ステップＳ１９では、送信先判別部２１２が受信したデバッグコマンド送信文字列を破棄する。
【００５７】
ステップＳ５の分岐において受信したデバッグコマンド送信文字列が第２ＣＰＵユニット３へのコマンドであると判定された場合には（ステップＳ５でＹＥＳ）、ステップＳ７へ進む。ステップＳ７では、フレーム変換部２１３は受信したデバッグコマンド送信文字列を図４に示すフレーム（デバッグコマンド送信フレーム）に変換する。ステップＳ９では、フレーム送信部２１６は作成したデバッグコマンド送信フレームを第２ＣＰＵユニット３へ送信する。
【００５８】
ステップＳ１の分岐においてデバッグコマンド送信文字列を受信しなかった場合（ステップＳ１でＮＯ）又はステップＳ９を終了した場合にはステップＳ１１へ進む。ステップＳ１１では、フレーム受信部２１４は第２ＣＰＵユニット３から通信フレームを受信したか否かをチェックする。通信フレームを受信した場合は（ステップＳ１１でＹＥＳ）、ステップＳ１３へ進む。ステップＳ１３では、フレーム判別部２１５は受信した通信フレームをデバッグコマンド返信フレームであるかプロセッサ間通信フレームであるか判別する。デバッグコマンド返信フレームであれば（ステップＳ１３でＹＥＳ）、ステップＳ１５へ進む。ステップＳ１５では、フレーム変換部２１３は図４に示すフォーマットの返信用フレーム（デバッグコマンド返信フレーム）をＰＣ４へ返信するためのデバッグコマンド返信文字列に変換する。ステップＳ１７では、コマンド送信部２１７はステップＳ１５で作成したデバッグコマンド返信文字列をＰＣ４へ送信する。
【００５９】
ステップＳ１３の分岐において受信した通信フレームがデバッグコマンド返信フレームでなかった場合は（ステップＳ１３でＮＯ）、ステップＳ２７へ進む。ステップＳ２７では、通信フレーム転送部２１９はファームウェアプロセス２０１にステップＳ１１で受信した通信フレーム（プロセッサ間通信フレーム）を転送する。ステップＳ１１の分岐において通信フレームを受信しなかった場合（ステップＳ１１でＮＯ）、並びに、ステップＳ１７、ステップＳ２７、及びステップＳ２５の処理が終了した場合にはステップＳ１に戻り、ステップＳ１からの処理を繰り返す。
【００６０】
図７はプログラム３００の処理の流れを示すフローチャートである。ステップＳ３１では、フレーム受信部３１１は第１ＣＰＵユニット２から通信フレームを受信したか否かのチェックを受信するまで繰り返す（ステップＳ３１でＮＯ）。通信フレームを受信した場合（ステップＳ３１でＹＥＳ）には、ステップＳ３３へ進む。ステップＳ３３では、フレーム判別部３１２は受信した通信フレームをデバッグコマンド送信フレームであるかプロセッサ間通信フレームであるか判別する。デバッグコマンド送信フレームであれば（ステップＳ３３でＹＥＳ）、ステップＳ３５へ進む。ステップＳ３５では、デバッグコマンド判別部３２１はデバッグコマンド送信フレームの識別コード６１をチェックしてデバッグコマンド種別を判別する。ステップＳ３７では、デバッグ実行部３１４はデバッグコマンド種別に応じたデバッグ機能を実行する処理を行う。デバッグ機能の実行処理の流れについては後述する。ステップＳ３９では、フレーム送信部３１６は返信フレーム作成部３１５により作成されたデバッグコマンド返信フレームを第１ＣＰＵユニット２へ送信する。
【００６１】
ステップＳ３３の分岐において通信フレームがデバッグコマンド返信フレームでなかった場合には（ステップＳ３３でＮＯ）、ステップＳ４１へ進む。ステップＳ４１では、通信フレーム転送部３１３はステップＳ３１で受信した通信フレーム（プロセッサ間通信フレーム）をファームウェアプロセス３０１に転送する。ステップＳ３９及びステップＳ４１の処理が終了したらステップＳ３１に戻り、ステップＳ３１からの処理を繰り返す。
【００６２】
図８は図７のフローチャートにおけるステップＳ３７のデバッグコマンド実行処理の流れを示すフローチャートである。ステップＳ５１では、デバッグコマンド判別部３２１はデバッグコマンドをメモリ読み出しコマンドであると判別したら（ステップＳ５１でＹＥＳ）、ステップＳ５３へ進む。ステップＳ５３では、メモリ読出実行部３２２は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数であるアドレスを取得する。ステップＳ５５では、メモリ読出実行部３２２は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数であるサイズを取得する。ステップＳ５７では、メモリ読出実行部３２２はステップＳ５３で取得したアドレスを開始アドレスとしてステップＳ５５で取得したサイズ分のデータをＲＡＭ３４から取得する。ステップＳ５９では、返信フレーム作成部３１５はステップＳ５７で取得したデータを格納したデバッグコマンド返信フレームを作成する。
【００６３】
ステップＳ５１の分岐においてデバッグコマンドがメモリ読み出しコマンドでなかった場合には（ステップＳ５１でＮＯ）、ステップＳ６１へ進む。ステップＳ６１では、デバッグコマンド判別部３２１はデバッグコマンドをメモリ書き換えコマンドであると判別したら（ステップＳ６１でＹＥＳ）、ステップＳ６３へ進む。ステップＳ６３では、メモリ書換実行部３２３は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数であるアドレスを取得する。ステップＳ６５では、メモリ書換実行部３２３は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数である格納データを取得する。ステップＳ６７では、メモリ書換実行部３２３はステップＳ６３で取得したアドレスを開始アドレスとしてステップＳ６５で取得した格納データをＲＡＭ３４に格納する。ステップＳ６９では、返信フレーム作成部３１５は受信したデバッグコマンド送信フレームをそのままデバッグコマンド返信フレームとする。
【００６４】
ステップＳ６１の分岐においてデバッグコマンドがメモリ読み出しコマンドでなかった場合（ステップＳ６１でＮＯ）には、ステップＳ７１へ進む。ステップＳ７１では、デバッグコマンド判別部３２１はデバッグコマンドを不揮発性メモリ読み出しコマンドであると判別したら（ステップＳ７１でＹＥＳ）、ステップＳ７３へ進む。ステップＳ７３では、不揮発性メモリ読出実行部３２５は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数であるアドレスを取得する。ステップＳ７５では、不揮発性メモリ読出実行部３２５は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数であるサイズを取得する。ステップＳ７７では、不揮発性メモリ読出実行部３２５はステップＳ７３で取得したアドレスを開始アドレスとしてステップＳ７５で取得したサイズのデータをＮＶＲＡＭ３５から取得する。ステップＳ７９では、返信フレーム作成部３１５はステップＳ７７で取得したデータを格納したデバッグコマンド返信フレームを作成する。
【００６５】
ステップＳ７１の分岐においてデバッグコマンドが不揮発性メモリ読み出しコマンドでなかった場合（ステップＳ７１でＮＯ）には、ステップＳ８１へ進む。ステップＳ８１では、デバッグコマンド判別部３２１はデバッグコマンドを不揮発性メモリ書き換えコマンドであると判別したら（ステップＳ８１でＹＥＳ）、ステップＳ８３へ進む。ステップＳ８３では、不揮発性メモリ書換実行部３２６は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数であるアドレスを取得する。ステップＳ８５では、不揮発性メモリ書換実行部３２６は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数である格納データを取得する。ステップＳ８７では、不揮発性メモリ書換実行部３２６はステップＳ８３で取得したアドレスを開始アドレスとしてステップＳ８５で取得したデータのサイズ分の領域のデータをＮＶＲＡＭ３５から消去する。ステップＳ８９では、不揮発性メモリ書換実行部３２６はステップＳ８３で取得したアドレスを開始アドレスとしてステップＳ８５で取得した格納データをＮＶＲＡＭ３５に格納する。ステップＳ９１では、返信フレーム作成部３１５は受信したデバッグコマンド送信フレームをそのままデバッグコマンド返信フレームとする。
【００６６】
ステップＳ８１の分岐においてデバッグコマンドが不揮発性メモリ書き換えコマンドでなかった場合（ステップＳ８１でＮＯ）には、ステップＳ９３へ進む。ステップＳ９３では、デバッグコマンド判別部３２１はデバッグコマンドを関数実行コマンドであると判別したら（ステップＳ９３でＹＥＳ）、ステップＳ９５へ進む。ステップＳ９５では、関数実行部３２４は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数であるアドレスを取得する。ステップＳ９７では、関数実行部３２４は受信したデバッグコマンド送信フレームから当該デバッグコマンドの引数である関数引数を取得する。ステップＳ９９では、関数実行部３２４は取得した関数引数を当該関数が引数の格納場所として認識するＲＡＭ３４内の所定の格納位置に格納する。ステップＳ１０１では、関数実行部３２４は当該関数を含むファームウェア３０１を取得したアドレスから別プロセスとして実行する。ステップＳ１０３では、関数実行部３２４は当該関数の実行結果としてＲＡＭ３４内の所定の位置に格納されるリターン値を取得する。ステップＳ１０５では、返信フレーム作成部３１５は取得したリターン値を格納したデバッグコマンド返信フレームを作成する。
【００６７】
ステップＳ９３の分岐においてデバッグコマンドが関数実行コマンドでなかった場合（ステップＳ９３でＮＯ）には、ステップＳ１０７へ進む。この場合はプログラム３００では処理できないデバッグコマンド送信フレームを受信したということなので、ステップＳ１０７では、返信フレーム作成部３１５はエラーである旨を格納したデバッグコマンド返信フレームを作成する。
【００６８】
このように本実施形態によれば、第１ＣＰＵユニット２に設けられた外部装置（ＰＣ４）への通信インターフェース２２のみがデバッグ用ハードウェアとして設けられたのみで、マルチプロセッサシステム１に対してその他のハードウェアの付加又は変更を行うことなくマルチプロセッサシステム１における第１ＣＰＵユニット２以外のＣＰＵユニット（第２ＣＰＵユニット３）で実行されるファームウェア３０１のデバッグを可能とした。
【００６９】
なお、本発明は、上記実施形態のものに限定されるものではなく、以下に述べる態様を採用することができる。例えば本実施形態においてはマルチプロセッサシステムとして２つのＣＰＵユニットが結合されたデュアルプロセッサシステムを例に取り説明したが、これはデュアルプロセッサシステムである必要はなく、ＣＰＵユニットが３つ以上結合されたマルチプロセッサシステムであってもよい。この場合、デバッグコマンド送信フレームの送信先を第１ＣＰＵユニット２において判別する必要があるため、デバッグコマンド送信文字列及びデバッグコマンド送信フレームにおいてそのデバッグコマンドの送信先を判別可能にする必要がある。具体的には例えばデバッグコマンド送信フレームには送信先識別コード領域をフレームの例えば先頭に設け、送信先を識別するためのコードを格納するようにするとよい。また、デバッグコマンド送信文字列の先頭を例えば「ｒｅｍｏｔｅ１＿」、「ｒｅｍｏｔｅ２＿」のように番号等を設け送信先を識別できるようにすればよい。
【００７０】
本実施形態においては、デバッグコマンド送信文字列やデバッグコマンド送信フレームを受信した場合に必ずデバッグコマンド返信文字列やデバッグコマンド返信フレームをその返信として返すようにしたが、返信すべきデータがない場合には返信を返さないようにしてもよい。
【００７１】
本実施形態においては、図４に示すデバッグコマンド送信フレームの引数６３に固定数、例えば１０個の引数の格納領域を設けるようにしたが、これは引数の数に合わせた可変数の引数格納領域を設けるようにしてもよい。このためには例えば引数領域６３の先頭に引数の数を格納する領域を設けるようにすればよい。また、本実施形態においては１バイトの引数１０個分に対応する大きさ（１０バイト）のデータしかＲＡＭ３４またはＮＶＲＡＭ３５に一度に読み出し又は書き換え出来なかったが、上記のように引数領域６３を可変長にすることにより例えば１０バイトより大きなデータを読み出し又は書き換え可能にすることができる。また、ユーザが例えば１０バイトより大きなデータを読み出し又は書き換えに指定した場合に、複数の通信フレームにより複数回の通信で大きなデータの読み出し又は書き換えを行うようにしてもよい。また、通信フレーム６のチェックサム６４及び終了コード６５は必須のものではない。
【図面の簡単な説明】
【００７２】
【図１】本発明の一実施形態によるマルチプロセッサシステム及びそれに接続されたＰＣのハードウェア構成を示すブロック図である。
【図２】本発明の一実施形態によるマルチプロセッサシステム及びそれに接続されたＰＣにおいて実行されるソフトウェアの関係を示すブロック図である。
【図３】本発明の一実施形態によるデバッグコマンドの一覧を示す図表である。
【図４】本発明の一実施形態における送信用の通信フレームを示す図である。
【図５】本発明の一実施形態におけるマルチプロセッサシステムにおいて実行されるデバッガプログラムの機能構成を示すブロック図である。
【図６】本発明の一実施形態におけるマルチプロセッサシステムの主ＣＰＵにおいて実行されるデバッグプログラムの処理の流れを示すフローチャート図である。
【図７】本発明の一実施形態におけるマルチプロセッサシステムの副ＣＰＵにおいて実行されるデバッグプログラムの処理の流れを示すフローチャート図である。
【図８】本発明の一実施形態におけるマルチプロセッサシステムにおいて実行されるデバッグプログラムのうちデバッグコマンドを実行するサブルーチンの処理の流れを示すフローチャート図である。
【符号の説明】
【００７３】
１  画像形成装置（マルチプロセッサシステム）
２  第１ＣＰＵユニット（第１のＣＰＵユニット）
３  第２ＣＰＵユニット（その他のＣＰＵユニット）
４  ＰＣ（外部装置）
２１，３１  ＣＰＵ
２３，３３  ＲＯＭ（メモリ）
２２  通信Ｉ／Ｆ（接続手段）
２１１  デバッグコマンド受信部（コマンド受信手段）
２１２  送信先判別部（コマンド転送手段、送信先決定手段）
２１３  フレーム変換部（コマンド転送手段、通信フレーム作成手段）
２１４  フレーム受信部（返信フレーム転送手段）
２１６  フレーム送信部（コマンド転送手段、フレーム送信手段）
２１７  コマンド送信部（返信フレーム転送手段）
３１１  フレーム受信部（転送コマンド受信手段）
３１４  デバッグ実行部（実行手段）
３１５  返信フレーム作成部（返信フレーム作成手段）
３１６  フレーム送信部（フレーム返信手段）
【図１】
2005107909.tif 000003
【図２】
2005107909.tif 000004
【図３】
2005107909.tif 000005
【図４】
2005107909.tif 000006
【図５】
2005107909.tif 000007
【図６】
2005107909.tif 000008
【図７】
2005107909.tif 000009
【図８】
2005107909.tif 000010