(57)【特許請求の範囲】
【請求項１】
Ｉ／Ｏを介して外部装置とデータの送受信を行うエバリューションチップ側のＣＰＵのバス情報を取り込み、トレースメモリに書き込むと共に、一度取り込んだトレースメモリのデータをＣＰＵのバスに出力することでトレースメモリ取り込み時の動作を再現するインサーキットエミュレータを備えたデバッグシステムにおいて、
前記インサーキットエミュレータは、記録モードにおいて、単一もしくは複数の特定のアドレスのＩ／ＯからＣＰＵが読み出したデータとそのアドレスをトレースメモリに書き込むデータ入力手段と、
再生モードにおいて、トレースメモリに書き込まれたデータのアドレスをＣＰＵが出力するアドレスバスと比較して、一致するとトレースメモリ内のデータを順次データバスに出力する機能を有するデータ出力手段と、
前記トレースメモリの代わりに複数のメモリを使用し、ひとつの機能に使用するＩ／Ｏを同一ブロックのメモリに対応付け、データ記録モードでは、ＣＰＵがＩ／Ｏから読み出したデータを対応するブロックのメモリに書き込み、データ再生モードでは、ＣＰＵがＩ／Ｏから読み出そうとすると対応するブロックのメモリのデータをデータバスに出力するブロック選択手段と、をそれぞれ備え、
さらに、前記エバリューションチップは、前記データ出力手段がデータを出力する場合にＣＰＵのデータバスをデータ出力手段と接続するバス切替手段を備え、
さらに、当該デバックシステムは、前記メモリに書き込むデータをホストコンピュータ上で作成するメモリデータ生成手段を備えたことを特徴とするデバッグシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムの開発およびデバッグに使用するインサーキットエミュレータを備えたデバッグシステムに関するもので、応用分野としては、開発支援ツールが挙げられる。
【０００２】
【従来の技術】
特開２００１−１３６２３２公報「通信制御装置のトレース方式および方式」には、クロックごとに信号の状態をラッチして、変化を認識すると信号の状態と時間をメモリに書きこむ技術が開示されている。上記技術は中央処理装置上の上位装置と通信回線を使用して回線インターフェース信号を制御する通信制御装置に限定したものである。
特開平７−３２５７６５号公報「情報処理装置」には、通信データを蓄積し、蓄積した通信データを再生して解析を行う技術が示されている。上記技術はモデムを有する情報処理装置に関するものである。但し通信データに限定したものである。
特開平８−１４７１９１号公報である「エミュレータおよびそれを用いたマイクロコンピュータ」には、トレース情報をバスに出力することで動作を再現する技術が開示されている。上記技術は全てのトレース情報を取り込み、再生時には全ての情報を出力するものである。
【０００３】
【発明が解決しようとする課題】
プログラムの開発・デバッグにおいては外部機器からの入力信号や入力データを必要とするため、実機を使用できない場合はＩ／Ｏからのデータ読み出し命令を実行した直後でプログラムを停止してレジスタの値をデバッグから書き換えてプログラムを継続して実行したり、割り込み処理のデバッグは、プログラムカウンタの値を書き換えて実行するなど、データや信号が入力されたと仮定してのデバッグを行っている。このため、データ量が多い場合などの検証は困難であり、実機での確認をせざるを得ない。また、実機を使用した場合でも外部機器の操作やボタンなどの操作を行う必要があり、操作のタイミングによっては不具合が発生したりしなかったりということもありデバッグの効率が非常に悪い。
またマイクロコンピュータのプログラムでは、周辺回路および外部装置からの情報をＩ／Ｏから読み出して処理を行うため、プログラムの単体テストや必要とする外部装置が接続されていない状態では、デバッグによりマイクロコンピュータによるプログラムの実行・停止を制御して、Ｉ／Ｏからの読み出しを行った直後でプログラムを停止して、手動でレジスタの値を書き換えてはプログラムを継続して実行するという手法を取るが、プログラムを停止する必要があるためリアルタイム性が損なわれる上に、操作が煩雑になるため大量のデータを処理するデバッグは不可能である。
このため、大量のデータを処理するプログラムのデバッグは、外部装置を接続した実機上で行うことになるが、外部機器の操作が必要であったり、操作のタイミングによって不具合となる現象が発生したりしなかったりするため、効率的なデバッグができない。また実機となる試作機は高価であったり、設置スペースを必要とするため、複数の人員で共有しての作業を行う必要があり、効率的ではない。また、従来技術としてバスの情報を全て取り込み、再生時に全ての情報をバスに出力する方式もあるが、全てのバス情報をトレースメモリに記録しなければならず、長時間の動作を記録・再生することができない。
【０００４】
本発明は、記録時は周辺回路の機能毎にＩ／Ｏから読み出すデータを異なるブロックのメモリに保存し、再生時にプログラムが一つの機能を実行するＩ／Ｏの読み出し・書き込みの順番を維持していれば、実行する機能の順番が変更されても記録したデータを利用可能なデバッグシステムを提供することを目的とする。
また本発明は、再生に使用するデータをホストコンピュータ上で生成してインサーキットエミュレータ上のメモリに書き込み、そのデータを使用してプログラムを動作させることで、実機上でのデータの記録を必要とせず、実機完成前でもデバッグが可能なデバッグシステムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、請求項１記載の発明は、Ｉ／Ｏを介して外部装置とデータの送受信を行うエバリューションチップ側のＣＰＵのバス情報を取り込み、トレースメモリに書き込むと共に、一度取り込んだトレースメモリのデータをＣＰＵのバスに出力することでトレースメモリ取り込み時の動作を再現するインサーキットエミュレータを備えたデバッグシステムにおいて、前記インサーキットエミュレータは、記録モードにおいて、単一もしくは複数の特定のアドレスのＩ／ＯからＣＰＵが読み出したデータとそのアドレスをトレースメモリに書き込むデータ入力手段と、再生モードにおいて、トレースメモリに書き込まれたデータのアドレスをＣＰＵが出力するアドレスバスと比較して、一致するとトレースメモリ内のデータを順次データバスに出力する機能を有するデータ出力手段と、前記トレースメモリの代わりに複数のメモリを使用し、ひとつの機能に使用するＩ／Ｏを同一ブロックのメモリに対応付け、データ記録モードでは、ＣＰＵがＩ／Ｏから読み出したデータを対応するブロックのメモリに書き込み、データ再生モードでは、ＣＰＵがＩ／Ｏから読み出そうとすると対応するブロックのメモリのデータをデータバスに出力するブロック選択手段と、をそれぞれ備え、さらに、前記エバリューションチップは、前記データ出力手段がデータを出力する場合にＣＰＵのデータバスをデータ出力手段と接続するバス切替手段を備え、さらに、当該デバックシステムは、前記メモリに書き込むデータをホストコンピュータ上で作成するメモリデータ生成手段を備えたことを特徴とする。
【０００７】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。図１は本発明の第１の実施の形態に係るデバッグシステムの構成図である。その構成を動作と併せて説明する(以下の実施の形態でも同様とする)。
エバリュエーションチップ１のＣＰＵ２はＩ／Ｏ３を通じて外部装置１０とデータの通信を行ったり、エバリュエーションチップ１内の周辺回路からフラグ等の情報を取得してプログラムを実行する。通常のデバッグにおいてはインサーキットエミュレータ１１のデバッグ手段１２からＣＰＵ２のプログラムの実行・停止を制御し、ＣＰＵ２がアクセスするアドレスバスおよびデータバスの情報を、トレースデータ入力手段１３を介してトレースメモリ１４に書き込む。
次に、Ｉ／Ｏデータ記録モードの動作を説明する。実機を使用し、オペレータが外部装置１０の操作も含めて実動作を行う。オペレータはトレースメモリ１４に記録するＩ／Ｏ３のアドレス（複数可）をあらかじめインサーキットエミュレータ１１のデータ入力手段１５に設定しておく。
オペレータがデバッグ手段１２を通じてＣＰＵ２にプログラムの実行を指示すると、エバリュエーションチップ１のバス切替手段４はＣＰＵ２とＩ／Ｏ３とデータ入力手段１５のデータバスを接続した状態となる。ＣＰＵ２はプログラムを実行し、ＲＯＭ５、ＲＡＭ６、Ｉ／Ｏ３に対して読み書きを行う。
データ入力手段１５はアドレスバスを監視して、記録するように設定されたＩ／Ｏ３のアドレスからの読み出しサイクルのみのアドレスとデータをトレースメモリ１４に順次書き込み、オペレータからプログラ停止が指示されるまでトレースメモリ１４への書き込みが行われる。オペレータはプログラム停止後、インサーキットエミュレータ１１のトレースデータ転送手段１６により、トレースメモリ１４に書き込まれたデータをホストコンピュータ３０にアップロードする。
次に、I／Ｏデータ再生モードの動作を説明する。実機を使用せず、外部装置１０は接続されていないものとする。オペレータはトレースデータ転送手段１６により、ホストコンピュータ３０に保存されたデータをトレースメモリ１４にダウンロードする。
オペレータがデバッグ手段１２を介してＣＰＵ２にプログラムの実行を指示すると、ＣＰＵ２はプログラムを実行し、ＲＯＭ５、ＲＡＭ６、Ｉ／Ｏ３に対して読み書きを行う。バス切替手段４はインサーキットエミュレータ１１のデータ出力手段１７からの要求が無ければＩ／Ｏ３をＣＰＵ２のデータバスに接続し、データ出力手段１７からの要求があればデータ出力手段１７をＣＰＵ２のデータバスに接続する。
ＣＰＵ２がＩ／Ｏ３からの読み出しを行うためにアドレスバスにアドレスを出力すると、データ出力手段１７はアドレスバスのアドレスとトレースメモリ１４に書き込まれている最初のデータのアドレスを比較し、アドレスが一致するとトレースメモリ１４の最初のデータをデータバスに出力し、次にトレースメモリ１４から読み出すポインタを進めて、データ出力手段１７とＣＰＵ２のデータバスを接続するようにバス切替手段４に要求する。
アドレスが一致しない場合はバス切替手段４はＣＰＵ２とＩ／Ｏ３のデータバスを接続する。この結果、ＣＰＵ２がＩ／Ｏ３からデータを読み出す場合は、トレースメモリ１４に記録されているデータのみトレースメモリ１４から読み出し、それ以外はＩ／Ｏ３からデータを読み出す。このようにして、実機を使用したプログラムの実行結果を再現することが可能となる。
【０００８】
図２は本発明の第２の実施の形態に係るデバッグシステムの構成図である。Ｉ／Ｏデータ記録モードの動作を説明する。実機を使用し、オペレータが外部装置１０の操作も含めて実動作を行う。オペレータはあらかじめインサーキットエミュレータ１１のメモリ１８の各ブロックに記録するＩ／Ｏ３のアドレス（複数可）をデータ入力手段１５に設定しておく。
オペレータがデバッグ手段１２を通じてＣＰＵ２にプログラムの実行を指示すると、バス切替手段４はＣＰＵ２とＩ／Ｏ３とデータ入力手段１５のデータバスを接続する。ＣＰＵ２はプログラムを実行し、ＲＯＭ５、ＲＡＭ６、Ｉ／Ｏ３に対して読み書きを行う。
データ入力手段１５はアドレスバスを監視して、記録するように設定されたＩ／Ｏ３のアドレスからの読み出しサイクルのみのアドレスとデータをメモリ１８に書き込むことを決定し、インサーキットエミュレータ１１のブロック選択手段１９を通じて、対応するメモリ１８のブロックに順次書き込みを行う。オペレータはプログラム停止後、インサーキットエミュレータ１１のメモリデータ転送手段２０により、メモリ１８に書き込まれたデータをホストコンピュータ３０にアップロードする。
【０００９】
次に、I／Ｏデータ再生モードの動作を説明する。実機を使用せず、外部装置１０は接続されていないものとする。オペレータはメモリデータ転送手段２０により、ホストコンピュータ３０に保存されたデータをメモリ１８にダウンロードする。
オペレータがデバッグ手段１２を介してＣＰＵ２にプログラムの実行を指示すると、ＣＰＵ２はプログラムを実行し、ＲＯＭ５、ＲＡＭ６、Ｉ／Ｏ３に対して読み書きを行う。バス切替手段４はデータ出力手段１７からの要求が無ければＩ／Ｏ３をＣＰＵ２のデータバスに接続し、データ出力手段１７からの要求があればデータ出力手段１７をＣＰＵ２のデータバスに接続する。
ＣＰＵ２がＩ／Ｏ３からの読み出しを行うためにアドレスバスにアドレスを出力すると、データ出力手段１７はアドレスバスのアドレスがメモリ１８に書き込まれているアドレスかどうかを判定し、該当するアドレスであれば対応するブロックの最初のデータをデータバスに出力し、次にメモリ１８の対応するブロックから読み出すポインタを進めて、データ出力手段１７とＣＰＵ２のデータバスを接続するようにバス切替手段４に要求する。
アドレスが一致しない場合はバス切替手段４はＣＰＵ２とＩ／Ｏ３のデータバスを接続する。この結果、ＣＰＵ２がＩ／Ｏ３からデータを読み出す場合は、メモリ１８に記録されているデータのみメモリ１８から読み出し、それ以外はＩ／Ｏ３からデータを読み出す。
メモリ１８のブロック１をパラレルインターフェース、ブロック２をシリアルインターフェースに割り当てた場合にプログラムの変更によりパラレルインターフェースとシリアルインターフェースのＩ／Ｏから読み出す順番を変更しても、各ブロックから読み出すＩ／Ｏ３のアドレスが変わらなければ記録した時のデータを使用してプログラムの実行が可能となる。このようにして、プログラムの変更によるＩ／Ｏ３の読み出しの順番が変わっても、記録したデータを使用してプログラムの実行を可能とする。
【００１０】
図３は本発明の第３の実施の形態に係るデバッグシステムの構成図である。入力信号記録モードの動作を説明する。実機を使用し、オペレータが外部装置の操作も含めて実動作を行う。トレースメモリ１４は通常ＣＰＵ２のプログラムの実行結果としてアドレスとデータをトレースデータ入力手段１３を通じて書き込むが、入力信号を記録するためのメモリとして使用する。
オペレータがデバッグ手段１２を通じてＣＰＵ２にプログラムの実行を指示すると、インサーキットエミュレータ１１の時間測定手段２１がカウントアップを開始する。データ入力手段１５は入力信号を監視し、信号の状態が変化すると信号の情報（ＬＯＷまたはＨＩＧＨ）と時間測定手段２１のカウント値をトレースメモリ１４に書き込む。オペレータはプログラム停止後、トレースデータ転送手段１６により、トレースメモリ１４に書き込まれたデータをホストコンピュータ３０にアップロードする。
次に、入力信号再生モードの動作を説明する。実機を使用せず、外部装置１０は接続されていないものとする。オペレータはトレースデータ転送手段１６により、ホストコンピュータ３０に保存されたデータをトレースメモリ１４にダウンロードする。
オペレータがデバッグ手段１２を介してＣＰＵ２にプログラムの実行を指示すると、ＣＰＵ２はプログラムを実行し、時間測定手段２１はカウントアップを開始する。データ出力手段１７はトレースメモリ１４の先頭に記録されている時間測定手段２１のカウント値と時間測定手段２１の実カウント値を比較し、一致するとトレースメモリ１４に書き込まれている先頭のデータを入力信号バスに出力し、トレースメモリ１４から次に比較するデータのポインタをインクリメントする。以降、時間測定手段２１とトレースメモリ１４の時間を比較して、一致するたびに順番にデータを入力信号バスに出力する。
キー入力などの変化が遅い入力信号の記録はＣＰＵ２が動作するクロックを使用することで対応可能であるが、シリアル通信等の高速なものについては時間測定手段２１やデータ入力手段１５、データ出力手段１７のクロックとして外部のクロックを使用することで対応可能である。このようにして、入力信号を記録したときと同じタイミングで再生してプログラムの実行結果を再現することが可能となる。
【００１１】
図４は本発明の第４の実施の形態に係るデバッグシステムの構成図である。オペレータはメモリデータ生成手段３１により、メモリ１８にダウンロードするデータをあらかじめ生成しておく。次に、オペレータはメモリデータ転送手段２０により、作成したデータをメモリ１８にダウンロードする。
オペレータがデバッグ手段１２を介してＣＰＵ２にプログラムの実行を指示すると、ＣＰＵ２はプログラムを実行し、ＲＯＭ５、ＲＡＭ６、Ｉ／Ｏ３に対して読み書きを行う。バス切替手段４はデータ出力手段１７からの要求が無ければＩ／Ｏ３をＣＰＵ２のデータバスに接続し、データ出力手段１７からの要求があればデータ出力手段１７をＣＰＵ２のデータバスに接続する。
ＣＰＵ２がＩ／Ｏ３からの読み出しを行うためにアドレスバスにアドレスを出力すると、データ出力手段１７はアドレスバスのアドレスがメモリ１８に書き込まれているアドレスかどうかを判定し、該当するアドレスであればメモリ１８の対応するブロックの最初のデータをデータバスに出力し、次にメモリ１８の対応するブロックから読み出すポインタを進めて、データ出力手段１７とＣＰＵ２のデータバスを接続するようにバス切替手段４に要求する。アドレスが一致しない場合はバス切替手段４はＣＰＵ２とＩ／Ｏ３のデータバスを接続する。
この結果、ＣＰＵ２がＩ／Ｏ３からデータを読み出す場合は、メモリ１８に記録されているデータのみメモリ１８から読み出し、それ以外はＩ／Ｏ３からデータを読み出す。このようにして、実機を使用してデータを記録することなく、ホストコンピュータ３０上で作成したデータを使用してのプログラム実行が可能であるため、実機の完成を待たずプログラムのデバッグを可能とする。
【００１２】
図５は本発明の第５の実施の形態に係るデバッグシステムの構成図である。記録モードの動作については第１の実施の形態と同じであるため省略する。I／Ｏデータ再生モードの動作を説明する。オペレータはトレースデータ転送手段１６により、ホストコンピュータ３０に保存されたデータをトレースメモリ１４にダウンロードする。
オペレータがデバッグ手段１２を介してＣＰＵ２にプログラムの実行を指示すると、バス切替手段４はＣＰＵ２側のアドレスバスとデータバスをインサーキットエミュレータ１１側のアドレスバスとデータバスから切り離し、エバリュエーションチップ１のデータ出力手段８からの要求が無ければＩ／Ｏ３のデータバスをＣＰＵ２側のデータバスに接続する。
データ出力手段８はトレースメモリ１４に対して最初のデータを要求し、インサーキットエミュレータ１１側のアドレスバスとデータバスを介してアドレスとデータを取り込む。ＣＰＵ２がプログラムの実行を開始すると、データ出力手段８はＣＰＵ２側のアドレスバスとトレースメモリ１４から取り込んだアドレスの比較を行い、トレースメモリ１４から取り込んでいたデータをバス切替手段４に渡し、ＣＰＵ２側のデータバスに出力するように要求する。同時にトレースメモリ１４に対して次のデータを要求する。
バス切替手段４はＩ／Ｏ３のデータバスをＣＰＵ２側のデータバスから切り離してデータ出力手段８から渡されたデータをＣＰＵ２側のデータバスに出力する。このようにして、データ出力手段８をエバリュエーションチップ１内に配置することで、エバリュエーションチップ１とインサーキットエミュレータ１１間のプローブによる遅延の影響を受けることなく高速な動作が可能となる。
【００１３】
【発明の効果】
以上説明したように、請求項１のデバッグシステムにおいては、実機を使用して実行したプログラムを実機が無くても同一条件で実行することが可能になる。また、実機を必要としないので、複数の人員による同一条件のデバッグが可能になる。
また、プログラムの変更によるＩ／Ｏを読み出す順番が変わっても、記録したデータを加工することなく使用可能になる。
また、外部からの入力信号を再生することで、割り込みなどの動作も含めて動作の記録・再生を可能とし、実機上の動作を忠実に再現することが可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るデバッグシステムの構成図である。
【図２】本発明の第２の実施の形態に係るデバッグシステムの構成図である。
【図３】本発明の第３の実施の形態に係るデバッグシステムの構成図である。
【図４】本発明の第４の実施の形態に係るデバッグシステムの構成図である。
【図５】本発明の第５の実施の形態に係るデバッグシステムの構成図である。
【符号の説明】
１  エバリュエーションチップ、２  ＣＰＵ、３  Ｉ／Ｏ、４  バス切替手段、１０  外部装置、１１  インサーキツトエミュレータ、１４  トレースメモリ、１５  データ入力手段、１７  データ出力手段
【図１】
0004484417.tif 000002
【図２】
0004484417.tif 000003
【図３】
0004484417.tif 000004
【図４】
0004484417.tif 000005
【図５】
0004484417.tif 000006