(57)【要約】【課題】本発明は、デバッグ対象としているタスクについてのみトレースデータをトレースメモリに格納することが可能なマイクロコンピュータ及びトレース制御方法を提供することを目的とする。【解決手段】マイクロコンピュータは、バスと、バスに結合されるＣＰＵと、バスに結合されＣＰＵが実行する処理のトレースデータを出力端に出力するトレースデータ生成回路と、トレースデータ生成回路の出力端に結合されトレースデータを格納するメモリと、バスに結合されＣＰＵが実行中のタスクを示すタスク番号を格納する第１のレジスタと、第１のレジスタに結合されタスク番号に応じてトレースデータ生成回路のトレースデータ出力のオン・オフを制御する制御部を含む。【選択図】  図３
2006092029.tif 000002
【特許請求の範囲】
【請求項１】
バスと、
該バスに結合されるＣＰＵと、
該バスに結合され該ＣＰＵが実行する処理のトレースデータを出力端に出力するトレースデータ生成回路と、
該トレースデータ生成回路の該出力端に結合され該トレースデータを格納するメモリと、
該バスに結合され該ＣＰＵが実行中のタスクを示すタスク番号を格納する第１のレジスタと、
該第１のレジスタに結合され該タスク番号に応じて該トレースデータ生成回路の該トレースデータ出力のオン・オフを制御する制御部
を含むことを特徴とするマイクロコンピュータ。
【請求項２】
所定のタスク番号を格納する少なくとも１つの第２のレジスタを更に含み、該制御部は該第１のレジスタの格納値と該第２のレジスタの格納値とが少なくとも部分的に一致すると該トレースデータ生成回路の該トレースデータ出力をオンにすることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
所定のタスク番号を格納する第３のレジスタを更に含み、該制御部は該第１のレジスタの格納値と該第３のレジスタの格納値とが少なくとも部分的に一致すると、該少なくとも１つの第２のレジスタの格納値に関わらずに該トレースデータ生成回路の該トレースデータ出力をオフにすることを特徴とする請求項２記載のマイクロコンピュータ。
【請求項４】
該制御部は該第１のレジスタの格納値と該第２のレジスタの格納値とが少なくとも部分的に一致するか否かを判断する際にビットマスクする機能を有することを特徴とする請求項２記載のマイクロコンピュータ。
【請求項５】
該制御部は更に該ＣＰＵが実行中のタスクのレベルを示す信号に応じて該トレースデータ生成回路の該トレースデータ出力のオン・オフを制御することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項６】
ａ）ＣＰＵにユーザプログラムを実行させ、
ｂ）該ユーザプログラムの実行時に実行中のタスクを示すタスク番号を該ＣＰＵにより第１のレジスタに格納させ、
ｃ）該第１のレジスタに格納される該タスク番号に応じて該ＣＰＵが実行する処理のトレースデータ記録のオン・オフを制御する
各段階を含むことを特徴とするマイクロコンピュータのトレース制御方法。
【請求項７】
デバッガから第２のレジスタに所望のタスク番号を格納する段階を更に含み、該段階ｃ）は、該第１のレジスタの格納値と該第２のレジスタの格納値とが少なくとも部分的に一致すると該トレースデータ記録をオンにすることを特徴とする請求項６記載のトレース制御方法。
【請求項８】
デバッガから第３のレジスタに所望のタスク番号を格納する段階を更に含み、該段階ｃ）は、該第１のレジスタの格納値と該第３のレジスタの格納値とが少なくとも部分的に一致すると、該少なくとも１つの第２のレジスタの格納値に関わらずに該トレースデータ記録をオフにすることを特徴とする請求項７記載のトレース制御方法。
【請求項９】
該段階ｃ）は該第１のレジスタの格納値と該第２のレジスタの格納値とが少なくとも部分的に一致するか否かを判断する際にビットをマスクすることを特徴とする請求項７記載のトレース制御方法。
【請求項１０】
該ＣＰＵが実行中のタスクのレベルを示す信号に応じて該トレースデータ記録のオン・オフを制御する段階を更に含むことを特徴とする請求項６記載のトレース制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にマイクロコンピュータ及びトレース制御方法に関し、詳しくはトレース動作のｏｎ／ｏｆｆが制御可能なマイクロコンピュータ及びトレース制御方法に関する。
【背景技術】
【０００２】
マイクロコンピュータを使用したシステムを開発する際には、量産用のマイクロコンピュータチップと異なりエミュレーション用のインターフェースやＲＡＭを備えた評価用チップ（Evaluation Chip）を作成して、この量産用マイクロコンピュータチップと同様の動作をする評価用チップに対してデバッグを実行する。具体的には、この評価用チップ（Evaluation Chip）のＩＣＥ用インターフェースにＩＣＥ（In-circuit Emulator）を接続し、パーソナルコンピュータからＩＣＥを用いてマイクロコンピュータの動作を制御することにより、マイクロコンピュータにプログラムを実行させて種々のデバッグ作業を行う。
【０００３】
図１は、従来のデバッグ環境の構成を示す図である。図１のデバッグシステムは、評価用チップであるマイクロコンピュータ１、評価用チップをデバッグするためのＩＣＥ１６、及びデバッガソフトウェアに基づいてＩＣＥ１６の制御を行うパーソナルコンピュータ１７を含む。パーソナルコンピュータ１７とＩＣＥ１６との間は、例えばＵＳＢ等の汎用の通信ケーブル１８を介して接続される。ＩＣＥ１６とマイクロコンピュータ１との間は、エミュレーション用のインターフェースであるツールバス１３を介して接続される。
【０００４】
マイクロコンピュータ１は、ＣＰＵ２、バスインターフェース３、ツールバス１３を介してＩＣＥ１６に接続されるデバッグサポートユニット（以下ＤＳＵ）４、トレース回路５、トレースメモリ６、命令バス７、及びデータバス８を含む。バスインターフェース３は、命令バス７とデータバス８とを外部ユーザバス９に統合するためのインターフェースである。外部ユーザバス９には例えば、マイクロコンピュータ１が実行するユーザプログラムを記憶するためのＲＡＭが接続される。トレース回路５は、命令バス７とデータバス８とを監視してトレースデータを生成する。トレースメモリ６は、トレース回路５が生成したトレースデータを格納する。データライト用バス１０は、トレース回路５からトレースメモリ６へのデータ書き込みに用いられる。データリード用バス１１は、トレースメモリ６に蓄えたトレースデータを、ＤＳＵ４を介してＩＣＥ側に読み出すために用いられる。バス１２はトレース回路５がリードしたトレースデータをＤＳＵ４へ渡すためのバスであり、バス１４はＤＳＵ４がＩＣＥ１６からの指示によりＣＰＵ２をコントロールするための専用バスである。制御信号線１５は、ＤＳＵ４内部のレジスタからトレース条件等をトレース回路５に指示するために用いられる。
【０００５】
マイクロコンピュータシステムのデバッグを行うユーザは、デバッガソフトウェアのコマンドを使用して、ＩＣＥ１６からトレース条件等をＤＳＵ４内のレジスタに設定する。このとき、ＣＰＵ２はＩＣＥ１６から供給される命令を待ち、命令が供給されるとそれに基づいてエミュレータプログラムを実行する状態にある。即ちこのとき、ＣＰＵ２はＩＣＥ１６からＤＳＵ４及びバス１４を介して供給される命令に基づいて動作する。この動作モードをエミュレータモードと呼ぶ。
【０００６】
ユーザは、トレース条件等の設定を終えると、デバッガからデバッグ対象となるプログラム（以下ユーザプログラム）の実行を指示する。これに応じて、ユーザプログラムの実行を指示するコマンドがＤＳＵ４経由でＣＰＵ２に伝えられる。ＣＰＵ２は、エミュレータモードからユーザプログラムを実行するモード（以下ユーザモード）に状態遷移し、ユーザプログラムをユーザが指示したアドレスから実行する。
【０００７】
トレース回路５は、ＤＳＵ４から制御信号線１５により指定されたトレースモードでトレースを実行する。ＣＰＵ２がプログラム中のブレークポイント等に起因して再度エミュレータモードに遷移するまで、トレース回路５はユーザプログラムの実行をトレースし続ける。このトレース回路５が生成したトレースデータは、即座にトレースメモリ６に書き込まれる。なおトレースデータは、実行した命令及び書き込み・読み出し番地等のデータを時系列に並べたリストである。
【０００８】
トレースメモリ６内のトレースデータは、適切なタイミングで、トレース回路５及びＤＳＵ４を経由してＩＣＥ１６へ転送される。具体的には、ＤＳＵ４がツールバス１３の使用状態をチェックしてトレース回路５に読み出し指示をすることにより、ユーザモードにおいてＣＰＵ２がユーザプログラムを実行している間に、トレースデータをトレースメモリ６からＩＣＥ１６に転送する。またＤＳＵ４内のレジスタ設定によっては、ＣＰＵ２がエミュレータモードに遷移してからデバッガプログラムの指示に基づいて、トレースメモリ６のトレースデータをトレース回路５、ＤＳＵ４、ＩＣＥ１６を介してパーソナルコンピュータ１７へ読み出す。
【０００９】
この際、マルチタスクＯＳで動作するタスクのデバッグを行なう場合、注目しているタスクのトレースデータが他のタスクのトレースデータに埋もれてしまうと、デバッグの効率が極度に落ちてしまう。これを考慮して、非特許文献１のシステムでは、パーソナルコンピュータ１７に転送された全てのトレースデータの中から、注目しているタスクのトレースデータのみをプログラムアドレス等を参考にしながらデバッガが選別し、選別したトレースデータのみをパーソナルコンピュータ１７の画面に表示する。
【００１０】
また非特許文献２のシステムでは、トレース動作のｏｎ／ｏｆｆを制御するための制御レジスタをトレース回路５内に設けている。このレジスタを利用することにより、ユーザはトレースデータを取得したいルーチンの先頭と最後にトレース動作をｏｎ／ｏｆｆするルーチンを追加することで、希望する範囲のみのトレースデータを取得するように設定することができる。
【非特許文献１】「三菱マイクロコンピュータＭ３２Ｒファミリ」、三菱電機株式会社、２００２年３月
【非特許文献２】「ＳＨ７７０９Ｓグループハードウェアマニュアル」、７−１１ページ、［online］、２００３年９月９日、ルネサステクノロジ、［平成１６年８月２４日検索］、インターネット<URL:http://www.renesas.com/avs/resource/japan/jpn/pdf/mpumcu/rjj09b0074_sh7709s.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１１】
マルチタスクＯＳで動作する複数のタスクが存在する場合、図１のようなシステムで生成されるトレースデータは、ＯＳを含めた全てのタスクのトレースデータを含むことになる。従って、デバッグ対象である注目タスクのトレースデータが他のタスクのトレースデータに埋もれてしまいデバッグ効率が落ちると共に、余計なトレースデータ格納スペースが必要になるという問題がある。
【００１２】
マイクロコンピュータにおいては、ＣＰＵやキャッシュメモリ等のマイクロコンピュータ本来の機能を提供するための必須の回路部分が大きな面積を占めるために、トレースデータ蓄積目的のためのトレースメモリを大容量化することができない。従って、チップ内部のトレースメモリに全てのトレースデータを蓄積しようとすると、デバッグ対象のルーチンの動作を解析するためにはメモリの容量が不足してしまう結果になる。
【００１３】
またトレースデータをチップ外部のＩＣＥへ逐次出力する方式では、マイクロコンピュータ内部の動作が高速になるに伴い、トレースデータ出力のために十分なバスバンド幅を確保することが困難となる。従って内蔵トレースメモリをチップ内外の速度差を吸収するためのバッファとして使用しても、バッファがオーバーフローし易く、トレースデータが消失してしまう結果になる。
【００１４】
非特許文献１に記載の技術のように、トレースデータをパーソナルコンピュータで選別して表示する構成とすれば、不要な部分を除いたトレース情報を生成・表示することができる。しかしトレースメモリに格納されるトレースデータ自体には不要なデータが含まれており、トレースメモリの容量が小さいという問題の解決とはならない。またトレース結果をパーソナルコンピュータの画面に表示する前にトレースデータ選別のための時間が必要となるために、デバッガの使い勝手が悪化するという問題がある。
【００１５】
また非特許文献２に記載の技術では、トレース動作のｏｎ／ｏｆｆを制御することはできるが、制御レジスタによる単純なｏｎ／ｏｆｆ制御では、マルチタスクＯＳで動作する環境において特定のタスクについてのみトレースデータを収集するといった制御を行うことは難しい。
【００１６】
以上を鑑みて、本発明は、デバッグ対象としているタスクについてのみトレースデータをトレースメモリに格納することが可能なマイクロコンピュータ及びトレース制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明によるマイクロコンピュータは、バスと、該バスに結合されるＣＰＵと、該バスに結合され該ＣＰＵが実行する処理のトレースデータを出力端に出力するトレースデータ生成回路と、該トレースデータ生成回路の該出力端に結合され該トレースデータを格納するメモリと、該バスに結合され該ＣＰＵが実行中のタスクを示すタスク番号を格納する第１のレジスタと、該第１のレジスタに結合され該タスク番号に応じて該トレースデータ生成回路の該トレースデータ出力のオン・オフを制御する制御部を含むことを特徴とする。
【００１８】
また本発明によるマイクロコンピュータのトレース制御方法は、ａ）ＣＰＵにユーザプログラムを実行させ、ｂ）該ユーザプログラムの実行時に実行中のタスクを示すタスク番号を該ＣＰＵにより第１のレジスタに格納させ、ｃ）該第１のレジスタに格納される該タスク番号に応じて該ＣＰＵが実行する処理のトレースデータ記録のオン・オフを制御する各段階を含むことを特徴とする。
【発明の効果】
【００１９】
本発明の少なくとも１つの実施例によれば、マイクロコンピュータを使用したシステムの開発において、トレース対象となるタスクに関する情報をデバッグ時にデバッガから指示することにより、所望のタスクのトレース情報だけを取得することができる。これにより、ユーザによるデバッグ作業の効率を高めることが可能になる。また少ないトレースメモリを効率的に使用することで、トレースデータ記録時にメモリの容量が不足することなく、同じサイズのトレースメモリであってもより長時間のトレースデータの記録が可能になる。
【発明を実施するための最良の形態】
【００２０】
図２は本発明によるデバッグシステムの概略構成の一例を示す図である。図２において、図１と同一の構成要素は同一の番号で参照する。
【００２１】
図１のデバッグシステムは、本発明による評価用チップであるマイクロコンピュータ１００、評価用チップをデバッグするためのＩＣＥ１６、及びデバッガソフトウェアに基づいてＩＣＥ１６の制御を行うパーソナルコンピュータ１７を含む。パーソナルコンピュータ１７とＩＣＥ１６との間は、例えばＵＳＢ等の汎用の通信ケーブル１８を介して接続される。ＩＣＥ１６とマイクロコンピュータ１００との間は、エミュレーション用のインターフェースであるツールバス１３を介して接続される。
【００２２】
マイクロコンピュータ１００は、ＣＰＵ２、バスインターフェース３、ツールバス１３を介してＩＣＥ１６に接続されるデバッグサポートユニット（以下ＤＳＵ）３００、トレースメモリ６、命令バス７、及びデータバス８を含む。バスインターフェース３は、命令バス７とデータバス８とを外部ユーザバス９に統合するためのインターフェースである。外部ユーザバス９には例えば、マイクロコンピュータ１が実行するユーザプログラムを記憶するためのＲＡＭが接続される。図２に示すマイクロコンピュータ１００においては、トレース回路がＤＳＵ３００の内部に組み込まれた構成となっている。
【００２３】
データライト用バス１０は、トレース回路５からトレースメモリ６へのデータ書き込みに用いられる。データリード用バス１１は、トレースメモリ６に蓄えたトレースデータを、ＤＳＵ４を介してＩＣＥ側に読み出すために用いられる。
【００２４】
図３は、本発明によるマイクロコンピュータ１００のＤＳＵ３００の原理構成を示す図である。図３のＤＳＵ３００は、ＣＰＵ制御部４００、ツールバス制御部４０１、及びトレース回路５００を含む。トレース回路５００は、レジスタ２００、レジスタ２０１、比較器２０２、トレースデータ生成回路２０３を含む。
【００２５】
レジスタ２００は実行中のタスク番号を格納する。レジスタ２０１にはトレース対象として指定するタスク番号を設定しておく。比較器２０２はレジスタ２００の格納値とレジスタ２０１の格納値とを比較する。トレースデータ生成回路２０３は、比較器２０２の比較結果が示す一致判定に応答して命令バス７とデータバス８のデータから生成したトレースデータを、トレースメモリ６に格納する。
【００２６】
図４は、図３に示されるＤＳＵ３００を備えたマイクロコンピュータ１００を図２のデバッグシステムでデバッグ作業する際の処理の流れを示すフローチャートである。
【００２７】
図４のステップＳ１で、デバッグ対象のマイクロコンピュータ１００及びＩＣＥに電源を投入し、パーソナルコンピュータ上のデバッガソフトを起動する。ステップＳ２で、パーソナルコンピュータからICE経由で、ユーザプログラムをデバッグ対象のシステム上にあるメモリに転送する。ステップＳ３で、デバッグを行うユーザが、デバッガからエバチップ（Evaluation Chip：マイクロコンピュータ１００）に対して、ブレークポイントやトレースモード等のデバッグ設定を行う。ステップＳ４で、ステップＳ３でなされたデバッグ設定の下でユーザプログラムを動作させる。ステップＳ５で、命令ブレーク等でユーザプログラムの動作を止めた後、トレースデータを解析する。ステップＳ６で、トレースデータの解析に基づいてシステムが正常動作したか否かをチェックする。正常動作しなかった場合には、ステップＳ７でユーザプログラムを修正した後、ステップＳ２に戻ってステップＳ２以降の処理を再度実行する。システムがユーザプログラムにより正常に動作したとステップＳ６で判断されると、デバッグ処理は終了する。
【００２８】
図５は、ユーザ、デバッガ（パーソナルコンピュータ１７及びＩＣＥ１６）、及びエバチップ（マイクロコンピュータ１００）の処理の流れを示す処理流れ図である。図５の処理の流れは、図４のステップＳ３からステップＳ５で実行される処理を詳細に示す図である。
【００２９】
まずユーザがトレース対象となるタスクをデバッガに指示する（ステップＳ１）。これに応じてデバッガが、エミュレータモードにおいてエバチップのレジスタ２０１（トレース許可タスク番号レジスタ）にトレース対象となるタスク番号を設定する（ステップＳ２）。次にユーザがデバッガの画面上でユーザプログラムの実行を指示すると（ステップＳ３）、デバッガはエバチップのＯＳにタスク毎のトレース情報（トレース対象となるタスク番号の情報等）を渡し（ステップＳ４）、エバチップにユーザプログラムの実行を指示する（ステップＳ５）。このようにエバチップのＯＳにトレース対象となるタスク番号の情報を渡すことより、ＯＳはタスクを生成するときに条件に合致したタスク番号を生成することができる。
【００３０】
ユーザプログラムの実行指示に応答して、エバチップのＣＰＵ２がエミュレータモードからユーザモードに遷移し、ユーザプログラムを実行する（ステップＳ６）。このユーザプログラムの実行は、最初にＯＳの実行から開始される。ＯＳは最初にＯＳ自身のタスク番号をレジスタ２００に書き込む。これは、ある時点でＣＰＵが実行しているプログラムの種類を、トレース回路５００が識別する必要があるからである。なおユーザは、トレース対象にＯＳの動作を含めるようにデバッガから指示してもよく、この場合、トレース対象となるタスク番号をＯＳが自分自身に設定することになる。続いてＯＳは、ユーザタスクの実行に必要な環境設定をおこない、次に実行しようとするタスクのタスク番号をレジスタ２００に書き込む。タスク切り替えが発生してＯＳに制御が戻ると、その直後にＯＳは自分自身のタスク番号をレジスタ２００に再度書き込む。以後、タスク切り換え時に行われるＯＳの処理の先頭と最後において、ＯＳがレジスタ２００へタスク番号を書き込む。
【００３１】
上記のようにしてユーザプログラムを実行している状態で、エバチップのトレース回路５００がトレースデータを生成し格納する（ステップＳ７）。具体的には、レジスタ２０１（トレース許可タスク番号レジスタ）の値とレジスタ２００の値とを比較することにより、比較器２０２がトレースデータ生成条件が満たされるか否かを判断する。比較器２０２の出力はトレースデータ生成回路２０３に供給され、トレース動作をｏｎ／ｏｆｆ（或いはトレースデータの記録動作をｏｎ／ｏｆｆ）する。
【００３２】
これにより、ＯＳも含むタスク単位でトレースデータの取得を制御することが可能になり、注目するタスクのトレースデータが不必要なタスクのトレースデータに埋もれてしまうことはない。例えばＯＳがトレース対象に指定されていない場合には、ＯＳのタスク切り換え動作の大部分がトレースリストから省かれて、トレースデータが大幅に短くなることになる。
【００３３】
その後、ブレーク条件成立等でユーザプログラムの実行が中断すると（ステップＳ８）、エバチップのＣＰＵ２がユーザモードからエミュレータモードに遷移し、デバッガがトレースメモリ６内のトレース結果を取り出して表示する（ステップＳ９）。この表示結果に基づいて、ユーザがトレース結果を解析する（ステップＳ１０）。
【００３４】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００３５】
図６は、ＤＳＵ３００の実施例の構成の一例を示す図である。図６のＤＳＵ３００は、ＣＰＵ制御部４００、ツールバス制御部４０１、及びトレース回路５００を含む。トレース回路５００は、複数のレジスタ回路を含むレジスタ部４０３、トレースｏｎ／ｏｆｆ制御部４０４、トレースメモリ制御部４０５、及びトレースデータ生成部４０６を含む。信号線４１３は、ＣＰＵ２が出力するモード信号を供給する信号線であり、マイクロコンピュータ１００がエミュレータモード或いはユーザモードの何れで動作しているのかを示す。
【００３６】
本実施例では、ユーザがデバッガからトレース条件を設定するときには、ＣＰＵ２によって実行されるエミュレータプログラムがレジスタ部４０３にデータを書き込む構成となっている。このトレース条件設定動作は次の通りである。まずＣＰＵ２は命令バス７を使用してＩＣＥ１６へ命令要求を出す。このときＤＳＵ３００内部では、ＣＰＵ制御部４００が命令バス７とデータバス８とから同時に発せられたアクセス要求の調停を行うために両バスを監視しており、優先度の高い要求をツールバス制御部４０１に伝える。これに応じて、ツールバス制御部４０１がツールバス１３を介してＩＣＥ１６へ命令フェッチを行う。
【００３７】
ＣＰＵ制御部４００は、ＩＣＥ１６から命令コードが得られるまで、ＣＰＵ２の命令アクセス要求に対してウェイトを発生させて、ＣＰＵ２の動作タイミングを調整する。ＩＣＥ１６からエミュレータプログラムの命令コードが供給されると、ＣＰＵ２は、この命令を実行することにより、ユーザが設定を指示した値をデータバス８経由でレジスタ部４０３に書き込む。この時点では、信号線４１３のモード信号がエミュレータモードを示しているので、トレースメモリ制御部４０５は、レジスタ部４０３の設定値に関わらず、トレースデータ生成部４０６によるトレースデータの生成を抑止している。
【００３８】
エミュレータモードでのレジスタ設定がすべて済むと、ユーザはデバッガからユーザプログラムの実行を指示する。この動作は、ＩＣＥ１６から供給してＣＰＵ２が実行しているエミュレータプログラムを、ユーザモードへＣＰＵのモードを変化させるための命令にＩＣＥ１６内部で置き換えることで実現する。このモード変化により、信号線４１３のモード信号はユーザモードを示すようになる。
【００３９】
ここで、ＣＰＵ２によるユーザプログラムの実行が開始されるが、マルチタスクＯＳを使用したシステムの場合は、ユーザプログラムとしてＯＳがまず最初に実行される。このＯＳは最初にシステムの初期化を行い、タスクを登録し、各タスクを起動することになる。
【００４０】
本発明でのマルチタスクＯＳは、システムの初期化に先立ち、ＯＳ自身のタスク番号をレジスタ部４０３に書き込む。ＯＳの初期化処理等が終り、次に実行すべきタスクに制御を切り換えるときは、切り換え先のタスク番号をレジスタ部４０３に書き込んでからタスク切り換えを実行する。各タスクからは一定時間の経過やシステムコールの発行でＯＳに制御が戻ってくるが、このときも、ＯＳはまず最初にレジスタ部４０３にＯＳ自身のタスク番号を書き込む。またＯＳの処理が完了する際には、次のタスクのタスク番号をレジスタ部４０３に再設定し、タスク切り換え処理を実行する。以後は、ＩＣＥ１６が備えるデバッグ用のブレーク機能等でＣＰＵ２がエミュレータモードに遷移するまで、ＣＰＵはＯＳと各タスクを交互に実行する。
【００４１】
デバッグ用に設定したブレークポイントに到達する等の原因により、ＣＰＵ２の動作はエミュレータモードに遷移する。エミュレータモードに遷移すると、信号線４１３のモード信号がエミュレータモードを示し、トレースメモリ制御部４０５はトレースデータ生成部４０６によるトレースデータの生成を停止する。
【００４２】
図７は、レジスタ部４０３の書き換えタイミングを示すタイミング図である。ここで図７に示されるタスク番号レジスタとは、レジスタ部４０３の中の１つのレジスタであり、図３のレジスタ２００に相当するものである。
【００４３】
図７において（ａ）、（ｃ）、（ｅ）の各タイミングでは、ＯＳによる処理が開始されるため、前述のようにＯＳ自身のタスク番号の書き込みが行われる。（ｂ）、（ｆ）の各タイミングでは、タスク切り換えの直前にタスクＡのタスク番号を、（ｄ）のタイミングでは、タスク切り換えの直前にタスクＢのタスク番号を、ＯＳがレジスタ部４０３に書き込む。また（ｆ）のタイミングで起動されたタスクＡは、ＩＣＥ１６からのブレーク等で（ｇ）のタイミングで打ち切られ、デバッガに制御が移っている。そのため、（ｇ）においてはタスク番号レジスタの書き換えが行われていない。
【００４４】
次に図６の構成におけるトレースデータ生成のｏｎ／ｏｆｆ制御について説明する。
【００４５】
レジスタ部４０３は、ＯＳから書き込まれたタスク番号の値と、デバッガからのユーザ指示により予め書き込まれているトレース対象のタスク番号とを、トレースｏｎ／ｏｆｆ制御部４０４に供給する。トレースｏｎ／ｏｆｆ制御部４０４は、供給された番号を比較し、比較結果に応じたトレースｏｎ／ｏｆｆ制御信号をトレースメモリ制御部４０５に通知する。
【００４６】
トレースメモリ制御部４０５は、信号線４１３のモード信号がユーザモードを示し且つトレースｏｎ／ｏｆｆ制御信号がトレースオンを指示すると、トレースデータ生成部４０６にトレースデータの生成を指示する。その指示を受けたトレースデータ生成部４０６は、命令バス７とデータバス８とのデータに基づいて、指示されたトレース条件にあうトレースデータを生成する。トレースデータ生成部４０６は、生成したトレースデータをトレースメモリ制御部４０５に供給する。
【００４７】
トレースメモリ生成部４０５は内部にトレースメモリ６へのライトポインタを備えており、トレースメモリ６に空きがある場合は、データライト用バス１０を介してトレースデータをトレースメモリ６に書き込む。ライトポインタは書き込み動作後に自動的にインクリメントする。トレースメモリ６に空きがない場合、トレースメモリ制御部４０５はトレースデータ生成部４０６による以後のトレースデータの生成を停止させてよい。或いはトレースメモリ制御部４０５は、トレース条件レジスタ４０８の設定によりトレースメモリ６をリングバッファとして、トレースデータの書き込みを継続してもよい。
【００４８】
ＩＣＥ１６等からのブレーク要求でエミュレータモードに遷移した場合は、信号線４１３のモード信号が変化してエミュレータモードを示すので、トレースメモリ制御部４０５はトレースデータ生成部４０６にトレースデータの生成を停止するように指示し、エミュレータプログラムの実行結果のトレースメモリ６への格納を停止する。
【００４９】
本実施例の構成では、ＣＰＵ２により実行しているエミュレータプログラムが、メモリ空間に割り当てられたトレースメモリ６に対して読み出し動作を行うことで、データリード用バス１１及びトレースメモリ制御部４０５を経由して、トレースメモリ６に格納されたトレースデータを読み出すことができる。読み出したトレースデータは、ＣＰＵ制御部４００、ツールバス制御部４０１、ツールバス１３を経由してＩＣＥ１６に供給し、デバッガが動作しているパーソナルコンピュータ１７の画面に表示することができる。
【００５０】
またトレースメモリ６を同時読み書き可能な２ポートＲＡＭで構成し、トレースメモリ制御部４０５とツールバス制御部４０１とを専用のバスで接続すれば、ユーザプログラム実行と平行してトレースデータをＩＣＥ１６側に自動的に出力することも可能である。この場合、トレースメモリ制御部４０５内部にツールバス制御部４０１からの要求によってトレースメモリ６に読み出し動作を行うためのリードポインタを設け、読み出し動作後にリードポインタを自動的にインクリメントするように構成すればよい。
【００５１】
図８は、図４のレジスタ部４０３とトレースｏｎ／ｏｆｆ制御部４０４の構成の一例を示す回路図である。図８においてレジスタ部４０３はレジスタ６００乃至６０３を含み、トレースｏｎ／ｏｆｆ制御部４０４は、比較器６０４乃至６０６、ＯＲ回路６０７、及び一方の入力が負論理入力のＡＮＤ回路６０８を含む。この構成において、レジスタ６００はトレース禁止タスク番号レジスタ、レジスタ６０１はトレース許可タスク番号レジスタ、レジスタ６０２は第２のトレース許可タスク番号レジスタであり、レジスタ６０３がタスク切り換え時にＯＳからタスク番号を書き込まれるタスク番号レジスタである。
【００５２】
例えば、タスクＡ、Ｂ、Ｃからなるシステムのデバッグにおいて、タスクＣのトレースデータは常に得たいが、ＯＳのトレースデータは不要であるとする。この場合、レジスタ６００にはＯＳのタスク番号、レジスタ６０１にはタスクＣのタスク番号、レジスタ６０２にはタスクＡ及びタスクＢのうち例えばタスクＡのタスク番号を設定する。ユーザプログラムの実行においてＯＳが実行されると、ＯＳ自身のタスク番号がレジスタ６０３に設定され、比較器６０４の出力が有効になり、トレースｏｎ／ｏｆｆ制御部４０４の出力であるトレースｏｎ／ｏｆｆ制御信号はトレースオフを指示する。
【００５３】
またユーザプログラムの実行においてタスクＡ又はタスクＣが実行され、タスクＡ又はタスクＣのタスク番号がレジスタ６０３に設定されると、比較器６０６又は比較器６０５の出力が有効になり、トレースｏｎ／ｏｆｆ制御信号はトレースオンを指示する。ここでレジスタ６０１を常にトレースデータを取りたいタスク（この例ではタスクＣ）に指定しておけば、デバッグの進行によって注目するタスクを変更（例えばタスクＡからタスクＢに変更）するときには、レジスタ６０２の内容のみを書き換えることで対応することができる。
【００５４】
以上説明した実施例において、信号線４１３（図６）のモード信号がエミュレータモードを示している間はトレースデータの生成が抑止されるが、ユーザモードに遷移してからＯＳがタスク番号レジスタを設定するまでは、トレースデータの生成を制御することができない。即ち、図７に示すタイミング図で、（ａ）のタイミングまではエミュレータモードでありトレースデータの生成が抑止されているが、その後にＯＳがＯＳ自身のタスク番号をタスク番号レジスタ６０３に書き込むまでの期間は、モード信号がユーザモードを示し且つタスク番号レジスタ６０３の内容が未定の状態である。従ってこの期間においては、トレースデータの生成が制御できない。
【００５５】
そのため、デバッグ作業に先立ってデバッガがＤＳＵ３００の初期化を行う際に、デバッガによりタスク番号レジスタを適切な値に初期化しておくことが望ましい。例えば、トレース対象にＯＳが含まれる場合には、デバッガによりタスク番号レジスタ６０３をトレース許可レジスタ６０１と同じ値に設定してからユーザモードに遷移すればよい。これにより、ユーザモード遷移直後からトレースデータを取得することが可能になる。逆にトレース対象にＯＳが含まれない場合には、デバッガによりトレース禁止タスク番号レジスタ６００と同じ値をタスク番号レジスタ６０３に設定してから、ユーザモードに遷移すればよい。これにより、ユーザモード遷移直後からトレースデータの取得を抑止することが可能になる。
【００５６】
図９は、レジスタ部及びトレースｏｎ／ｏｆｆ制御部の別の構成例を示す回路図である。図９では、レジスタ部及びトレースｏｎ／ｏｆｆ制御部を纏めてトレースｏｎ／ｏｆｆ制御部４０４Ａとして示してある。トレースｏｎ／ｏｆｆ制御部４０４Ａは、レジスタ６５１乃至６５４、比較器６５５乃至６５７、及びＯＲ回路６５８を含む。
【００５７】
図９の構成は、ＣＰＵが多段の割込みレベルをサポートしている場合やＭＭＵ（Memory Management Unit）がメモリ保護レベルをサポートしている場合を想定している。この場合、割込みレベル信号やメモリ保護レベル信号を用いて、トレースｏｎ／ｏｆｆ制御信号を生成することができる。図９において、レジスタ６５２及び６５３は、前述の実施例同様のトレース許可タスク番号レジスタ及びタスク切り換え時にＯＳからタスク番号を書き込まれるタスク番号レジスタである。レジスタ６５１は、エミュレータモードにおいてデバッガにより割り込みレベルを予め書き込まれている。比較器６５５がＣＰＵから供給される現在の割り込みレベル信号とレジスタ６５１の値とを比較することで、トレースｏｎ／ｏｆｆ制御信号を生成する。レジスタ６５４は、エミュレータモードにおいてデバッガによりメモリ保護レベルを予め書き込まれている。比較器６５７がＭＭＵから供給される現在のメモリ保護レベル信号とレジスタ６５４の値とを比較することで、トレースｏｎ／ｏｆｆ制御信号を生成する。
【００５８】
このような構成とすれば、例えば特定の割込みハンドラの実行について、或いは特定のメモリ保護レベルのタスクの実行について、トレースデータを記録することが可能になる。
【００５９】
図１０は、タスク番号比較にマスク機能を持たせた構成を示す回路図である。図１０の比較器７０３は、例えば図８の比較器６０４乃至６０６のようなタスク番号同士を比較する比較器であり、レジスタ７００に格納されるタスク番号とレジスタ７０１に格納されるタスク番号とを比較する。レジスタ７００及びレジスタ７０１は、トレース許可タスク番号レジスタ及びタスク切り換え時にＯＳからタスク番号を書き込まれるタスク番号レジスタである。
【００６０】
マスク指定レジスタ７０２はマスクデータを格納し、このマスクデータにより、比較器７０３での比較対象となるビットを指定することができる。説明を簡単にするために、タスク番号が４ｂｉｔで表現されるとする。マスク指定レジスタ７０２に例えばマスクデータ“００１１”を格納する。このように設定することで、マスクデータが“１”であるビット位置のビット、即ちこの場合下位２ビットについては、比較器７０３における比較対象から外される。
【００６１】
例えばレジスタ７００にトレース許可タスク番号として“０１００”を設定する。ＯＳがタスク番号レジスタ７０１にタスク番号として“０１０１”を書き込むと、“０１００”と“０１０１”の下位２ビットがマスクされ、上位２ビットのみが比較される。その結果、両タスク番号は一致することになる。
【００６２】
この機能を使用することにより、タスク番号の上位２ビットをＯＳは“００”、必ずトレースするタスクは“０１”、トレースを行なわないタスクは“１０”のようにデバッガとＯＳとの間で決めておけば、下位のビット（例えば１４ビット）をＯＳが自由にタスクに割り振ることが可能になる。
【００６３】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００６４】
例えば実施例におけるタスク番号レジスタ以外のレジスタは、デバッガとＯＳの間で定めたタスク番号の割当て規則に合わせて、固定のタスク番号を示す回路としてワイヤードロジックにより構成してもよい。これにより回路量を削減することができる。
【図面の簡単な説明】
【００６５】
【図１】従来のデバッグ環境の構成を示す図である。
【図２】本発明によるデバッグシステムの概略構成の一例を示す図である。
【図３】本発明によるマイクロコンピュータのＤＳＵの原理構成を示す図である。
【図４】図３に示されるＤＳＵを備えたマイクロコンピュータを図２のデバッグシステムでデバッグ作業する際の処理の流れを示すフローチャートである。
【図５】ユーザ、デバッガ、及び評価用チップの処理の流れを示す処理流れ図である。
【図６】ＤＳＵの実施例の構成の一例を示す図である。
【図７】レジスタ部の書き換えタイミングを示すタイミング図である。
【図８】図４のレジスタ部とトレースｏｎ／ｏｆｆ制御部の構成の一例を示す回路図である。
【図９】レジスタ部及びトレースｏｎ／ｏｆｆ制御部の別の構成例を示す回路図である。
【図１０】タスク番号比較にマスク機能を持たせた構成を示す回路図である。
【符号の説明】
【００６６】
１  マイクロコンピュータ
２  ＣＰＵ
３  バスインターフェース
４  デバッグサポートユニット
５  トレース回路
６  トレースメモリ
７  命令バス
８  データバス
９  外部ユーザバス
１３  ツールバス
１６  ＩＣＥ
１７  パーソナルコンピュータ
１８  通信ケーブル
１００  マイクロコンピュータ
２０３  トレースデータ生成回路
３００  ＤＳＵ
４００  ＣＰＵ制御部
４０１  ツールバス制御部
４０３  レジスタ部
４０４  トレースｏｎ／ｏｆｆ制御部
４０５  トレースメモリ制御部
４０６  トレースデータ生成部
５００  トレース回路
【図１】
2006092029.tif 000003
【図２】
2006092029.tif 000004
【図３】
2006092029.tif 000005
【図４】
2006092029.tif 000006
【図５】
2006092029.tif 000007
【図６】
2006092029.tif 000008
【図７】
2006092029.tif 000009
【図８】
2006092029.tif 000010
【図９】
2006092029.tif 000011
【図１０】
2006092029.tif 000012