(57)【要約】【課題】関数識別符号の取得と、ターゲットシステムにおけるセンサ出力のサンプリングとを連動させる。【解決手段】第１プロファイル回路（１３）と第２プロファイル回路（１４）とを設ける。第１プロファイル回路は、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部（５）と、関数識別符号を出力する関数識別符号メモリ（７）と、関数識別符号が変化したか否かを判別する関数識別符号比較回路（１２）と、その判別結果に基づいて、第２プロファイル回路の動作を制御可能なコントローラ（１１）とを含む。第２プロファイル回路に、コントローラの制御下でセンサの出力をサンプリングするサンプリング回路（１６）を設け、関数の変化をトリガとするサンプリングを可能にする。【選択図】図１
2014016913.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットシステムで実行されているプログラム中の関数を検出可能な第１プロファイル回路と、
上記ターゲットシステムに設けられているセンサの出力を検出可能な第２プロファイル回路と、を含み、
上記第１プロファイル回路は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部と、
上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力するための関数識別符号メモリと、
上記関数識別符号が変化したか否かを判別する関数識別符号比較回路と、
上記関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御可能なコントローラと、を含み、
上記第２プロファイル回路は、上記コントローラの制御下で、上記関数識別符号の変化をトリガにして上記センサ出力のサンプリングを行うサンプリング回路を含むエミュレータ。
【請求項２】
上記サンプリング回路は、上記センサによって得られたアナログ信号をデジタル信号に変換するためのＡＤ変換器を含む請求項１記載のエミュレータ。
【請求項３】
上記ＡＤ変換器の後段には、上記ＡＤ変換器によって、同一関数内で複数回実行されたＡＤ変換の結果の中で最大となる値を保持するための最大値保持回路が配置された請求項２記載のエミュレータ。
【請求項４】
上記ＡＤ変換器の後段には、上記ＡＤ変換器によって、同一関数内で複数回実行されたＡＤ変換の結果の中で最小となる値を保持するための最小値保持回路と、
上記ＡＤ変換器によって、同一関数内で複数回実行されたＡＤ変換の結果の平均値を保持するための平均値保持回路と、が配置された請求項３記載のエミュレータ。
【請求項５】
上記最大値保持回路の出力と、上記最小値保持回路の出力と、上記平均値保持回路の出力を選択的に後段回路に伝達するための選択回路と、
上記選択回路での選択状態を設定可能な第１レジスタと、を含む請求項４記載のエミュレータ。
【請求項６】
上記センサとして、上記ターゲットシステムでの消費電流を検出するための電流センサを含む請求項５記載のエミュレータ。
【請求項７】
上記センサとして、上記ターゲットシステム内の温度を検出するための温度センサを含む請求項５記載のエミュレータ。
【請求項８】
上記センサとして、上記ターゲットシステムの加速度を検出するための加速度センサを含む請求項５記載のエミュレータ。
【請求項９】
上記センサとして、上記ターゲットシステムの角速度又は角度を検出するためのジャイロセンサを含む請求項５記載のエミュレータ。
【請求項１０】
ターゲットシステムで実行されているプログラム中の関数を検出可能な第１プロファイル回路と、
上記ターゲットシステムに設けられているセンサの出力を検出可能な第２プロファイル回路と、を含み、
上記第１プロファイル回路は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部と、
上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力するための関数識別符号メモリと、
特定の関数識別符号を設定するための第２レジスタと、
上記関数識別符号メモリから出力される関数識別符号を監視し、上記第２レジスタに設定された関数識別符号と一致するか否かを判別する特定関数識別符号比較回路と、
上記特定関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御可能なコントローラと、を含み、
上記第２プロファイル回路は、上記コントローラの制御下で、上記関数識別符号メモリから出力される関数識別符号が上記第２レジスタに設定された関数識別符号と一致する場合をトリガにして上記センサ出力のサンプリングを行うサンプリング回路を含むエミュレータ。
【請求項１１】
ターゲットシステムで実行されているプログラム中の関数を検出可能な第１プロファイル回路と、
上記ターゲットシステムに設けられているセンサの出力を検出可能な第２プロファイル回路と、を含み、
上記第１プロファイル回路は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部と、
上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力するための関数識別符号メモリと、
上記関数識別符号が変化したか否かを判別する関数識別符号比較回路と、
上記関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御可能なコントローラと、を含み、
上記第２プロファイル回路は、上記センサの出力の変化を検出した場合にトリガ信号をアサートするサンプリング回路と、
上記関数識別符号を保持可能な記憶部と、を含み、
上記コントローラは、上記トリガ信号がアサートされた場合に、そのときの上記関数識別符号を上記記憶部に保持させるエミュレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はターゲットシステム（ユーザシステム）のデバッグ技術に関し、特にエミュレータに好適に利用できるものである。
【背景技術】
【０００２】
特許文献１には、プロセッサ上で実行するソフトウェア命令の消費電力をプロファイルするための技術が記載されている。プロファイリングルールは、プロセッサ上で実行中の命令を追跡および識別し、これらの命令の実行中に消費された電力の間の関連づけを生成する。
【０００３】
特許文献２には、埋め込みアプリケーションにおけるターゲットシステムの電力プロファイル情報を得るための技術が記載されている。それによれば、電力測定データと実行データを相関させる処理を各ソフトウェア・ユニットについて実行して埋め込みアプリケーションの電力消費を判定する。
【０００４】
特許文献３には、実測による消費電力のプロファイリングを実現するための技術が記載されている。任意の一定時間毎に消費電力の測定を行い、その測定値を積算していく積算電力カウンタで、カウンタがオーバーフローしたらＣＰＵにサンプリング用の割り込みをかけ、この割り込みを受け取ったＣＰＵは、所定のサンプリングプログラムに実行制御を移行することにより、消費電力ベースのサンプリング及びプロファイルの形成を行う。
【０００５】
特許文献４には、プログラム開発において、リアルタイムエミュレーションの関数実行時間及び関数実行回数の測定を行うための技術が記載されている。この技術によれば、プログラム中の各関数に対応したインデックステーブルを使用して、実行中のプログラムのプログラムカウンタの値を関数番号に変換し、この関数番号に基づいて、各関数の実行時間と実行回数を求めている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２５７５４号公報
【特許文献２】特開２００３−３４５４７２号公報
【特許文献３】特開２０１０−１９１９３７号公報
【特許文献４】特開２００４−３４８６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ターゲットシステムにセンサが搭載される場合がある。ターゲットシステムにセンサが搭載されている場合に、ターゲットシステムでの関数の実行に対応してセンサ出力をサンプリングすることは、ターゲットシステムのデバッグを行う上で重要とされる。
【０００８】
関数の実行時間は、例えば本願発明者が先に提案した技術（特許文献４参照）によって把握することができる。つまり、ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成し、そのプログラムカウンタアドレスに対応する関数識別符号（関数番号）を求め、それに基づいて、各関数の実行時間を求めることができる。しかし、特許文献４に記載された技術によれば、プログラムカウンタアドレスに対応する関数識別符号や各関数の実行時間を得ることはできても、ターゲットシステムにおけるセンサ出力をサンプリングすることができないので、関数の実行に対応するセンサ出力を得ることができない。
【０００９】
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
課題を解決するための手段のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１１】
すなわち、ターゲットシステムで実行されているプログラム中の関数を検出可能な第１プロファイル回路と、上記ターゲットシステムに設けられているセンサの出力を検出可能な第２プロファイル回路とを含んでエミュレータを構成する。上記第１プロファイル回路は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部を含む。上記第１プロファイル回路は、上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力するための関数識別符号メモリを含む。また、上記第１プロファイル回路は、上記関数識別符号が変化したか否かを判別する関数識別符号比較回路と、上記関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御可能なコントローラとを含む。上記第２プロファイル回路は、上記コントローラの制御下で、上記関数の変化をトリガにして上記センサ出力のサンプリングを行うサンプリング回路を含む。
【発明の効果】
【００１２】
課題を解決するための手段のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００１３】
すなわち、ターゲットシステムで実行されているプログラム中の分岐命令についてのアドレス情報に基づいて関数毎のプログラムカウンタアドレスを生成し、それに対応する関数識別符号を取得するに際に、上記関数識別符号の取得と、ターゲットシステムにおけるセンサ出力のサンプリングとを連動させて、関数の実行に対応するセンサ出力を得ることができる。
【図面の簡単な説明】
【００１４】
【図１】デバッグシステムの構成例ブロック図である。
【図２】タイムベースによるサンプリング例の説明図である。
【図３】図１に示されるデバッグシステムにおけるサンプリングの説明図である。
【図４】デバッグシステムの別の構成例ブロック図である。
【図５】デバッグシステムの別の構成例ブロック図である。
【図６】デバッグシステムの別の構成例ブロック図である。
【図７】デバッグシステムの別の構成例ブロック図である。
【発明を実施するための形態】
【００１５】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕代表的な実施の形態に係るエミュレータ（４）は、ターゲットシステム（１）で実行されているプログラム中の関数を検出可能な第１プロファイル回路（１３）と、上記ターゲットシステムに設けられているセンサの出力を検出可能な第２プロファイル回路（１４）とを含む。
【００１７】
上記第１プロファイル回路は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部（５）を含む。上記第１プロファイル回路は、上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力するための関数識別符号メモリ（７）を含む。また、上記第１プロファイル回路は、上記関数識別符号が変化したか否かを判別する関数識別符号比較回路（１２）と、上記関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御可能なコントローラ（１１）とを含む。
【００１８】
上記第２プロファイル回路は、上記コントローラの制御下で、上記関数識別符号の変化をトリガにして上記センサ出力のサンプリングを行うサンプリング回路を含む。
【００１９】
上記構成によれば、プログラムカウンタアドレス生成部は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成する。関数識別符号メモリは、上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力し、関数識別符号比較回路は、上記関数識別符号が変化したか否かを判別する。コントローラは、上記関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御する。そしてサンプリング回路は、上記コントローラの制御下で、上記関数識別符号の変化をトリガにして上記センサ出力のサンプリングを行う。このようなサンプリングによれば、ターゲットシステムで実行されているプログラム中の分岐命令についてのアドレス情報に基づいて関数毎のプログラムカウンタアドレスを生成し、それに対応する関数識別符号を取得するに際に、上記関数識別符号の取得と、ターゲットシステムにおけるセンサ出力のサンプリングとを連動させることができる。それにより、関数の実行に対応するセンサ出力を得ることができる。
【００２０】
〔２〕上記〔１〕において、上記サンプリング回路内にＡＤ変換器（１６Ｂ）を設け、このＡＤ変換器によって、上記センサによって得られたアナログ信号をデジタル信号に変換することができる。
【００２１】
〔３〕上記〔２〕において、上記ＡＤ変換器の後段には、上記ＡＤ変換器によって、同一関数内で複数回実行されたＡＤ変換の結果の中で最大となる値を保持するための最大値保持回路（１８）を配置することができる。それにより、同一の関数内でＡＤ変換出力値が最も大きくなる場合を把握することができる。
【００２２】
〔４〕上記〔３〕において、上記ＡＤ変換器の後段には、上記ＡＤ変換器によって、同一関数内で複数回実行されたＡＤ変換の結果の中で最小となる値を保持するための最小値保持回路（１９）と、上記ＡＤ変換器によって、同一関数内で複数回実行されたＡＤ変換の結果の平均値を保持するための平均値保持回路（２０）とを設けることができる。最小値保持回路が設けられることにより、同一の関数内でＡＤ変換出力値が最も小さい場合を把握することができる。平均値保持回路が設けられることにより、同一関数内で複数回実行されたＡＤ変換の結果の平均値を得ることができる。
【００２３】
〔５〕上記〔４〕において、上記最大値保持回路の出力と、上記最小値保持回路の出力と、上記平均値保持回路の出力を選択的に後段回路に伝達するための選択回路（２１）と、上記選択回路での選択状態を設定可能な第１レジスタ（３１）とを設けることができる。これにより、ユーザは、最大値保持回路の出力、最小値保持回路の出力、平均値保持回路の出力から任意の出力を選択することができるので、ユーザの要求に応じたデバッグが可能となる。
【００２４】
〔６〕上記〔５〕において、上記センサとして、上記ターゲットシステムでの消費電流を検出するための電流センサ（６）を設けることができる。これにより、ターゲットシステムでの消費電流を上記サンプリング回路でサンプリングすることができる。
【００２５】
〔７〕上記〔５〕において、上記センサとして、上記ターゲットシステム内の温度を検出するための温度センサ（２６）を設けることができる。これにより、ターゲットシステム内の温度を上記サンプリング回路でサンプリングすることができる。
【００２６】
〔８〕上記〔５〕において、上記センサとして、上記ターゲットシステムの加速度を検出するための加速度センサ（２７）を設けることができる。これにより、ターゲットシステムの加速度を上記サンプリング回路でサンプリングすることができる。
【００２７】
〔９〕上記〔５〕において、上記センサとして、上記ターゲットシステムの角速度又は角度を検出するためのジャイロセンサ（２８）を設けることができる。これにより、ターゲットシステムの角速度又は角度を上記サンプリング回路でサンプリングすることができる。
【００２８】
〔１０〕別の実施の形態に係るエミュレータ（４）は、ターゲットシステムで実行されているプログラム中の関数を検出可能な第１プロファイル回路（１３）と、上記ターゲットシステムに設けられているセンサの出力を検出可能な第２プロファイル回路（１４）とを含む。
【００２９】
上記第１プロファイル回路は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部（５）を含む。上記第１プロファイル回路は、上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力するための関数識別符号メモリ（７）を含む。また、上記第１プロファイル回路は、特定の関数識別符号を設定するための第２レジスタ（３２）と、上記関数識別符号メモリから出力される関数識別符号を監視し、上記第２レジスタに設定された関数識別符号と一致するか否かを判別する特定関数識別符号比較回路（２４）とを含む。さらに、上記第１プロファイル回路は、上記特定関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御可能なコントローラ（１１）を含む。
【００３０】
上記第２プロファイル回路は、上記コントローラの制御下で、上記関数識別符号メモリから出力される関数識別符号が上記第２レジスタに設定された関数識別符号と一致する場合をトリガにして上記センサ出力のサンプリングを行うサンプリング回路を含む。
【００３１】
上記構成によれば、特定関数識別符号比較回路は、上記関数識別符号メモリから出力される関数識別符号を監視し、上記第２レジスタに設定された関数識別符号と一致するか否かを判別する。上記コントローラは、上記特定関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御する。これにより、特定の関数のみの実行時間の測定や、特定の関数に対応するセンサ出力のサンプリングを上記関数識別符号の取得と連動して行うことができるので、全ての関数に対応するセンサ出力のサンプリングを行う場合に比べて、情報量の低減を図ることができる。
【００３２】
〔１１〕別の実施の形態に係るエミュレータ（４）は、ターゲットシステムで実行されているプログラム中の関数を検出可能な第１プロファイル回路（１３）と、上記ターゲットシステムに設けられているセンサの出力を検出可能な第２プロファイル回路（１４）とを含む。
【００３３】
上記第１プロファイル回路は、上記ターゲットシステムで実行されているプログラム中の関数への分岐を指示する分岐命令についてのアドレス情報に基づいて、関数毎のプログラムカウンタアドレスを生成するプログラムカウンタアドレス生成部（５）を含む。上記第１プロファイル回路は、上記プログラムカウンタアドレス生成部で生成されたプログラムカウンタアドレスに対応する関数識別符号を出力するための関数識別符号メモリ（７）を含む。また、上記第１プロファイル回路は、上記関数識別符号が変化したか否かを判別する関数識別符号比較回路（１２）と、上記関数識別符号比較回路での判別結果に基づいて、上記第２プロファイル回路の動作を制御可能なコントローラ（１１）とを含む。
【００３４】
上記第２プロファイル回路は、上記センサの出力の変化を検出した場合にトリガ信号をアサートするサンプリング回路（１６）と、上記関数識別符号を保持可能な記憶部（１７）とを含む。
【００３５】
上記コントローラは、上記トリガ信号がアサートされた場合に、そのときの上記関数識別符号を上記記憶部に保持させる。
【００３６】
上記構成によれば、サンプリング回路によって、上記センサの出力変化が検出された場合にトリガ信号がアサートされ、そのときの上記関数識別符号が上記記憶部に保持されるので、実際に上記センサの出力変化が検出された場合に、それに対応する上記関数識別符号を把握することができる。このような構成においても、ターゲットシステムで実行されているプログラム中の分岐命令についてのアドレス情報に基づいて関数毎のプログラムカウンタアドレスを生成し、それに対応する関数識別符号を取得するに際に、上記関数識別符号の取得と、ターゲットシステムにおけるセンサ出力のサンプリングとを連動させることができる。それにより、関数の実行に対応するセンサ出力を得ることができる。
【００３７】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３８】
《実施の形態１》
図１には、デバッグシステム１００の構成例が示される。
【００３９】
図３に示されるデバッグシステム１００は、特に制限されないが、ターゲットシステム１と、エミュレータ４とを含む。
【００４０】
ターゲットシステム１は、ターゲットボードを有し、このターゲットボード上に、オンチップデバッグが可能なＭＣＵ（マイクロコントロールユニット）２と、このＭＣＵ２の動作用電源電圧を生成するための電源回路（Ｐｏｗｅｒ）３とが設けられている。ＭＣＵ２は、ユーザモードとデバッグモードとを有し、デバッグモードにおいて、ユーザプログラムのデバッグ機能が発揮される。ＭＣＵ２とエミュレータ４とは、トレースバス８を介して接続される。ＭＣＵ２によって、デバッグ対象のユーザプログラムが実行された場合に、その実行状態が、上記トレースバス８を介してエミュレータ４に伝達可能になっている。また、電源回路３からＭＣＵ２への電源電圧供給経路には、シャント用の抵抗（「シャント抵抗」という）６が設けられる。このシャント抵抗６の両端の電圧は、ＭＣＵ２の動作電流に応じて生ずるもので、シャント抵抗６は、ＭＣＵ２での消費電流を検出するためのセンサとして機能する。このシャント抵抗６の両端の電圧は、ケーブル１５を介してエミュレータ４に取り込まれる。
【００４１】
エミュレータ４は、オンチップデバッグエミュレータとされ、関数プロファイル回路１３、センサ出力プロファイル回路１４、及び制御用マイクロコンピュータ（「制御マイコン」という）２３を含む。
【００４２】
関数プロファイル回路１３は、ＭＣＵ２でユーザプログラム中の分岐命令が実行された場合に、その分岐命令を分析する機能を有する。この関数プロファイル回路１３は、特に制限されないが、ＰＣ生成回路５、関数ＩＤメモリ７、時間測定カウンタ９、時間計測メモリ１０、書込みコントローラ１１、及びＩＤ比較回路１２を含む。
【００４３】
トレースバス８を介して伝達されるデバッグインタフェース信号には、ＭＣＵ２で実行されるプログラム中の分岐命令の情報（分岐元アドレスや分岐先アドレスなどの分岐アドレス情報）が含まれる。ＰＣ生成回路５は、トレースバス８を介して得られた分岐アドレス情報に基づいて、関数毎のプログラムカウンタアドレス（「ＰＣアドレス」という）を生成する。このＰＣアドレスは、ＭＣＵ２内のＰＣ（プログラムカウンタ）のアドレスに対応する。ＰＣ生成回路５によって生成されたＰＣアドレスは、後段の関数ＩＤメモリ７に伝達される。
【００４４】
関数ＩＤメモリ７には、ユーザプログラム中の各関数に対応した関数識別符号（「関数ＩＤ」という）によるインデックステーブルが形成されており、上記ＰＣ生成回路５からＰＣアドレスが伝達された場合に、それに対応する関数ＩＤが関数ＩＤメモリ７から出力されるようになっている。
【００４５】
ＩＤ比較回路１２は、上記関数ＩＤメモリ７から出力される関数ＩＤを常時監視し、最新の関数ＩＤと直前の関数ＩＤとを比較することにより、関数ＩＤが変化したか否かを判別する。この判別結果は、書込みコントローラ１１に伝達される。
【００４６】
書込みコントローラ１１は、ＩＤ比較回路１２での判別結果に基づいて、関数ＩＤメモリ７、時間測定カウンタ９、時間計測メモリ１０の動作を制御する。
【００４７】
時間計測カウンタ９は、関数ＩＤが変化しない場合には、書込みコントローラ１１の制御下でカウントアップされる。関数ＩＤが変化した場合には、書込みコントローラ１１の制御下で、時間測定カウンタ９の値が時間計測メモリ１０に書き込まれる。そして次の時間計測のため、時間測定カウンタ９の初期値が時間計測メモリ１０から読み出され、それが時間測定カウンタ９に設定される。このようにして、関数ＩＤが同一の場合の時間が計測される。
【００４８】
センサ出力プロファイル回路１４は、サンプリング部１６、最大値保持回路１８、記憶部１７を含む。
【００４９】
サンプリング部１６は、シャント抵抗６の両端の電圧を増幅するためのアンプ（ａｍｐ）１６Ａと、このアンプ１６Ａの出力をデジタル信号に変換するためのＡＤ変換器１６Ｂとを含む。ＡＤ変換器１６Ｂの動作は、書込みコントローラ１１によって制御される。すなわち、書込みコントローラ１１は、関数ＩＤが変化した場合に、ＡＤ変換要求信号ＲＥＱをローレベルにアサートする。ＡＤ変換要求信号ＲＥＱがローレベルにアサートされると、ＡＤ変換器１６Ｂは、入力信号のＡＤ変換動作を開始する。このＡＤ変換動作は、同一の関数内で複数回実行される。ＡＤ変換器１６Ｂの出力データは最大値保持回路１８に入力される。
【００５０】
最大値保持回路１８は、ＡＤ変換機１６Ｂの出力が伝達される毎に、その値が、既に保存されている値より大きいか否かを判別することによって、同一の関数内で複数回実行されたＡＤ変換の結果の中で最大となる値を選択的に保持する。
【００５１】
記憶部１７には、上記書込みコントローラ１１の制御下で、上記関数ＩＤメモリ７の出力（関数ＩＤ）、上記最大値保持回路１８の保持値、及びそのそれらのプログラム経過時間情報（タイムスタンプ）が順次書き込まれる。
【００５２】
このように、プログラムが分岐するタイミングの情報に基づいて、ＩＤ比較回路１２や書込みコントローラ１１によるハードウェア制御により、関数プロファイル、消費電力プロファイルが形成される。これにより、ターゲットシステム１で実行されているプログラム中の分岐命令についてのアドレス情報に基づいて関数毎のプログラムカウンタアドレスを生成し、それに対応する関数ＩＤを取得するに際に、上記関数ＩＤの取得と、ターゲットシステム１におけるセンサ出力のサンプリングとを連動させることができる。それにより、関数の実行に対応するセンサ出力を得ることができる。
【００５３】
ここで、図１に示されるデバッグシステム１００でのサンプリングの比較対象として、サンプリングをタイムベースで行う場合について考える。
【００５４】
サンプリングをタイムベースで行う場合には、サンプリングのタイミングによっては、目的とする関数に対応する消費電力を抽出できない場合がある。図２には、その場合のサンプリング例が示される。図２において、縦軸は電力使用率であり、横軸は経過時間である。関数Ａは、電力消費は小さいが実行時間の大部分を占めている。関数Ｂは、実行時間は短いが、消費電力が大きい。このようなケースにおいて、例えば関数Ｂに対応する消費電力を抽出したくても、この関数Ｂは、１ｍｓ毎のサンプリングのタイミングからずれているため、それに対応する消費電力を抽出できない。
【００５５】
図３には、図１に示されるデバッグシステム１００でのサンプリング例が示される。
【００５６】
図３において、横軸は時間、縦軸は電力使用率である。
【００５７】
サンプリング部１６においては、書込みコントローラ１１の出力、すなわち、関数ＩＤメモリ７から出力される関数ＩＤの変化をトリガとして、関数Ａ及び関数Ｂの時間測定や電流測定が開始されるようになっているので、図２に示されるサンプリング例では不可能とされた関数Ｂの抽出も可能となる。
【００５８】
また、図１に示されるデバッグシステム１００においては、最大値保持回路１８が設けられ、同一の関数内で複数回実行されたＡＤ変換の結果の中で最大となる値が保持され、それが記憶部１７に書き込まれるようになっているため、同一の関数内で消費電流が最も多くなる場合を把握することができる。
【００５９】
《実施の形態２》
図４には、デバッグシステム１００の別の構成例が示される。
【００６０】
図４に示されるデバッグシステムが、図１に示されるのと大きく相違するのは、センサ出力プロファイル回路１４において、最大値保持回路１８とは別に、最小値保持回路１９、平均値保持回路２０が設けられ、さらに、選択回路２１及びレジスタ３１が設けられている点である。
【００６１】
最小保持回路１９は、ＡＤ変換機１６Ｂの出力が伝達される毎に、その値が、既に保存されている値より小さいか否かを判別することによって同一の関数内で複数回実行されたＡＤ変換の結果の中で最小となる値を選択的に保持する。
【００６２】
平均値保持回路２０は、同一の関数内で複数回実行されたＡＤ変換の結果の平均値を算出して、その値を保持する。
【００６３】
レジスタ３１には、制御マイコン２３のプロファイル設定処理などにおいて、選択回路２１の選択情報が設定される。
【００６４】
選択回路２１は、レジスタ３１に設定されている選択情報に従って、最大値保持回路１８の出力、最小値保持回路１９の出力、平均値保持回路２０の出力の何れかを選択し、それを記憶部１７に伝達する。
【００６５】
上記の構成によれば、制御マイコン２３のプロファイル設定処理の内容を変更することによって、選択回路２１の選択状態を変更することができる。これによりユーザは、記憶部１７に書き込まれる情報として、最大値保持回路１８の出力、最小値保持回路１９の出力、平均値保持回路２０の出力から任意の出力を選択することができるので、ユーザの要求に応じたデバッグが可能となる。
【００６６】
尚、レジスタ３１への選択情報の設定により、最大値保持回路１８の出力、最小値保持回路１９の出力、平均値保持回路２０の出力の全てを記憶部１７に書き込むようにしても良い。
【００６７】
《実施の形態３》
図５には、デバッグシステム１００の別の構成例が示される。
【００６８】
図５に示されるデバッグシステムが、図１に示されるのと大きく相違するのは、ＩＤ比較回路１２に代えて、特定ＩＤ比較回路２４を設け、さらに、特定ＩＤ情報を設定するためのレジスタ３２が設けられている点である。レジスタ３２には、制御マイコン２３のプロファイル設定処理などにおいて、特定ＩＤ情報が設定される。
【００６９】
特定ＩＤ比較回路２４は、上記関数ＩＤメモリ７から出力される関数ＩＤを常時監視し、上記レジスタ３２に設定された特定ＩＤ情報と一致するか否かの判別を行う。この判別結果は、書込みコントローラ１１に伝達される。書込みコントローラ１１は、特定ＩＤ比較回路２４での判別結果に基づいて、関数ＩＤメモリ７、時間測定カウンタ９、時間計測メモリ１０、さらには、センサ出力プロファイル回路１４内の各部の動作を制御する。つまり、上記レジスタ３２に設定された特定ＩＤ情報と一致するＩＤ情報が検出された場合に、関数ＩＤメモリ７、時間測定カウンタ９、時間計測メモリ１０、さらには、センサ出力プロファイル回路１４内の各部の動作が制御される。それにより、特定の関数のみの実行時間の測定や、当該関数に対応するセンサ出力のサンプリングを行うことができる。
【００７０】
《実施の形態４》
図６には、デバッグシステム１００の別の構成例が示される。
【００７１】
図６に示されるデバッグシステムが、図１に示されるのと大きく相違するのは、サンプリング部１６において、高速ＡＤ変換器２５を設け、この高速ＡＤ変換器２５から出力されるトリガ信号ＴＲＩが書込みコントローラ１１に伝達される点である。高速ＡＤ変換器２５は、図１におけるＡＤ変換器１６Ｂよりも高速なサンプリングを行うことができる。例えば高速ＡＤ変換器２５のサンプリング周波数は、１００ＭＨｚ以上に設定される。このような高速サンプリングが行われることで、サンプリング間隔は例えば図３に示されるよりも更に狭くすることができるので、シャント抵抗６で検出された電流値の変化タイミングでのサンプリングが可能となる。高速ＡＤ変換器２５は、高速サンプリングによって電流値の変化を検出した場合、関数プロファイラ回路１３内の書込みコントローラ１１に対して、トリガ信号ＴＲＩをアサートする。すると、書込みコントローラ１１は、そのときの関数ＩＤを記憶部１７に記録させる。これにより、電流値が急激に変化した場合の関数ＩＤを把握することが可能となる。例えば図３に示されるように、関数Ａと関数Ｂとで電流が変化する場合に、その電流変化をトリガとして、そのときの関数ＩＤを記録することができる。よって、かかる構成においても、上記実施の形態の場合と同様に、ターゲットシステム１で実行されているプログラム中の分岐命令についてのアドレス情報に基づいて関数毎のプログラムカウンタアドレスを生成し、それに対応する関数ＩＤを取得するに際に、上記関数ＩＤの取得と、ターゲットシステムにおけるセンサ出力のサンプリングとを連動させることができる。それにより、関数の実行に対応するセンサ出力を得ることができる。
【００７２】
《実施の形態５》
図７には、デバッグシステム１００の別の構成例が示される。
【００７３】
ターゲットシステム１の用途によっては、ＭＣＵ２の近傍に各種センサが搭載される場合がある。図７に示されるデバッグシステムは、ＭＣＵ２の近傍に各種センサが搭載される場合のデバッグに対応する。
【００７４】
ターゲットシステム１には、センサ部３３が設けられ、このセンサ部３３に対応するセンサ出力プロファイル回路１４が設けられている。センサ部３３には、温度センサ２６、加速度センサ２７、ジャイロセンサ２８が設けられる。温度センサ２６は、ターゲットシステム１内の温度を検出する。加速度センサ２７は、ターゲットシステム１の加速度を検出する。ジャイロセンサ２８は、ターゲットシステム１の角速度（レートジャイロ）、角度（姿勢ジャイロ）を検出する。エミュレータ４には、センサ部３３内のセンサ毎に、対応するセンサ出力プロファイル回路１４が設けられるものとする。センサ出力プロファイル回路１４内の構成は、図１に示されるのと同一構成のものを適用することができる。
【００７５】
温度センサ２６の出力をセンサ出力プロファイル回路１４に取り込むことにより、ターゲットシステム１における関数の変化をトリガとして、ターゲットシステム１における温度情報を記録することができる。加速度センサ２７の出力をセンサ出力プロファイル回路１４に取り込むことにより、ターゲットシステム１における関数の変化をトリガとして、ターゲットシステム１の加速度を記録することができる。ジャイロセンサ２８の出力をセンサ出力プロファイル回路１４に取り込むことにより、ターゲットシステム１における関数の変化をトリガとして、ターゲットシステム１のターゲットシステム１の角速度や角度を記録することができる。
【００７６】
以上本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【００７７】
例えば図７において、センサ部３３内に含まれるセンサの種類や数を適宜に変更することができる。また、図７において、ＭＣＵ２の消費電流を検出するための電流センサとして、シャント抵抗６（図１参照）、及びそれに対応するセンサ出力プロファイル回路１４を設けることができる。
【００７８】
また、エミュレータ４をインサーキットエミュレータとすることができる。
【符号の説明】
【００７９】
１  ターゲットシステム
２  ＭＣＵ
３  電源回路
４  エミュレータ
５  ＰＣ生成回路
６  シャント抵抗
７  関数ＩＤメモリ
８  トレースバス
９  時間測定カウンタ
１０  時間計測メモリ
１１  書込みコントローラ
１２  ＩＤ比較回路
１３  関数プロファイル回路
１４  センサ出力プロファイル回路
１５  ケーブル
１６  サンプリング部
１７  記憶部
１８  最大値保持回路
１９  最小値保持回路
２０  平均値保持回路
２１  選択回路
２３  制御マイコン
２４  特定ＩＤ比較回路
２５  高速ＡＤ変換器
２６  温度センサ
２７  加速度センサ
２８  ジャイロセンサ
３１,３２  レジスタ
３３  センサ部
１００  デバッグシステム
【図１】
2014016913.tif 000003
【図２】
2014016913.tif 000004
【図３】
2014016913.tif 000005
【図４】
2014016913.tif 000006
【図５】
2014016913.tif 000007
【図６】
2014016913.tif 000008
【図７】
2014016913.tif 000009