(57)【要約】  【課題】  機密保持対象であるプログラムを入手されてしまう可能性を低くすることができるデバッグシステム等を提供する。  【解決手段】  このデバッグシステム１は、デバッグ装置２と、インサーキットエミュレータ３とを具備する。デバッグ装置２は、通信処理部２１と、認証処理部２２と、プログラム記憶部２３と、デバッグ処理部２４とを具備する。インサーキットエミュレータ３は、通信処理部３１と、認証処理部３２と、プログラム記憶部３３と、ＣＰＵコア部３４とを具備する。通信処理部２１は、認証処理部２２と認証処理部３２との間で認証ができた場合、機密保持対象であるファームウェア及び機密保持対象でないユーザプログラムをインサーキットエミュレータ３に送信し、認証ができなかった場合、ユーザプログラムを送信する。【選択図】  図１
2006126994.tif 000002
【特許請求の範囲】
【請求項１】
機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、
外部からの指示に従って前記第１及び／又は第２のプログラムを実行するためのＣＰＵコア部と、
前記第１及び／又は第２のプログラムを外部から受信して前記プログラム記憶部に書き込み、前記第１のプログラムの一部又は全部の読み出し指示を外部から受信した場合に、前記プログラム記憶部からの前記第１のプログラムの一部又は全部の読み出しを行わず、前記第２のプログラムの一部又は全部の読み出し指示を外部から受信した場合に、前記プログラム記憶部からの前記第２のプログラムの一部又は全部の読み出しを行って外部に送信するための通信処理部と、
を具備するインサーキットエミュレータ。
【請求項２】
外部との間の認証処理を行うための認証処理部を更に具備する、請求項１記載のインサーキットエミュレータ。
【請求項３】
前記通信処理部が、外部からの呼び掛けに応答して、一般のインサーキットエミュレータにおいて利用されている第１の通信コマンド又は一般のインサーキットエミュレータにおいて利用されていない第２の通信コマンドを用いて外部と通信を行う、請求項１記載のインサーキットエミュレータ。
【請求項４】
前記通信処理部が、外部から受信した前記第１のプログラムが暗号化されている場合に、前記第１のプログラムを復号化して前記プログラム記憶部に書き込む、請求項１〜３のいずれか１項に記載のインサーキットエミュレータ。
【請求項５】
インサーキットエミュレータに接続されて使用されるデバッグ装置であって、
機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、
請求項１記載のインサーキットエミュレータに接続された場合に、前記第１及び第２のプログラムを請求項１記載のインサーキットエミュレータに送信し、請求項１記載のインサーキットエミュレータ以外のインサーキットエミュレータに接続された場合に、前記第２のプログラムを当該インサーキットエミュレータに送信するための通信処理部と、
インサーキットエミュレータとの間でデータを送受信することによりデバッグ処理を行うためのデバッグ処理部と、
を具備するデバッグ装置。
【請求項６】
インサーキットエミュレータに接続されて使用されるデバッグ装置であって、
機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、
請求項２記載のインサーキットエミュレータとの間の認証処理を行うための認証処理部と、
前記認証処理部による認証処理ができた場合に、請求項２記載のインサーキットエミュレータに接続されているものと判断して前記第１及び第２のプログラムを請求項２記載のインサーキットエミュレータに送信し、前記認証処理部による認証処理ができなかった場合に、請求項２記載のインサーキットエミュレータ以外のインサーキットエミュレータに接続されているものと判断して前記第２のプログラムをインサーキットエミュレータに送信するための通信処理部と、
インサーキットエミュレータとの間でデータを送受信することによりデバッグ処理を行うためのデバッグ処理部と、
を具備するデバッグ装置。
【請求項７】
インサーキットエミュレータに接続されて使用されるデバッグ装置であって、
機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、
前記第２の通信コマンドを用いてインサーキットエミュレータに呼び掛けを行い、応答があった場合に、請求項３記載のインサーキットエミュレータに接続されているものと判断して前記第１及び第２のプログラムを前記第２の通信コマンドを用いて請求項３記載のインサーキットエミュレータに送信し、前記第２の通信コマンドを用いてインサーキットエミュレータに呼び掛けを行い、応答がなかった場合に、請求項３記載のインサーキットエミュレータ以外のインサーキットエミュレータに接続されているものと判断して前記第２のプログラムを前記第１の通信コマンドを用いて当該インサーキットエミュレータに送信するための通信処理部と、
インサーキットエミュレータとの間でデータを送受信することによりデバッグ処理を行うためのデバッグ処理部と、
を具備するデバッグ装置。
【請求項８】
前記プログラム記憶部に記憶されている前記第１のプログラムが暗号化されている、請求項５〜７のいずれか１項に記載のデバッグ装置。
【請求項９】
請求項１又は４記載のインサーキットエミュレータと、
請求項５又は８記載のデバッグ装置と、
を具備するデバッグシステム。
【請求項１０】
請求項２又は４記載のインサーキットエミュレータと、
請求項６又は８記載のデバッグ装置と、
を具備するデバッグシステム。
【請求項１１】
請求項３又は４記載のインサーキットエミュレータと、
請求項７又は８記載のデバッグ装置と、
を具備するデバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インサーキットエミュレータ、インサーキットエミュレータに接続されて使用されるデバッグ装置、及び、それらを具備するデバッグシステムに関する。
【背景技術】
【０００２】
従来より、マイクロプロセッサ及びデバッグ装置において、プログラムの機密性を高める技術が用いられている（例えば、特許文献１参照）。
特許文献１には、少なくとも１つの範囲が暗号化されてなるプログラムの暗号化範囲を復号化するための暗号鍵を記憶する記憶部と、プログラムの暗号化範囲を判定して記憶部から暗号鍵を取り出す判定部と、判定部により取り出された暗号鍵を用いてプログラムの暗号化範囲を復号化する復号化部とを備えたマイクロプロセッサであって、復号化部により暗号化範囲の復号化されてなるプログラムを外部に出力するときに、該プログラムの少なくとも１つの範囲を暗号化する暗号化部を備えていることを特徴とするマイクロプロセッサが掲載されている。
また、特許文献１には、上記のマイクロプロセッサから出力されたプログラムのデバッグを行うデバッグ装置であって、プログラムの暗号化範囲を復号化するための暗号鍵を記憶するデバッガ記憶部と、プログラムの暗号化範囲を判定してデバッガ記憶部から暗号鍵を取り出すデバッガ判定部と、デバッガ判定部により取り出された暗号鍵を用いてプログラムの暗号化範囲を復号化するデバッガ復号化部とを備えていることを特徴とするデバッグ装置が掲載されている。
【０００３】
しかしながら、特許文献１掲載の技術においては、暗号化部によって暗号化されたプログラムがマイクロプロセッサからデバッガ装置に出力されるため、マイクロプロセッサとデバッガ装置との間の通信信号をモニタすることにより、暗号化されたプログラムを入手することができてしまうこととなる。後に暗号を解読されたり、暗号鍵を取得されてしまうおそれがあることを考慮すれば、暗号化されたプログラムを入手されることは望ましいことではない。
【０００４】
【特許文献１】特開２００３−１４０７６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこで、上記の点に鑑み、本発明は、機密保持対象であるプログラムを入手されてしまう可能性をより低くすることができるインサーキットエミュレータを提供することを第１の目的とする。また、本発明はそのようなデバッグ装置を提供することを第２の目的とする。また、本発明はそのようなデバッグシステムを提供することを第３の目的とする。
【課題を解決するための手段】
【０００６】
以上の課題を解決するため、本発明の第１の観点に係るインサーキットエミュレータは、機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、外部からの指示に従って第１及び／又は第２のプログラムを実行するためのＣＰＵコア部と、第１及び／又は第２のプログラムを外部から受信してプログラム記憶部に書き込み、第１のプログラムの一部又は全部の読み出し指示を外部から受信した場合に、プログラム記憶部からの第１のプログラムの一部又は全部の読み出しを行わず、第２のプログラムの一部又は全部の読み出し指示を外部から受信した場合に、プログラム記憶部からの第２のプログラムの一部又は全部の読み出しを行って外部に送信するための通信処理部とを具備する。
【０００７】
また、本発明の第２の観点に係るインサーキットエミュレータは、本発明の第１の観点に係るインサーキットエミュレータにおいて、外部との間の認証処理を行うための認証処理部を更に具備する。
【０００８】
また、本発明の第３の観点に係るインサーキットエミュレータは、本発明の第１の観点に係るインサーキットエミュレータにおいて、通信処理部が、外部からの呼び掛けに応答して、一般のインサーキットエミュレータにおいて利用されている第１の通信コマンド又は一般のインサーキットエミュレータにおいて利用されていない第２の通信コマンドを用いて外部と通信を行うことを特徴とする。
【０００９】
上記第１〜第３の観点に係るインサーキットエミュレータにおいて、通信処理部が、外部から受信した第１のプログラムが暗号化されている場合に、第１のプログラムを復号化してプログラム記憶部に書き込むこととしても良い。
【００１０】
また、本発明の第１の観点に係るデバッグ装置は、インサーキットエミュレータに接続されて使用されるデバッグ装置であって、機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、本発明の第１の観点に係るインサーキットエミュレータに接続された場合に、第１及び第２のプログラムを本発明の第１の観点に係るインサーキットエミュレータに送信し、本発明の第１の観点に係るインサーキットエミュレータ以外のインサーキットエミュレータに接続された場合に、第２のプログラムを当該インサーキットエミュレータに送信するための通信処理部と、インサーキットエミュレータとの間でデータを送受信することによりデバッグ処理を行うためのデバッグ処理部とを具備する。
【００１１】
また、本発明の第２の観点に係るデバッグ装置は、インサーキットエミュレータに接続されて使用されるデバッグ装置であって、機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、本発明の第２の観点に係るインサーキットエミュレータとの間の認証処理を行うための認証処理部と、認証処理部による認証処理ができた場合に、本発明の第２の観点に係るインサーキットエミュレータに接続されているものと判断して第１及び第２のプログラムを本発明の第２の観点に係るインサーキットエミュレータに送信し、認証処理部による認証処理ができなかった場合に、本発明の第２の観点に係るインサーキットエミュレータ以外のインサーキットエミュレータに接続されているものと判断して第２のプログラムをインサーキットエミュレータに送信するための通信処理部と、インサーキットエミュレータとの間でデータを送受信することによりデバッグ処理を行うためのデバッグ処理部とを具備する。
【００１２】
また、本発明の第３の観点に係るデバッグ装置は、インサーキットエミュレータに接続されて使用されるデバッグ装置であって、機密保持対象である第１のプログラム及び／又は機密保持対象でない第２のプログラムを記憶するためのプログラム記憶部と、第２の通信コマンドを用いてインサーキットエミュレータに呼び掛けを行い、応答があった場合に、本発明の第３の観点に係るインサーキットエミュレータに接続されているものと判断して第１及び第２のプログラムを第２の通信コマンドを用いて本発明の第３の観点に係るインサーキットエミュレータに送信し、第２の通信コマンドを用いてインサーキットエミュレータに呼び掛けを行い、応答がなかった場合に、本発明の第３の観点に係るインサーキットエミュレータ以外のインサーキットエミュレータに接続されているものと判断して第２のプログラムを第１の通信コマンドを用いて当該インサーキットエミュレータに送信するための通信処理部と、インサーキットエミュレータとの間でデータを送受信することによりデバッグ処理を行うためのデバッグ処理部とを具備する。
【００１３】
上記第１〜第３の観点に係るデバッグ装置において、プログラム記憶部に記憶されている第１のプログラムが暗号化されていることとしても良い。
【００１４】
また、本発明の第１の観点に係るデバッグシステムは、本発明の第１の観点に係るインサーキットエミュレータと、本発明の第１の観点に係るデバッグ装置とを具備する。
【００１５】
また、本発明の第２の観点に係るデバッグシステムは、本発明の第２の観点に係るインサーキットエミュレータと、本発明の第２の観点に係るデバッグ装置とを具備する。
【００１６】
また、本発明の第３の観点に係るデバッグシステムは、本発明の第３の観点に係るインサーキットエミュレータと、本発明の第３の観点に係るデバッグ装置とを具備する。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら、本発明の実施の形態について説明する。なお、同一の構成要素については、同一の参照番号で示している。
図１は、本発明の第１の実施形態に係るデバッグシステムの概要を示す図である。図１に示すように、このデバッグシステム１は、デバッグ装置２と、インサーキットエミュレータ（ＩＣＥ）３とを具備する。デバッグ装置２及びインサーキットエミュレータ３は、通信ケーブルＣを介して接続されている。インサーキットエミュレータ３は、評価用ボード、製品ボード等に結合されて使用される。
【００１８】
デバッグ装置２は、通信処理部２１と、認証処理部２２と、プログラム記憶部２３と、デバッグ処理部２４とを具備する。
通信処理部２１は、インサーキットエミュレータ３との間の通信処理等を行い、認証処理部２２は、インサーキットエミュレータ３との間の認証処理を行う。
【００１９】
プログラム記憶部２３は、例えばハードディスクドライブ等の記録媒体であり、ハードウェアベンダー等から提供され機密保持対象であるファームウェアファイルと、エンドユーザによって作成され機密保持対象ではないユーザプログラムファイルとが記憶されている。なお、ファームウェアファイルの内容は、暗号化されていることとしても良い。また、ファームウェアファイルのファイル名は、ユーザプログラムのデバッグを行うデバッグ担当者がファームウェアファイルであると認識することが困難な名称（例えば、拡張子が「ｄｌｌ」である等）であることとしても良い。これにより、デバッグ担当者がデバッグ装置２においてファームウェアの内容を知ることがより困難となる。
デバッグ処理部２４は、デバッグ担当者の操作を受け付け、操作に応じたデータをインサーキットエミュレータ３に送信し、インサーキットエミュレータ３から受信したデータを表示する。なお、デバッグ処理部２４が、ユーザプログラムファイルを作成又は更新するためのコンパイル機能、アセンブル機能等を有していても良い。
デバッグ装置３は、例えば、コンピュータとプログラムにより構成することも可能である。
【００２０】
インサーキットエミュレータ３は、通信処理部３１と、認証処理部３２と、プログラム記憶部３３と、ＣＰＵコア部３４とを具備する。
通信処理部３１は、デバッグ装置２との間の通信処理等を行い、認証処理部３２は、デバッグ装置２との間の認証処理を行う。
【００２１】
プログラム記憶部３３は、例えばメモリ等であり、ファームウェアを記憶するためのアドレス空間であるファームウェア記憶領域及びユーザプログラムを記憶するためのアドレス空間であるユーザプログラム記憶領域を有している。これらファームウェア記憶領域及びユーザプログラム記憶領域には、通信処理部３１により、デバッグ装置２のプログラム記憶部２３に記憶されているファームウェア及びユーザプログラムがそれぞれ転送され、書き込まれる。なお、通信処理部３１は、デバッグ装置２からの指示に従い、ユーザプログラム記憶領域内のユーザプログラムを読み出してデバッグ装置２に送信することは行うが、ファームウェアの機密保持のため、ファームウェア記憶領域内のファームウェアを読み出すことは行わない。なお、一般のインサーキットエミュレータは、ファームウェアとユーザプログラムを区別することなく、いずれのプログラムの読み出しも行う。この点において、インサーキットエミュレータ３は、一般のインサーキットエミュレータと異なっている。
ＣＰＵコア部３４は、デバッグ装置２からの指示に従い、プログラム記憶部３３に記憶されているファームウェア及び／又はユーザプログラムを１ステップずつ又は連続して実行する。なお、通信処理部３１は、デバッグ装置２からの指示に従い、ＣＰＵコア部３４内の各種レジスタ等への書き込み及び読み出しを行うことができる。
【００２２】
次に、デバッグシステム１の動作について説明する。図２は、デバッグシステム１のプログラム転送処理を示すフローチャートである。以下、図２を参照しながら、デバッグシステム１のプログラム転送処理について説明する。
まず、デバッグ装置２の認証処理部２２が、認証処理を行う（ステップＳ１１）。この認証処理は、デバッグ装置２に今現在接続されているインサーキットエミュレータが本実施形態に係るインサーキットエミュレータ３であるか、本実施形態に係るインサーキットエミュレータ３以外の一般のインサーキットエミュレータであるかを識別するために行われる。ここでは、図１に示すように、デバッグ装置２に本実施形態に係るインサーキットエミュレータ３が接続されているため、デバッグ装置２の認証処理部２２とインサーキットエミュレータ３の認証処理部３２との間で認証処理が行われる（ステップＳ１１及びＳ２１）。なお、この認証処理においては、インサーキットエミュレータ３の認証処理部３２が、製品型番、製品シリアル番号、その他のＩＤ等をデバッグ装置２の認証処理部２２に送信し、デバッグ装置２の認証処理部２２が、受信した製品型番等を用いて今現在接続されているインサーキットエミュレータが本実施形態に係るインサーキットエミュレータ３であるか否かを識別することとしても良い。
【００２３】
インサーキットエミュレータ３との間の認証ができた場合（ステップＳ１２）、デバッグ装置２の通信処理部２１は、ファームウェアをインサーキットエミュレータ３に送信し（ステップＳ１３）、インサーキットエミュレータ３の通信処理部３１が、受信したファームウェアをプログラム記憶部３３のファームウェア記憶領域に書き込む（ステップＳ２２）。なお、デバッグ装置２のプログラム記憶部２３内のファームウェアファイルの内容が暗号化されている場合、インサーキットエミュレータ３の通信処理部３１が、復号化してファームウェア記憶領域に書き込む。
【００２４】
インサーキットエミュレータ３との間の認証ができなかった場合（ステップＳ１２）、又はファームウェアの送信が終了した場合（ステップＳ１３）、デバッグ装置２の通信処理部２１は、ユーザプログラムをインサーキットエミュレータ３に送信し（ステップＳ１４）、インサーキットエミュレータ３の通信処理部３１が、受信したユーザプログラムをプログラム記憶部３３のユーザプログラム記憶領域に書き込む（ステップＳ２３）。
【００２５】
なお、ファームウェアの送信（ステップＳ１３）は、デバッグ担当者の指示を待たずに自動で行われることとしても良い。先に説明したようにファームウェアファイルのファイル名をデバッグ担当者がファームウェアファイルであると認識することが困難な名称としておき、更に、ファームウェアの送信がデバッグ担当者の指示を待たずに自動で行われることとすれば、ファームウェアの存在自体やインサーキットエミュレータ３への転送自体をエンドユーザから隠蔽することができる。
また、ファームウェアの送信がデバッグ担当者の指示を待たずに自動で行われることとすれば、通信ケーブルＣ上の信号をモニタリングすることによりファームウェアを入手することをより困難とすることができる。
一方、ユーザプログラムの送信（ステップＳ１４）は、デバッグ担当者の指示を待って行うこととしても良い。
【００２６】
以上により、ファームウェア及びユーザプログラムがデバッグ装置２からインサーキットエミュレータ３に転送される。これ以降、デバッグ担当者は、デバッグ処理部２４を操作してインサーキットエミュレータ３に指示を与えることにより、ＣＰＵコア部３４にファームウェア及びユーザプログラムを実行させることが可能となる。
【００２７】
ところで、デバッグ作業において、デバッグ担当者が、インサーキットエミュレータ３のプログラム記憶部３３内のプログラムを参照しようとする場合がある。図３は、このような場合に、インサーキットエミュレータ３のプログラム記憶部３３内のプログラムを参照するためのプログラム参照処理を示すフローチャートである。以下、図３を参照しながら、デバッグシステム１のプログラム参照処理について説明する。
【００２８】
まず、デバッグ担当者が所望のアドレスを入力すると、デバッグ装置２のデバッグ処理部２４は、入力されたアドレスを通信処理部２１を介してインサーキットエミュレータ３に送信する（ステップＳ３１）。なお、デバッグ担当者が単一のアドレスを入力することとしても良いし、アドレス範囲を指定することとしても良い。
インサーキットエミュレータ３の通信処理部３１は、受信したアドレスがファームウェア記憶領域内を指すかユーザプログラム記憶領域内を指すかをチェックし（ステップＳ４１）、受信したアドレスがユーザプログラム記憶領域内を指す場合には、受信したアドレスに記憶されているプログラムをデバッグ装置２に送信するが（ステップＳ４２）、受信したアドレスがファームウェア記憶領域内を指す場合には、処理を終了する。
デバッグ装置２は、プログラムを受信した場合、受信したプログラムを表示又は記憶する（ステップＳ３２）。
【００２９】
以上説明したように、デバッグシステム１によれば、デバッグ担当者が入力したアドレスがユーザプログラム記憶領域内を指す場合には、インサーキットエミュレータ３がプログラムをデバッグ装置２に送信するが、デバッグ担当者が入力したアドレスがファームウェア記憶領域内を指す場合には、インサーキットエミュレータ３がプログラムをデバッグ装置２に送信しないので、デバッグ担当者がファームウェアを閲覧することができず、ファームウェアの機密を保持することができる。
【００３０】
また、ファームウェアを閲覧しようとする意図を有するデバッグ担当者が、図４（ａ）に示すように、デバッグ装置２を本実施形態に係るインサーキットエミュレータ３以外の一般のインサーキットエミュレータ４に接続し、その後、図４（ｂ）に示すように、通信ケーブルＣの一端をデバッグ装置２から抜いて本実施形態に係るデバッグ装置２以外の一般のデバッグ装置５に接続することが考えられる。
先に説明したように、一般のインサーキットエミュレータは、本実施形態に係るインサーキットエミュレータ３と異なり、ファームウェアとユーザプログラムを区別することなく、いずれのプログラムの読み出しも行う。しかしながら、図４（ａ）に示すように、本実施形態に係るデバッグ装置２と一般のインサーキットエミュレータ４とが接続された場合、認証ができないため、ファームウェアがデバッグ装置２からインサーキットエミュレータ４に転送されることはない（図２のステップＳ１１、Ｓ２１、Ｓ１２、Ｓ１３参照）。従って、デバッグ担当者が、図４（ｂ）に示すようにインサーキットエミュレータ４とデバッグ装置５とを接続し、デバッグ装置５を操作しても、インサーキットエミュレータ４にはファームウェアが転送されておらず、ファームウェアを閲覧することはできないこととなる。
【００３１】
また、ファームウェアを閲覧しようとする意図を有するデバッグ担当者が、図５（ａ）に示すように、デバッグ装置２をインサーキットエミュレータ３に接続し、その後、図５（ｂ）に示すように、通信ケーブルＣの一端をデバッグ装置２から抜いて本実施形態に係るデバッグ装置２以外の一般のデバッグ装置５に接続することが考えられる。
図５（ａ）に示すように、デバッグ装置２とインサーキットエミュレータ３とが接続された場合、ファームウェアがデバッグ装置２からインサーキットエミュレータ３に転送される。しかしながら、デバッグ担当者が、図５（ｂ）に示すように、インサーキットエミュレータ４とデバッグ装置５とを接続し、ファームウェア記憶領域内のアドレスを指定しても、インサーキットエミュレータ３はファームウェア記憶領域内のプログラムの読み出しを行わないため（図３のステップＳ４１、Ｓ４２参照）、ファームウェアを閲覧することはできないこととなる。
【００３２】
次に、本発明の第２の実施形態について説明する。図６は、本発明の第２の実施形態に係るデバッグシステムの概要を示す図である。図６に示すように、このデバッグシステム６は、デバッグ装置７と、インサーキットエミュレータ（ＩＣＥ）８とを具備する。デバッグ装置７及びインサーキットエミュレータ８は、通信ケーブルＣを介して接続されている。
【００３３】
デバッグ装置７は、プログラム記憶部２３と、デバッグ処理部２４と、通信処理部７１とを具備する。
通信処理部７１は、一般のインサーキットエミュレータとデバッグ装置との間において利用されている一般通信コマンド又は一般のインサーキットエミュレータとデバッグ装置との間において利用されていない本実施形態特有の特殊通信コマンドを用いてインサーキットエミュレータと通信を行う。
【００３４】
インサーキットエミュレータ８は、プログラム記憶部３３と、ＣＰＵコア部３４と、通信処理部８１とを具備する。
通信処理部８１は、一般通信コマンド又は特殊通信コマンドを用いてデバッグ装置と通信を行う。
【００３５】
次に、デバッグシステム６の動作について説明する。図７は、デバッグシステム６のプログラム転送処理を示すフローチャートである。以下、図７を参照しながら、デバッグシステム６のプログラム転送処理について説明する。
まず、デバッグ装置７の通信処理部７１が、特殊通信コマンドを用いてインサーキットエミュレータ８に呼び掛けを行う（ステップＳ５１）。デバッグ装置７に一般のインサーキットエミュレータが接続されている場合、一般のインサーキットエミュレータは、特殊通信コマンドを解釈できないため、デバッグ装置７の呼び掛けに応答することはできない。一方、本実施形態に係るインサーキットエミュレータ８の通信処理部８１は、一般通信コマンド及び特殊通信コマンドのいずれをも解釈することができる。ここでは、デバッグ装置７にインサーキットエミュレータ８が接続されているため、インサーキットエミュレータ８は、特殊通信コマンドを用いてデバッグ装置７に応答する（ステップＳ６１）。
【００３６】
デバッグ装置７の通信処理部７１は、インサーキットエミュレータから応答があった場合（ステップＳ５２）には、デバッグ装置７にインサーキットエミュレータ８が接続されていると判断し、以降の通信に特殊通信コマンドを利用し（ステップＳ５３）、特殊通信コマンドを用いてファームウェアを送信し（ステップＳ５４）、特殊通信コマンドを用いてユーザプログラムを送信する（ステップＳ５５）。インサーキットエミュレータ８の通信処理部８１は、特殊通信コマンドを用いて受信したファームウェアをプログラム記憶部３３のファームウェア記憶領域に書き込み（ステップＳ６２）、特殊通信コマンドを用いて受信したユーザプログラムをプログラム記憶部３３のユーザプログラム記憶領域に書き込む（ステップＳ６３）。
なお、デバッグ装置７のプログラム記憶部２３内のファームウェアファイルの内容が暗号化されている場合、インサーキットエミュレータ８の通信処理部８１が、復号化してファームウェア記憶領域に書き込む。また、ファームウェアの送信（ステップＳ５４）は、デバッグ担当者の指示を待たずに自動で行われることとしても良い。一方、ユーザプログラムの送信（ステップＳ５５）は、デバッグ担当者の指示を待って行うこととしても良い。
【００３７】
一方、インサーキットエミュレータから応答がなかった場合（ステップＳ５２）には、デバッグ装置７の通信処理部７１は、デバッグ装置７に一般のインサーキットエミュレータが接続されていると判断し、以降の通信に一般通信コマンドを利用し（ステップＳ５６）、一般通信コマンドを用いてユーザプログラムを送信する（ステップＳ５７）。なお、ユーザプログラムの送信（ステップＳ５７）は、デバッグ担当者の指示を待って行うこととしても良い。
【００３８】
以上により、ファームウェア及びユーザプログラムがデバッグ装置７からインサーキットエミュレータ８に転送される。これ以降、デバッグ担当者は、デバッグ処理部２４からインサーキットエミュレータ８に指示を与えることにより、ＣＰＵコア部３４にファームウェア及びユーザプログラムを実行させることが可能となる。
【００３９】
ところで、デバッグ作業において、デバッグ担当者が、インサーキットエミュレータ８のプログラム記憶部３３内のプログラムを参照しようとする場合がある。この場合、先に説明したデバッグシステム１と同様に、インサーキットエミュレータ８の通信処理部８１が、デバッグ担当者が入力したアドレスがユーザプログラム記憶領域内を指す場合には、ユーザプログラムをデバッグ装置７に送信し、デバッグ担当者が入力したアドレスがファームウェア記憶領域内を指す場合には、ファームウェアをデバッグ装置７に送信しないこととすればよい（図３参照）。これにより、デバッグ担当者がファームウェアを閲覧することができず、ファームウェアの機密を保持することができる。
【００４０】
また、先に説明したと同様に、ファームウェアを閲覧しようとする意図を有するデバッグ担当者が、デバッグ装置７を本実施形態に係るインサーキットエミュレータ８以外の一般のインサーキットエミュレータに接続し、その後、通信ケーブルＣの一端をデバッグ装置７から抜いて本実施形態に係るデバッグ装置７以外の一般のデバッグ装置に接続することが考えられる（図４（ａ）、（ｂ）参照）。
先に説明したように、一般のインサーキットエミュレータは、本実施形態に係るインサーキットエミュレータ８と異なり、ファームウェアとユーザプログラムを区別することなく、いずれのプログラムの読み出しも行う。しかしながら、本実施形態に係るデバッグ装置７と一般のインサーキットエミュレータとが接続された場合、ファームウェアがデバッグ装置７から一般のインサーキットエミュレータに転送されることはない（図７のステップＳ５２、Ｓ５６、Ｓ５７参照）。従って、デバッグ担当者が、その後、一般のインサーキットエミュレータと一般のデバッグ装置とを接続し、一般のデバッグ装置を操作しても、一般のインサーキットエミュレータにはファームウェアが転送されておらず、ファームウェアを閲覧することはできないこととなる。
【００４１】
また、ファームウェアを閲覧しようとする意図を有するデバッグ担当者が、デバッグ装置７をインサーキットエミュレータ８に接続し、その後、通信ケーブルＣの一端をデバッグ装置７から抜いて本実施形態に係るデバッグ装置７以外の一般のデバッグ装置に接続することが考えられる（図５（ａ）、（ｂ）参照）。
デバッグ装置７とインサーキットエミュレータ８とが接続された場合、ファームウェアがデバッグ装置７からインサーキットエミュレータ８に特殊通信コマンドを用いて転送される（図７のステップＳ５４参照）。しかしながら、デバッグ担当者が、インサーキットエミュレータ８と一般のデバッグ装置とを接続し、ファームウェア記憶領域内のアドレスを指定しても、インサーキットエミュレータ８はファームウェア記憶領域内のプログラムの読み出しを行わないため、ファームウェアを閲覧することはできないこととなる。
【産業上の利用可能性】
【００４２】
本発明は、インサーキットエミュレータ、インサーキットエミュレータに接続されて使用されるデバッグ装置、及び、それらを具備するデバッグシステムに関する。
【図面の簡単な説明】
【００４３】
【図１】本発明の第１の実施形態に係るデバッグシステムの概要を示す図。
【図２】図１のデバッグシステム１の動作を示すフローチャート。
【図３】図１のデバッグシステム１の動作を示すフローチャート。
【図４】図１のデバッグ装置２を一般のインサーキットエミュレータに接続した図。
【図５】図１のインサーキットエミュレータ３を一般のデバッグ装置に接続した図。
【図６】本発明の第２の実施形態に係るデバッグシステムの概要を示す図。
【図７】図６のデバッグシステム６の動作を示すフローチャート。
【符号の説明】
【００４４】
１、６  デバッグシステム、２、５、７  デバッグ装置、３、４、８  インサーキットエミュレータ、２１、３１、４１、７１、８１  通信処理部、２２、３２  認証処理部、２３、３３、４２  プログラム記憶部、２４  デバッグ処理部、３４、４３  ＣＰＵコア部
【図１】
2006126994.tif 000003
【図２】
2006126994.tif 000004
【図３】
2006126994.tif 000005
【図４】
2006126994.tif 000006
【図５】
2006126994.tif 000007
【図６】
2006126994.tif 000008
【図７】
2006126994.tif 000009