JP2006092029A - マイクロコンピュータ及びトレース制御方法 - Google Patents
マイクロコンピュータ及びトレース制御方法 Download PDFInfo
- Publication number
- JP2006092029A JP2006092029A JP2004273941A JP2004273941A JP2006092029A JP 2006092029 A JP2006092029 A JP 2006092029A JP 2004273941 A JP2004273941 A JP 2004273941A JP 2004273941 A JP2004273941 A JP 2004273941A JP 2006092029 A JP2006092029 A JP 2006092029A
- Authority
- JP
- Japan
- Prior art keywords
- register
- trace
- trace data
- task
- cpu
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
- G06F11/364—Software debugging by tracing the execution of the program tracing values on a bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】本発明は、デバッグ対象としているタスクについてのみトレースデータをトレースメモリに格納することが可能なマイクロコンピュータ及びトレース制御方法を提供することを目的とする。
【解決手段】マイクロコンピュータは、バスと、バスに結合されるCPUと、バスに結合されCPUが実行する処理のトレースデータを出力端に出力するトレースデータ生成回路と、トレースデータ生成回路の出力端に結合されトレースデータを格納するメモリと、バスに結合されCPUが実行中のタスクを示すタスク番号を格納する第1のレジスタと、第1のレジスタに結合されタスク番号に応じてトレースデータ生成回路のトレースデータ出力のオン・オフを制御する制御部を含む。
【選択図】 図3
【解決手段】マイクロコンピュータは、バスと、バスに結合されるCPUと、バスに結合されCPUが実行する処理のトレースデータを出力端に出力するトレースデータ生成回路と、トレースデータ生成回路の出力端に結合されトレースデータを格納するメモリと、バスに結合されCPUが実行中のタスクを示すタスク番号を格納する第1のレジスタと、第1のレジスタに結合されタスク番号に応じてトレースデータ生成回路のトレースデータ出力のオン・オフを制御する制御部を含む。
【選択図】 図3
Description
本発明は一般にマイクロコンピュータ及びトレース制御方法に関し、詳しくはトレース動作のon/offが制御可能なマイクロコンピュータ及びトレース制御方法に関する。
マイクロコンピュータを使用したシステムを開発する際には、量産用のマイクロコンピュータチップと異なりエミュレーション用のインターフェースやRAMを備えた評価用チップ(Evaluation Chip)を作成して、この量産用マイクロコンピュータチップと同様の動作をする評価用チップに対してデバッグを実行する。具体的には、この評価用チップ(Evaluation Chip)のICE用インターフェースにICE(In-circuit Emulator)を接続し、パーソナルコンピュータからICEを用いてマイクロコンピュータの動作を制御することにより、マイクロコンピュータにプログラムを実行させて種々のデバッグ作業を行う。
図1は、従来のデバッグ環境の構成を示す図である。図1のデバッグシステムは、評価用チップであるマイクロコンピュータ1、評価用チップをデバッグするためのICE16、及びデバッガソフトウェアに基づいてICE16の制御を行うパーソナルコンピュータ17を含む。パーソナルコンピュータ17とICE16との間は、例えばUSB等の汎用の通信ケーブル18を介して接続される。ICE16とマイクロコンピュータ1との間は、エミュレーション用のインターフェースであるツールバス13を介して接続される。
マイクロコンピュータ1は、CPU2、バスインターフェース3、ツールバス13を介してICE16に接続されるデバッグサポートユニット(以下DSU)4、トレース回路5、トレースメモリ6、命令バス7、及びデータバス8を含む。バスインターフェース3は、命令バス7とデータバス8とを外部ユーザバス9に統合するためのインターフェースである。外部ユーザバス9には例えば、マイクロコンピュータ1が実行するユーザプログラムを記憶するためのRAMが接続される。トレース回路5は、命令バス7とデータバス8とを監視してトレースデータを生成する。トレースメモリ6は、トレース回路5が生成したトレースデータを格納する。データライト用バス10は、トレース回路5からトレースメモリ6へのデータ書き込みに用いられる。データリード用バス11は、トレースメモリ6に蓄えたトレースデータを、DSU4を介してICE側に読み出すために用いられる。バス12はトレース回路5がリードしたトレースデータをDSU4へ渡すためのバスであり、バス14はDSU4がICE16からの指示によりCPU2をコントロールするための専用バスである。制御信号線15は、DSU4内部のレジスタからトレース条件等をトレース回路5に指示するために用いられる。
マイクロコンピュータシステムのデバッグを行うユーザは、デバッガソフトウェアのコマンドを使用して、ICE16からトレース条件等をDSU4内のレジスタに設定する。このとき、CPU2はICE16から供給される命令を待ち、命令が供給されるとそれに基づいてエミュレータプログラムを実行する状態にある。即ちこのとき、CPU2はICE16からDSU4及びバス14を介して供給される命令に基づいて動作する。この動作モードをエミュレータモードと呼ぶ。
ユーザは、トレース条件等の設定を終えると、デバッガからデバッグ対象となるプログラム(以下ユーザプログラム)の実行を指示する。これに応じて、ユーザプログラムの実行を指示するコマンドがDSU4経由でCPU2に伝えられる。CPU2は、エミュレータモードからユーザプログラムを実行するモード(以下ユーザモード)に状態遷移し、ユーザプログラムをユーザが指示したアドレスから実行する。
トレース回路5は、DSU4から制御信号線15により指定されたトレースモードでトレースを実行する。CPU2がプログラム中のブレークポイント等に起因して再度エミュレータモードに遷移するまで、トレース回路5はユーザプログラムの実行をトレースし続ける。このトレース回路5が生成したトレースデータは、即座にトレースメモリ6に書き込まれる。なおトレースデータは、実行した命令及び書き込み・読み出し番地等のデータを時系列に並べたリストである。
トレースメモリ6内のトレースデータは、適切なタイミングで、トレース回路5及びDSU4を経由してICE16へ転送される。具体的には、DSU4がツールバス13の使用状態をチェックしてトレース回路5に読み出し指示をすることにより、ユーザモードにおいてCPU2がユーザプログラムを実行している間に、トレースデータをトレースメモリ6からICE16に転送する。またDSU4内のレジスタ設定によっては、CPU2がエミュレータモードに遷移してからデバッガプログラムの指示に基づいて、トレースメモリ6のトレースデータをトレース回路5、DSU4、ICE16を介してパーソナルコンピュータ17へ読み出す。
この際、マルチタスクOSで動作するタスクのデバッグを行なう場合、注目しているタスクのトレースデータが他のタスクのトレースデータに埋もれてしまうと、デバッグの効率が極度に落ちてしまう。これを考慮して、非特許文献1のシステムでは、パーソナルコンピュータ17に転送された全てのトレースデータの中から、注目しているタスクのトレースデータのみをプログラムアドレス等を参考にしながらデバッガが選別し、選別したトレースデータのみをパーソナルコンピュータ17の画面に表示する。
また非特許文献2のシステムでは、トレース動作のon/offを制御するための制御レジスタをトレース回路5内に設けている。このレジスタを利用することにより、ユーザはトレースデータを取得したいルーチンの先頭と最後にトレース動作をon/offするルーチンを追加することで、希望する範囲のみのトレースデータを取得するように設定することができる。
「三菱マイクロコンピュータM32Rファミリ」、三菱電機株式会社、2002年3月 「SH7709Sグループハードウェアマニュアル」、7−11ページ、[online]、2003年9月9日、ルネサステクノロジ、[平成16年8月24日検索]、インターネット<URL:http://www.renesas.com/avs/resource/japan/jpn/pdf/mpumcu/rjj09b0074_sh7709s.pdf>
「三菱マイクロコンピュータM32Rファミリ」、三菱電機株式会社、2002年3月 「SH7709Sグループハードウェアマニュアル」、7−11ページ、[online]、2003年9月9日、ルネサステクノロジ、[平成16年8月24日検索]、インターネット<URL:http://www.renesas.com/avs/resource/japan/jpn/pdf/mpumcu/rjj09b0074_sh7709s.pdf>
マルチタスクOSで動作する複数のタスクが存在する場合、図1のようなシステムで生成されるトレースデータは、OSを含めた全てのタスクのトレースデータを含むことになる。従って、デバッグ対象である注目タスクのトレースデータが他のタスクのトレースデータに埋もれてしまいデバッグ効率が落ちると共に、余計なトレースデータ格納スペースが必要になるという問題がある。
マイクロコンピュータにおいては、CPUやキャッシュメモリ等のマイクロコンピュータ本来の機能を提供するための必須の回路部分が大きな面積を占めるために、トレースデータ蓄積目的のためのトレースメモリを大容量化することができない。従って、チップ内部のトレースメモリに全てのトレースデータを蓄積しようとすると、デバッグ対象のルーチンの動作を解析するためにはメモリの容量が不足してしまう結果になる。
またトレースデータをチップ外部のICEへ逐次出力する方式では、マイクロコンピュータ内部の動作が高速になるに伴い、トレースデータ出力のために十分なバスバンド幅を確保することが困難となる。従って内蔵トレースメモリをチップ内外の速度差を吸収するためのバッファとして使用しても、バッファがオーバーフローし易く、トレースデータが消失してしまう結果になる。
非特許文献1に記載の技術のように、トレースデータをパーソナルコンピュータで選別して表示する構成とすれば、不要な部分を除いたトレース情報を生成・表示することができる。しかしトレースメモリに格納されるトレースデータ自体には不要なデータが含まれており、トレースメモリの容量が小さいという問題の解決とはならない。またトレース結果をパーソナルコンピュータの画面に表示する前にトレースデータ選別のための時間が必要となるために、デバッガの使い勝手が悪化するという問題がある。
また非特許文献2に記載の技術では、トレース動作のon/offを制御することはできるが、制御レジスタによる単純なon/off制御では、マルチタスクOSで動作する環境において特定のタスクについてのみトレースデータを収集するといった制御を行うことは難しい。
以上を鑑みて、本発明は、デバッグ対象としているタスクについてのみトレースデータをトレースメモリに格納することが可能なマイクロコンピュータ及びトレース制御方法を提供することを目的とする。
本発明によるマイクロコンピュータは、バスと、該バスに結合されるCPUと、該バスに結合され該CPUが実行する処理のトレースデータを出力端に出力するトレースデータ生成回路と、該トレースデータ生成回路の該出力端に結合され該トレースデータを格納するメモリと、該バスに結合され該CPUが実行中のタスクを示すタスク番号を格納する第1のレジスタと、該第1のレジスタに結合され該タスク番号に応じて該トレースデータ生成回路の該トレースデータ出力のオン・オフを制御する制御部を含むことを特徴とする。
また本発明によるマイクロコンピュータのトレース制御方法は、a)CPUにユーザプログラムを実行させ、b)該ユーザプログラムの実行時に実行中のタスクを示すタスク番号を該CPUにより第1のレジスタに格納させ、c)該第1のレジスタに格納される該タスク番号に応じて該CPUが実行する処理のトレースデータ記録のオン・オフを制御する各段階を含むことを特徴とする。
本発明の少なくとも1つの実施例によれば、マイクロコンピュータを使用したシステムの開発において、トレース対象となるタスクに関する情報をデバッグ時にデバッガから指示することにより、所望のタスクのトレース情報だけを取得することができる。これにより、ユーザによるデバッグ作業の効率を高めることが可能になる。また少ないトレースメモリを効率的に使用することで、トレースデータ記録時にメモリの容量が不足することなく、同じサイズのトレースメモリであってもより長時間のトレースデータの記録が可能になる。
図2は本発明によるデバッグシステムの概略構成の一例を示す図である。図2において、図1と同一の構成要素は同一の番号で参照する。
図1のデバッグシステムは、本発明による評価用チップであるマイクロコンピュータ100、評価用チップをデバッグするためのICE16、及びデバッガソフトウェアに基づいてICE16の制御を行うパーソナルコンピュータ17を含む。パーソナルコンピュータ17とICE16との間は、例えばUSB等の汎用の通信ケーブル18を介して接続される。ICE16とマイクロコンピュータ100との間は、エミュレーション用のインターフェースであるツールバス13を介して接続される。
マイクロコンピュータ100は、CPU2、バスインターフェース3、ツールバス13を介してICE16に接続されるデバッグサポートユニット(以下DSU)300、トレースメモリ6、命令バス7、及びデータバス8を含む。バスインターフェース3は、命令バス7とデータバス8とを外部ユーザバス9に統合するためのインターフェースである。外部ユーザバス9には例えば、マイクロコンピュータ1が実行するユーザプログラムを記憶するためのRAMが接続される。図2に示すマイクロコンピュータ100においては、トレース回路がDSU300の内部に組み込まれた構成となっている。
データライト用バス10は、トレース回路5からトレースメモリ6へのデータ書き込みに用いられる。データリード用バス11は、トレースメモリ6に蓄えたトレースデータを、DSU4を介してICE側に読み出すために用いられる。
図3は、本発明によるマイクロコンピュータ100のDSU300の原理構成を示す図である。図3のDSU300は、CPU制御部400、ツールバス制御部401、及びトレース回路500を含む。トレース回路500は、レジスタ200、レジスタ201、比較器202、トレースデータ生成回路203を含む。
レジスタ200は実行中のタスク番号を格納する。レジスタ201にはトレース対象として指定するタスク番号を設定しておく。比較器202はレジスタ200の格納値とレジスタ201の格納値とを比較する。トレースデータ生成回路203は、比較器202の比較結果が示す一致判定に応答して命令バス7とデータバス8のデータから生成したトレースデータを、トレースメモリ6に格納する。
図4は、図3に示されるDSU300を備えたマイクロコンピュータ100を図2のデバッグシステムでデバッグ作業する際の処理の流れを示すフローチャートである。
図4のステップS1で、デバッグ対象のマイクロコンピュータ100及びICEに電源を投入し、パーソナルコンピュータ上のデバッガソフトを起動する。ステップS2で、パーソナルコンピュータからICE経由で、ユーザプログラムをデバッグ対象のシステム上にあるメモリに転送する。ステップS3で、デバッグを行うユーザが、デバッガからエバチップ(Evaluation Chip:マイクロコンピュータ100)に対して、ブレークポイントやトレースモード等のデバッグ設定を行う。ステップS4で、ステップS3でなされたデバッグ設定の下でユーザプログラムを動作させる。ステップS5で、命令ブレーク等でユーザプログラムの動作を止めた後、トレースデータを解析する。ステップS6で、トレースデータの解析に基づいてシステムが正常動作したか否かをチェックする。正常動作しなかった場合には、ステップS7でユーザプログラムを修正した後、ステップS2に戻ってステップS2以降の処理を再度実行する。システムがユーザプログラムにより正常に動作したとステップS6で判断されると、デバッグ処理は終了する。
図5は、ユーザ、デバッガ(パーソナルコンピュータ17及びICE16)、及びエバチップ(マイクロコンピュータ100)の処理の流れを示す処理流れ図である。図5の処理の流れは、図4のステップS3からステップS5で実行される処理を詳細に示す図である。
まずユーザがトレース対象となるタスクをデバッガに指示する(ステップS1)。これに応じてデバッガが、エミュレータモードにおいてエバチップのレジスタ201(トレース許可タスク番号レジスタ)にトレース対象となるタスク番号を設定する(ステップS2)。次にユーザがデバッガの画面上でユーザプログラムの実行を指示すると(ステップS3)、デバッガはエバチップのOSにタスク毎のトレース情報(トレース対象となるタスク番号の情報等)を渡し(ステップS4)、エバチップにユーザプログラムの実行を指示する(ステップS5)。このようにエバチップのOSにトレース対象となるタスク番号の情報を渡すことより、OSはタスクを生成するときに条件に合致したタスク番号を生成することができる。
ユーザプログラムの実行指示に応答して、エバチップのCPU2がエミュレータモードからユーザモードに遷移し、ユーザプログラムを実行する(ステップS6)。このユーザプログラムの実行は、最初にOSの実行から開始される。OSは最初にOS自身のタスク番号をレジスタ200に書き込む。これは、ある時点でCPUが実行しているプログラムの種類を、トレース回路500が識別する必要があるからである。なおユーザは、トレース対象にOSの動作を含めるようにデバッガから指示してもよく、この場合、トレース対象となるタスク番号をOSが自分自身に設定することになる。続いてOSは、ユーザタスクの実行に必要な環境設定をおこない、次に実行しようとするタスクのタスク番号をレジスタ200に書き込む。タスク切り替えが発生してOSに制御が戻ると、その直後にOSは自分自身のタスク番号をレジスタ200に再度書き込む。以後、タスク切り換え時に行われるOSの処理の先頭と最後において、OSがレジスタ200へタスク番号を書き込む。
上記のようにしてユーザプログラムを実行している状態で、エバチップのトレース回路500がトレースデータを生成し格納する(ステップS7)。具体的には、レジスタ201(トレース許可タスク番号レジスタ)の値とレジスタ200の値とを比較することにより、比較器202がトレースデータ生成条件が満たされるか否かを判断する。比較器202の出力はトレースデータ生成回路203に供給され、トレース動作をon/off(或いはトレースデータの記録動作をon/off)する。
これにより、OSも含むタスク単位でトレースデータの取得を制御することが可能になり、注目するタスクのトレースデータが不必要なタスクのトレースデータに埋もれてしまうことはない。例えばOSがトレース対象に指定されていない場合には、OSのタスク切り換え動作の大部分がトレースリストから省かれて、トレースデータが大幅に短くなることになる。
その後、ブレーク条件成立等でユーザプログラムの実行が中断すると(ステップS8)、エバチップのCPU2がユーザモードからエミュレータモードに遷移し、デバッガがトレースメモリ6内のトレース結果を取り出して表示する(ステップS9)。この表示結果に基づいて、ユーザがトレース結果を解析する(ステップS10)。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図6は、DSU300の実施例の構成の一例を示す図である。図6のDSU300は、CPU制御部400、ツールバス制御部401、及びトレース回路500を含む。トレース回路500は、複数のレジスタ回路を含むレジスタ部403、トレースon/off制御部404、トレースメモリ制御部405、及びトレースデータ生成部406を含む。信号線413は、CPU2が出力するモード信号を供給する信号線であり、マイクロコンピュータ100がエミュレータモード或いはユーザモードの何れで動作しているのかを示す。
本実施例では、ユーザがデバッガからトレース条件を設定するときには、CPU2によって実行されるエミュレータプログラムがレジスタ部403にデータを書き込む構成となっている。このトレース条件設定動作は次の通りである。まずCPU2は命令バス7を使用してICE16へ命令要求を出す。このときDSU300内部では、CPU制御部400が命令バス7とデータバス8とから同時に発せられたアクセス要求の調停を行うために両バスを監視しており、優先度の高い要求をツールバス制御部401に伝える。これに応じて、ツールバス制御部401がツールバス13を介してICE16へ命令フェッチを行う。
CPU制御部400は、ICE16から命令コードが得られるまで、CPU2の命令アクセス要求に対してウェイトを発生させて、CPU2の動作タイミングを調整する。ICE16からエミュレータプログラムの命令コードが供給されると、CPU2は、この命令を実行することにより、ユーザが設定を指示した値をデータバス8経由でレジスタ部403に書き込む。この時点では、信号線413のモード信号がエミュレータモードを示しているので、トレースメモリ制御部405は、レジスタ部403の設定値に関わらず、トレースデータ生成部406によるトレースデータの生成を抑止している。
エミュレータモードでのレジスタ設定がすべて済むと、ユーザはデバッガからユーザプログラムの実行を指示する。この動作は、ICE16から供給してCPU2が実行しているエミュレータプログラムを、ユーザモードへCPUのモードを変化させるための命令にICE16内部で置き換えることで実現する。このモード変化により、信号線413のモード信号はユーザモードを示すようになる。
ここで、CPU2によるユーザプログラムの実行が開始されるが、マルチタスクOSを使用したシステムの場合は、ユーザプログラムとしてOSがまず最初に実行される。このOSは最初にシステムの初期化を行い、タスクを登録し、各タスクを起動することになる。
本発明でのマルチタスクOSは、システムの初期化に先立ち、OS自身のタスク番号をレジスタ部403に書き込む。OSの初期化処理等が終り、次に実行すべきタスクに制御を切り換えるときは、切り換え先のタスク番号をレジスタ部403に書き込んでからタスク切り換えを実行する。各タスクからは一定時間の経過やシステムコールの発行でOSに制御が戻ってくるが、このときも、OSはまず最初にレジスタ部403にOS自身のタスク番号を書き込む。またOSの処理が完了する際には、次のタスクのタスク番号をレジスタ部403に再設定し、タスク切り換え処理を実行する。以後は、ICE16が備えるデバッグ用のブレーク機能等でCPU2がエミュレータモードに遷移するまで、CPUはOSと各タスクを交互に実行する。
デバッグ用に設定したブレークポイントに到達する等の原因により、CPU2の動作はエミュレータモードに遷移する。エミュレータモードに遷移すると、信号線413のモード信号がエミュレータモードを示し、トレースメモリ制御部405はトレースデータ生成部406によるトレースデータの生成を停止する。
図7は、レジスタ部403の書き換えタイミングを示すタイミング図である。ここで図7に示されるタスク番号レジスタとは、レジスタ部403の中の1つのレジスタであり、図3のレジスタ200に相当するものである。
図7において(a)、(c)、(e)の各タイミングでは、OSによる処理が開始されるため、前述のようにOS自身のタスク番号の書き込みが行われる。(b)、(f)の各タイミングでは、タスク切り換えの直前にタスクAのタスク番号を、(d)のタイミングでは、タスク切り換えの直前にタスクBのタスク番号を、OSがレジスタ部403に書き込む。また(f)のタイミングで起動されたタスクAは、ICE16からのブレーク等で(g)のタイミングで打ち切られ、デバッガに制御が移っている。そのため、(g)においてはタスク番号レジスタの書き換えが行われていない。
次に図6の構成におけるトレースデータ生成のon/off制御について説明する。
レジスタ部403は、OSから書き込まれたタスク番号の値と、デバッガからのユーザ指示により予め書き込まれているトレース対象のタスク番号とを、トレースon/off制御部404に供給する。トレースon/off制御部404は、供給された番号を比較し、比較結果に応じたトレースon/off制御信号をトレースメモリ制御部405に通知する。
トレースメモリ制御部405は、信号線413のモード信号がユーザモードを示し且つトレースon/off制御信号がトレースオンを指示すると、トレースデータ生成部406にトレースデータの生成を指示する。その指示を受けたトレースデータ生成部406は、命令バス7とデータバス8とのデータに基づいて、指示されたトレース条件にあうトレースデータを生成する。トレースデータ生成部406は、生成したトレースデータをトレースメモリ制御部405に供給する。
トレースメモリ生成部405は内部にトレースメモリ6へのライトポインタを備えており、トレースメモリ6に空きがある場合は、データライト用バス10を介してトレースデータをトレースメモリ6に書き込む。ライトポインタは書き込み動作後に自動的にインクリメントする。トレースメモリ6に空きがない場合、トレースメモリ制御部405はトレースデータ生成部406による以後のトレースデータの生成を停止させてよい。或いはトレースメモリ制御部405は、トレース条件レジスタ408の設定によりトレースメモリ6をリングバッファとして、トレースデータの書き込みを継続してもよい。
ICE16等からのブレーク要求でエミュレータモードに遷移した場合は、信号線413のモード信号が変化してエミュレータモードを示すので、トレースメモリ制御部405はトレースデータ生成部406にトレースデータの生成を停止するように指示し、エミュレータプログラムの実行結果のトレースメモリ6への格納を停止する。
本実施例の構成では、CPU2により実行しているエミュレータプログラムが、メモリ空間に割り当てられたトレースメモリ6に対して読み出し動作を行うことで、データリード用バス11及びトレースメモリ制御部405を経由して、トレースメモリ6に格納されたトレースデータを読み出すことができる。読み出したトレースデータは、CPU制御部400、ツールバス制御部401、ツールバス13を経由してICE16に供給し、デバッガが動作しているパーソナルコンピュータ17の画面に表示することができる。
またトレースメモリ6を同時読み書き可能な2ポートRAMで構成し、トレースメモリ制御部405とツールバス制御部401とを専用のバスで接続すれば、ユーザプログラム実行と平行してトレースデータをICE16側に自動的に出力することも可能である。この場合、トレースメモリ制御部405内部にツールバス制御部401からの要求によってトレースメモリ6に読み出し動作を行うためのリードポインタを設け、読み出し動作後にリードポインタを自動的にインクリメントするように構成すればよい。
図8は、図4のレジスタ部403とトレースon/off制御部404の構成の一例を示す回路図である。図8においてレジスタ部403はレジスタ600乃至603を含み、トレースon/off制御部404は、比較器604乃至606、OR回路607、及び一方の入力が負論理入力のAND回路608を含む。この構成において、レジスタ600はトレース禁止タスク番号レジスタ、レジスタ601はトレース許可タスク番号レジスタ、レジスタ602は第2のトレース許可タスク番号レジスタであり、レジスタ603がタスク切り換え時にOSからタスク番号を書き込まれるタスク番号レジスタである。
例えば、タスクA、B、Cからなるシステムのデバッグにおいて、タスクCのトレースデータは常に得たいが、OSのトレースデータは不要であるとする。この場合、レジスタ600にはOSのタスク番号、レジスタ601にはタスクCのタスク番号、レジスタ602にはタスクA及びタスクBのうち例えばタスクAのタスク番号を設定する。ユーザプログラムの実行においてOSが実行されると、OS自身のタスク番号がレジスタ603に設定され、比較器604の出力が有効になり、トレースon/off制御部404の出力であるトレースon/off制御信号はトレースオフを指示する。
またユーザプログラムの実行においてタスクA又はタスクCが実行され、タスクA又はタスクCのタスク番号がレジスタ603に設定されると、比較器606又は比較器605の出力が有効になり、トレースon/off制御信号はトレースオンを指示する。ここでレジスタ601を常にトレースデータを取りたいタスク(この例ではタスクC)に指定しておけば、デバッグの進行によって注目するタスクを変更(例えばタスクAからタスクBに変更)するときには、レジスタ602の内容のみを書き換えることで対応することができる。
以上説明した実施例において、信号線413(図6)のモード信号がエミュレータモードを示している間はトレースデータの生成が抑止されるが、ユーザモードに遷移してからOSがタスク番号レジスタを設定するまでは、トレースデータの生成を制御することができない。即ち、図7に示すタイミング図で、(a)のタイミングまではエミュレータモードでありトレースデータの生成が抑止されているが、その後にOSがOS自身のタスク番号をタスク番号レジスタ603に書き込むまでの期間は、モード信号がユーザモードを示し且つタスク番号レジスタ603の内容が未定の状態である。従ってこの期間においては、トレースデータの生成が制御できない。
そのため、デバッグ作業に先立ってデバッガがDSU300の初期化を行う際に、デバッガによりタスク番号レジスタを適切な値に初期化しておくことが望ましい。例えば、トレース対象にOSが含まれる場合には、デバッガによりタスク番号レジスタ603をトレース許可レジスタ601と同じ値に設定してからユーザモードに遷移すればよい。これにより、ユーザモード遷移直後からトレースデータを取得することが可能になる。逆にトレース対象にOSが含まれない場合には、デバッガによりトレース禁止タスク番号レジスタ600と同じ値をタスク番号レジスタ603に設定してから、ユーザモードに遷移すればよい。これにより、ユーザモード遷移直後からトレースデータの取得を抑止することが可能になる。
図9は、レジスタ部及びトレースon/off制御部の別の構成例を示す回路図である。図9では、レジスタ部及びトレースon/off制御部を纏めてトレースon/off制御部404Aとして示してある。トレースon/off制御部404Aは、レジスタ651乃至654、比較器655乃至657、及びOR回路658を含む。
図9の構成は、CPUが多段の割込みレベルをサポートしている場合やMMU(Memory Management Unit)がメモリ保護レベルをサポートしている場合を想定している。この場合、割込みレベル信号やメモリ保護レベル信号を用いて、トレースon/off制御信号を生成することができる。図9において、レジスタ652及び653は、前述の実施例同様のトレース許可タスク番号レジスタ及びタスク切り換え時にOSからタスク番号を書き込まれるタスク番号レジスタである。レジスタ651は、エミュレータモードにおいてデバッガにより割り込みレベルを予め書き込まれている。比較器655がCPUから供給される現在の割り込みレベル信号とレジスタ651の値とを比較することで、トレースon/off制御信号を生成する。レジスタ654は、エミュレータモードにおいてデバッガによりメモリ保護レベルを予め書き込まれている。比較器657がMMUから供給される現在のメモリ保護レベル信号とレジスタ654の値とを比較することで、トレースon/off制御信号を生成する。
このような構成とすれば、例えば特定の割込みハンドラの実行について、或いは特定のメモリ保護レベルのタスクの実行について、トレースデータを記録することが可能になる。
図10は、タスク番号比較にマスク機能を持たせた構成を示す回路図である。図10の比較器703は、例えば図8の比較器604乃至606のようなタスク番号同士を比較する比較器であり、レジスタ700に格納されるタスク番号とレジスタ701に格納されるタスク番号とを比較する。レジスタ700及びレジスタ701は、トレース許可タスク番号レジスタ及びタスク切り換え時にOSからタスク番号を書き込まれるタスク番号レジスタである。
マスク指定レジスタ702はマスクデータを格納し、このマスクデータにより、比較器703での比較対象となるビットを指定することができる。説明を簡単にするために、タスク番号が4bitで表現されるとする。マスク指定レジスタ702に例えばマスクデータ“0011”を格納する。このように設定することで、マスクデータが“1”であるビット位置のビット、即ちこの場合下位2ビットについては、比較器703における比較対象から外される。
例えばレジスタ700にトレース許可タスク番号として“0100”を設定する。OSがタスク番号レジスタ701にタスク番号として“0101”を書き込むと、“0100”と“0101”の下位2ビットがマスクされ、上位2ビットのみが比較される。その結果、両タスク番号は一致することになる。
この機能を使用することにより、タスク番号の上位2ビットをOSは“00”、必ずトレースするタスクは“01”、トレースを行なわないタスクは“10”のようにデバッガとOSとの間で決めておけば、下位のビット(例えば14ビット)をOSが自由にタスクに割り振ることが可能になる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
例えば実施例におけるタスク番号レジスタ以外のレジスタは、デバッガとOSの間で定めたタスク番号の割当て規則に合わせて、固定のタスク番号を示す回路としてワイヤードロジックにより構成してもよい。これにより回路量を削減することができる。
1 マイクロコンピュータ
2 CPU
3 バスインターフェース
4 デバッグサポートユニット
5 トレース回路
6 トレースメモリ
7 命令バス
8 データバス
9 外部ユーザバス
13 ツールバス
16 ICE
17 パーソナルコンピュータ
18 通信ケーブル
100 マイクロコンピュータ
203 トレースデータ生成回路
300 DSU
400 CPU制御部
401 ツールバス制御部
403 レジスタ部
404 トレースon/off制御部
405 トレースメモリ制御部
406 トレースデータ生成部
500 トレース回路
2 CPU
3 バスインターフェース
4 デバッグサポートユニット
5 トレース回路
6 トレースメモリ
7 命令バス
8 データバス
9 外部ユーザバス
13 ツールバス
16 ICE
17 パーソナルコンピュータ
18 通信ケーブル
100 マイクロコンピュータ
203 トレースデータ生成回路
300 DSU
400 CPU制御部
401 ツールバス制御部
403 レジスタ部
404 トレースon/off制御部
405 トレースメモリ制御部
406 トレースデータ生成部
500 トレース回路
Claims (10)
- バスと、
該バスに結合されるCPUと、
該バスに結合され該CPUが実行する処理のトレースデータを出力端に出力するトレースデータ生成回路と、
該トレースデータ生成回路の該出力端に結合され該トレースデータを格納するメモリと、
該バスに結合され該CPUが実行中のタスクを示すタスク番号を格納する第1のレジスタと、
該第1のレジスタに結合され該タスク番号に応じて該トレースデータ生成回路の該トレースデータ出力のオン・オフを制御する制御部
を含むことを特徴とするマイクロコンピュータ。 - 所定のタスク番号を格納する少なくとも1つの第2のレジスタを更に含み、該制御部は該第1のレジスタの格納値と該第2のレジスタの格納値とが少なくとも部分的に一致すると該トレースデータ生成回路の該トレースデータ出力をオンにすることを特徴とする請求項1記載のマイクロコンピュータ。
- 所定のタスク番号を格納する第3のレジスタを更に含み、該制御部は該第1のレジスタの格納値と該第3のレジスタの格納値とが少なくとも部分的に一致すると、該少なくとも1つの第2のレジスタの格納値に関わらずに該トレースデータ生成回路の該トレースデータ出力をオフにすることを特徴とする請求項2記載のマイクロコンピュータ。
- 該制御部は該第1のレジスタの格納値と該第2のレジスタの格納値とが少なくとも部分的に一致するか否かを判断する際にビットマスクする機能を有することを特徴とする請求項2記載のマイクロコンピュータ。
- 該制御部は更に該CPUが実行中のタスクのレベルを示す信号に応じて該トレースデータ生成回路の該トレースデータ出力のオン・オフを制御することを特徴とする請求項1記載のマイクロコンピュータ。
- a)CPUにユーザプログラムを実行させ、
b)該ユーザプログラムの実行時に実行中のタスクを示すタスク番号を該CPUにより第1のレジスタに格納させ、
c)該第1のレジスタに格納される該タスク番号に応じて該CPUが実行する処理のトレースデータ記録のオン・オフを制御する
各段階を含むことを特徴とするマイクロコンピュータのトレース制御方法。 - デバッガから第2のレジスタに所望のタスク番号を格納する段階を更に含み、該段階c)は、該第1のレジスタの格納値と該第2のレジスタの格納値とが少なくとも部分的に一致すると該トレースデータ記録をオンにすることを特徴とする請求項6記載のトレース制御方法。
- デバッガから第3のレジスタに所望のタスク番号を格納する段階を更に含み、該段階c)は、該第1のレジスタの格納値と該第3のレジスタの格納値とが少なくとも部分的に一致すると、該少なくとも1つの第2のレジスタの格納値に関わらずに該トレースデータ記録をオフにすることを特徴とする請求項7記載のトレース制御方法。
- 該段階c)は該第1のレジスタの格納値と該第2のレジスタの格納値とが少なくとも部分的に一致するか否かを判断する際にビットをマスクすることを特徴とする請求項7記載のトレース制御方法。
- 該CPUが実行中のタスクのレベルを示す信号に応じて該トレースデータ記録のオン・オフを制御する段階を更に含むことを特徴とする請求項6記載のトレース制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004273941A JP2006092029A (ja) | 2004-09-21 | 2004-09-21 | マイクロコンピュータ及びトレース制御方法 |
US11/023,646 US20060075310A1 (en) | 2004-09-21 | 2004-12-29 | Microcomputer and trace control method capable of tracing desired task |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004273941A JP2006092029A (ja) | 2004-09-21 | 2004-09-21 | マイクロコンピュータ及びトレース制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006092029A true JP2006092029A (ja) | 2006-04-06 |
Family
ID=36127100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004273941A Withdrawn JP2006092029A (ja) | 2004-09-21 | 2004-09-21 | マイクロコンピュータ及びトレース制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20060075310A1 (ja) |
JP (1) | JP2006092029A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007304765A (ja) * | 2006-05-10 | 2007-11-22 | Nec Electronics Corp | プロセッサシステム及びプロセッサシステムの性能測定方法 |
JP2008191788A (ja) * | 2007-02-01 | 2008-08-21 | Ricoh Co Ltd | 情報処理装置 |
JP2010003057A (ja) * | 2008-06-19 | 2010-01-07 | Fujitsu Microelectronics Ltd | プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060277435A1 (en) * | 2005-06-07 | 2006-12-07 | Pedersen Frode M | Mechanism for storing and extracting trace information using internal memory in microcontrollers |
JP4847734B2 (ja) * | 2005-10-31 | 2011-12-28 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置、それのデバッグシステム及びデバッグ方法。 |
US7870437B2 (en) * | 2007-11-14 | 2011-01-11 | Arm Limited | Trace data timestamping |
GB2456813B (en) * | 2008-01-24 | 2012-03-07 | Advanced Risc Mach Ltd | Diagnostic context construction and comparison |
WO2012098434A1 (en) * | 2011-01-21 | 2012-07-26 | Freescale Semiconductor, Inc. | Method, system, and computer program product |
US8756461B1 (en) * | 2011-07-22 | 2014-06-17 | Juniper Networks, Inc. | Dynamic tracing of thread execution within an operating system kernel |
US10417121B1 (en) | 2011-12-19 | 2019-09-17 | Juniper Networks, Inc. | Monitoring memory usage in computing devices |
US8984344B2 (en) * | 2012-02-09 | 2015-03-17 | Freescale Semiconductor, Inc. | Stack-based trace message generation for debug and device thereof |
US10599555B2 (en) | 2017-09-20 | 2020-03-24 | Texas Instruments Incorporated | Context-sensitive debug requests for memory access |
CN115221070B (zh) * | 2022-08-02 | 2023-06-20 | 无锡众星微系统技术有限公司 | 基于NVMe盘的片上系统诊断方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4636941A (en) * | 1983-05-24 | 1987-01-13 | Iwatsu Electric Co., Ltd. | Method and apparatus for analysis of microprocessor operation |
US6314530B1 (en) * | 1997-04-08 | 2001-11-06 | Advanced Micro Devices, Inc. | Processor having a trace access instruction to access on-chip trace memory |
JP3277900B2 (ja) * | 1998-09-30 | 2002-04-22 | 日本電気株式会社 | プログラム検査方法、プログラム検査装置及び、検査プログラムを記憶したコンピュータ読み取り可能な記憶媒体 |
US7007205B1 (en) * | 2001-02-15 | 2006-02-28 | Silicon Graphics, Inc. | Method and apparatus for recording trace data in a microprocessor based integrated circuit |
US7043416B1 (en) * | 2001-07-27 | 2006-05-09 | Lsi Logic Corporation | System and method for state restoration in a diagnostic module for a high-speed microprocessor |
US7287245B2 (en) * | 2003-09-17 | 2007-10-23 | Faraday Technology Corp. | Method for real-time instruction information tracing |
-
2004
- 2004-09-21 JP JP2004273941A patent/JP2006092029A/ja not_active Withdrawn
- 2004-12-29 US US11/023,646 patent/US20060075310A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007304765A (ja) * | 2006-05-10 | 2007-11-22 | Nec Electronics Corp | プロセッサシステム及びプロセッサシステムの性能測定方法 |
JP2008191788A (ja) * | 2007-02-01 | 2008-08-21 | Ricoh Co Ltd | 情報処理装置 |
JP2010003057A (ja) * | 2008-06-19 | 2010-01-07 | Fujitsu Microelectronics Ltd | プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法 |
Also Published As
Publication number | Publication date |
---|---|
US20060075310A1 (en) | 2006-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7334161B2 (en) | Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus | |
US7010722B2 (en) | Embedded symmetric multiprocessor system debug | |
KR100350568B1 (ko) | 디버그기능을수행하기위한데이타처리시스템및방법 | |
US9465750B2 (en) | Memory protection circuit, method and processing unit utilizing memory access information register to selectively allow access to memory areas by virtual machines | |
JP4766487B2 (ja) | プログラム改ざん検出装置 | |
JPH08202563A (ja) | コンピュータシステム | |
JP2006092029A (ja) | マイクロコンピュータ及びトレース制御方法 | |
US20100153786A1 (en) | Processor, multiprocessor, and debugging method | |
US20130036426A1 (en) | Information processing device and task switching method | |
US7428661B2 (en) | Test and debug processor and method | |
JP2009175960A (ja) | 仮想マルチプロセッサシステム | |
JPH1078887A (ja) | デバッグシステム及びデバッグ方法 | |
JP2003263339A (ja) | デバック機能内蔵型マイクロコンピュータ | |
US6560698B1 (en) | Register change summary resource | |
JP2008140124A (ja) | データ処理装置 | |
US7689864B2 (en) | Processor comprising an integrated debugging interface controlled by the processing unit of the processor | |
JP2001084161A (ja) | データ処理装置 | |
JP2520158B2 (ja) | ディジタルシグナルプロセッサのデバッグ方式 | |
KR100658485B1 (ko) | 마이크로프로세서 개발시스템 | |
JP2006155098A (ja) | マイクロコンピュータの評価方法、マイクロコンピュータの評価システム、マイクロコンピュータ | |
JPS6316350A (ja) | マイクロプロセッサ | |
CN110245096A (zh) | 一种实现处理器直接连接扩展计算模块的方法 | |
CN113672554A (zh) | 处理器核、处理器、片上系统和调试系统 | |
JPS6325742A (ja) | トレ−ス機能付マイクロプロセツサ | |
JPH07281924A (ja) | トレース装置及びこれを備えたエミュレータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060222 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080512 |