JP5312918B2 - タイムスタンプ取得回路及びタイムスタンプ取得方法 - Google Patents

タイムスタンプ取得回路及びタイムスタンプ取得方法 Download PDF

Info

Publication number
JP5312918B2
JP5312918B2 JP2008301137A JP2008301137A JP5312918B2 JP 5312918 B2 JP5312918 B2 JP 5312918B2 JP 2008301137 A JP2008301137 A JP 2008301137A JP 2008301137 A JP2008301137 A JP 2008301137A JP 5312918 B2 JP5312918 B2 JP 5312918B2
Authority
JP
Japan
Prior art keywords
trace
time stamp
counter
overflow
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008301137A
Other languages
English (en)
Other versions
JP2010128681A (ja
Inventor
隆行 野見山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2008301137A priority Critical patent/JP5312918B2/ja
Publication of JP2010128681A publication Critical patent/JP2010128681A/ja
Application granted granted Critical
Publication of JP5312918B2 publication Critical patent/JP5312918B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、タイムスタンプ取得回路及びタイムスタンプ取得方法に関する。
マイコンのプログラム開発及びデバッグには、エミュレータやデバッグシステムが使用される。エミュレータやデバッグシステムは、マイコンからトレースデータを収集することができ、また、プログラム開発者は、その収集されたトレースデータを解析して、効率的に作業を進めることが可能である。
近年、エミュレータやデバッグシステムに求められるトレース情報量が増え続けている。データトレースを行うときには、アクセスアドレス値、アクセスデータ値のみならず、アクセス命令実行プログラムカウンタ値(Program Counter 値:PC値)の収集が求められている。また、プログラム実行トレースに関しては、最近では、分岐トレースが広く採用されている。分岐トレースを行うときには、分岐命令実行時の分岐元/分岐先PC値の収集が求められている。分岐トレースを行うと分かるのであるが、分岐回数が多く、分岐頻度が高いプログラムも存在し、また、プログラムのデバッグでは、数日間に亘るプログラム実行状況をトレースすることも珍しくはない。よって、分岐トレースでは、分岐回数が膨大になることが多々あり、この場合には、トレース情報量が肥大化してしまう。更に、近年のマルチコアチップの登場により、CPUの個数分だけトレースデータを収集しなければならなくなっている。
一般に、トレースメモリには、トレースデータと共に、そのトレースデータを収集した時間を示すタイムスタンプがセットで蓄積される。トレースメモリを有効活用するために、タイムスタンプのデータ量を縮小する技術が知られる。特開2007−241431号公報(特許文献1参照)に記載された「トレースデータ記録装置」の発明は、リアルタイムカウンタのビット数よりも少ないビット数でカウントを行うnビットカウンタを用いる。nビットカウンタは、トレース対象のバス情報をトレースメモリに書き込んだ間隔をカウントしており、トレースメモリには、バス情報と、nビットカウンタのカウント値とが対応付けられて記憶される。但し、nビットカウンタがフルカウントになった場合には、リアルタイムカウンタのカウント値がトレースメモリに記憶される。nビットカウンタのカウント値は、リアルタイムカウンタのカウント値よりもビット数が少ないので、トレースメモリに記憶されるデータ量が全体として小さくなる。
特開2007−241431号公報
トレース情報量が膨大になると、大容量のトレースメモリが必要となる。しかし、エバリュエーションチップに内蔵される程度のメモリ容量では、実際のプログラムデバッグの使用に耐え得ない。よって、現実的には、トレースメモリはエバリュエーションチップの外部に大規模のものを備えることが必須となる。トレースメモリをチップの外部に設ければ、エミュレーション対象のマイコンごとに、エミュレータやデバッグシステムの製品仕様ごとに、トレースメモリの容量を変えることも可能となる。上記公知文献記載の「トレースデータ記録装置」では、CPUとトレースメモリとが同一のチップに実装されている。そのため、トレースメモリの大容量化が難しいという課題がある。
特に、マイコン製品の中にエミュレーション機能を内蔵するデバッグチップでは、回路規模をできるだけ小さくし、チップコストを抑えたいという要求がある。内蔵されるタイムスタンプ用カウンタのビット数は少ないほど、その回路規模が小さいほどチップコストの面で好ましい。しかし、上記公知文献記載の技術では、nビットカウンタのほかに、回路規模が非常に大きいリアルタイムカウンタを搭載しているので、コスト高を招いているという課題がある。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を用いて、[課題を解決するための手段]を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明の一つ目のアスペクトによるタイムスタンプ取得回路は、タイムスタンプカウンタ(36)と、オーバーフローフラグ(34)と、オーバーフローカウンタ(71)と、トレースメモリ書き込み制御回路(74)とを具備する。タイムスタンプカウンタ(36)は、所定のクロックに従って、一定の時間間隔を計数する。オーバーフローフラグ(34)は、タイムスタンプカウンタ(36)がオーバーフローしたことを記録する。オーバーフローカウンタ(71)は、タイムスタンプカウンタ(36)がオーバーフローした回数を計数する。トレースメモリ書き込み制御回路(74)は、一のトレースデータが収集された場合において、オーバーフローフラグ(34)がオンになっていたときには、一のトレースデータと、タイムスタンプカウンタ(36)のカウント値と、オーバーフローカウンタ(71)のカウント値とをトレースメモリ(80)に書き込む。
本発明の二つ目のアスペクトによるタイムスタンプ取得方法は、時間間隔を計数することと、記録することと、回数を計数することと、書き込むこととを具備する。計数することにおいては、所定のクロックを与えられるタイムスタンプカウンタ(36)により、一定の時間間隔を計数する。記録することにおいては、タイムスタンプカウンタ(36)がオーバーフローしたことをオーバーフローフラグ(34)に記録する。回数を計数することにおいては、オーバーフローカウンタ(71)により、タイムスタンプカウンタ(36)がオーバーフローした回数を計数する。書き込むことにおいては、一のトレースデータが収集された場合において、オーバーフローフラグ(34)がオンになっていたときには、一のトレースデータと、タイムスタンプカウンタ(36)のカウント値と、オーバーフローカウンタ(71)のカウント値とをトレースメモリ(80)に書き込む。
これらのタイムスタンプ取得回路及びタイムスタンプ取得方法は、タイムスタンプカウンタ(36)のカウント値と、オーバーフローカウンタ(71)のカウント値とを合わせることで、かなり長い時間を計測することが可能になる。また、トレース対象とするチップの内部にタイムスタンプカウンタ(36)を設け、そのチップの外部にオーバーフローカウンタ(72)を設けることにより、トレース対象とするチップの回路規模を抑制し、コストダウンを図ることができる。さらに、トレースメモリ(80)も、トレース対象とするチップの外部に設けることが可能であるから、トレースメモリ(80)を大容量化することができる。
本発明によれば、トレースメモリを大容量化することができる。また、トレース対象とするデバッグチップやエバリュエーションチップの回路規模を小さくすることができる。
図1は、本発明を実施するための最良の形態の一つを説明するブロック構成図である。図1において、タイムスタンプ取得回路は、タイムスタンプカウンタ制御回路30と、オーバーフローカウンタ制御回路70とを備え、マルチコアのプロセッサからトレースデータを収集し、そのトレースデータにタイムスタンプを付加して、トレースメモリ80への書き込みを行っている。タイムスタンプカウンタ制御回路30は、プロセッサと同一のチップに実装することができ、所定のクロックに従ってカウント動作を行うタイムスタンプカウンタ36によって、時間間隔を計測する。オーバーフローカウンタ制御回路70は、プロセッサチップの外部に実装することができ、タイムスタンプカウンタ36がキャリー信号を出力した回数を計数するオーバーフローカウンタ71によって、タイムスタンプカウンタ36による時間計測を補足する。トレースメモリ80は、オーバーフローカウンタ制御回路70と同様に、プロセッサチップの外部に実装することができる。
図1に示すように、本実施の形態によるタイムスタンプ取得回路は、マルチコアのプロセッサからトレースデータを収集することができる。このマルチコアのプロセッサは、第1CPUコア11を含む第1プロセッサ13と、第2CPUコア12を含む第2プロセッサ14とを有している。第1プロセッサ13、及び、第2プロセッサ14は、各々が内蔵する第1CPUコア11、及び、第2CPUコア12がトレース対象命令を実行すると、トレース対象命令実行検出信号と、トレースデータとを出力する。タイムスタンプカウンタ制御回路30は、これらのトレース対象命令実行検出信号と、トレースデータとを入力する。
図示するように、タイムスタンプカウンタ制御回路30は、トレースメッセージ生成回路35と、タイムスタンプカウンタ36と、トレースメッセージバッファ37とを有している。図中、タイムスタンプカウンタ36は、トレースメッセージ生成回路35からリセット信号(RES)を受信すると初期化され、ゼロから計数を開始する。タイムスタンプカウンタ36は、所定のクロックに同期して、一定の時間間隔でカウント動作を行い、そのタイムスタンプカウント値は、トレースメッセージ生成回路35に送出される。タイムスタンプカウンタ36は、フルカウントを計数し、オーバーフローすると、キャリー信号を出力する。トレースメッセージ生成回路35は、このキャリー信号を入力する。それから、オーバーフローカウンタ制御回路70も、このキャリー信号を入力する。
トレースメッセージ生成回路35は、OVF(Overflow:オーバーフロー)フラグ34の制御を行っている。図2A及び図2Bは、トレースメッセージ生成回路35によるOVFフラグ34の制御方法の説明図である。図2Aに示すように、トレースメッセージ生成回路35は、タイムスタンプカウンタ36から出力されるキャリー信号を監視する(ステップS10)。そして、キャリー信号を受信すると、OVFフラグ34をセットする(S12)。OVFフラグ34は、オンになる。2回目以降のキャリー信号を受信した場合には、そのままオン状態を維持する。すなわち、一度でもキャリー信号がアクティブになると、OVFフラグ34はオンになる。一方、図2Bに示すように、トレースメッセージ生成回路35は、トレースメッセージバッファ37に書き込むトレースメッセージの生成処理が終了したか否かを判定し(S14)、終了したならば、OVFフラグ34をクリアする(S16)。OVFフラグ34はオフになる。
トレースメッセージ生成回路35は、トレースメッセージの生成を行う。トレースメッセージ生成回路35は、トレース対象の事象(例えば、実行PC値、直接分岐、間接分岐、RAMアクセス)ごとに、トレースしたデータを決まったフォーマットに整形する。整形されたデータをトレースメッセージと呼ぶ。
図2Cは、第1プロセッサ13、及び、第2プロセッサ14から送出されるトレースデータを、トレースメッセージバッファに書き込むトレースメッセージ生成回路35の動作説明図である。図2Cにおいて、トレースメッセージ生成回路35は、第1プロセッサ13、及び、第2プロセッサ14から送出されるトレース対象命令実行検出信号を監視している(S20)。トレース対象命令実行検出信号を受信すると、トレースメッセージ生成回路35は、トレースメッセージの生成を行い、また、必要に応じて、オーバーフローカウンタ71のカウント値を要求する(S22)。トレースメッセージには、第1プロセッサ13又は第2プロセッサ14から受け取るトレースデータと、タイムスタンプカウンタ36から受け取るタイムスタンプカウント値と、OVFフラグ34の値とが含まれる。それから、本実施の形態では、マルチコアのプロセッサを対象としているので、更に、どちらのプロセッサからのトレースデータかを示すプロセッサ識別子も含まれる。トレースメッセージ生成回路35は、生成したトレースメッセージを、トレースメッセージバッファ37に書き込む(S24)。
図2Dは、トレースメッセージ生成回路35が、オーバーフローカウンタ制御回路70に対して行っているオーバーフローカウント値の要求方法の説明図である。トレースメッセージ生成回路35は、トレースメッセージの生成を行うときに、オーバーフローカウンタ71のカウント値要求処理を行っている。トレースメッセージ生成回路35は、OVFフラグ34を参照し、OVFフラグ34のオン/オフを判定する(S26)。OVFフラグ34がオンのとき、トレースメッセージ生成回路35は、オーバーフローカウンタ71のカウント値要求信号を出力する(S28)。一方、OVFフラグ34がオフのとき、トレースメッセージ生成回路35は、オーバーフローカウンタ71のカウント値要求信号を出力することを行わない。
従って、トレースメッセージ生成回路35は、OVFフラグ34がオンのとき、生成したトレースメッセージを、トレースメッセージバッファ37に書き込むと共に(S24)、オーバーフローカウンタ71のカウント値要求信号を出力する(S28)。その結果、トレースメッセージと、オーバーフローカウンタ71のカウント値とが対応付けられて、トレースメッセージバッファ37と、OVFカウント値バッファ73とに、それぞれ書き込まれる。一方、OVFフラグ34がオフのときには、結果として、トレースメッセージバッファ37への書き込みのみが行われる(S24)。
トレースメッセージバッファ37は、FIFO(First In First Out:先入れ先出し)バッファで成る。トレースメッセージバッファ37は、トレースメッセージ生成回路35によって生成されたトレースメッセージを、生成された順番にエントリすると共に、先頭のトレースメッセージを出力クロック同期で、バス幅毎に分割して出力する。それぞれの分割データは、一つのトレースメッセージの最初の分割データか、最後の分割データか、途中の分割データか等を示すステータス信号を伴って出力される。
図1において、オーバーフローカウンタ制御回路70は、OVFカウンタ71と、OVFカウント値生成回路72と、OVFカウント値バッファ73と、トレースメモリ書き込み制御回路74とを有している。OVFカウンタ71は、トレースメッセージ生成回路35からリセット信号(RES)を受信すると初期化され、ゼロから計数を開始する。OVFカウンタ71は、タイムスタンプカウンタ36から出力されるキャリー信号の数を計数しており、キャリー信号がアクティブになるごとにカウントアップする。
OVFカウント値生成回路72は、トレースメッセージ生成回路35からのOVFカウント値要求信号がアクティブになると、OVFカウンタ71のカウント値を読み出し、そのカウント値をOVFカウント値バッファ73にエントリする。トレースメッセージ生成回路35からのOVFカウント値要求信号がアクティブでは無いときには、OVFカウント値バッファ73への書き込みは行わない。
OVFカウント値バッファ73は、FIFO(First In First Out:先入れ先出し)バッファで成る。OVFカウント値生成回路72によって生成されたカウント値は、生成された順番に、OVFカウント値バッファ73にエントリされる。
トレースメモリ書き込み制御回路74は、トレースメッセージバッファ37から出力されるトレースメッセージを受け取り、また、OVFカウント値バッファ73から出力されるカウント値を受け取る。そして、トレースメモリ80への書き込みを行う。図3及び図4は、トレースメモリ書き込み制御回路74の動作説明図である。図3は、二つのバッファ37,73及びトレースメモリ80におけるデータ構造の具体例を示したものである。図3の例を参照すると、トレースメッセージバッファ37には六つのエントリがあり、OVFカウント値バッファ73には二つのエントリがある。トレースメッセージバッファ37の六つのエントリを参照すると、四つ目のトレースメッセージにおけるトレースデータを収集したときに、タイムスタンプカウンタ36がオーバーフローし、一個目のキャリー信号が出力されていることが分かる。また、六つ目のトレースメッセージにおけるトレースデータを収集したときに、タイムスタンプカウンタ36がオーバーフローし、二個目のキャリー信号が出力されていることが分かる。
図3の具体例と、図4のフローチャートとに基づいて、トレースメモリ書き込み制御回路74の書き込み動作を詳細に説明する。まず、トレースメモリ書き込み制御回路74は、トレースメッセージバッファ37から、一つ目のトレースメッセージを読み込む。そして、そのトレースメッセージにおけるオーバーフローフラグを参照し、オンかオフかを判定する(S40)。図3に示すように、一つ目のトレースメッセージにおけるオーバーフローフラグはオフなので、トレースメモリ書き込み制御回路74は、トレースメモリ80に、一つ目のトレースメッセージを書き込む(S43)。トレースメモリ80への書き込みアドレスをインクリメントする(S44)。同様に、トレースメモリ書き込み制御回路74は、トレースメモリ80に、二つ目のトレースメッセージと、三つ目のトレースメッセージとを書き込む(S43)。
続いて、トレースメモリ書き込み制御回路74は、トレースメッセージバッファ37から、四つ目のトレースメッセージを読み込む。そして、その四つ目のトレースメッセージにおけるオーバーフローフラグを参照し、オンかオフかを判定する(S40)。四つ目のトレースメッセージにおけるオーバーフローフラグはオンなので、トレースメモリ書き込み制御回路74は、OVFカウント値バッファから、一個目のOVFカウント値を読み込む。そして、トレースメモリ80に、一個目のOVFカウント値を書き込む(S41)。トレースメモリ80への書き込みアドレスをインクリメントする(S42)。更に、トレースメモリ書き込み制御回路74は、トレースメモリ80に、四つ目のトレースメッセージを書き込む(S43)。トレースメモリ80への書き込みアドレスをインクリメントする(S44)。
次に、トレースメモリ書き込み制御回路74は、トレースメッセージバッファ37から、五つ目のトレースメッセージを読み込む。そして、そのトレースメッセージにおけるオーバーフローフラグを参照し、オンかオフかを判定する(S40)。五つ目のトレースメッセージにおけるオーバーフローフラグはオフなので、トレースメモリ書き込み制御回路74は、トレースメモリ80に、五つ目のトレースメッセージを書き込む(S43)。トレースメモリ80への書き込みアドレスをインクリメントする(S44)。
それから、トレースメモリ書き込み制御回路74は、トレースメッセージバッファ37から、最後の六つ目のトレースメッセージを読み込む。そして、その六つ目のトレースメッセージにおけるオーバーフローフラグを参照し、オンかオフかを判定する(S40)。六つ目のトレースメッセージにおけるオーバーフローフラグはオンなので、トレースメモリ書き込み制御回路74は、OVFカウント値バッファから、最後の二個目のOVFカウント値を読み込む。そして、トレースメモリ80に、二個目のOVFカウント値を書き込む(S41)。トレースメモリ80への書き込みアドレスをインクリメントする(S42)。更に、トレースメモリ書き込み制御回路74は、トレースメモリ80に、六つ目のトレースメッセージを書き込む(S43)。トレースメモリ80への書き込みアドレスをインクリメントする(S44)。
以上の書き込み動作によって、トレースメモリ80の内容は、図3に示した如くになる。図示するように、トレースメッセージバッファ37から読み出したトレースメッセージにおけるオーバーフローフラグがオンのときには、トレースメモリ80には、OVFカウント値と、トレースメッセージとがセットで記憶されている。一方、トレースメッセージバッファ37から読み出したトレースメッセージにおけるオーバーフローフラグがオフのときには、トレースメモリ80には、トレースメッセージのみが記憶されている。
本実施の形態におけるタイムスタンプ取得回路の全体の動作例について簡単に説明しておく。
ステップ1.タイムスタンプカウンタ36、OVFカウンタ71を初期化する。
ステップ2.第1プロセッサ13又は第2プロセッサ14にて、ユーザプログラムを実行する。同時にタイムスタンプカウンタ36、OVFカウンタ71のカウントアップを開始する。
ステップ3.第1プロセッサ13が第1CPUコア11でトレース対象命令の実行を検出すると、トレース対象命令実行検出信号とトレースデータとがトレースメッセージ生成回路35に出力される。
ステップ4.同様に、第2プロセッサ14が第2CPUコア12でトレース対象命令の実行を検出すると、トレース対象命令実行検出信号とトレースデータとがトレースメッセージ生成回路35に出力される。
ステップ5.トレースメッセージ生成回路35は、第1プロセッサ13又は第2プロセッサ14から、トレース対象命令実行検出信号を受け取る前に、一度でもタイムスタンプカウンタ36のキャリー信号がアクティブになると、OVFフラグ34をセットする。セットしたOVFフラグ34の状態は、トレース対象命令実行検出信号を受け取ったあと、トレースメッセージを生成するまで、保持する。
ステップ6.トレースメッセージ生成回路35は、第1プロセッサ13および第2プロセッサ14から、トレース対象命令実行検出信号を受け取ると、タイムスタンプカウンタ36からカウント値をリードする。また、このとき、OVFフラグ34がセットされていれば、OVFカウント値要求信号をOVFカウント値生成回路72に出力する。
ステップ7.トレースメッセージ生成回路35は、第1プロセッサ13及び第2プロセッサ14からのトレースデータ(本実施の形態におけるプロセッサはマルチコアなので、どちらのプロセッサからのデータかを示す情報を含む。)、タイムスタンプカウント値、OVFフラグ34の値からトレースメッセージを生成し、トレースメッセージバッファ37にエントリする。
ステップ8.OVFカウント値生成回路72は、OVFカウント値要求信号を受け取ると、OVFカウンタ71のカウント値をOVFカウント値バッファ73にエントリする。
ステップ9.トレースメッセージ生成回路35は、リセット信号(RES)をアクティブにし、タイムスタンプカウンタ36、OVFカウンタ71を0クリアする。
ステップ10.トレースメッセージバッファ37は、トレースメッセージを先頭から順次、トレースメモリ書き込み制御回路74に出力する。
ステップ11.第1プロセッサ13、第2プロセッサ14が、トレース対象命令の実行を検出するたびに、上記ステップ3.〜ステップ9.を実行する。
ステップ12.トレースメモリ書き込み制御回路74は、トレースメッセージバッファ37から出力されるトレースメッセージを受け取る。そのトレースメッセージ内のオーバーフローフラグがオフであれば、トレースメッセージをトレースメモリ80に書き込み、トレースメモリ80への書き込みアドレスをインクリメントする。
ステップ13.トレースメモリ書き込み制御回路74は、そのトレースメッセージ内のオーバーフローフラグがオンであれば、トレースメッセージをトレースメモリ80に書き込む前に、OVFカウント値バッファ73の先頭のOVFカウント値を先にトレースメモリ80に書き込み、アドレスをインクリメントした後で、トレースメッセージを書き込み、更にトレースメモリ80のアドレスをインクリメントする。
本実施の形態における効果として、次のような効果を挙げることができる。
〔1〕本実施の形態においては、トレースメモリ80を、プロセッサと同一のチップに設ける必要が無い。よって、トレースメモリ80の容量を十分に大きくすることができるので、マルチコアチップのプログラム開発/デバッグに必要な大量のトレースデータの取得を可能にするという効果がある。
〔2〕本実施の形態においては、プロセッサと同一のチップに、比較的小さなタイムスタンプカウンタを一つ設ければ良いので、出力バスのバス幅が拡がることを抑制することができる。よって、デバッグチップ、エバリュエーションチップのコストを低減できるという効果がある。また、タイムスタンプカウンタの回路規模は、上記特許文献1の図1に示されているようなリアルタイムカウンタの回路規模と比較すると、かなりの小型化を図ることが可能である。よって、デバッグチップ、エバリュエーションチップの回路規模を相当小さくすることができるという効果がある。
〔3〕本実施の形態においては、トレースメッセージと、OVFカウント値とを別々に異なるFIFOに保持しているが、これらは対応付けられて書き込まれている。よって、タイムスタンプカウンタ36のオーバーフローが、トレースメッセージバッファ(FIFO)37を経由して順次出力されるトレースメッセージのどのメッセージ間で発生したかを容易に特定できるという効果がある。
図5に、実施例1の構成を説明するブロック図を示す。実施例1は、上述した実施の形態によるタイムスタンプ取得回路を、デバッグチップ41と、エミュレータ本体50とに組み込んだ例である。図中、プログラム開発対象のマイクロコンピュータが搭載されるユーザーターゲットシステム20に、ソケット21が実装されている。デバッグチップ41は、プログラム開発対象のマイクロコンピュータが持つ全機能を担い、また、上述した諸機能を備えるタイムスタンプ制御回路30を内部に実装している。デバッグチップ41は、ソケット21を介して電気的にユーザーターゲットシステム20と接続されている。更に、デバッグチップ41は、エミュレーションプローブ22を介して、エミュレータ本体50の構成要素であるエミュレーション制御回路51と電気的に接続されている。エミュレーション制御回路51は、上述した諸機能を備えるオーバーフローカウンタ制御回路70を有している。エミュレーションプローブ22は、信号を伝達するケーブルの役割を担っている。
エミュレータ本体50は、エミュレーション制御回路51と、トレースメモリ80と、ホストI/F 52とを有している。これらは、別々のチップに実装されている。エミュレータ本体50は、ホストPC 60と、USBケーブルなどによって接続される。ホストPC 60では、デバッガプログラムが実行される。ユーザの操作を受け付けるデバッガプログラムは、ホストI/F 52を介してエミュレータ本体50と通信を行うことができる。
トレースデータの収集は、デバッガプログラムが実行されるホストPC 60からの指示によって開始することができる。また、ホストPC 60からの要求により、トレースメモリ80に保存されたトレースメッセージを、エミュレータ本体50からホストPC 60へ読み出すことが可能である。ホストPC 60は、その他、ホストI/F 52を介して、エミュレーション制御回路51の設定レジスタの設定を行うことができ、また、エミュレーション制御回路51を介して、デバッグチップ41の設定レジスタの設定を行うことができる。なお、点線で囲んだ矩形の回路ブロック40は、図1の構成図と概ね対応している。その対応関係を分かり易く説明するために図示したものである。
図6に、実施例2の構成を説明するブロック図を示す。実施例2は、上述した実施の形態によるタイムスタンプ取得回路を、エバリュエーションチップを備えたエミュレータ本体55内部に全て組み込んだ例である。図6において、エミュレータ本体55は、周辺エバリュエーションチップ56と、CPUエバリュエーションチップ43と、エミュレーション制御回路51と、トレースメモリ80と、ホストI/F 52とを有している。これらは、別々のチップに実装されている。CPUエバリュエーションチップ43は、プログラム開発対象のマイクロコンピュータが持つ全機能を担い、また、上述した諸機能を備えるタイムスタンプ制御回路30を内部に実装している。CPUエバリュエーションチップ43は、周辺エバリュエーションチップ56と、エミュレーションプローブ22と、ソケット21とを介して、電気的にユーザーターゲットシステム20と接続されている。また、エミュレータ本体55のエミュレーション制御回路51とも電気的に接続されている。エミュレーション制御回路51は、上述した諸機能を備えるオーバーフローカウンタ制御回路70を有している。
エミュレータ本体55は、ホストPC 60と、USBケーブルなどによって接続される。ホストPC 60では、デバッガプログラムが実行される。ユーザの操作を受け付けるデバッガプログラムは、ホストI/F 52を介してエミュレータ本体55と通信を行うことが可能である。トレースデータの収集は、デバッガプログラムが実行されるホストPC 60からの指示によって開始することができる。また、ホストPC 60からの要求により、トレースメモリ80に保存されたトレースメッセージを、エミュレータ本体55からホストPC 60へ読み出すことができる。ホストPC 60は、その他、ホストI/F 52を介して、エミュレーション制御回路51の設定レジスタの設定を行うことができ、また、エミュレーション制御回路51を介して、CPUエバリュエーションチップ43の設定レジスタの設定を行うことができる。なお、点線で囲んだ矩形の回路ブロック42は、図1の構成図と概ね対応している。その対応関係を分かり易く説明するために図示したものである。
本発明を実施するための最良の形態の一つを説明するブロック構成図 OVFフラグ34のセット方法を説明するフローチャート OVFフラグ34のクリア方法を説明するフローチャート トレースメッセージ生成回路35による書き込み動作を説明するフローチャート オーバーフローカウント値の要求方法を説明するフローチャート トレースメモリ書き込み制御回路74の動作を説明するためのデータ構造図 トレースメモリ書き込み制御回路74の動作を説明するフローチャート 実施例1の構成を説明するブロック図 実施例2の構成を説明するブロック図
符号の説明
11,12 CPUコア
13,14 プロセッサ
20 ユーザーターゲットシステム
21 ソケット
22 エミュレーションプローブ
30 タイムスタンプカウンタ制御回路
34 OVFフラグ
35 トレースメッセージ生成回路
36 タイムスタンプカウンタ
37 トレースメッセージバッファ
40,42 回路ブロック
41 デバッグチップ
43 CPUエバリュエーションチップ
50,55 エミュレータ本体
51 エミュレーション制御回路
52 ホストI/F
56 周辺エバリュエーションチップ
60 ホストPC
70 オーバーフローカウンタ制御回路
71 OVFカウンタ
72 OVFカウント値生成回路
73 OVFカウント値バッファ
74 トレースメモリ書き込み制御回路
80 トレースメモリ

Claims (10)

  1. 所定のクロックに従って、一定の時間間隔を計数するタイムスタンプカウンタと、
    前記タイムスタンプカウンタがオーバーフローしたことを記録するオーバーフローフラグと、
    前記タイムスタンプカウンタがオーバーフローした回数を計数するオーバーフローカウンタと、
    一のトレースデータが収集された場合において、前記オーバーフローフラグがオンになっていたときには、前記一のトレースデータと、前記タイムスタンプカウンタのカウント値と、前記オーバーフローカウンタのカウント値とをトレースメモリに書き込むトレースメモリ書き込み制御回路とを具備する
    タイムスタンプ取得回路。
  2. 前記一のトレースデータが収集された場合に、前記一のトレースデータと、前記タイムスタンプカウンタのカウント値と、前記オーバーフローフラグの値とを含む一のトレースメッセージを生成するトレースメッセージ生成回路と、
    前記一のトレースメッセージを記憶する第一のバッファと、
    前記一のトレースデータが収集された場合において、前記オーバーフローフラグがオンになっていたときに、前記オーバーフローカウンタのカウント値を記憶する第二のバッファとを更に具備し、
    トレースメモリ書き込み制御回路は、
    前記第一のバッファから読み出した前記一のトレースメッセージにおけるオーバーフローフラグの値がオフになっていた場合には、前記一のトレースメッセージを前記トレースメモリに書き込み、
    前記第一のバッファから読み出した前記一のトレースメッセージにおけるオーバーフローフラグの値がオンになっていた場合には、前記一のトレースメッセージと、前記第二のバッファに記憶された前記オーバーフローカウンタのカウント値とを前記トレースメモリに書き込む
    請求項1記載のタイムスタンプ取得回路。
  3. 前記第一のバッファと、前記第二のバッファとは、
    FIFO(First In First Out)メモリで成り、
    前記トレースメッセージ生成回路は、
    前記一のトレースメッセージを生成すると、前記一のトレースメッセージを前記第一のバッファに書き込むと共に、前記一のトレースメッセージにおけるオーバーフローフラグの値がオンであった場合には、前記オーバーフローカウンタのカウント値を前記第二のバッファに書き込むことを要求する制御信号を出力する
    請求項2記載のタイムスタンプ取得回路。
  4. トレース対象とするチップの内部に、前記タイムスタンプカウンタを設け、
    前記チップの外部に、前記オーバーフローカウンタを設けた
    請求項3記載のタイムスタンプ取得回路。
  5. 前記チップは、
    デバッグチップ又はCPUエバリュエーションチップである
    請求項4記載のタイムスタンプ取得回路。
  6. 所定のクロックを与えられるタイムスタンプカウンタにより、一定の時間間隔を計数することと、
    前記タイムスタンプカウンタがオーバーフローしたことをオーバーフローフラグに記録することと、
    オーバーフローカウンタにより、前記タイムスタンプカウンタがオーバーフローした回数を計数することと、
    一のトレースデータが収集された場合において、前記オーバーフローフラグがオンになっていたときには、前記一のトレースデータと、前記タイムスタンプカウンタのカウント値と、前記オーバーフローカウンタのカウント値とをトレースメモリに書き込むこととを具備する
    タイムスタンプ取得方法。
  7. 前記一のトレースデータが収集された場合に、前記一のトレースデータと、前記タイムスタンプカウンタのカウント値とを含む一のトレースメッセージを生成することと、
    第一のバッファに、前記一のトレースメッセージを記憶することと、
    前記一のトレースデータが収集された場合において、前記オーバーフローフラグがオンになっていたときには、
    前記一のトレースメッセージに追加して、前記オーバーフローカウンタのカウント値を前記トレースメモリに書き込むべき旨を表示することと、
    第二のバッファに、前記オーバーフローカウンタのカウント値を記憶することとを更に具備し、
    前記書き込むことは、
    前記第一のバッファから前記一のトレースメッセージを読み込むことと、
    前記一のトレースメッセージに対して、前記書き込むべき旨の表示がなされていなかった場合には、前記一のトレースメッセージを前記トレースメモリに書き込むことと、
    前記一のトレースメッセージに対して、前記書き込むべき旨の表示がなされていた場合には、前記第二のバッファから前記オーバーフローカウンタのカウント値を読み込み、前記一のトレースメッセージと、前記オーバーフローカウンタのカウント値とを前記トレースメモリに書き込むこととを含む
    請求項6記載のタイムスタンプ取得方法。
  8. 前記表示することは、
    前記一のトレースメッセージに、前記オーバーフローフラグの値を更に含めたものを、前記第一のバッファに記憶することを含み、
    前記書き込むことは、
    前記一のトレースメッセージにおけるオーバーフローフラグの値がオフになっていた場合を、前記書き込むべき旨の表示がなされていなかった場合とすることと、
    前記一のトレースメッセージにおけるオーバーフローフラグの値がオンになっていた場合を、前記書き込むべき旨の表示がなされていた場合とすることとを更に含む
    請求項7記載のタイムスタンプ取得方法。
  9. 前記第一のバッファと、前記第二のバッファとは、FIFOメモリで成り、
    前記一のトレースメッセージを記憶することは、
    前記第一のバッファに、順番にトレースメッセージを記憶することを含み、
    前記オーバーフローカウンタのカウント値を記憶することは、
    前記第二のバッファに、順番に前記カウント値を記憶することを含む
    請求項8記載のタイムスタンプ取得方法。
  10. トレース対象とするチップの内部に、前記タイムスタンプカウンタを設けることと、
    前記チップの外部に、前記オーバーフローカウンタを設けることとを更に具備する
    請求項9記載のタイムスタンプ取得方法。
JP2008301137A 2008-11-26 2008-11-26 タイムスタンプ取得回路及びタイムスタンプ取得方法 Expired - Fee Related JP5312918B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008301137A JP5312918B2 (ja) 2008-11-26 2008-11-26 タイムスタンプ取得回路及びタイムスタンプ取得方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008301137A JP5312918B2 (ja) 2008-11-26 2008-11-26 タイムスタンプ取得回路及びタイムスタンプ取得方法

Publications (2)

Publication Number Publication Date
JP2010128681A JP2010128681A (ja) 2010-06-10
JP5312918B2 true JP5312918B2 (ja) 2013-10-09

Family

ID=42329043

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008301137A Expired - Fee Related JP5312918B2 (ja) 2008-11-26 2008-11-26 タイムスタンプ取得回路及びタイムスタンプ取得方法

Country Status (1)

Country Link
JP (1) JP5312918B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014054101A1 (ja) * 2012-10-01 2014-04-10 富士通株式会社 情報処理装置及び性能解析データの収集方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3019922B2 (ja) * 1997-06-30 2000-03-15 日本電気株式会社 トレースデータ削減方式
JP2000194580A (ja) * 1998-12-24 2000-07-14 Denso Corp Cpu開発支援装置
JP2005222446A (ja) * 2004-02-09 2005-08-18 Matsushita Electric Ind Co Ltd オンボードデバッグ装置および半導体回路装置
JP2005322035A (ja) * 2004-05-10 2005-11-17 Toshiba Corp 開発支援装置及びその方法
JP4806577B2 (ja) * 2006-03-06 2011-11-02 株式会社リコー トレースデータ記録装置

Also Published As

Publication number Publication date
JP2010128681A (ja) 2010-06-10

Similar Documents

Publication Publication Date Title
US9342468B2 (en) Memory time stamp register external to first and second processors
JP4138021B2 (ja) プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム
JP4512380B2 (ja) データを処理する方法と装置およびコンピュータ・プログラム製品
US8527812B2 (en) Information processing device
US6665821B1 (en) Microcomputer, electronic equipment, and debugging system
US9507688B2 (en) Execution history tracing method
US7596719B2 (en) Microcontroller information extraction system and method
US6484273B1 (en) Integrated EJTAG external bus interface
US20030191624A1 (en) Debug function built-in type microcomputer
EP1125200B1 (en) Maintaining object size information concurrent with data optimization for debugging
JP5312918B2 (ja) タイムスタンプ取得回路及びタイムスタンプ取得方法
US7110934B2 (en) Analysis of the performance of a portion of a data processing system
JP4914253B2 (ja) 半導体集積回路及びエラー解析方法
JPH11282709A (ja) インサーキットエミュレータ
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
JP2016091277A (ja) トレースシステムおよびicチップ
CN111290743A (zh) 一种计算机软件技术开发调试系统
JP2006323726A (ja) モニタプログラムおよびリアルタイムトレースシステム
JPH0713806A (ja) マイクロプロセッサのバストレース装置
JP2005165825A (ja) トレース情報記録装置
US11144687B1 (en) Method and system providing visualization of sub-circuit iterations based on handshake signals
TW201321972A (zh) 除錯方法及相關電腦系統
US20230376403A1 (en) Debug device, debug system, and debug method for testing storage device
CN108681500B (zh) 具有事务记录能力的系统和事务记录方法
JP3000779B2 (ja) プロセッサの実行状態の情報収集方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111019

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130627

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130701

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130703

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees