(57)【要約】【課題】ユーザプログラムのデバッグを簡易かつ低コストで実行し得るマイクロコンピュータを得る。【解決手段】マイクロコンピュータ１は、同一のＩＣチップ内に形成された、ＣＰＵ２、デバッグモジュール３、ＲＡＭ４、ＲＯＭ５、周辺Ｉ／Ｏ６、外部バス制御部７、アドレスバス８、及びデータバス９を備えている。ＲＡＭ４の記憶領域のうちユーザプログラムが格納されていない任意の領域が特定領域４０として指定され、ユーザプログラムのデバッグに必要なトレース情報は、ＤＭＡ機能を有するデバッグモジュール３によって特定領域４０に格納される。従って、エミュレータ専用のＩＣチップやデバッグ用の専用記憶装置を用いる必要がないため、ユーザプログラムのデバッグを簡易かつ低コストで実行することができる。【選択図】図１
2006318172.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣチップ内に形成されたＣＰＵと、
前記ＩＣチップ内に形成され、前記ＣＰＵがアクセス可能なメモリと、
前記ＩＣチップ内に形成され、前記ＣＰＵを介さずに前記メモリに直接アクセス可能なデバッグモジュールと
を備え、
前記メモリが有する記憶領域の一部を、プログラムのデバッグに必要なトレース情報が格納される特定領域として指定可能であり、
前記トレース情報は、前記デバッグモジュールから前記メモリへの直接アクセスによって前記特定領域に格納される、マイクロコンピュータ。
【請求項２】
前記デバッグモジュールは、
前記特定領域として指定される部分の前記記憶領域のアドレスが設定される第１のレジスタと、
前記トレース情報を格納するために現在アクセスされている部分の前記特定領域のアドレスが設定される第２のレジスタと
を有する、請求項１に記載のマイクロコンピュータ。
【請求項３】
前記トレース情報を前記ＩＣチップの外部に出力するための出力端子をさらに備え、
前記デバッグモジュールは、前記トレース情報を、前記出力端子を介して外部に出力するか、前記特定領域に格納するかを選択する選択手段を有する、請求項１又は２に記載のマイクロコンピュータ。
【請求項４】
前記出力端子を介して外部に出力される前記トレース情報と、前記特定領域に格納される前記トレース情報とでは、情報の形式が互いに異なることを特徴とする、請求項３に記載のマイクロコンピュータ。
【請求項５】
前記特定領域の全領域に前記トレース情報が格納された場合の処理として、
（ａ）前記デバッグモジュールから前記特定領域への前記トレース情報の格納動作を終了させる処理、
（ｂ）前記プログラムの実行が終了するまで、すでに前記特定領域に格納されている前記トレース情報を、新たなトレース情報によって上書きする処理、
（ｃ）前記プログラムの実行を停止させ、デバッグ例外を発生させる処理、
のいずれかを任意に選択可能である、請求項１〜４のいずれか一つに記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関し、特に、オンチップデバッグ機能を備えたマイクロコンピュータに関する。
【背景技術】
【０００２】
マイクロコンピュータのプログラムデバッグを行うためにプログラムの動作履歴をトレースする方法として、従来は、以下のような方法が用いられている。
【０００３】
第１の方法として、内部バスを取り出したエミュレータ専用のＩＣチップを使用する方法がある。
【０００４】
第２の方法として、デバッグに必要な情報（以下「トレース情報」と称す）を生成するオンチップデバッグ機能をＩＣチップ内に用意し、生成されたトレース情報を出力端子からＩＣチップの外部に出力する方法がある。
【０００５】
第３の方法として、トレース情報を生成するオンチップデバッグ機能と、トレース情報を記憶するための専用記憶装置（メモリやＦＩＦＯ等）とをＩＣチップ内に用意し、生成されたトレース情報を専用記憶装置に蓄積する方法がある。
【０００６】
なお、オンチップデバッグ機能を備えたマイクロコンピュータに関する技術は、例えば下記特許文献１，２に開示されている。
【０００７】
【特許文献１】特開２００４−１３２８９号公報
【特許文献２】特開２００４−２０６２８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の第１の方法によると、内部バスの動作周波数が高くなると、エミュレータ専用のＩＣチップを用いたシステムの実現が困難になるという問題がある。
【０００９】
また、従来の第２の方法によると、オンチップデバッグ機能を用いることにより、内部バスの動作周波数についての制約はなくなる。ところが、トレース情報を出力するための出力端子の個数や動作周波数によって、出力可能なトレース情報のデータ量が決定されるため、デバッグ対象となるＩＣチップの規模やコストによっては、トレース情報出力用の出力端子の個数や動作周波数を十分に確保することができないという問題がある。
【００１０】
さらに、従来の第３の方法によると、トレース情報を記憶するためだけの専用記憶装置をＩＣチップ内に用意することは、チップ面積の増大やコストの上昇を招くという問題がある。
【００１１】
本発明はかかる問題を解決するために成されたものであり、エミュレータ専用のＩＣチップやデバッグ用の専用記憶装置を用いることなく、プログラムのデバッグを容易かつ低コストで実行し得るマイクロコンピュータを得ることを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係るマイクロコンピュータは、ＩＣチップ内に形成されたＣＰＵと、前記ＩＣチップ内に形成され、前記ＣＰＵによって実行されるプログラムの格納領域及び前記プログラムの実行時に使用される領域であるメモリと、前記ＩＣチップ内に形成され、前記ＣＰＵを介さずに前記メモリに直接アクセス可能なデバッグモジュールとを備え、前記メモリが有する記憶領域の一部を、前記プログラムのデバッグに必要なトレース情報が格納される特定領域として指定可能であり、前記トレース情報は、前記デバッグモジュールから前記メモリへの直接アクセスによって前記特定領域に格納されることを特徴とする。
【発明の効果】
【００１３】
本発明に係るマイクロコンピュータによれば、プログラムのデバッグを容易に行え、かつ低コストで実現できる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相当する要素を示すものとする。
【００１５】
図１は、本発明の実施の形態に係るマイクロコンピュータ１の機能構成を示すブロック図である。マイクロコンピュータ１は、同一のＩＣチップ内に形成された、ＣＰＵ２、デバッグモジュール３、ＲＡＭ４、ＲＯＭ５、周辺Ｉ／Ｏ６、外部バス制御部７、アドレスバス８、及びデータバス９を備えている。デバッグモジュール３は、ＪＴＡＧ制御部１０、リソースアクセス制御部１１、及びトレース制御部１２を有している。リソースアクセス制御部１１は、ＤＭＡ（Direct Memory Access）機能を有しており、ＣＰＵ２を介さずにＲＡＭ４に直接アクセスすることが可能である。
【００１６】
ＲＯＭ５には、主にＣＰＵ２によって実行されるプログラムが格納される。ＲＡＭ４は、主にＣＰＵ２が実行するプログラムの作業領域として使用される。ＣＰＵ２は、ＲＡＭ４又はＲＯＭ５等のメモリに置かれたプログラムを実行する。また、後述するように、ＲＡＭ４には、ユーザプログラムのデバッグに必要なトレース情報が格納される。つまり、ＲＡＭ４が有する記憶領域の一部を、トレース情報が格納される領域（以下「特定領域」と称す）４０として指定可能であり、トレース情報は、デバッグモジュールか３らＲＡＭ４への直接アクセスによって特定領域４０に格納される。
【００１７】
ＩＣチップ上には、IEEE1149.1で定められたＪＴＡＧインタフェース１３と、トレース情報をＩＣチップの外部に出力するための出力端子１４とが形成されている。ＪＴＡＧインタフェース１３はＪＴＡＧ制御部１０に接続されており、出力端子１４はトレース制御部１２に接続されている。また、ＪＴＡＧインタフェース１３及び出力端子１４は、通信経路１６を介して、ＩＣチップの外部のデバッグツール１５に接続可能である。
【００１８】
図２は、デバッグモジュール３が有するトレース制御部１２の機能構成を示すブロック図である。トレース制御部１２は、ＣＰＵ２から出力された信号及びバスアクセスの状態を取り込み、トレース情報を出力する。トレース制御部１２は、トレース情報を出力するための出力制御部２０を有している。
【００１９】
出力制御部２０は、トレース情報を、ＩＣチップの外部に出力するために出力端子１４に向けて出力するか、あるいはＲＡＭ４の特定領域４０に格納するためにリソースアクセス制御部１１へ向けて出力するかを、ユーザの指定によって選択する選択回路２１を有している。トレース情報を外部に出力するか特定領域４０に格納するかを任意に選択可能としたことにより、ユーザの利便性を向上することができる。
【００２０】
図３は、分岐トレースに関して、出力制御部２０から出力端子１４を介してＩＣチップの外部に出力されたトレース情報の形式を示す図である。分岐命令が発生した後にＣＰＵ２が連続して実行した命令のバイト数（ＳＩＺＥ）と、分岐先アドレス（ＴＡ）とが、複数のパケットに分割されて出力端子１４から出力される。これにより、ＣＰＵ２が実行した命令列に関する情報をトレースすることが可能となる。
【００２１】
同様に、図４は、データトレース（ＣＰＵ２の命令によるオペランドアクセス情報のトレース）に関して、出力制御部２０から出力端子１４を介してＩＣチップの外部に出力されたトレース情報の形式を示す図である。複数のパケットに分割されて出力端子１４から出力されるトレース情報には、ＣＰＵ２によって実行されたデータ（ＤＡＴＡ）及びアドレス（ＡＤＤＲ）が含まれている。
【００２２】
図５は、デバッグモジュール３が有するＪＴＡＧ制御部１０及びリソースアクセス制御部１１の機能構成を示すブロック図である。ＪＴＡＧ制御部１０は、ＴＡＰコントローラ３０とＪＴＡＧレジスタ３１とを有しており、リソースアクセス制御部１１は、デバッグ用ＤＭＡ機能部３２を有している。デバッグ用ＤＭＡ機能部３２は、レジスタ３３〜３６を有している。
【００２３】
ＪＴＡＧレジスタ３１には、デバッグ用ＤＭＡ機能部３２によってアクセスされるアドレス、デバッグ用ＤＭＡ機能部３２によって扱われるデータ、及びアクセスサイズや読み書きの種別等が設定される。図１に示した外部のデバッグツール１５から送られてきた指示は、ＪＴＡＧインタフェース１３を介してＴＡＰコントローラ３０に入力され、ＴＡＰコントローラ３０がＪＴＡＧレジスタ３１を設定又は参照することによって、その指示が実行される。ＪＴＡＧレジスタ３１はデバッグ用ＤＭＡ機能部３２のレジスタ３３に接続されており、デバッグツール１５は、ＣＰＵ２を介さずにＲＡＭ４に直接アクセスすることが可能である。
【００２４】
ここで、デバッグ用ＤＭＡ機能部３２は、ＣＰＵ２がデバッグ対象であるユーザプログラムを実行中であっても、ＣＰＵ２による実行を中断させることなく、メモリリソースの設定及び参照が可能である。これは、ＣＰＵ２のプログラム実行を中断してデバッグツール１５から要求されたメモリアクセスを行った後に、元のプログラムに復帰するという処理を行った場合に比べて、デバッグ用ＤＭＡ機能部３２によるアドレスバス８及びデータバス９の占有によって発生するオーバーヘッドが遙かに少ないためである。
【００２５】
デバッグ用ＤＭＡ機能部３２は、デバッグツール１５からのＤＭＡを処理するレジスタ３３に加えて、レジスタ３４〜３６を有している。レジスタ３４には特定領域４０の先頭アドレスが設定され、レジスタ３６には特定領域４０のサイズが設定される。つまり、レジスタ３４，３６によって、特定領域４０として指定される部分のＲＡＭ４の記憶領域のアドレスが設定される。レジスタ３４，３６はＣＰＵ２及びデバッグ用ＤＭＡ機能部３２によって設定及び変更が可能であり、ユーザは、ＲＡＭ４の記憶領域のうちプログラムが使用していない領域を、特定領域４０として指定することができる。
【００２６】
レジスタ３５には、トレース制御部１２の選択回路２１（図２参照）によって特定領域４０へのトレース情報の格納が選択されている場合において、トレース情報を格納するために現在アクセスされている部分の特定領域４０のアドレスが設定される。レジスタ３５は、ＣＰＵ２及びデバッグ用ＤＭＡ機能部３２によって参照可能である。レジスタ３５を参照することによって、特定領域４０のうちのどの程度までトレース情報が格納されたかを把握することができる。
【００２７】
デバッグ用ＤＭＡ機能部３２は、トレース制御部１２からリソースアクセス制御部１１に送られてきたトレース情報を書き込みデータとして選択することが可能であり、これにより、トレース制御部１２から送られてきたトレース情報がＲＡＭ４内の特定領域４０へ格納される。
【００２８】
図６は、デバッグ用ＤＭＡ機能部３２によって特定領域４０へトレース情報が格納される状況を模式的に示す図である。レジスタ３５に設定されているアドレスは、デバッグ用ＤＭＡ機能部３２からアドレスバス８を介して、ＲＡＭ４に送られる。また、トレース制御部１２から出力されたトレース情報は、デバッグ用ＤＭＡ機能部３２及びデータバス９をこの順に介して、ＲＡＭ４に送られる。そして、トレース制御部１２から送られてきたトレース情報は、特定領域４０のうち、デバッグ用ＤＭＡ機能部３２から送られてきたアドレスで示される領域４１に格納される。
【００２９】
図７は、分岐トレース及びデータトレースに関して、トレース制御部１２から出力されて特定領域４０に格納されるトレース情報の形式を示す図である。図７には、識別情報等が８ビット、アドレス情報が２４ビット、データ情報が３２ビットの、合計６４ビットで一つのトレース情報が構成された例が示されている。
【００３０】
図３，４と図７とを比較すると明らかなように、出力端子１４を介してＩＣチップの外部に出力されるトレース情報（図３，４）と、特定領域４０に格納されるトレース情報（図７）とでは、情報の形式が互いに異なっている。具体的には、外部に出力されるトレース情報は複数のパケットに分割されているのに対し、特定領域４０に格納されるトレース情報は複数のパケットに分割されていない。このように、外部に出力するか特定領域４０に格納するかによってトレース情報の形式を異ならせることにより、その後にトレース情報を利用する際に、利用目的に応じてトレース情報の形式を変換し直すという手間を省略することができる。
【００３１】
図８〜１０は、特定領域４０の全領域にトレース情報が格納された場合の処理を示す模式図である。図８に示した例では、特定領域４０の最終アドレスまでトレース情報が格納された場合、デバッグモジュール３から特定領域４０へのトレース情報の格納動作が終了される。その後は、ユーザプログラムの実行は継続されるが、特定領域４０へのトレース情報の格納は行われない。
【００３２】
図９に示した例では、特定領域４０の最終アドレスまでトレース情報が格納された場合、ユーザプログラムの実行が終了するまで、すでに特定領域４０に格納されている古いトレース情報が、特定領域４０の先頭アドレスから順に、新たなトレース情報によって上書きされる。
【００３３】
図１０に示した例では、特定領域４０の最終アドレスまでトレース情報が格納された場合、デバッグ例外による割り込みが発生されてＣＰＵ２に通知されるとともに、ユーザプログラムの実行が停止される。その後は、ユーザプログラムの実行が停止されるため、特定領域４０へのトレース情報の格納も行われない。なお、特定領域４０の最終アドレスまでトレース情報が格納された場合ではなく、図１０に示すように、特定領域４０の空き容量が残り少なくなった場合に、同様の処理を行っても良い。
【００３４】
特定領域４０の全領域にトレース情報が格納された場合に、図８〜１０のいずれの処理を行うかをユーザによって任意に選択可能としたことにより、ユーザの利便性を向上することができる。
【００３５】
このように本実施の形態に係るマイクロコンピュータ１によれば、ＲＡＭ４の記憶領域のうちユーザプログラムが格納されていない任意の領域が特定領域４０として指定され、ユーザプログラムのデバッグに必要なトレース情報は、ＤＭＡ機能を有するデバッグモジュール３によって特定領域４０に格納される。従って、エミュレータ専用のＩＣチップやデバッグ用の専用記憶装置を用いる必要がないため、ユーザプログラムのデバッグを簡易かつ低コストで実行することができる。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施の形態に係るマイクロコンピュータの機能構成を示すブロック図である。
【図２】デバッグモジュールが有するトレース制御部の機能構成を示すブロック図である。
【図３】分岐トレースに関して、出力制御部から出力端子を介してＩＣチップの外部に出力されたトレース情報の形式を示す図である。
【図４】データトレースに関して、出力制御部から出力端子を介してＩＣチップの外部に出力されたトレース情報の形式を示す図である。
【図５】デバッグモジュールが有するＪＴＡＧ制御部及びリソースアクセス制御部の機能構成を示すブロック図である。
【図６】デバッグ用ＤＭＡ機能部によって特定領域へトレース情報が格納される状況を模式的に示す図である。
【図７】分岐トレース及びデータトレースに関して、トレース制御部から出力されて特定領域に格納されるトレース情報の形式を示す図である。
【図８】特定領域の全領域にトレース情報が格納された場合の処理を示す模式図である。
【図９】特定領域の全領域にトレース情報が格納された場合の処理を示す模式図である。
【図１０】特定領域の全領域にトレース情報が格納された場合の処理を示す模式図である。
【符号の説明】
【００３７】
１  マイクロコンピュータ、２  ＣＰＵ、３  デバッグモジュール、４  ＲＡＭ、１４  出力端子、２１  選択回路、３４〜３６  レジスタ、４０  特定領域。
【図１】
2006318172.tif 000003
【図２】
2006318172.tif 000004
【図３】
2006318172.tif 000005
【図４】
2006318172.tif 000006
【図５】
2006318172.tif 000007
【図６】
2006318172.tif 000008
【図７】
2006318172.tif 000009
【図８】
2006318172.tif 000010
【図９】
2006318172.tif 000011
【図１０】
2006318172.tif 000012