(57)【要約】  【課題】  絶対分岐が発生しなくてもトレース解析をすることができるマイクロコンピュータ及びデバッグシステムを提供する。  【解決手段】  マイクロコンピュータ１０は、プログラムの実行状態を３ビットで示すステータス値と、所定のビットパターンからなるヘッダが付加されたプログラムカウンタ値を示す値とを生成する中央処理装置１２と、ステータス値と、ヘッダが付加されたプログラムカウンタ値を示す値とを中央処理装置１２から受け取って、ステータス値を専用端子ＤＳＴ［２：２］〜ＤＳＴ［０：０］から出力するとともに、ヘッダ及びプログラムカウンタ値を示す値を専用端子ＤＰＣＯから１ビットずつ出力する実行情報出力部１４とを具備する。【選択図】  図１
2006107120.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行状態を複数のビットで示すステータス値と、所定のビットパターンからなるヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを生成する中央処理装置と、
ステータス値と、ヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを前記中央処理装置から受け取って、ステータス値を複数の専用端子から出力するとともに、ヘッダ及びプログラムカウンタ値を示す値を少なくとも１つの専用端子から出力する実行情報出力部と、
を具備するマイクロコンピュータ。
【請求項２】
前記ヘッダが、プログラムカウンタ値の最大値に相当するビット列とプログラムカウンタ値の最小値に相当するビット列とを繋げたビットパターンからなる、請求項１記載のマイクロコンピュータ。
【請求項３】
前記ヘッダが、「１」又は「０」をＮ個続けたビットパターンからなり、
前記中央処理装置が、プログラムカウンタ値を示す値の一部が、「１」又は「０」がＮ個続いた値となった場合には、（Ｎ−１）個目の「１」又は「０」の後に「０」又は「１」のダミーデータを挿入して、プログラムカウンタ値を示す値を生成する、
請求項１記載のマイクロコンピュータ。
【請求項４】
前記中央処理装置が、絶対分岐命令を実行した場合には、ヘッダを付加しないで分岐先のプログラムカウンタ値を示す値を生成し、
前記実行情報出力部が、分岐先のプログラムカウンタ値を示す値を前記中央処理装置から受け取ると、分岐先のプログラムカウンタ値を示す値を前記少なくとも１つの専用端子から出力する、
請求項１〜３のいずれかに記載のマイクロコンピュータ。
【請求項５】
前記中央処理装置が、ヘッダが必要に応じて付加されたプログラムカウンタ値を示す値を周期的又は間歇的に生成し、それ以外のタイミングにおいては連続する固定値を生成し、
前記実行情報出力部が、ヘッダが必要に応じて付加されたプログラムカウンタ値を示す値及び連続する固定値を前記中央処理装置から受け取って、前記少なくとも１つの専用端子から出力する、
請求項１〜４のいずれかに記載のマイクロコンピュータ。
【請求項６】
請求項１〜５いずれかに記載のマイクロコンピュータにおけるプログラムの実行をリアルタイムにトレースするためのデバッグシステムであって、
前記マイクロコンピュータから送信されるステータス値とヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを格納するためのトレースメモリを有するデバッグツールと、
前記デバッグツールからステータス値とヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを取得して、ヘッダを検出した後に、検出したヘッダに続くプログラムカウンタ値を示す値を検出して、解析基点となるプログラムカウンタ値を求め、ステータス値と求められたプログラムカウンタ値とに基づいてトレース情報を生成するトレース情報生成部を備えるホストコンピュータと、
を具備するデバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ機能を有するマイクロコンピュータ、及び、そのようなマイクロコンピュータにおいて用いられるソフトウエア（プログラム）の開発を支援するためのデバッグシステムに関する。
【背景技術】
【０００２】
近年、ゲーム装置、カーナビゲーションシステム、プリンタ及び携帯情報端末等の電子機器に組み込まれ、高度な情報処理を実現できるマイクロコンピュータに対する需要が高まっている。
【０００３】
本出願人は、下記の特許文献１〜３において、このような組み込み型のマイクロコンピュータのプログラムの実行を量産チップ上でリアルタイムにトレースするために、マイクロコンピュータからデバッグシステムにトレース情報を４つの専用端子を介して出力し、ホストコンピュータがこのトレース情報をデバッグシステムから受信してリアルタイムトレースを行うデバッグシステムを提案している。
このデバッグシステムにおいては、図５に示すように、マイクロコンピュータが、クロックパルス毎に、３ビットパラレルのＤＳＴ値（ＤＳＴ［０００］〜ＤＳＴ［１１１］）と、１ビットのＤＰＣＯ値（ＤＰＣＯ［０］及びＤＰＣＯ［１］）とを出力している。ここで、ＤＳＴ値は、プログラムの実行状態、すなわち、通常命令実行終了（ＮＯＲＭＡＬ）、ＰＣ相対分岐命令実行（ＰＣ  ＲＥＬ）、ＰＣ絶対分岐命令実行（ＰＣ  ＡＢＳ）及びアイドルサイクル（ＩＤＬＥ）のようなマイクロコンピュータのＣＰＵの命令実行ステータス情報を示す値である。また、ＤＰＣＯ値は、マイクロコンピュータのＣＰＵにおいて絶対分岐命令により絶対分岐が発生した場合（図５ではＤＳＴ［０１０］の場合）には、続く２７クロックサイクルで分岐先のプログラムカウンタ値を示す値であり、その他の場合（図５ではＤＳＴ［０１０］以外の場合）には、固定値「１」（図５のＤＰＣＯ［１］）とされる。
【０００４】
ここで、マイクロコンピュータのＣＰＵにおいて絶対分岐が発生した場合にのみその分岐先のプログラムカウンタ値を示す値を出力するのは、次の理由による。ＰＣ絶対分岐命令実行は、プログラムの実行中にレジスタの値等によって分岐先のアドレスが決まる命令であり、命令コードからは分岐先を判断することができない命令である。従って、絶対分岐命令が発生するとプログラムの命令コードから分岐先が分からないために、分岐先のプログラムカウンタ値を示す値を出力することによってトレースを可能とする。
【０００５】
しかしながら、特許文献１〜３において提案したデバッグシステムは、マイクロコンピュータのＣＰＵにおいて絶対分岐が発生した場合以外には、固定値「１」とされるＤＰＣＯ値（図５のＤＰＣＯ［１］）を出力するので、絶対分岐を基点にしてトレースデータの解析をするシステムとなっており、トレース解析をするためには絶対分岐の発生が必須であった。
【特許文献１】特開２０００−２８４９８４号公報（段落０００２から０００７）
【特許文献２】特開２０００−２８４９８５号公報（段落０００２から０００７）
【特許文献３】特開２０００−２８４９８６号公報（段落０００２から０００７）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、上記の点に鑑み、本発明は、マイクロコンピュータのＣＰＵにおいて絶対分岐が発生しなくてもトレース解析をすることができるマイクロコンピュータ及びそのデバッグシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明に係るマイクロコンピュータは、プログラムの実行状態を複数のビットで示すステータス値と、所定のビットパターンからなるヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを生成する中央処理装置と、ステータス値と、ヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを中央処理装置から受け取って、ステータス値を複数の専用端子から出力するとともに、ヘッダ及びプログラムカウンタ値を示す値を少なくとも１つの専用端子から出力する実行情報出力部とを具備する。
【０００８】
ここで、ヘッダが、プログラムカウンタ値の最大値に相当するビット列とプログラムカウンタ値の最小値に相当するビット列とを繋げたビットパターンからなっても良い。
【０００９】
また、ヘッダが、「１」又は「０」をＮ個続けたビットパターンからなり、中央処理装置が、プログラムカウンタ値を示す値の一部が、「１」又は「０」がＮ個続いた値となった場合には、（Ｎ−１）個目の「１」又は「０」の後に「０」又は「１」のダミーデータを挿入して、プログラムカウンタ値を示す値を生成しても良い。
【００１０】
さらに、中央処理装置が、絶対分岐命令を実行した場合には、ヘッダを付加しないで分岐先のプログラムカウンタ値を示す値を生成し、実行情報出力部が、分岐先のプログラムカウンタ値を示す値を中央処理装置から受け取ると、分岐先のプログラムカウンタ値を示す値を少なくとも１つの専用端子から出力しても良い。
【００１１】
さらにまた、中央処理装置が、ヘッダが必要に応じて付加されたプログラムカウンタ値を示す値を周期的又は間歇的に生成し、それ以外のタイミングにおいては連続する固定値を生成し、実行情報出力部が、ヘッダが必要に応じて付加されたプログラムカウンタ値を示す値及び連続する固定値を中央処理装置から受け取って、少なくとも１つの専用端子から出力しても良い。
【００１２】
本発明に係るマイクロコンピュータのデバッグシステムは、本発明のマイクロコンピュータにおけるプログラムの実行をリアルタイムにトレースするためのデバッグシステムであって、マイクロコンピュータから送信されるステータス値とヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを格納するためのトレースメモリを有するデバッグツールと、デバッグツールからステータス値とヘッダが必要に応じて付加されたプログラムカウンタ値を示す値とを取得して、ヘッダを検出した後に、検出したヘッダに続くプログラムカウンタ値を示す値を検出して、解析基点となるプログラムカウンタ値を求め、ステータス値と求められたプログラムカウンタ値とに基づいてトレース情報を生成するトレース情報生成部を備えるホストコンピュータとを具備する。
【発明の効果】
【００１３】
本発明によれば、マイクロコンピュータのＣＰＵにおいて絶対分岐が発生しない場合でもプログラムカウンタ値を示す値をマイクロコンピュータからホストコンピュータに出力することにより、ＣＰＵにおいて絶対分岐が発生しなくてもトレース解析をすることが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１は、本発明の一実施形態によるマイクロコンピュータ及びそのデバッグシステムの構成を示す図である。
図１に示すように、デバッグ対象となるマイクロコンピュータ１０は、ＣＰＵ（中央処理装置）１２と、実行情報出力部１４と、内部メモリ１６とを含んでいる。ここで、ＣＰＵ１２と実行情報出力部１４と内部メモリ１６とは、内部バスを介して接続されている。
【００１５】
ＣＰＵ１２は、その実行状態を３ビットで示すＤＳＴ値（ステータス値）を生成して、内部バスを介して実行情報出力部１４に出力する。ＤＳＴ値の一例を以下に示す。
ＤＳＴ［０００］：通常命令実行終了（アドレス順に実行終了）。このＤＳＴ値は、ＣＰＵ１２が命令をアドレスの順番に実行している命令実行状態を示す。
ＤＳＴ［００１］：ＰＣ相対分岐命令実行。このＤＳＴ値は、プログラム中に明示的に記述されたアドレスに分岐する命令であるＰＣ相対分岐命令をＣＰＵ１２が実行した命令実行状態を示す。
ＤＳＴ［０１０］：ＰＣ絶対分岐命令実行。このＤＳＴ値は、プログラムの実行中にレジスタの値によって分岐先のアドレスが決まる命令であるＰＣ絶対分岐命令をＣＰＵ１２が実行した命令実行状態を示す。
【００１６】
また、ＣＰＵ１２は、プログラムカウンタ値（現在実行中のプログラムのアドレス値）を示す値（以下では、説明の簡単のため「ＤＰＣＯ値」と称する。）にヘッダを付加して、内部バスを介して実行情報出力部１４に出力する。本実施形態では、ＤＰＣＯ値（プログラムカウンタ値を示す値）として、３２ビットのプログラムカウンタ値の最下位ビットを除く３１ビットの値を用いる。プログラムカウンタ値の最下位ビットを除く理由は、プログラムカウンタ値の最下位ビットは「０」に固定されているので、ホストコンピュータ２３は、送信されてくる３１ビットのＤＰＣＯ値から、解析基点となる３２ビットのプログラムカウンタ値を求めることができるからである。
【００１７】
ヘッダは、３２ビットのプログラムカウンタ値の最大値に相当する「１」が３１個続くビット列の後ろに、３２ビットのプログラムカウンタ値の最小値に相当する「０」が３１個続くビット列を繋げて生成した６２ビットのビットパターンからなる。
【００１８】
図２に示すように、実行情報出力部１４は、ＣＰＵ１２から送られてくる３ビットのＤＳＴ値の内の最下位ビットを専用端子ＤＳＴ［０：０］から出力し、第２下位ビットを専用端子ＤＳＴ［１：１］から出力し、最上位ビットを専用端子ＤＳＴ［２：２］から出力する。
【００１９】
また、実行情報出力部１４は、ＣＰＵ１２から送られてくるヘッダ及びＤＰＣＯ値を次のようにして専用端子ＤＰＣＯから１ビットずつ出力する。実行情報出力部１４は、６２ビットのヘッダを先頭ビットから順番に１ビットずつ専用端子ＤＰＣＯから出力した後、３１ビットのＤＰＣＯ値を下位ビットから順番に１ビットずつ専用端子ＤＰＣＯから出力する。
【００２０】
図１に示す内部メモリ１６は、マイクロコンピュータ１０で実行されるプログラム等を記憶している。
【００２１】
デバッグシステム２０は、マイクロコンピュータ１０に直接接続されるデバッグツール２１と、デバッグツール２１にＲＳ２３２Ｃインターフェース及びパラレルインターフェースを介して接続されたホストコンピュータ２３とを備えている。デバッグツール２１は、実行情報取得部２２と、ターゲットメモリ書き込み部２８とを含んでいる。ホストコンピュータ２３は、プログラム情報記憶部２６と、トレース情報生成部２７と、プログラム情報書き込み部２９とを含んでいる。
【００２２】
デバッグツール２１の実行情報取得部２２は、マイクロコンピュータ１０の４つの専用端子ＤＳＴ［０：０］、ＤＳＴ［１：１］、ＤＳＴ［２：２］及びＤＰＣＯと４本のラインを介して接続されており、マイクロコンピュータ１０の実行情報出力部１４から送信されてくる３ビットパラレルのＤＳＴ値と、実行情報出力部１４から１ビットずつ送られてくるヘッダ及びＤＰＣＯ値とを内部のトレースメモリ２４に格納する。なお、ホストコンピュータ２３からトレース範囲が指定された場合には、その範囲のＤＳＴ値、ヘッダ及びＤＰＣＯ値をトレースメモリ２４に格納する。
また、実行情報取得部２２は、ホストコンピュータ２３のトレース情報生成部２７からの要求に基づき、トレースメモリ２４に格納されているＤＳＴ値、ヘッダ及びＤＰＣＯ値をトレース情報生成部２７に出力する。
【００２３】
ここで、ＤＳＴ値、ヘッダ及びＤＰＣＯ値をマイクロコンピュータ１０からホストコンピュータ２３に直接に送らずにトレースメモリ２４に一旦格納するのは、例えば、マイクロコンピュータ１０は高速（例えば２５Ｍバイト／秒）でＤＳＴ値、ヘッダ及びＤＰＣＯ値を送信できるのに対して、ホストコンピュータ２３はそれよりも低速（例えば１Ｍバイト／秒）でしかＤＳＴ値、ヘッダ及びＤＰＣＯ値を受信できないからである。
【００２４】
デバッグツール２１のターゲットメモリ書き込み部２８は、マイクロコンピュータ１０の内部メモリ１６にプログラムをロードしたり、内部メモリ１６内のプログラムを書き換えたりする機能を有し、ＤＳＩＯ（双方向通信ライン）を介してマイクロコンピュータ１０の内部メモリ１４に書き込むデータを送信する。
【００２５】
ホストコンピュータ２３のプログラム情報記憶部２６は、マイクロコンピュータ１０の内部メモリ１６に記憶されたプログラムと同一のプログラムの機械語コード列を記憶する。
【００２６】
ホストコンピュータ２３のトレース情報生成部２７は、デバッグツール２１の実行情報取得部２２に対して、トレース範囲を指定したり、トレースに必要な範囲のＤＳＴ値、ヘッダ及びＤＰＣＯ値を送信するように要求したり、実行情報取得部２２から送信されてくるＤＳＴ値、ヘッダ及びＤＰＣＯ値を取得したりする。
【００２７】
なお、ヘッダ及びＤＰＣＯ値はデバッグツール２１から１ビットずつ送信されてくるので、トレース情報生成部２７は、６２ビットのヘッダを検出した後に、この検出したヘッダに続く３１ビットのＤＰＣＯ値を検出して、解析基点となる３２ビットのプログラムカウンタ値を求める。その後、トレース情報生成部２７は、取得したＤＳＴ値と求めた３２ビットのプログラムカウンタ値とに基づいてトレース情報を生成する。なお、トレース情報の生成に際しては、プログラム情報記憶部２６に記憶されたプログラムの機械語コード列も用いられる。
【００２８】
これにより、トレース情報生成部２７は、ＣＰＵ１２においてＰＣ絶対分岐命令が発生しなくても、ＤＳＴ値及び解析基点となる３２ビットのプログラムカウンタ値を得られるため、ＰＣ絶対分岐命令が発生しないとホストコンピュータ２３においてトレースができないという問題が解決される。
【００２９】
ホストコンピュータ２３のプログラム情報書き込み部２９は、マイクロコンピュータ１０の内部メモリ１６にロードしたプログラムと同じプログラムをプログラム情報記憶部２６にロードしたり、マイクロコンピュータ１０の内部メモリ１６に記憶されているプログラムコードを読み出してプログラム情報記憶部２６に書き込んだり、プログラム情報記憶部２６に記憶されたプログラムをマイクロコンピュータ１０のプログラムと同じ内容になるよう書き換えたりする処理を行う。
【００３０】
以上の説明では、ヘッダのビットパターンとして、３２ビットのプログラムカウンタ値の最大値に相当する「１」が３１個続くビット列の後ろに、３２ビットのプログラムカウンタ値の最小値に相当する「０」が３１個続くビット列を繋げたものを用いたが、この２つのビット列の順番は逆にしても良い。
【００３１】
また、ヘッダを示すビットパターンはＤＰＣＯ値と区別できるものであれば良いので、例えば図３に示すような「１」が８個続いたビットパターンを用いても良い。但し、この場合には、ヘッダとＤＰＣＯ値とを区別するために、ＤＰＣＯ値において、「１」が７個続いた値となった場合には、その後ろにダミーデータとして「０」を挿入する。
この場合には、ホストコンピュータ２３のトレース情報生成部２７は、「１」が８個続くヘッダを検出した後にＤＰＣＯ値を検出するときに、「１」が７個続いた後のビットはダミーデータとして無視してＤＰＣＯ値を検出し、解析基点となるプログラムカウント値を求める。
【００３２】
ＣＰＵ１２は、図２及び図３に示すように、ヘッダが付加されたＤＰＣＯ値を実行情報出力部１４に出力しても良いが、ＰＣ絶対分岐命令を実行した場合には、図４に示すように、分岐先のプログラムカウンタ値を示す値（以下、「分岐先のＤＰＣＯ値」と称する。）をヘッダなしで出力しても良い。
この場合には、ホストコンピュータ２３のトレース情報生成部２７は、ＣＰＵ１２がＰＣ絶対分岐命令を実行したことを示すＤＳＴ［０１０］を受信すると、次のクロックサイクルではヘッダなしで分岐先のＤＰＣＯ値が送信されてくるものとして、解析基点となるプログラムカウント値を求める。
【００３３】
ＣＰＵ１２は、図２及び図３に示すように、ヘッダが付加されたＤＰＣＯ値を繰り返して実行情報出力部１４に出力しても良いが、ヘッダが付加されたＤＰＣＯ値を周期的又は間歇的に実行情報出力部１４に出力して、ヘッダが付加されたＤＰＣＯ値を出力しないときには、ヘッダなしの固定値（例えば、「１」）をＤＰＣＯ値として実行情報出力部１４に出力しても良い。
この場合には、ホストコンピュータ２３のトレース情報生成部２７は、ヘッダを検出した場合にのみ、検出したヘッダに続くＤＰＣＯ値を検出して、解析基点となるプログラムカウント値を求める。
【００３４】
なお、ヘッダが付加されたＤＰＣＯ値が周期的又は間歇的に実行情報出力部１４に出力されても、ホストコンピュータ２３は、次の理由によりトレースをすることができる。例えば、ＣＰＵ１２が命令をアドレスの順番に実行している場合（ＤＳＴ［０００］の場合）には、ホストコンピュータ２３は、プログラムカウンタがどこまで進んだか分かるので、ＤＰＣＯ値が分からなくてもプログラムの命令コードからトレースすることができる。また、ＣＰＵ１２がＰＣ相対分岐命令を実行した場合（ＤＳＴ［００１］の場合）には、ＰＣ相対分岐命令はプログラム中に明示的に記述されたアドレスに分岐する命令であり、命令コードから分岐先を判断できるので、ホストコンピュータ２３は、ＤＰＣＯ値が分からなくてもトレースすることができる。
【００３５】
以上の説明においては、ＤＰＣＯ値（プログラムカウント値を示す値）として、３２ビットのプログラムカウント値の最下位ビットを除いた３１ビットの値を用いたが、３２ビットのプログラムカウント値をそのまま用いても良い。
【００３６】
また、マイクロコンピュータ１０からＤＰＣＯ値を１ビットずつシリアルに出力したが、ＤＰＣＯ値出力用の専用端子を複数個設けて、ＤＰＣＯ値を数ビットずつシリアルに出力しても良い。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態に係るマイクロコンピュータ及びそのデバッグシステムの構成を示す図である。
【図２】図１の実行情報出力部１４から出力されるＤＳＴ値、ヘッダ及びＤＰＣＯ値の一例を示す図である。
【図３】図１の実行情報出力部１４から出力されるＤＳＴ値、ヘッダ及びＤＰＣＯ値の他の例を示す図である。
【図４】図１の実行情報出力部１４から出力されるＤＳＴ値、ヘッダ及びＤＰＣＯ値の更に他の例を示す図である。
【図５】従来のデバッグシステムにおいて、マイクロコンピュータから出力されるＤＳＴ値及びＤＰＣＯ値の一例を示す図である。
【符号の説明】
【００３８】
１０  マイクロコンピュータ、１２  ＣＰＵ、１４  実行情報出力部、１６  内部メモリ、２０  デバッグシステム、２１  デバッグツール、２２  実行情報取得部、２３  ホストコンピュータ、２４  トレースメモリ、２６  プログラム情報記憶部、２７  トレース情報生成部、２８  ターゲットメモリ書き込み部、２９  プログラム情報書き込み部
【図１】
2006107120.tif 000003
【図２】
2006107120.tif 000004
【図３】
2006107120.tif 000005
【図４】
2006107120.tif 000006
【図５】
2006107120.tif 000007