(57)【要約】【課題】ハードウェアコンポーネント間のバス信号の衝突をモニタし、ソフトウェアのデバッグ処理効率を向上させる。【解決手段】マイクロコンピュータ１０は、デバッグ装置と通信を行ってオンチップデバッグ機能を実現するデバッグコントロールユニットＤＣＵを有するマイクロコンピュータであって、マイクロコンピュータ１０の外部バスＢＵＳに接続された機器の通信を制御する外部バスコントローラ１３と、外部バスコントローラ１３から出力され、外部バスＢＵＳへ出力されるべき第１外部バス信号Ｂ１をモニタする外部バスモニタ１４と、外部バスモニタ１４によってモニタされた第１外部バス信号Ｂ１が記憶されるメモリ（リングバッファ２２）と、を有するものである。【選択図】  図１
2008310756.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ装置と通信を行ってオンチップデバッグ機能を実現可能なデバッグコントロールユニットを有するマイクロコンピュータであって、
前記マイクロコンピュータの外部バスに接続された機器との通信を制御する外部バスコントローラと、
前記外部バスコントローラから出力され、前記外部バスへ出力されるべき第１外部バス信号をモニタする外部バスモニタと、
前記外部バスモニタによってモニタされた前記第１外部バス信号が記憶されるメモリと、を有する
マイクロコンピュータ。
【請求項２】
前記外部バスモニタは、前記デバッグ装置から出力されたクロックに同期して前記第１外部バス信号を前記メモリに出力し、
前記第１外部バス信号は、前記クロックのクロックカウンタ値に対応付けられて前記メモリに記憶される
請求項１記載のマイクロコンピュータ。
【請求項３】
前記デバッグコントロールユニットは、前記デバッグ装置から出力される命令に応じて前記メモリに記憶された前記第１外部バス信号を前記デバッグ装置に出力する
請求項１又は２記載のマイクロコンピュータ。
【請求項４】
前記デバッグ装置は、前記外部バスコントローラから前記外部バスに出力される第２外部バス信号をモニタし前記第２外部バス信号が予め設定された波形データに一致したときにイベントトリガを出力するロジックアナライザを備え、
前記デバッグコントロールユニットは、前記ロジックアナライザより前記イベントトリガが入力される
請求項１乃至３のいずれか１項に記載のマイクロコンピュータ。
【請求項５】
前記デバッグコントロールユニットは、前記ロジックアナライザより前記イベントトリガが出力されると、前記マイクロコンピュータの有する演算処理回路の処理動作を停止させると共に、前記外部バスモニタのモニタ動作を停止させる
請求項４項記載のマイクロコンピュータ。
【請求項６】
前記マイクロコンピュータは、前記外部バスコントローラから出力された信号を受けて前記外部バスに出力する出力バッファを備え、
前記第１外部バス信号は、前記外部バスコントローラと、前記出力バッファとの間の信号である
請求項１乃至５のうちいずれか１項に記載のマイクロコンピュータ。
【請求項７】
前記マイクロコンピュータは、演算処理を行う演算処理回路を更に有し、
前記第１外部バス信号は、前記演算処理回路から出力され前記外部バスコントローラに出力される信号である
請求項１乃至４のうちいずれか１項に記載のマイクロコンピュータ。
【請求項８】
デバッグ装置と、
前記デバッグ装置と通信を行ってオンチップデバッグ機能を実現可能なデバッグコントロールユニットを有するマイクロコンピュータとを有し、
前記マイクロコンピュータは、
前記マイクロコンピュータの外部バスに接続された機器の通信を制御する外部バスコントローラと、
前記外部バスコントローラから出力され、前記外部バスへ出力されるべき第１外部バス信号をモニタする外部バスモニタと、
前記外部バスモニタによってモニタされた前記第１外部バス信号が記憶されるメモリと、を有する
デバッグシステム。
【請求項９】
前記外部バスモニタは、前記デバッグ装置から出力されたクロックに同期して前記第１外部バス信号を前記メモリに出力し、
前記第１外部バス信号は、前記クロックのクロックカウンタ値に対応付けられて前記メモリに記憶される
請求項８記載のデバッグシステム。
【請求項１０】
前記デバッグ装置は、
前記デバッグコントロールユニットと通信を行い、前記マイクロコンピュータの有する演算処理回路で実行されたプログラムの履歴であるプログラム履歴を格納するエミュレータと、
前記エミュレータを介してデバッグを行うホスト装置と、を有する
請求項８又は９記載のデバッグシステム。
【請求項１１】
前記デバッグコントロールユニットは、前記エミュレータより入力された前記クロックに同期して前記演算処理回路で実行されたプログラム情報を前記エミュレータに出力し、
前記プログラム履歴は、前記プログラム情報と前記クロックのクロックカウンタ値とが対応付けられたものである
請求項１０記載のデバッグシステム。
【請求項１２】
前記プログラム情報は、前記演算処理回路で実行されたプログラムが格納されたメインメモリのアドレスである
請求項１１記載のデバッグシステム。
【請求項１３】
前記デバッグ装置は、前記マイクロコンピュータから出力され、前記外部バスに出力される第２外部バス信号をモニタし前記第２外部バス信号が予め設定された波形データに一致したときにイベントトリガを出力するロジックアナライザを更に備え、
前記デバッグコントロールユニットは、前記ロジックアナライザより前記イベントトリガが入力される
請求項１０乃至１２のうちいずれか１項に記載のデバッグシステム。
【請求項１４】
前記デバッグコントロールユニットは、前記ロジックアナライザより前記イベントトリガが出力されると、前記演算処理回路の処理動作を停止させると共に、前記外部バスモニタのモニタ動作を停止させる
請求項１３記載のデバッグシステム。
【請求項１５】
前記マイクロコンピュータは、前記外部バスコントローラから出力された信号を受けて前記外部バスに出力する出力バッファを備え、
前記第１外部バス信号は、前記外部バスコントローラと、前記出力バッファとの間の信号である
請求項８乃至１４のうちいずれか１項に記載のデバッグシステム。
【請求項１６】
前記マイクロコンピュータは、演算処理を行う演算処理回路を更に有し、
前記第１外部バス信号は、前記演算処理回路から出力され前記外部バスコントローラに出力される信号である
請求項８又は９記載のデバッグシステム。
【請求項１７】
デバッグ対象装置のデバッグを行うデバッグ装置と、前記デバッグ装置と通信を行ってオンチップデバッグ機能を実現可能なデバッグコントロールユニットを有するデバッグシステムのデバッグ方法であって、
前記マイクロコンピュータの外部バスに接続された機器の通信を制御する外部バスコントローラから出力され、前記外部バスへ出力されるべき第１外部バス信号をモニタし、
前記第１外部バス信号に基づいて前記ソフトウェアのデバッグを行う
デバッグ方法。
【請求項１８】
前記マイクロコンピュータは、前記外部バスコントローラから出力された信号を受けて前記外部バスに出力する出力バッファを備え、
前記第１外部バス信号は、前記外部バスコントローラと、前記出力バッファとの間の信号である
請求項１７記載のデバッグ方法。
【請求項１９】
前記マイクロコンピュータは、演算処理を行う演算処理回路を更に有し、
前記第１外部バス信号は、前記演算処理回路から前記外部バスコントローラに出力される信号である
請求項１７記載のデバッグ方法。
【請求項２０】
前記マイクロコンピュータから出力され、前記外部バスに出力される第２外部バス信号をモニタし、
前記第１外部バス信号及び前記第２外部バス信号に基づいてデバッグを行う
請求項１７乃至１９のうちいずれか１項に記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関し、特にオンチップデバッグ機能を有するマイクロコンピュータに関する。
【背景技術】
【０００２】
近年、デバッグ対象装置に組み込まれたプログラムをリモートでデバッグするためのエミュレータとして、フルＩＣＥ（インサーキットエミュレータ）やオンチップデバッグエミュレータが知られている。フルＩＣＥは、デバッグ対象装置のＣＰＵとして動作するＣＰＵ機能を有し、マイクロコンピュータの代わりとしてターゲットボードに接続される。フルＩＣＥは、ＣＰＵ機能をエミュレーションするエバチップや周辺エバチップ等により、デバッガであるＰＣ等からの命令に基づいてマイクロコンピュータの動作をエミュレーションする。
【０００３】
これに対し、オンチップデバッグエミュレータは、デバッグ対象装置に搭載されるマイクロコンピュータ自身に設けられたデバッグ用回路であるデバッグコントロールユニット（以下、ＤＣＵという）に接続される。オンチップデバッグエミュレータは、デバッガからの命令に応答して、ＤＣＵを介し、マイクロコンピュータとの間でデータの送受信を行う。オンチップデバッグエミュレータは、フルＩＣＥに比べてデバッグできない端子が有る等、デバッグ機能が比較的低い一方、高速なデバッグが可能であり、実動作時とデバッグ時の動作の違いが少ないため、実機での最終デバッグやパラメータ調整に適している。オンチップデバッグエミュレータは、ターゲット装置上にマイクロコンピュータを搭載したままエミュレーションを行うことができるという利点を有し、エミュレータとして広く用いられている。
【０００４】
特許文献１には、デバッグ対象装置に搭載されたＣＰＵにおいて実行されるソフトウェアについてデバッグを行うデバッグ装置が記載されている。また、デバッグ対象装置には、バスを介してＣＰＵに接続され、ＣＰＵによって制御される内部デバイスを有するハードウェアコンポーネントが搭載されている。このデバッグ装置では、このハードウェアコンポーネントのテストピンの信号をモニタすることにより、ＣＰＵ上で実行されるソフトウェアに異常が検出された場合のハードウェアコンポーネントの状態を解析することができる。
【特許文献１】特開２００４−２７２６７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年では、マイクロコンピュータ（従来技術においてＣＰＵに相当）に接続されるハードウェアの増大に伴い、デバッグを行う際に、ハードウェアコンポーネント内の信号だけでなく、マイクロコンピュータとハードウェアコンポーネントから互いに出力されるバス信号の衝突を解析する必要が出てきた。
【０００６】
しかしながら、特許文献１に記載されたマイクロコンピュータでは、バス上の信号やモニタしたハードウェアコンポーネント内の信号をそれぞれトレースしながら比較しなければならず、マイクロコンピュータとハードウェアコンポーネントから互いに出力されるバス信号の衝突を解析するためには、非常に長い解析時間を要していた。
【課題を解決するための手段】
【０００７】
本発明に係るマイクロコンピュータの一態様は、デバッグ装置と通信を行ってオンチップデバッグ機能を実現するデバッグコントロールユニットを有するマイクロコンピュータであって、前記マイクロコンピュータの外部バスに接続された機器の通信を制御する外部バスコントローラと、前記外部バスコントローラから出力され、前記外部バスへ出力されるべき第１外部バス信号をモニタする外部バスモニタと、前記外部バスモニタによってモニタされた前記第１外部バス信号が記憶されるメモリと、を有するものである。
【０００８】
このように、外部バスコントローラから外部バスへ出力されるべき第１外部バス信号をモニタすることで、例えば、この外部バスへ出力されるべき第１外部バス信号と、外部バスに実際に出力された信号とを比較すれば、バグが発生した原因がマイクロコンピュータの内部の問題であるのか、又はマイクロコンピュータの外部の問題であるのかを容易に判定することができる。これにより、マイクロコンピュータ及びハードウェアコンポーネントから出力される外部バス上のバス信号の衝突が解析可能となり、バグが発生した際のデバッグ処理効率を向上させることができる。
【発明の効果】
【０００９】
本発明に係るマイクロコンピュータによれば、デバッグ処理効率を向上させることができる。
【発明を実施するための最良の形態】
【００１０】
以下、添付した図面を参照して本発明の実施の形態について説明する。図１は、本発明の実施形態に係るマイクロコンピュータ１０を含む、デバッグシステム１００の一構成例を示すブロック図である。デバッグシステム１００は、デバッグを行う対象であるデバッグ対象装置と、デバッグ対象装置のデバッグを行うデバッグ装置とに分けることができる。マイクロコンピュータ１０は、デバッグ対象装置に搭載され、デバッグ装置の有するエミュレータを構成するＪＴＡＧ−ＩＣＥ２１を介して、ホスト装置を構成するデバッグ用のＰＣ２０と通信を行うことにより、内部に組み込まれたソフトウェアのデバッグを行うＤＣＵ１１を備えている。すなわち、マイクロコンピュータ１０は、オンチップデバッグ機能を有し、デバッグ対象装置に組み込まれたプログラムのデバッグを行うものである。本実施形態に係るマイクロコンピュータ１０は、ＪＴＡＧ方式で通信を行うものに限定されず、オンチップデバッグ機能していれば、他の通信方式でエミュレータと通信を行う構成としてもよい。
【００１１】
本実施形態に係るマイクロコンピュータ１０の特徴は、マイクロコンピュータ１０の内部に、外部バスコントローラ１３から外部バスＢＵＳに出力されるべき第１外部バス信号Ｂ１をモニタする外部バスモニタ１４と、外部バスモニタ１４によってモニタされた第１外部バス信号Ｂ１を記憶するメモリを構成するリングバッファ１５を備えた点にある。外部バスモニタ１４によってモニタされた第１外部バス信号Ｂ１を、リングバッファ１５を介して外部のデバッグ用のＰＣ２０等に出力することにより、ＰＣ２０等において外部バスＢＵＳに出力される信号を解析することができる。また、マイクロコンピュータ１０の内部信号である第１外部バス信号Ｂ１と、外部バスＢＵＳ上の信号である第２外部バス信号Ｂ２とを比較することにより、外部バスＢＵＳのバス信号の衝突を解析することができる。
【００１２】
デバッグシステム１００は、マイクロコンピュータ１０外部のＪＴＡＧ−ＩＣＥ２１と、マイクロコンピュータ１０に搭載されたＤＣＵ１１とがＪＴＡＧ方式で通信を行うことにより、デバッグ対象装置に搭載されたソフトウェアのデバッグを行うものである。デバッグシステム１００は、ＪＴＡＧ−ＩＣＥ２１及びロジックアナライザ２３から出力されたマイクロコンピュータ１０の内部信号（プログラム履歴、第１外部バス信号Ｂ１）及び外部信号（第２外部バス信号Ｂ２）をＰＣ２０によって解析し、ソフトウェアの不具合を特定する。ＰＣ２０は、特定された不具合に応じ、デバッグ対象装置に搭載されるソフトウェアやハードウェアに対して所定のデバッグ処理を実行する。
【００１３】
図１に示すように、デバッグ装置は、ＰＣ２０、ＪＴＡＧ−ＩＣＥ２１、ロジックアナライザ２３を備えて構成されている。ＪＴＡＧ−ＩＣＥ２１は、ＰＣ２０とマイクロコンピュータ１０との間に介され、ＰＣ２０の通信方式とＪＴＡＧ通信方式を相互変換し、ＰＣ２０とマイクロコンピュータ１０間の通信制御をしている。ＪＴＡＧ−ＩＣＥ２１は、マイクロコンピュータ１０のＲＣＵ回路１７を介して、ＣＰＵ１２を停止させたり、ＣＰＵ１２に所定のプログラムを実行させるよう命令する。ＪＴＡＧ−ＩＣＥ２１は、マイクロコンピュータ１０の有するＲＣＵ回路１７にクロックＪＴＣＫを出力している。マイクロコンピュータ１０は、入力されるクロックＪＴＣＫのパルス数をカウントしたクロックカウンタ値を、後述するプログラムアドレス情報や第１外部バス信号Ｂ１に対応付けて所定の記憶手段にそれぞれ格納する。具体的には、プログラムアドレス情報は、クロックカウンタ値に対応付けられ、プログラム履歴としてリングバッファ２２に格納されている。第１外部バス信号Ｂ１は、クロックカウンタ値に対応付けら、リングバッファ１５に格納されている。すなわち、クロックカウンタ値は、マイクロコンピュータ１０内部で発生した事象の時間を示すタイムスタンプとして機能する。
【００１４】
ＪＴＡＧ−ＩＣＥ２１は、ＴＲＡＣＥ回路１６から、ＣＰＵ１２で実行されたプログラムアドレス情報とクロックカウンタ値とが対応付けられたプログラム履歴を随時入力し、リングバッファ２２に格納している。ＰＣ２０は、バグが発生した場合等において、リングバッファ２２に格納されたプログラム履歴を任意に取得することができる。また、ＪＴＡＧ−ＩＣＥ２１は、ＰＣ２０の命令に従って、マイクロコンピュータ１０内のリングバッファ１５から第１外部バス信号Ｂ１を取得し、ＰＣ２０に送信することもできる。ＪＴＡＧ−ＩＣＥ２１は、クロックカウンタ値に対応付けられたプログラム情報や第１外部バス信号Ｂ１を、ＰＣ２０からの命令に応じてＰＣ２０に出力することができる。
【００１５】
ＰＣ２０は、一方のＪＴＡＧ−ＩＣＥ２１を介した経路から、プログラム履歴や第１外部バス信号Ｂ１が入力される。また、ＰＣ２０は、他方のロジックアナライザ２３を介した経路から、ロジックアナライザ２３によってモニタされた第２外部バス信号が波形データとして入力される。第２外部バス信号Ｂ２とは、マイクロコンピュータ１０の出力バッファから外部バスＢＵＳに出力された信号であり、マイクロコンピュータ１０の出力端子から外部バスＢＵＳに実際に送信された信号である。
【００１６】
ＰＣ２０は、マイクロコンピュータ１０の内部信号を示すプログラム履歴や第１外部バス信号と、マイクロコンピュータ１０の外部信号を示す第２外部バス信号Ｂ２の波形データを解析し、ソフトウェアの不具合を特定する。その際、ＰＣ２０は、マイクロコンピュータ１０の内部信号を示すプログラム履歴や第１外部バス信号Ｂ１のクロックカウンタ値を参照することにより、マイクロコンピュータ１０の外部信号である第２外部バス信号Ｂ２と同期をとることができる。
【００１７】
ロジックアナライザ２３は、第２外部バス信号Ｂ２をモニタし、第２外部バス信号Ｂ２が予め設定されたトリガ情報と一致する場合、すなわち所定のバグが第２外部バス信号Ｂ２に発生した場合に、イベントトリガＥＶＴＲＧをマイクロコンピュータ１０に出力する。ロジックアナライザ２３は、これと同時に第２外部バス信号Ｂ２のモニタを停止する。トリガ情報は、アドレス、データ、及び制御信号の組み合わせにより定義され、予めロジックアナライザ２３の有するメモリ（図示せず）に記憶されている。その後、ロジックアナライザ２３は、検出されたトリガ情報と第２外部バス信号Ｂ２の波形データを対応付けてＰＣ２０に出力する。ＰＣ２０は、一方の経路であるロジックアナライザ２３より入力されるトリガ情報及び波形データと、他方の経路であるＪＴＡＧ−ＩＣＥ２１から入力されるプログラム情報や第１外部バス信号Ｂ１を解析する。ＰＣ２０は、この解析結果に応じて所定のデバッグ処理を実行する。
【００１８】
デバッグシステム１００では、ＰＣ２０によって、ＪＴＡＧ−ＩＣＥ２１を介して入力されるプログラム情報及び第１外部バス信号Ｂ１を解析することにより、バグが発生したときのマイクロコンピュータ１０内部の状態を知ることができる。またＰＣ２０は、ロジックアナライザ２３を介して入力される第２外部バス信号Ｂ２から、バグが発生したときのマイクロコンピュータ１０外部の状態を知ることができる。ＰＣ２０は、第１外部バス信号Ｂ１及び第２外部バス信号Ｂ２を比較することにより、バグが発生した原因が、マイクロコンピュータ１０内部であるのか、又は外部であるのかを特定することができる。
【００１９】
次に、デバッグ対象装置について説明する。デバッグ対象装置は、マイクロ黒コンピュータ１０と、マイクロコンピュータ１０に外部バスＢＵＳを介して接続されたハードウェア１９を有している。マイクロコンピュータ１０は、ＤＣＵ１１、ＣＰＵ１２、外部バスコントローラ１３、及び外部バスモニタ１４を備えて構成されている。ＤＣＵ１１は、前述のように、マイクロコンピュータ１０外部のＪＴＡＧ−ＩＣＥ２１と通信を行い、ＣＰＵ１２によって実行されるソフトウェアのデバッグを行うよう構成されている。
【００２０】
ＣＰＵ１２は、メインメモリ８に格納されたプログラムを呼び出し、所定の演算処理を行う共に、デバッグ対象装置に搭載されたハードウェア１９に所定の命令を行う。ＣＰＵ１２の動作は、デバッグ時において、ＲＣＵ１７によって制御されている。外部バスコントローラ１３は、外部バスＢＵＳに接続されたハードウェア１９とマイクロコンピュータ１０との接続を制御している。外部バスモニタ１４は、外部バスコントローラ１３から外部バスＢＵＳに出力されるべき信号、すなわち第１外部バス信号Ｂ１をモニタしている。外部バスモニタ１４には、ＲＣＵ回路１７からクロックＪＴＣＫが入力されている。外部バスモニタ１４は、クロックＪＴＣＫのクロックカウンタ値に同期して第１外部バス信号Ｂ１をＤＣＵ１１内のリングバッファ１５に格納している。外部バスモニタ１４は、ＲＣＵ１７から制御信号ＳＴＯＰが入力されるまでモニタを継続し、制御信号ＳＴＯＰが入力されるとモニタを停止する。
【００２１】
図２は、外部バスモニタ１４によってモニタされる、第１外部バス信号Ｂ１の具体的なモニタ位置を示す斜視図である。なお、図２は、マイクロコンピュータ１０が搭載されるチップ３１が配置されたプラスチック基板３０全体の一構成例を示しており、前述したＪＴＡＧ−ＩＣＥ２１やＰＣ２０といった外部装置は図示していない。また、図示された論理回路３３は、図１で示す外部バスコントローラ１３、外部バスモニタ１４、ＤＣＵ１２といったマイクロコンピュータ１０の内部回路を総称したものである。
【００２２】
図２に示すように、プラスチック基板３０の上には、マイクロコンピュータ１０（図示せず）が搭載されたチップ３１が形成されている。チップ３１は、ボンディングパッド３５を介してプラスチック基板３０に形成された電極３８に接続されている。ボンディングパッド３５と電極３８とは、ボンディングワイヤ３９を介して互いに接続されている。電極３８は、プラスチック基板３０を外部の電気配線等と接続するはんだボール３６に接続されている。
【００２３】
はんだボール３６は、図１に示す外部バスＢＵＳに接続され、外部バスＢＵＳを介して外部のハードウェア１９に接続される。論理回路３３の出力は、出力バッファ３４を介してボンディングパッド３５に接続されている。外部バスモニタ１４は、このマイクロコンピュータ１０の論理回路３３から出力される信号を、第１外部バス信号Ｂ１としてモニタしている。外部バスモニタ１４は、論理回路３３と出力バッファ３４との間の信号をモニタすることにより、論理回路３３から出力された内部信号である第１外部バス信号Ｂ１を検出している。しかしながら、第１外部バス信号Ｂ１の検出位置は、これに限定されるものではなく、外部バスコントローラ１３から外部バスＢＵＳに出力されるべき信号であれば、マイクロコンピュータ１０内のどの位置の第１外部バス信号Ｂ１をモニタしてもよい。例えば、ＣＰＵ１２から内部バスを介して外部バスコントローラ１３に入力される信号を第１外部バス信号Ｂ１としてモニタすることもできる。
【００２４】
図１に戻り、更にマイクロコンピュータ１０の構成例について説明を行う。マイクロコンピュータ１０は、ＤＣＵ１１を有している。ＤＣＵ１１は、リングバッファ１５、ＴＲＡＣＥ回路１６、ＲＣＵ回路１７、及びＥＶＥＮＴ回路１８を備えて構成されている。リングバッファ１５は、前述したように、外部バスモニタ１４によってモニタされた第１外部バス信号Ｂ１を格納する。リングバッファ１５は、記憶された古いデータを消去しながら、入力された第１外部バス信号Ｂ１を書き込んでいくことにより記憶データを随時更新しているメモリである。なお、第１外部バス信号Ｂ１を記憶するメモリは、リングバッファ１５に限定されるものではなく、種々のメモリを用いることができる。また、リングバッファ１５は、図１においてＤＣＵ１１の外部に設けられているが、これに限定されるものではなく、マイクロコンピュータ１０内であればどこにでも設けることができる。
【００２５】
ＴＲＡＣＥ回路１６は、ＪＴＡＧ−ＩＣＥ２１からクロックＪＴＣＫが入力され、ＣＰＵ１２の動作下において、ＣＰＵ１２が実行するプログラムが格納されたアドレス情報（以下、プログラムアドレス情報という。）を、クロックＪＴＣＫに同期してＣＰＵ１２から取得する。すなわち、ＴＲＡＣＥ回路１６は、ＣＰＵ１２が実行したプログラムアドレス情報に、タイムスタンプであるクロックＪＴＣＫのクロックカウンタ値を対応付け、プログラム履歴を作成する。ＴＲＡＣＥ回路１６は、ＪＴＡＧ−ＩＣＥ２１の命令に従って、プログラムアドレス情報とクロックカウンタ値が対応付けられたプログラム履歴をＪＴＡＧ−ＩＣＥ２１に出力することができる。
【００２６】
ＪＴＡＧ−ＩＣＥ２１は、ＴＲＡＣＥ回路１６からプログラム履歴を入力すると、プログラム履歴をリングバッファ２２に記憶していく。ＪＴＡＧ−ＩＣＥ２１には、予めマイクロコンピュータ１０で実行されるプログラムが記憶されている。このプログラムは、マイクロコンピュータ１０内でプログラムが格納されたアドレスと共に対応付けられている。これにより、ＪＴＡＧ−ＩＣＥ２１は、入力されたプログラムアドレス情報からＣＰＵ１２によって実行されたプログラムを特定することができる。
【００２７】
ＥＶＥＮＴ回路１８は、ロジックアナライザ２３からイベントトリガＥＶＴＲＧが入力されると、ＲＣＵ回路１７に対してＢＲＥＡＫ要求を送信し、ＲＣＵ回路１７に割り込みをかける。また、ＥＶＥＮＴ回路１８は、ＪＴＡＧ−ＩＣＥ２１からブレークトリガＢＲＫＴＲＧが入力されると、同様に、ＲＣＵ回路１７に対してＢＲＥＡＫ要求を送信し、ＲＣＵ回路１７に割り込みをかける。ＲＣＵ回路１７は、ＥＶＥＮＴ回路１８からＢＲＥＡＫ要求が入力されると、ＣＰＵ１２の動作を停止させると共に、外部バスモニタ１４に制御信号ＳＴＯＰを送信して外部バスモニタ１４のモニタ動作を停止させる。また、ＲＣＵ回路１７は、ＪＴＡＧ−ＩＣＥ２１から入力される制御信号に応じて、ＣＰＵ１２に所定のプログラムを実行させるよう命令を行っている。
【００２８】
図３Ａは、ＣＰＵ１２で実行されたプログラムを示すタイミングチャートである。図３Ｂは、リングバッファ２２に記憶されたプログラム履歴を示す図である。ＣＰＵ１２は、プログラムカウンタ値[９]でプログラム２を実行し、プログラムカウンタ値[１３]でプログラム３を実行し、プログラムカウンタ値[１５]でプログラム４を実行したものとする。また、プログラムカウンタ値[１７]で、ロジックアナライザ２３によって第２外部バス信号Ｂ２がトリガ情報と一致し、ＣＰＵ１２の動作がＲＣＵ回路１７によって停止されたとする。ＴＲＡＣＥ回路１６は、タイミングチャートの上方に示されたクロックＪＴＣＫを入力し、プログラムが格納先を示すプログラムアドレス情報とクロックカウンタ値[ｎ]とを対応付けてＪＴＡＧ−ＩＣＥ２１に出力する。
【００２９】
ＴＲＡＣＥ回路１６は、プログラム２のプログラムアドレス情報２をプログラムカウンタ値[９]と対応付けてトレースパケット２とし、プログラム３のプログラムアドレス情報３とプログラムカウンタ値[１３]とを対応付けてトレースパケット３とし、プログラム４のプログラムアドレス情報４とプログラムカウンタ値[１５]とを対応付けてトレースパケット４とし、ＪＴＡＧ−ＩＣＥ２１に出力する。なお、プログラムアドレス情報２〜４には、実行されたプログラムがどのプログラムからジャンプしたのかを示す分岐元プログラムアドレスや、当該プログラムからどのプログラムへジャンプしたかを示す分岐先プログラムアドレス等も含んでいる。すなわち、ＴＲＡＣＥ回路１６は、実行された当該プログラム情報と、当該プログラムが実行された前後のプログラム情報とを対応付けてプログラム履歴を生成し、ＪＴＡＧ−ＩＣＥ２１に送信する。
【００３０】
図３Ｂに示すように、ＴＲＡＣＥ回路１６から入力されたプログラム履歴は、ＪＴＡＧ−ＩＣＥ２１のリングバッファ２２に格納される。リングバッファ２２は、ＴＲＡＣＥ回路１６からプログラム履歴を入力し、プログラムアドレスとクロックカウンタ値［ｎ］を対応付けて記憶する。すなわち、リングバッファ２２には、プログラムアドレス情報２とプログラムカウンタ値[９]、プログラムアドレス情報３とプログラムカウンタ値[１３]、プログラムアドレス情報４とプログラムカウンタ値[１５]が記憶される。
【００３１】
図４Ａは、外部バスモニタ１４によってモニタされる第１外部バス信号Ｂ１を示すタイミングチャートである。図４Ｂは、リングバッファ１５に格納される第１外部バス信号Ｂ１を示す図である。なお、図４Ａ、４Ｂは、マイクロコンピュータ１０が、外部バスＢＵＳに接続されるポートを４つ有している場合を示している。すなわち、マイクロコンピュータ１０は、外部バスＢＵＳに信号を出力するポートＰ０〜Ｐ３を有し、それぞれのポートＰ０〜Ｐ３からハードウェア１９に対して制御信号等を出力している。
【００３２】
外部バスモニタ１４には、ＲＣＵ回路１７から、図４Ａの上方に示すクロックＪＴＣＫが入力されている。外部バスモニタ１４は、入力されるクロックＪＴＣＫの立ち上がりにおいて、ポートＰ０〜Ｐ３の信号をモニタし、モニタした信号をクロックカウンタ値[ｎ]に対応付けてリングバッファ１５に格納している。例えば、クロックカウンタ値[９]において、ポートＰ０、Ｐ１がＨレベル、ポートＰ２、Ｐ３がＬレベルであるとする。リングバッファ１５には、図４Ｂに示すように、クロックカウンタ値[９]には、ポートＰ０、Ｐ１に「１」、ポートＰ２、Ｐ３に「０」が記憶される。以下、同様にクロックカウンタ値[ｎ]に対応した各ポートＰ０〜３の信号レベルがリングバッファ１５に記憶される。外部バスモニタ１４は、ロジックアナライザ２３により、第２外部バス信号Ｂ２がトリガ信号と一致したことが検知されるまで第１外部バス信号Ｂ１をモニタする。外部バスモニタ１４は、クロックカウンタ値[１７]において、第２外部バス信号Ｂ２がトリガ信号と一致したことが検知されると、ＲＣＵ回路１７から制御信号ＳＴＯＰが入力され、第１外部バス信号Ｂ１のモニタを停止する。
【００３３】
ＰＣ２０は、リングバッファ２２に格納されたプログラムアドレス情報や、リングバッファ１５に格納された第１外部バス信号Ｂ１を任意に取り出し、クロックカウンタ値を参照することで、各リングバッファに格納された内部信号の同期をとることができる。
【００３４】
次に、このように構成されたマイクロコンピュータ１０及びデバッグシステム１００の動作について説明する。図５は、マイクロコンピュータ１０及びデバッグシステム１００の動作を示すフローチャートである。ＣＰＵ１２は、ＪＴＡＧ−ＩＣＥ２１から入力される制御信号に応じて所定のプログラムを実行している。外部バスモニタ１４は、第１外部バス信号Ｂ１をモニタし、モニタした信号をクロックカウンタ値に対応付けてリングバッファ１５に格納している（Ｓ１）。ロジックアナライザ２３は、第２外部バス信号Ｂ２をモニタし、予め設定されたトリガ情報と第２外部バス信号Ｂ２とが一致するか否かを判定している（Ｓ２）。ステップＳ２において、第２外部バス信号Ｂ２が、ロジックアナライザ２３に予め設定されたトリガ情報と一致した場合には、ロジックアナライザ２３は、ＥＶＥＮＴ回路１８にイベントトリガＥＶＴＲＧを出力する（Ｓ３）。ロジックアナライザ２３は、第２外部バス信号Ｂ２のモニタを停止する。
【００３５】
ＥＶＥＮＴ回路１８は、ロジックアナライザ２３からイベントトリガＥＶＴＲＧが入力されると、ＲＣＵ回路１７にＢＲＥＡＫ要求を出力して割り込みをかける（Ｓ４）。ＲＣＵ回路１７は、ＥＶＥＮＴ回路１８よりＢＲＥＡＫ要求が入力されると、ＣＰＵ１２の動作を停止させると共に、外部バスモニタ１４に制御信号ＳＴＯＰを出力する（Ｓ５）。これにより、外部バスモニタ１４は、第１外部バス信号Ｂ１のモニタを停止する。リングバッファ２２には、ＴＲＡＣＥ回路１６からプログラム履歴のデータ格納が中断される。リングバッファ１５には、外部バスモニタ１４から第１外部バス信号Ｂ１の情報のデータ格納が中断される。
【００３６】
ＰＣ２０は、リングバッファ２２からプログラム履歴を取得すると共に、ＪＴＡＧ−ＩＣＥ２１を介してリングバッファ１５から第１外部バス信号Ｂ１の情報を取得する（Ｓ６）。ＣＰＵ１２は、プログラム履歴及び第１外部バス信号Ｂ１の情報に含まれるクロックカウンタ値を参照することによりプログラム履歴と第１外部バス信号Ｂ１の同期をとる。また、ＰＣ２０は、ロジックアナライザ２３から、第２外部バス信号Ｂ２とトリガ情報が一致したときの波形データ及びトリガ情報を取得する（Ｓ７）。ＰＣ２０は、第２外部バス信号Ｂ２の波形データ及びトリガ情報と、第１外部バス信号Ｂ１とを照合することにより、第２外部バス信号Ｂ２の波形データと第１外部バス信号Ｂ１との同期をとることができる。ＰＣ２０は、プログラム履歴、第２外部バス信号Ｂ２の波形データと第１外部バス信号Ｂ１を解析することにより、デバッグ対象装置に搭載されるソフトウェア及びハードウェアの不具合を特定し、その不具合に応じたデバッグ処理を実行する（Ｓ８）。
【００３７】
このように、外部バスコントローラから外部バスへ出力されるべき第１外部バス信号をモニタすることで、マイクロコンピュータ及びハードウェアコンポーネントから出力される外部バス上のバス信号の衝突が解析可能となり、バグが発生した際のデバッグ処理効率を向上させることができる。また、本実施形態によれば、外部バスモニタ１４及びリングバッファ１５を設けることにより、外部バス信号の情報をマイクロコンピュータ１０内部に持たせることができる。リングバッファ１５に格納された第１外部バス信号Ｂ１と、ロジックアナライザ２３でモニタされた第２外部バス信号Ｂ２とを比較対照することで、外部バスＢＵＳにおけるバス信号の衝突を解析することができる。ＰＣ２０では、第１外部バス信号Ｂ１、第２外部バス信号Ｂ２及びプログラム履歴を、同期をとってモニタ等に表示させることができるため、システムデバッグが容易となる。またＥＶＥＮＴ回路１８は、ロジックアナライザ２３からイベントトリガＥＶＴＲＧを直接入力してＲＣＵ回路１７に割り込みをかけることにより、ロジックアナライザ２３がイベントトリガＥＶＴＲＧを出力してから、リングバッファ１５、２２のデータ格納停止までの遅延時間を小さくすることができる。そのため、リングバッファ１５、２２の記憶容量を小さくすることができる。
【００３８】
また、従来では、プラスチック基板３０とチップ３１との端子接続を容易に確認する手段がなかった。これに対し、本実施形態によれば、チップ内部の第１外部バス信号Ｂ１と、チップ３１外部の第２外部バス信号Ｂ２をモニタすることで、プラスチック基板３０とチップ３１との端子接続を容易に確認することができる。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施形態に係るマイクロコンピュータ１０を含む、デバッグシステム１００の一構成例を示すブロック図である。
【図２】本発明に係る、外部バスモニタ１４によって信号がモニタされるマイクロコンピュータ１０の具体的な位置を示す斜視図である。
【図３Ａ】本発明に係る、ＴＲＡＣＥ回路１６からＪＴＡＧ−ＩＣＥ２１に出力されるプログラム履歴を示すタイミングチャートである。
【図３Ｂ】本発明に係る、リングバッファ２２に記憶されたプログラム履歴を示す図である。
【図４Ａ】本発明に係る、外部バスモニタ１４によってモニタされた第１外部バス信号Ｂ１を示すタイミングチャートである。
【図４Ｂ】本発明に係る、リングバッファ１５に格納される第１外部バス信号Ｂ１の情報を示す図である。
【図５】本発明に係る、マイクロコンピュータ１０及びデバッグシステム１００の動作を示すフローチャートである。
【符号の説明】
【００４０】
１０...マイクロコンピュータ    １１...ＤＣＵ              １２...ＣＰＵ
１３...外部バスコントローラ    １４...外部バスモニタ      １５...リングバッファ
１６...ＴＲＡＣＥ回路          １７...ＲＣＵ回路          １８...ＥＶＥＮＴ回路
１９...ハードウェア            ２０...ＰＣ                ２１...ＪＴＡＧ−ＩＣＥ
２２...リングバッファ          ２３...ロジックアナライザ
３０...プラスチック基板        ３１...チップ              ３３...論理回路
３４...出力バッファ            ３５...ボンディングパッド  ３６...はんだボール
３８...電極                    ３９...ボンディングワイヤ  １００...デバッグシステム
ＪＴＣＫ...クロック            ＥＶＴＲＧ...イベントトリガ
ＢＲＴＲＧ...ブレークトリガ    ＳＴＯＰ...制御信号        Ｐ０〜Ｐ３...ポート
Ｂ１...第１外部バス信号        Ｂ２...第２外部バス信号
【図１】
2008310756.tif 000003
【図２】
2008310756.tif 000004
【図３Ａ】
2008310756.tif 000005
【図３Ｂ】
2008310756.tif 000006
【図４Ａ】
2008310756.tif 000007
【図４Ｂ】
2008310756.tif 000008
【図５】
2008310756.tif 000009