IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ラピステクノロジー株式会社の特許一覧

<>
  • 特開-インサーキットエミュレータ装置 図1
  • 特開-インサーキットエミュレータ装置 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023150108
(43)【公開日】2023-10-16
(54)【発明の名称】インサーキットエミュレータ装置
(51)【国際特許分類】
   G06F 11/36 20060101AFI20231005BHJP
   G06F 11/22 20060101ALI20231005BHJP
【FI】
G06F11/36 152
G06F11/36 136
G06F11/22 606A
G06F11/22 675E
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022059027
(22)【出願日】2022-03-31
(71)【出願人】
【識別番号】320012037
【氏名又は名称】ラピステクノロジー株式会社
(74)【代理人】
【識別番号】110001025
【氏名又は名称】弁理士法人レクスト国際特許事務所
(72)【発明者】
【氏名】山崎 博
【テーマコード(参考)】
5B042
5B048
【Fターム(参考)】
5B042GA13
5B042HH30
5B042MA05
5B042MA14
5B042MA20
5B042MC03
5B042MC07
5B042MC40
5B048BB02
5B048CC17
(57)【要約】
【課題】
CPUのプログラム実行中に特定のイベントが発生した場合にCPUの動作履歴が直ちに参照することができるインサーキットエミュレータ装置を提供する。
【解決手段】
プログラムを実行し、プログラムの実行に伴って変化するパラメータ値を出力する又は入出力するCPUと、CPUが出力する又は入出力するパラメータ値を順次記憶してパラメータ値の変化履歴を形成する複数のトレースメモリと、CPUによるプログラムの実行に伴って発生する特定のイベントを検出するイベント検出回路と、イベント検出回路による特定のイベント検出に応答して複数のトレースメモリのうちのいずれか1のトレースメモリの記憶動作を停止させ、1のトレースメモリからパラメータ値の変化履歴を読み出して出力するイベントトレース制御回路と、含む。
【選択図】 図1
【特許請求の範囲】
【請求項1】
プログラムを実行し、前記プログラムの実行に伴って変化するパラメータ値を出力する又は入出力するCPUと、
前記CPUが出力する又は入出力する前記パラメータ値を順次記憶して前記パラメータ値の変化履歴を形成する複数のトレースメモリと、
前記CPUによる前記プログラムの実行に伴って発生する特定のイベントを検出するイベント検出回路と、
前記イベント検出回路による前記特定のイベント検出に応答して前記複数のトレースメモリのうちのいずれか1のトレースメモリの記憶動作を停止させ、前記1のトレースメモリから前記パラメータ値の変化履歴を読み出して出力するイベントトレース制御回路と、含むことを特徴とするインサーキットエミュレータ装置。
【請求項2】
前記イベントトレース制御回路は、前記イベント検出回路による前記特定のイベント検出から予め定められた遅延を経た後、前記1のトレースメモリの記憶動作を停止させることを特徴とする請求項1記載のインサーキットエミュレータ装置。
【請求項3】
前記イベントトレース制御回路は、前記1のトレースメモリから前記パラメータ値の変化履歴を読み出した後、前記1のトレースメモリの記憶動作を再開させることを特徴とすることを特徴とする請求項1又は2記載のインサーキットエミュレータ装置。
【請求項4】
前記イベントトレース制御回路は、前記1のトレースメモリの記憶動作の停止中における前記イベント検出回路による前記特定のイベント検出に応答して前記複数のトレースメモリのうちの前記1のトレースメモリを除く別のトレースメモリの記憶動作を停止させ、前記別のトレースメモリから前記パラメータ値の変化履歴を読み出して出力することを特徴とする請求項1乃至3のいずれか1記載のインサーキットエミュレータ装置。
【請求項5】
前記プログラムが記憶されたプログラムメモリを含み、
前記パラメータ値は、前記CPUが出力するプログラム実行アドレス信号が示す前記プログラムメモリの記憶箇所のアドレスであることを特徴することを特徴とする請求項1乃至4のいずれか1記載のインサーキットエミュレータ装置。
【請求項6】
データを記憶するデータメモリを含み、
前記パラメータ値は、前記CPUが前記データメモリについて入出力する書き込み/読み出しデータであることを特徴することを特徴とする請求項1乃至4のいずれか1記載のインサーキットエミュレータ装置。
【請求項7】
前記特定のイベントは、前記CPUが出力するプログラム実行アドレス信号が示すアドレスが第1の特定のアドレスと一致したこと、前記プログラムの実行中の割り込み、前記プログラムの実行中のリセット、及び前記CPUが出力するアクセスアドレス信号が示すアドレスが第2の特定のアドレスと一致したことのうちの少なくとも1つであることを特徴とする請求項1乃至4のいずれか1記載のインサーキットエミュレータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムを試験的に実行するインサーキットエミュレータ装置に関する。
【背景技術】
【0002】
インサーキットエミュレータ装置は、マイクロコンピュータシステムの開発の際に用いられる試験装置であり、マイクロコンピュータシステムのCPUがプログラムに従って正しく実行するか否かをそのCPUに代わって確認するものである。
【0003】
特許文献1には、デバッグ用CPUと、プログラムやデータを格納するメインメモリと、デバッグ時にデバッグ用CPUを制御する制御回路と、デバッグ用CPUのプログラム実行中の命令の実行履歴、及びメインメモリへのデータアクセスの履歴を記録するトレースメモリ装置とを有するインサーキットエミュレータ装置が開示されている。この従来のインサーキットエミュレータ装置では、デバッグ用CPUでの命令の実行に伴ってメインメモリに新たに書き込まれたデータを、トレースメモリ装置に記録された命令実行履歴の情報に基づいて、トレースメモリ装置に記録されたデータアクセス履歴の情報から取得して出力することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005-182573号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
かかる従来のインサーキットエミュレータ装置においては、トレースメモリ装置には記録されたデバッグ用CPUのプログラム実行中の命令の実行履歴やメインメモリへのデータアクセスの履歴の参照はデバッグ用CPUがプログラムの実行を終了してから行うことが一般的であった。
【0006】
しかしながら、インサーキットエミュレータ装置の利用者によってはプログラムの実行中に割り込み等のイベントが発生した際に直ちにそれらの履歴に基づいてイベント発生時の動作を検証したいことがあり、従来のインサーキットエミュレータ装置ではそのようなイベント発生時の動作をトレースメモリ装置に記録された履歴に基づいてイベント発生直後に直ちに検証することができないという問題があった。
【0007】
そこで、本発明の目的は、CPUのプログラム実行中に特定のイベントが発生した場合にCPUの動作履歴を直ちに参照することができるインサーキットエミュレータ装置を提供することである。
【課題を解決するための手段】
【0008】
本発明のインサーキットエミュレータ装置は、プログラムを実行し、前記プログラムの実行に伴って変化するパラメータ値を出力する又は入出力するCPUと、前記CPUが出力する又は入出力する前記パラメータ値を順次記憶して前記パラメータ値の変化履歴を形成する複数のトレースメモリと、前記CPUによる前記プログラムの実行に伴って発生する特定のイベントを検出するイベント検出回路と、前記イベント検出回路による前記特定のイベント検出に応答して前記複数のトレースメモリのうちのいずれか1のトレースメモリの記憶動作を停止させ、前記1のトレースメモリから前記パラメータ値の変化履歴を読み出して出力するイベントトレース制御回路と、含むことを特徴としている。
【発明の効果】
【0009】
本発明のインサーキットエミュレータ装置によれば、CPUがプログラム実行中に特定のイベントが発生した場合にCPUのプログラム実行動作を停止させることなく、そのイベントの発生時を含むその前後のプログラム実行アドレス等のパラメータ値を取り出すことができるので、イベントの発生直後にそのパラメータ値の変化履歴を直ちに参照することができ、これによりプログラムデバッグの際におけるリアルタイム性を得ることができる。
【図面の簡単な説明】
【0010】
図1】本発明の実施例1としてインサーキットエミュレータ装置の構成を示すブロック図である。
図2】本発明の実施例2としてインサーキットエミュレータ装置の構成を示すブロック図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施例を、図面を参照しつつ詳細に説明する。
【実施例0012】
図1は本発明の実施例1としてインサーキットエミュレータ装置の構成を示している。このインサーキットエミュレータ装置は、ICE(インサーキットエミュレータ)回路11及びマイクロコンピュータ回路12を含むマイクロコンピュータデバッグシステム10と、ICE制御CPU(中央処理装置)20と、PCデバッガ30とを備えている。
【0013】
ICE回路11は、リアルタイムトレース制御回路21と、リアルタイムトレースメモリ22と、イベントトレース制御回路23と、イベントトレースメモリ24-1~24-n(nは2以上の整数)と、イベント検出回路25とを含んでいる。マイクロコンピュータ回路12は、CPU31と、プログラムメモリ32と、データメモリ33とを含んでいる。
【0014】
マイクロコンピュータ回路12では、CPU31はプログラムメモリ32と接続されている。プログラムメモリ32にはデバッグ対象のプログラムが記憶されている。CPU31はプログラムメモリ32に記憶されたデバッグ対象のプログラムを実行する。そのプログラムの実行ではCPU31がプログラム実行アドレス信号を生成し、プログラム実行アドレス信号が示すアドレスで指定されたプログラムメモリ32の記憶箇所からデバッグ対象のプログラムの命令が読み出される。読み出された命令はCPU31に供給され、CPU31はその命令を実行する。データメモリ33は、例えば、RAM(ランダムアクセスメモリ)からなる。CPU31はデバッグ対象のプログラムを実行することによりデータをデータメモリ33に書き込み、またデータメモリ33に書き込まれたデータを読み出すことを行う。CPU31はデータメモリ33についてデータの書き込み又は読み出し動作時にはデータメモリ33の記憶箇所に対応するアドレスを示すアクセスアドレス信号をデータメモリ33に供給する。
【0015】
また、CPU31はデバッグ対象のプログラムの実行に伴って特定のイベントを発生する。特定のイベントはCPU31の特徴的な動作状態を指している。そのイベントの具体例としては、(1)プログラム実行アドレス(プログラム実行アドレス信号が示すアドレス)が特定のアドレスと一致したというプログラム実行アドレス一致イベント、(2)割り込みイベント、(3)リセットイベント、(4)データメモリ33の書き込み又は読み出し先のアドレス(アクセスアドレス信号が示すアドレス)が特定のアドレスと一致したというデータメモリアドレス一致イベントがある。
【0016】
マイクロコンピュータ回路12は、特定のイベントの発生を検出させるために、CPU31から出力されるリセット信号、割り込み信号、データメモリ33の書き込み又は読み出し先のアドレスを示すアクセスアドレス信号、及びプログラムメモリ32の実行アドレスを示すプログラム実行アドレス信号をイベント検出回路25に供給する。
【0017】
ICE制御CPU20は、ICE回路11内のリアルタイムトレース制御回路21及びイベントトレース制御回路23に接続されており、リアルタイムトレース制御回路21及びイベントトレース制御回路23の各々に命令を送出し、また、リアルタイムトレース制御回路21又はイベントトレース制御回路23から出力されたデータを受信する。
【0018】
リアルタイムトレース制御回路21は、プログラム実行アドレスを記憶するための多数の記憶箇所を有するリアルタイムトレースメモリ22に接続されている。リアルタイムトレース制御回路21は、リアルタイムトレースメモリ22のトレースの開始及びトレースの終了を含むトレース動作を制御すると共に、プログラム実行アドレスを記憶するリアルタイムトレースメモリ22の記憶箇所を順番に指定するトレースメモリアドレス信号を生成する。
【0019】
リアルタイムトレースメモリ22及びイベントトレースメモリ24-1~24-nにはCPU31が出力するプログラム実行アドレス信号が供給される。プログラム実行アドレス信号が示すアドレスはCPU31によるプログラムの実行と共に変化するCPU31の出力パラメータ値である。リアルタイムトレースメモリ22は、リアルタイムトレース制御回路21のトレースの開始制御に応じてリアルタイムトレースメモリ22はトレースメモリアドレス信号によって指定された記憶箇所にプログラム実行アドレス信号が示すアドレスを記憶する。なお、本実施例1でいうリアルタイムトレースとはCPU31が出力するプログラム実行アドレス信号が示すアドレスをプログラム実行アドレス信号の出力順に記憶することである。
【0020】
イベント検出回路25には、マイクロコンピュータ回路12から上述したリセット信号、割り込み信号、アクセスアドレス信号、及びプログラム実行アドレス信号が供給される。イベント検出回路25はリセット信号、割り込み信号、アクセスアドレス信号、及びプログラム実行アドレス信号に応じて特定のイベントの発生を判別し、判別結果として特定のイベントの発生時にはイベント信号を発生する。イベント検出回路25はイベントトレース制御回路23との間にはm(mは2以上の整数)個の信号ライン26-1~26-mが設けられている。イベント信号は信号ライン26-1~26-mのいずれか1の信号ラインによってイベントトレース制御回路23に供給される。
【0021】
イベントトレース制御回路23はイベントトレースメモリ24-1~24-nの各々に接続されている。イベントトレース制御回路23にはリアルタイムトレース制御回路21からトレースクロック信号が供給される。トレースクロック信号は、イベントトレースメモリ24-1~24-nの各々書き込みアドレスを指定するタイミング信号であり、上述したトレースメモリアドレス信号のアドレス指定のタイミングと同期している。イベントトレース制御回路23はトレースクロック信号に同期してイベントトレースアドレス信号を各々生成する。各イベントトレースアドレス信号はイベントトレースメモリ24-1~24-nに供給され、イベントトレースメモリ24-1~24-nの記憶箇所を指定する。イベントトレースメモリ24-1~24-nの各々はイベントトレースアドレス信号によって指定された記憶箇所にCPU31が出力するプログラム実行アドレス信号が示すアドレスを記憶する。
【0022】
イベントトレースメモリ24-1~24-nは例えば、同一の記憶箇所数のメモリであり、プログラム実行アドレス信号が示すアドレスを記憶するための複数の記憶箇所を各々有しているが、リアルタイムトレースメモリ22の記憶箇所数と比べて少なくても良い。ここで、説明を簡単にするために、イベントトレースメモリ24-1~24-nの各々にアドレスを記憶するための記憶箇所がk(2以上の整数)個あるとする。イベントトレースメモリ24-1について説明すると、イベントトレースアドレス信号はイベントトレースメモリ24-1の第1の記憶箇所から順番に指定し、第kの記憶箇所を指定し終わると、次に再び第1の記憶箇所から順番に指定することを繰り返す。すなわち、第kの記憶箇所にアドレスが順番に書き込まれた後はデータの上書きが繰り返されるのである。このことはイベントトレースメモリ24-2~24-nについても同様である。ただし、イベントトレースアドレス信号はイベントトレースメモリ24-1~24-n各々で独立しており、異なる記憶箇所を指定しても良い。
【0023】
イベントトレース制御回路23は、イベント検出回路25からイベント信号を受信すると、アドレス記憶動作中、すなわちプログラム実行アドレス信号が示すアドレスを順次記憶中にあるイベントトレースメモリ24-1~24-nのうちのいずれか1のイベントトレースメモリのアドレス記憶動作を停止させる。このアドレス記憶動作の停止はイベント信号を受信してから若干遅れて行うようにしても良い。遅れ時間は、例えば、プログラム実行アドレス信号が示すアドレスが数ステップ分に相当する時間である。また、イベントトレース制御回路23はICE制御CPU20の制御により、アドレス記憶動作を停止させたイベントトレースメモリの各記憶箇所からk個のデータを時間的に古いデータ(プログラム実行アドレス信号が示すアドレス)から順番に読み出す。具体的には、イベントトレース制御回路23は読み出しアドレス信号を例えば、イベントトレースメモリ24-1に供給すると、読み出しアドレス信号によって指定される記憶箇所のデータが読み出され、それが読み出しデータとしてイベントトレースメモリ24-1からイベントトレース制御回路23に供給され、そのデータ読み出し動作がk個の記憶箇所について行われる。
【0024】
PCデバッガ30は、ICE制御CPU20に接続されており、ユーザがデバッグのための操作を行うPC(パーソナルコンピュータ)である。また、PCデバッガ30は、ディスプレイを有し、イベントの発生通知、及びイベントトレースメモリ24-1~24-n各々に記憶されたデータであるプログラム実行アドレスの供給を受け入れ、イベントの発生時のプログラム実行アドレスの変化をディスプレイに表示させることができる。
【0025】
次に、かかる構成の実施例1のインサーキットエミュレータ装置の動作を説明する。
【0026】
先ず、PCデバッガ30に対するユーザ操作によってPCデバッガ30からICE制御CPU20を介してCPU31に対してデバッグ対象のプログラムの実行命令が供給される。CPU31は実行命令に応答してプログラムメモリ32に格納されたプログラムから命令を読み出し、その命令の実行を開始する。すなわち、CPU31はCPUクロック信号に同期してプログラムメモリ32に対してプログラム実行アドレス信号を供給し、プログラムメモリ32はプログラム実行アドレス信号が示すアドレスの記憶箇所にある命令を読み出し、その命令をCPU31に供給する。CPU31は供給された命令を実行する。
【0027】
プログラム実行アドレス信号が示すアドレスは、CPU31内の図示しないプログラムカウンタのカウント値である。CPU31は供給された命令を実行する毎にプログラムカウンタのカウント値を更新させる。プログラムカウンタのカウント値は初期値から順番に変化するが、プログラム中の命令によっては特定の値にジャンプすることが生ずる。
【0028】
プログラム実行アドレス信号は、リアルタイムトレースメモリ22、イベントトレースメモリ24-1~24-n、及びイベント検出回路25に供給される。リアルタイムトレースメモリ22はプログラム実行アドレス信号が供給される毎にプログラム実行アドレス信号が示すアドレスをトレースメモリアドレス信号によって指定された記憶箇所に記憶する。トレースメモリアドレス信号は上記したようにリアルタイムトレース制御回路21から供給される。
【0029】
イベントトレースメモリ24-1~24-nの各々はプログラム実行アドレス信号が供給される毎にプログラム実行アドレス信号が示すアドレスをイベントトレースアドレス信号によって指定された記憶箇所に記憶する。イベントトレースアドレス信号は上記したようにイベントトレース制御回路23から各々供給される。このようにリアルタイムトレースメモリ22及びイベントトレースメモリ24-1~24-nの各々のトレース対象はプログラム実行アドレス信号が示すアドレスであり、そのアドレスはプログラムメモリ32の記憶箇所を指定するものである。また、イベントトレースメモリ24-1~24-nの各々には、例えば、リアルタイムトレースメモリ22に比べて少ない直近k個のアドレスだけが記憶され得る。
【0030】
イベント検出回路25においては、プログラム実行アドレス信号の他にマイクロコンピュータ回路12から上述したリセット信号、割り込み信号、及びアクセスアドレス信号が供給される。上述したように、イベント検出回路25はリセット信号、割り込み信号、アクセスアドレス信号、及びプログラム実行アドレス信号に応じて特定のイベントの発生を判別し、特定のイベントの発生時にはイベント信号を発生する。
【0031】
ここで、次のようにイベント毎にイベント信号を伝送する信号ラインと、記憶されたデータを使用するイベントトレースメモリとが予め設定されているとして説明する。プログラム実行アドレスが特定のアドレスと一致したという第1のイベントに対しては、信号ライン26-1を介して第1のイベント信号がイベントトレース制御回路23に供給され、イベントトレースメモリ24-1に記憶されたデータが用いられる。割り込みという第2のイベントに対しては、信号ライン26-2を介して第2のイベント信号がイベントトレース制御回路23に供給され、イベントトレースメモリ24-2に記憶されたデータが用いられる。リセットという第3のイベントに対しては、信号ライン26-3を介して第3のイベント信号がイベントトレース制御回路23に供給され、イベントトレースメモリ24-3に記憶されたデータが用いられる。データメモリ33の書き込み又は読み出し先のアドレスが特定のアドレスと一致したという第4のイベントに対しては、信号ライン26-4を介して第4のイベント信号がイベントトレース制御回路23に供給され、イベントトレースメモリ24-4に記憶されたデータが用いられる。
【0032】
イベント検出回路25において、第1のイベント、すなわちプログラム実行アドレス信号からプログラム実行アドレスが特定のアドレスと一致したことが検出されたならば、第1のイベント信号が信号ライン26-1を介してイベントトレース制御回路23に供給される。イベントトレース制御回路23は、ICE制御CPU20に対して第1のイベントの発生を通知し、イベントトレースアドレス信号のイベントトレースメモリ24-1への供給を停止する。これにより、PCデバッガ30はICE制御CPU20を介して第1のイベントの発生通知が供給され、第1のインベントであるプログラム実行アドレス一致の発生をディスプレイに表示する。イベントトレースアドレス信号のイベントトレースメモリ24-1への供給停止により、イベントトレースメモリ24-1はCPU31から供給されるプログラム実行アドレス信号が示すアドレスの記憶であるイベントトレース動作を停止する。また、イベントトレース制御回路23はイベントトレースメモリ24-1のイベントトレース動作の停止を示すためにイベントトレースメモリ24-1についての停止フラグをセットする。
【0033】
イベントトレース制御回路23は、読み出しアドレス信号をイベントトレースメモリ24-1に供給し、イベントトレースメモリ24-1に記憶されたk個のアドレスデータを時間的に古い順に読み出し、読み出しアドレスデータをICE制御CPU20に順に信号として供給する。これにより、PCデバッガ30にはICE制御CPU20を介して読み出しアドレスデータ信号、すなわちプログラム実行アドレス一致イベントの発生時を含むその前後のプログラム実行アドレス信号が供給されるので、PCデバッガ30のディスプレイにはそのプログラム実行アドレス信号が示すアドレスの変化が表示される。
【0034】
イベントトレース制御回路23は、イベントトレースメモリ24-1からアドレスデータの読み出しを終了すると、イベントトレースアドレス信号をイベントトレースメモリ24-1へ再び供給する。これによりイベントトレースメモリ24-1はイベントトレースアドレス信号に応じてCPU31から供給されるプログラム実行アドレス信号が示すアドレスをイベントトレースアドレス信号によって指定された記憶箇所に記憶することを再開する。また、イベントトレース制御回路23はイベントトレースメモリ24-1についての停止フラグをリセットする。
【0035】
イベント検出回路25において、第2のイベント、すなわち割り込みの発生が検出されたならば、第2のイベント信号が信号ライン26-2を介してイベントトレース制御回路23に供給される。イベントトレース制御回路23は、ICE制御CPU20に対して第2のイベントの発生を通知し、イベントトレースアドレス信号のイベントトレースメモリ24-2への供給を停止する。これにより、PCデバッガ30はICE制御CPU20を介して第2のイベントの発生通知が供給され、第2のインベントである割り込みイベントの発生をディスプレイに表示する。イベントトレースアドレス信号のイベントトレースメモリ24-2への供給停止により、イベントトレースメモリ24-2はCPU31から供給されるプログラム実行アドレス信号が示すアドレスの記憶であるイベントトレース動作を停止する。また、イベントトレース制御回路23はイベントトレースメモリ24-2のイベントトレース動作の停止を示すためにイベントトレースメモリ24-2についての停止フラグをセットする。
【0036】
イベントトレース制御回路23は、読み出しアドレス信号をイベントトレースメモリ24-2に供給し、イベントトレースメモリ24-2に記憶されたk個のアドレスデータを時間的に古い順に読み出し、読み出しアドレスデータをICE制御CPU20に順に信号として供給する。これにより、PCデバッガ30にはICE制御CPU20を介して読み出しアドレスデータ信号、すなわち割り込みイベントの発生時を含むその前後のプログラム実行アドレス信号が供給されるので、PCデバッガ30のディスプレイにはそのプログラム実行アドレス信号が示すアドレスの変化が表示される。
【0037】
イベントトレース制御回路23は、イベントトレースメモリ24-2からアドレスデータの読み出しを終了すると、イベントトレースアドレス信号をイベントトレースメモリ24-2へ再び供給する。これによりイベントトレースメモリ24-2はイベントトレースアドレス信号に応じてCPU31から供給されるプログラム実行アドレス信号が示すアドレスをイベントトレースアドレス信号によって指定された記憶箇所に記憶することを再開する。また、イベントトレース制御回路23はイベントトレースメモリ24-2についての停止フラグをリセットする。
【0038】
イベント検出回路25において、第3のイベント、すなわちリセットの発生が検出されたならば、第3のイベント信号が信号ライン26-3を介してイベントトレース制御回路23に供給される。イベントトレース制御回路23は、ICE制御CPU20に対して第3のイベントの発生を通知し、イベントトレースアドレス信号のイベントトレースメモリ24-3への供給を停止する。これにより、PCデバッガ30はICE制御CPU20を介して第3のイベントの発生通知が供給され、第3のインベントであるリセットイベントの発生をディスプレイに表示する。イベントトレースアドレス信号のイベントトレースメモリ24-3への供給停止により、イベントトレースメモリ24-3はCPU31から供給されるプログラム実行アドレス信号が示すアドレスの記憶であるイベントトレース動作を停止する。また、イベントトレース制御回路23はイベントトレースメモリ24-3のイベントトレース動作の停止を示すためにイベントトレースメモリ24-3についての停止フラグをセットする。
【0039】
イベントトレース制御回路23は、読み出しアドレス信号をイベントトレースメモリ24-3に供給し、イベントトレースメモリ24-3に記憶されたk個のアドレスデータを時間的に古い順に読み出し、読み出しアドレスデータをICE制御CPU20に順に信号として供給する。これにより、PCデバッガ30にはICE制御CPU20を介して読み出しアドレスデータ信号、すなわちリセットイベントの発生時を含むその前後のプログラム実行アドレス信号が供給されるので、PCデバッガ30のディスプレイにはそのプログラム実行アドレス信号が示すアドレスの変化が表示される。
【0040】
イベントトレース制御回路23は、イベントトレースメモリ24-3からアドレスデータの読み出しを終了すると、イベントトレースアドレス信号をイベントトレースメモリ24-3へ再び供給する。これによりイベントトレースメモリ24-3はイベントトレースアドレス信号に応じてCPU31から供給されるプログラム実行アドレス信号が示すアドレスをイベントトレースアドレス信号によって指定された記憶箇所に記憶することを再開する。また、イベントトレース制御回路23はイベントトレースメモリ24-3についての停止フラグをリセットする。
【0041】
イベント検出回路25において、第4のイベント、すなわちデータメモリ33の書き込み又は読み出し先のアドレスが特定のアドレスと一致したことが検出されたならば、第4のイベント信号が信号ライン26-4を介してイベントトレース制御回路23に供給される。イベントトレース制御回路23は、ICE制御CPU20に対して第4のイベントの発生を通知し、イベントトレースアドレス信号のイベントトレースメモリ24-4への供給を停止する。これにより、PCデバッガ30はICE制御CPU20を介して第3のイベントの発生通知が供給され、第4のインベントであるデータメモリの書き込み又は読み出し先のアドレス一致イベントをディスプレイに表示する。イベントトレースアドレス信号のイベントトレースメモリ24-4への供給停止により、イベントトレースメモリ24-4はCPU31から供給されるプログラム実行アドレス信号が示すアドレスの記憶であるイベントトレース動作を停止する。また、イベントトレース制御回路23はイベントトレースメモリ24-4のイベントトレース動作の停止を示すためにイベントトレースメモリ24-4についての停止フラグをセットする。
【0042】
イベントトレース制御回路23は、読み出しアドレス信号をイベントトレースメモリ24-4に供給し、イベントトレースメモリ24-4に記憶されたk個のアドレスデータを時間的に古い順に読み出し、読み出しアドレスデータをICE制御CPU20に順に信号として供給する。これにより、PCデバッガ30にはICE制御CPU20を介して読み出しアドレスデータ信号、すなわちデータメモリの書き込み又は読み出し先のアドレス一致イベントの発生時を含むその前後のプログラム実行アドレス信号が供給されるので、PCデバッガ30のディスプレイにはそのプログラム実行アドレス信号が示すアドレスの変化が表示される。
【0043】
イベントトレース制御回路23は、イベントトレースメモリ24-4からアドレスデータの読み出しを終了すると、イベントトレースアドレス信号をイベントトレースメモリ24-4へ再び供給する。これによりイベントトレースメモリ24-4はイベントトレースアドレス信号に応じてCPU31から供給されるプログラム実行アドレス信号が示すアドレスをイベントトレースアドレス信号によって指定された記憶箇所に記憶することを再開する。また、イベントトレース制御回路23はイベントトレースメモリ24-4についての停止フラグをリセットする。
【0044】
上述したように、イベントトレースメモリ24-1~24-4各々のイベントトレース動作の停止中に、イベントトレースメモリ24-1~24-4各々についての停止フラグがセットされる。例えば、イベントトレースメモリ24-1についての停止フラグのセット後に、第1のイベント、すなわちプログラム実行アドレス信号からプログラム実行アドレスが特定のアドレスと一致したことが検出されたならば、イベントトレースメモリ24-1についての停止フラグのセットによりイベントトレースメモリ24-1~24-nのうちのイベントトレースメモリ24-1以外のイベントトレースメモリからアドレスデータの読み出しが行われる。例えば、イベント毎に複数のイベントトレースメモリを割り当てておいて良い。第1のイベントについてはイベントトレースメモリ24-1と24-5とが割り当てられているならば、イベントトレースメモリ24-1のイベントトレース動作の停止中に、新たな第1のイベントの発生があった場合にイベントトレースメモリ24-5からアドレスデータの読み出しが行われるようにしても良い。このことは他のイベントについても同様である。
【0045】
このように実施例1のインサーキットエミュレータ装置では、CPU31がプログラム実行中にイベントが発生した場合にCPU31のプログラム実行動作を停止させることなく、そのイベントの発生時を含むその前後のプログラム実行アドレスを取り出すことができるので、イベントの発生直後にそのプログラム実行アドレスの変化履歴を直ちに参照することができ、これによりプログラムデバッグの際におけるリアルタイム性を得ることができる。
【実施例0046】
図2は本発明の実施例2としてインサーキットエミュレータ装置の構成を示している。実施例2のインサーキットエミュレータ装置においては、CPU31からデータメモリ33へのアクセスアドレス信号の供給ラインにリアルタイムトレースメモリ22に接続されている。リアルタイムトレースメモリ22にはCPU31が出力するアクセスアドレス信号が供給される。また、CPU31とデータメモリ33と間における書き込み/読み出しデータの供給ラインにイベントトレースメモリ24-1~24-nが接続されている。イベントトレースメモリ24-1~24-nにはCPU31が入出力する書き込み/読み出しデータが信号として供給される。すなわち、リアルタイムトレースメモリ22のトレース対象はアクセスアドレス信号が示すアドレスであり、そのアドレスはデータメモリ33の記憶箇所を指定するものである。イベントトレースメモリ24-1~24-nのトレース対象が書き込み/読み出しデータである。実施例2では、書き込み/読み出しデータがCPU31によるプログラムの実行と共に変化するCPU31の入出力パラメータ値である。
【0047】
リアルタイムトレースメモリ22はアクセスアドレス信号が供給される毎にアクセスアドレス信号が示すアドレスをトレースメモリアドレス信号によって指定された記憶箇所に記憶する。イベントトレースメモリ24-1~24-nの各々はアクセスアドレス信号によって指定される記憶箇所についての書き込み/読み出しデータをイベントトレースアドレス信号によって指定された記憶箇所に記憶する。イベントトレースメモリ24-1~24-nの各々にはリアルタイムトレースメモリ22に比べて少ない直近k個のデータだけが記憶され得る。このようにイベントトレースメモリ24-1~24-nの各々によるイベントトレース動作はCPU31が入出力する書き込み/読み出しデータを記憶することであり、このことが実施例1とは異なる。
【0048】
イベント検出回路25において、第1のイベント、すなわちプログラム実行アドレス信号からプログラム実行アドレスが特定のアドレスと一致したことが検出された場合の動作について説明すると、第1のイベント信号が信号ライン26-1を介してイベントトレース制御回路23に供給される。イベントトレース制御回路23は、ICE制御CPU20に対して第1のイベントの発生を通知し、イベントトレースアドレス信号のイベントトレースメモリ24-1への供給を停止する。これにより、PCデバッガ30はICE制御CPU20を介して第1のイベントの発生通知が供給され、第1のインベントであるプログラム実行アドレス一致の発生をディスプレイに表示する。イベントトレースアドレス信号のイベントトレースメモリ24-1への供給停止により、イベントトレースメモリ24-1は書き込み/読み出しデータの記憶であるイベントトレース動作を停止する。また、イベントトレース制御回路23はイベントトレースメモリ24-1のイベントトレース動作の停止を示すためにイベントトレースメモリ24-1についての停止フラグをセットする。
【0049】
イベントトレース制御回路23は、読み出しアドレス信号をイベントトレースメモリ24-1に供給し、イベントトレースメモリ24-1に記憶されたk個の書き込み/読み出しデータを時間的に古い順に読み出し、読み出した書き込み/読み出しデータをICE制御CPU20に順に信号として供給する。これにより、PCデバッガ30にはICE制御CPU20を介して読み出した書き込み/読み出しデータ、すなわちプログラム実行アドレス一致イベントの発生時を含むその前後の書き込み/読み出しデータが供給されるので、PCデバッガ30のディスプレイにはその書き込み/読み出しデータの変化が表示される。
【0050】
イベントトレース制御回路23は、イベントトレースメモリ24-1から書き込み/読み出しデータの読み出しを終了すると、イベントトレースアドレス信号をイベントトレースメモリ24-1へ再び供給する。これによりイベントトレースメモリ24-1はイベントトレースアドレス信号に応じてCPU31又はデータメモリ33から供給される書き込み/読み出しデータをイベントトレースアドレス信号によって指定された記憶箇所に記憶することを再開する。また、イベントトレース制御回路23はイベントトレースメモリ24-1についての停止フラグをリセットする。
【0051】
他の第2~第4のイベントの発生の際についても書き込み/読み出しデータをトレースすることを除いて実施例1と同様であるので、ここでの説明は省略される。
【0052】
このように実施例2のインサーキットエミュレータ装置では、CPU31がプログラム実行中にイベントが発生した場合にCPU31のプログラム実行動作を停止させることなく、そのイベントの発生時を含むその前後のCPU31によるデータメモリ33への書き込みデータ又はデータメモリ33から読み出される読み出しデータを取り出すことができるので、イベントの発生直後にその書き込み/読み出しデータの変化履歴を直ちに参照することができ、これによりプログラムデバッグの際におけるリアルタイム性を得ることができる。
【0053】
上記した各実施例においては、特定のイベントとして、プログラム実行アドレスが特定のアドレスと一致したというプログラム実行アドレス一致イベント、割り込みイベント、リセットイベント、及びデータメモリ33の書き込み又は読み出し先のアドレスが特定のアドレスと一致したというデータメモリアドレス一致イベントを示しているが、本発明はこれらのイベントに限定されない。CPU31が特定の演算結果を生成したというイベント等の他のイベントの発生時を含むその前後のプログラム実行アドレスや書き込み/読み出しデータの変化履歴を獲得しても良い。
【0054】
実施例1ではイベントの発生直後にプログラム実行アドレスの変化履歴が得られ、実施例2ではイベントの発生直後に書き込み/読み出しデータの変化履歴が得られているが、イベントの発生直後にプログラム実行アドレスの変化履歴及び書き込み/読み出しデータの変化履歴の双方を得るようにしても良い。
【0055】
また、プログラム実行中にCPU31が出力するパラメータ値としては、実施例1においてCPU31からプログラムメモリ32に出力されるプログラム実行アドレス信号が示すアドレス、実施例2においてCPU31がデータメモリ33について入出力する書き込み/読み出しデータに他に、例えば、CPU31から各種の周辺機器(図示せず)の駆動のために出力されるポート番号等のデータでも良い。
【符号の説明】
【0056】
10 マイクロコンピュータデバッグシステム
11 ICE回路
12 マイクロコンピュータ回路
20 ICE制御CPU
21 リアルタイムトレース制御回路
22 リアルタイムトレースメモリ
23 イベントトレース制御回路
24-1~24-n イベントトレースメモリ
25 イベント検出回路
26-1~26-m 信号ライン
30 PCデバッガ
31 CPU
32 プログラムメモリ
33 データメモリ
図1
図2