(57)【要約】【課題】メモリ空間へのアクセス履歴取得を可能とするデバッグ装置及びデバッグ方法を提供する。【解決手段】オンチップデバッグ機能を備えたマイクロプロセッサ２が実装されたターゲットボード１と、マイクロプロセッサ２に接続され、デバッグ機能を補助するプローブ８と、プローブ８を介してマイクロプロセッサ２に接続され、デバッグを行うユーザー端末９とを備え、マイクロプロセッサ２は、命令を実行するＣＰＵ３と、命令の実行履歴を取得するデバッグ回路４を有するデバッグ装置。【選択図】    図１
2004206283.tif 000002
【特許請求の範囲】
【請求項１】
オンチップデバッグ機能を備えたマイクロプロセッサが実装されたターゲットボードと、
前記マイクロプロセッサに接続され、デバッグ機能を補助するプローブと、
前記プローブを介してマイクロプロセッサに接続され、デバッグを行うユーザー端末とを備え、
前記マイクロプロセッサは、命令を実行するＣＰＵと、前記命令の実行履歴を取得するデバッグ回路を有することを特徴とするデバッグ装置。
【請求項２】
前記デバッグ回路は、
前記命令、前記命令の実効アドレス及び履歴情報を格納するメモリと、
前記ユーザー端末から指定された前記命令を前記メモリ上のアドレスを参照し取得し、取得した前記命令をデコードして前記実効アドレスを求め、前記メモリに格納されている前記実効アドレスへアクセスするプログラムカウンタと、
前記メモリ中に指定領域としてアクセス履歴を取得する範囲を設定する履歴領域設定レジスタと、
前記実効アドレスが前記指定領域にあるか否かを判断し、前記指定領域にある場合は例外を発生させる比較器と
前記例外を発生させた命令の実効アドレスを格納する履歴例外アドレスレジスタ
とを有することを特徴とする請求項１記載のデバッグ装置。
【請求項３】
前記デバッグ回路は、前記履歴例外アドレスレジスタに格納されている前記実効アドレスを取得し、前記実効アドレスにある命令を取得し、前記命令を解読し、前記命令の履歴情報を履歴用バッファに格納する例外ハンドラを更に有することを特徴とする請求項１又は２のいずれか１項記載のデバッグ装置。
【請求項４】
前記履歴情報は、命令の種類、アクセスサイズ、実効アドレス、書き込み値、及び読み出し値とからなることを特徴とする請求項３記載のデバッグ装置。
【請求項５】
ＣＰＵ及びオンチップデバッグ機能を備えたデバッグ回路を有するマイクロプロセッサのデバッグ方法であって、
前記マイクロプロセッサに接続されたメモリに格納されている命令を取得し、
前記命令から実効アドレスを算出し、
前記実効アドレスが前記メモリのメモリ空間中に設定されている指定空間に存在するか否かを判断し、
前記実効アドレスが前記メモリ空間中に設定されている指定空間に存在する場合は、ＣＰＵ例外を発生させ、
前記ＣＰＵ例外を発生させた前記命令の実効アドレスとプログラムカウンタを履歴例外アドレスレジスタへ格納する
ことを特徴とするデバッグ方法。
【請求項６】
前記履歴例外アドレスレジスタに格納されている前記実効アドレスを取得し、
前記実効アドレスに基づき前記メモリ空間から前記ＣＰＵ例外を発生させた命令を取得し、
前記命令の種類、アクセスサイズ、実効アドレス、書き込み値、読み出し値を取得し、前記メモリ空間に設定した履歴用バッファに格納する
ことを特徴とする請求項５記載のデバッグ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データアクセスの履歴取得機能を有するデバッグ装置及びデバッグ方法に関するものである。
【０００２】
【従来の技術】
従来、組み込みマイクロプロセッサユニット（ＭＰＵ）装置のデバッグには、フルインサーキットエミュレータ（フルＩＣＥ）が使用されていた。このフルＩＣＥでは、ターゲットボード上のマイクロプロセッサを取り外すか無効にしてエミュレータプローブ（エミュレーションポッド）と置き換えなければならなかった。また、このフルＩＣＥは、ＭＰＵのクロック周波数が高くなると適用できなくなり、中央演算処理装置（ＣＰＵ）の動作周波数を上げにくいという問題を有していた。また、「設置場所をとる」、「実チップとは別のＥＶＡチップを必要とする」などの理由から、近年ではフルＩＣＥは主流ではなくなってきた。そこで、フルＩＣＥの機能のうち必要最小限の機能をデバッグ用のサポートユニット（DSU：デバッグ・サポート・ユニット）として予めマイコン内に埋込、エンハンスドJTAG（EJTAG）方式やN-Wire方式等でデバッグすることが一般的となってきた。
【０００３】
【特許文献１】
特開平１０−１６１９０３号公報
【０００４】
【発明が解決しようとする課題】
しかし、DSUをマイコン内に埋め込む場合、マイコン内にDSUを内蔵させなければならない上、少ないピン数（１０本程度）でパーソナルコンピュータと通信しなければならないという問題点がある。また、マイコン内に埋め込むDSUの機能は、開発段階においてのみ使用されるものであり、製品化された後には必要ないものである。更に、DSUはマイコン内に埋め込むことから、フルICEにおいて備えていた機能を全て組み込むことは、チップサイズの面からも、コストの面からも不利であるため、必要最低限の機能しか有していない。従って、フルICEで備えていたアクセス履歴等、ベンチで有用な機能は、DSUには含まれていないという問題点がある。
【０００５】
本発明は上述の如き従来の課題を解決するためになされたもので、その目的は、必要最小限のハードウェア資源を用いて、メモリ空間（入出力空間）へのアクセス履歴を取得することができるデバッグ装置及びデバッグ方法を提供することである。また、本発明のその他の目的は、履歴取得処理の大半をソフトウェアで処理することにより、リアルタイム性を確保したうえで、利用者の都合に合わせた柔軟でコスト的にも有利なデバッグ装置及びデバッグ方法を提供することである。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の特徴は、オンチップデバッグ機能を備えたマイクロプロセッサが実装されたターゲットボード、マイクロプロセッサに接続され、デバッグ機能を補助するプローブと、プローブを介してマイクロプロセッサに接続され、デバッグを行うユーザー端末とを備え、マイクロプロセッサは、命令を実行するＣＰＵと、命令の実行履歴を取得するデバッグ回路を有するデバッグ装置としたことである。
【０００７】
本発明の第１の特徴に係るデバッグ装置では、必要最小限のハードウェア資源をチップに組み込み、メモリ空間へのアクセス履歴を取得することができるデバッグ装置を提供することができる。また、本発明の第１の特徴に係るデバッグ装置では、履歴取得処理の大半をソフトウェアで処理することにより、リアルタイム性を確保した上で、利用者の都合に合わせた柔軟で低コストなデバッグ装置を提供することができる。
【０００８】
本発明の第２の特徴は、メモリ、ＣＰＵ及びオンチップデバッグ機能を備えたデバッグ回路を有するマイクロプロセッサのデバッグ方法であって、（イ）マイクロプロセッサに接続されたメモリに格納されている命令を取得し、（ロ）命令から実効アドレスを算出し、（ハ）実効アドレスがメモリ空間中に設定されている指定空間に存在するか否かを判断し、（ニ）実効アドレスがメモリ空間中に設定されている指定空間に存在する場合は、ＣＰＵ例外を発生させ、（ホ）ＣＰＵ例外を発生させた命令の実効アドレスとプログラムカウンタを履歴例外アドレスレジスタへ格納するデバッグ方法としたことである。
【０００９】
本発明の第２の特徴に係るデバッグ方法では、メモリ空間へのアクセス履歴の取得が可能なデバッグ方法を提供することができる。また、履歴取得処理の大半をソフトウェアで処理することにより、利用者の都合に合わせた柔軟で低コストなデバッグ方法を提供することができる。
【００１０】
【発明の実施の形態】
次に、図面を参照して、本発明の実施形態について説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
【００１１】
図１に示す本発明の実施形態に係るデバッグ装置は、オンチップデバッグ機能を備えたマイクロプロセッサ２を有するターゲットボード１と、ターゲットボード１に接続されたプローブ（エミュレータプローブ）８と、プローブ８に接続されたユーザー端末９から少なくとも構成される。
【００１２】
ターゲットボード１には、オンチップデバッグ機能を備えたマイクロプロセッサ２、ＲＯＭ６、ＲＡＭ７および図示しない各種機能回路部等が実装されている。マイクロプロセッサ２は、中央演算処理装置（ＣＰＵ）３と、デバッグ回路４とから少なくとも構成されている。デバッグ回路４は、プログラムカウンタ１１、履歴例外アドレスレジスタ１２、汎用レジスタ１３、履歴領域設定レジスタ１４、比較器１５、例外ハンドラ１６とから少なくとも構成される。ＣＰＵ３は、メモリ空間へのアクセス命令を実行し、例外が発生した際には、次の命令の実行を中断し、例外ハンドラ１６を起動し、例外処理に移行する。
【００１３】
図２を参照し、デバッグ回路４の詳細な構成について説明する。プログラムカウンタ１１は、パーソナルコンピュータ９が指定するメモリマップ上のアドレスに格納されている命令を取得（フェッチ）し、取得した命令をデコードし、実効アドレスを求め、メモリへアクセスする。履歴例外アドレスレジスタ１２は、プログラムカウンタで求めた実効アドレスが、履歴領域設定レジスタ１４で設定された範囲へアクセス（書き込み操作又は読み出し操作）した命令のアドレスを保存するためのレジスタである。汎用レジスタ１３は、ＣＰＵ３が命令を実行する際に一時的にデータを格納する高速で小容量の記憶装置であり、汎用的に使えるものである。履歴領域設定レジスタ１４は、メモリ空間へのアクセス履歴（書き込み操作、メモリ空間からの読み出し操作の履歴）を取得する範囲を設定するためのレジスタである。図３に示すように、履歴領域設定レジスタ１４は、メモリ空間２０の指定領域２０ｂに、アクセス履歴を取得する範囲を設定しておく。比較器１５は、プログラムカウンタ１１がメモリ空間２０へアクセスした時、実効アドレスが履歴領域設定レジスタ１４で設定された指定領域２０ｂにあるか否かを判断する。そして、実効アドレスが指定領域２０ｂの範囲内にある場合は、その命令の実効アドレスを履歴例外アドレスレジスタ１２へ格納し、ＣＰＵ例外を発生させ、履歴例外アドレスレジスタ１２に実効アドレスの保存を要求する。
【００１４】
例外ハンドラ１６は、履歴例外アドレスレジスタ１２に保存してあるアドレスを読み出し、そのアドレス値にある例外を発生させた命令を取得する。そして、その命令を解読し、いつ、どのような操作を、どこに、どのように行い、どのような結果を取得したのかという情報を取得する。即ち、（１）命令の種類（読み出し／書き込み）、（２）アクセスサイズ（バイトサイズ）、（３）アクセス先のアドレス（実効アドレス）、（４）値（書き込みの場合は書き込み値、読み出しの場合は読み出し値）を取得する。更に、タイムスタンプが必要な場合は、タイマー等の値を読み出し、現在時刻を取得する。そして、図４に示すように、「時刻」を３バイト、「命令の種類」を４ビット、「アクセスサイズ」を４ビット、「命令アドレス」又は履歴アドレスを４バイト、「データアドレス」又は実効アドレスを４バイト、命令を実行した結果得られた「値」を４バイトというようなフォーマットで、アクセス履歴用バッファ２０ａに保存する。なお、図４に示すようなフォーマットでアクセス履歴用バッファ２０ａに保存することにより、ユーザーがデバッグに必要な情報を選択し、任意に定義することができる。この例外ハンドラ１６は、ＣＰＵ例外発生時に起動され、履歴の取得に先立ち予めユーザー端末９において設定される。そして、図４に示すようなフォーマットでアクセス履歴用バッファ２０ａに保存することにより、ユーザーがデバッグに必要な情報を選択し、任意に定義することができる。尚、通常は、デバッグ用に必要な履歴情報を取得し、アクセス履歴用バッファ２０ａなどの出力先に書き込む処理が記述される。
【００１５】
ＲＯＭ６は、ＣＰＵ３において実行されるプログラムを格納しているプログラム記憶装置等として機能する。ＲＡＭ７は、ＣＰＵ３におけるプログラム実行処理中に利用されるデータ等を一時的に格納したり、作業領域として利用される一時的なデータメモリ等として機能する。プローブ８は、オンチップデバッグ機能を持ったプロセッサのために組込みソフトウェアのデバッグ機能を補助するものであって、マイクロプロセッサ２に接続される。本発明の実施形態においては、プローブ８としてEJTAG規格やN-Wire規格等のインタフェースを用いるが、その他の規格のインタフェースを用いても良い。ユーザー端末９は、ＣＰＵ、入力装置、出力装置、主記憶装置、補助記憶装置（ハードディスク）等を備え、プローブ８を介して、マイクロプロセッサ２において組み込みソフトウェアのデバッグを行う。入力装置は、キーボード、マウス、ＯＣＲ等の認識装置、イメージスキャナ等の図形入力装置、音声認識装置等の特殊入力装置等により、出力装置は、液晶ディスプレイ、ＣＲＴディスプレイ等の表示装置、インクジェットプリンタ、レーザープリンタなどの印刷装置などによりそれぞれ構成される。主記憶装置には、ＲＯＭ及びＲＡＭが組み込まれており、システム全体を制御するプログラムやデータ等を記憶する。補助記憶装置は、フレキシブルディスク装置、磁気ディスク装置、ＣＤ−ＲＯＭ、光ディスク装置等、主記憶装置に読み込める形式で、プログラムやデータを保存する。
【００１６】
（デバッグ方法）
次に、図５を参照し、本発明の実施形態に係るデバッグ方法の処理手順について説明する。
【００１７】
（イ）ステップＳ１１において、ＣＰＵ３は、ユーザー端末９がプローブ８を介してマイクロプロセッサ２へ指定したアクセス命令を実行する。
【００１８】
（ロ）次に、ステップＳ１２において、プログラムカウンタ１１は、メモリ空間２０へアクセスし、ユーザー端末９から指定された命令を取得する。そして、ステップＳ１４において、プログラムカウンタ１１は、取得した命令から実効アドレスＡ２１を算出する。
【００１９】
（ハ）ステップＳ１６において、比較器１５は、算出された実効アドレスが履歴領域設定レジスタ１４で設定された指定範囲にあるか否かを判断する。実効アドレスが指定範囲内にない場合は、ステップＳ１７の処理へ進み、次の命令があるか否かを判断する。実効アドレスが指定範囲内にあるものと一致する場合は、ステップＳ２１において、ＣＰＵ例外を発生させる。ステップＳ２２において、ＣＰＵ例外を発生させた命令とそのプログラムカウンタを履歴例外アドレスレジスタ１２へ格納する。そして、ステップＳ２３において、例外ハンドラ１６は、例外処理を実行する。
【００２０】
（ニ）ステップＳ２３の例外処理から復帰すると、ステップＳ１７の処理へ進み、デバッグ回路４は、次の命令があるか否かを判断する。次の命令がある場合は、ステップＳ１２の処理へ戻り、ステップＳ１２からステップＳ１７までの処理を繰り返す。次の命令がない場合は、処理を終了する。
【００２１】
（例外処理）
次に、図５のステップＳ２３において、例外ハンドラ１６が行う例外処理の処理手順について、図６を参照し説明する。
【００２２】
（イ）まず、ステップＳ３１において、例外ハンドラ１６は、履歴例外アドレスレジスタ１２にセットされているアドレスにアクセスする。そして、ステップＳ３２において、例外ハンドラ１６は、ＣＰＵ例外を発生させた命令を履歴例外アドレスレジスタ１２から取得する。
【００２３】
（ロ）次に、ステップＳ３３において、例外ハンドラ１６は、取得した命令について、命令の種類（読み出し／書き込み）、アクセスサイズ（バイトサイズ）、実効アドレス（アクセス先のアドレス）、値（書き込み値／読み出し値）を求める。また、タイムスタンプが必要な場合は、タイマー等の値を読み出し、現在時刻を取得する。そして、ステップＳ３４において、例外ハンドラ１６は、図４に示すように、ステップＳ３３において求めた命令の種類３１ｂ、アクセスサイズ３１ｃ、実効アドレス３１ｅ、値３１ｆなどを、時刻３１ａ及び命令アドレス３１ｄなどと共にメモリ上のアクセス履歴用バッファ２０ａに格納する。
【００２４】
なお、図４に示すようなフォーマットは、ユーザーが任意に定義し、デバッグに必要な情報を選択することができる。アクセス履歴用バッファ２０ａに保存されたデータは、ＣＰＵ３の空き時間に適宜読み出してホストマシンに転送したり、表示用機器に表示させることができる。アクセス履歴用バッファ２０ａとして、デュアルポートメモリなどを用いれば、ＣＰＵ３の関与なしにホストマシン側からバッファの内容を読み出すこともできる。また、アクセス履歴用バッファ２０ａとして通信用ＦＩＦＯバッファ等を用いれば、通信デバイスがＣＰＵ３の関与なしに自動的にホストマシン側にバッファの内容を送信してくれる。
【００２５】
本発明の第１の実施の形態に係るデバッグ装置及びデバッグ方法を用いれば、必要最小限のハードウェア資源を用いて、メモリ空間（入出力空間）へのアクセス履歴の取得を可能とする。また、本発明の第１の実施の形態に係るデバッグ装置及びデバッグ方法を用いれば、履歴取得処理の大半をソフトウェアで処理することにより、リアルタイム性を確保したうえで、利用者の都合に合わせた柔軟で低コストなデバッグ装置及びデバッグ方法を提供することができる。
【００２６】
（その他の実施の形態）
上記のように、本発明の実施の形態について記載したが、この開示の一部をなす論述及び図面は、この発明を限定するものであると理解すべきではない。この開示から、当業者には様々な代替実施の形態及び実施例が明らかとなろう。
【００２７】
本発明はここでは記載していない様々な実施の形態などを含むことは勿論である。従って、本発明の技術的な範囲は上記説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【００２８】
【発明の効果】
本発明によれば、必要最小限のハードウェア資源を用いて、メモリ空間（入出力空間）へのアクセス履歴を取得することができるデバッグ装置及びデバッグ方法を提供することができる。
【００２９】
また、本発明によれば、履歴取得処理の大半をソフトウェアで処理することにより、リアルタイム性を確保したうえで、利用者の都合に合わせた柔軟でコスト的にも有利なデバッグ装置及びデバッグ方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るデバッグ装置の構成図である。
【図２】図１に示すデバッグ回路の構成を示す。
【図３】本発明の実施形態に係るデバッグ装置の概念図である。
【図４】本発明の実施形態に係る履歴領域設定レジスタの構成を示す。
【図５】本発明の実施形態に係るデバッグ方法の処理手順を示すフロー図である。
【図６】図５に示すデバッグ方法の処理手順のうち、例外処理の処理手順を示すフロー図である。
【符号の説明】
１  ターゲットボード
２  マイクロプロセッサ
３  ＣＰＵ
４  履歴取得部
６  ＲＯＭ
７  ＲＡＭ
８  プローブ
９  ユーザー端末
１１  プログラムカウンタ
１２  履歴例外アドレスレジスタ
１３  汎用レジスタ
１４  履歴領域設定レジスタ
１５  比較器
１６  例外ハンドラ
２０  メモリマップ
２０ａ  アクセス履歴用バッファ
２０ｂ  指定領域
２０ｃ  プログラム
２１  実効アドレス
３１ａ  時刻
３１ｂ  命令の種類
３１ｃ  アクセスサイズ
３１ｄ  命令アドレス
３１ｅ  実効アドレス
３１ｆ  値
【図１】
2004206283.tif 000003
【図２】
2004206283.tif 000004
【図３】
2004206283.tif 000005
【図４】
2004206283.tif 000006
【図５】
2004206283.tif 000007
【図６】
2004206283.tif 000008