(57)【要約】【課題】ソフトウェアデバッグの効率向上を図る。【解決手段】制御ＬＳＩ１２には、プログラムを実行するＣＰＵコア２１及びＣＰＵコア２１がメモリ空間をアクセスする際に使用する内部バス２７が同一の半導体基板上に集積されている。そして、内部バス２７を監視してプログラム内の予め指定された変数の状態をモニタする変数ブレイク回路２２が備えられている。この変数ブレイク回路２２は、それぞれモニタする変数の状態に応じてＣＰＵコア２１の動作を一時停止させる。【選択図】      図１
2005070950.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行するＣＰＵと、
前記ＣＰＵと同一の半導体基板上に集積された前記ＣＰＵがメモリ空間をアクセスする際に使用する内部バスと、
前記内部バスを監視して前記プログラム内の予め指定された変数の状態を１以上モニタし、該モニタする変数の状態に応じて前記ＣＰＵの動作を一時停止させる変数ブレイク回路と、
を備えることを特徴とするプログラム処理装置。
【請求項２】
プログラムを実行するＣＰＵと、
前記ＣＰＵと同一の半導体基板上に集積された前記ＣＰＵがメモリ空間をアクセスする際に使用する内部バスと、
前記内部バスを監視して前記プログラム内の予め指定された変数の状態を１以上モニタし、該モニタする変数の値が前記ＣＰＵにより書き換えられる場合に前記ＣＰＵの動作を一時停止させる第１の変数ブレイクモードを有した変数ブレイク回路と、
を備えることを特徴とするプログラム処理装置。
【請求項３】
プログラムを実行するＣＰＵと、
前記ＣＰＵと同一の半導体基板上に集積された前記ＣＰＵがメモリ空間をアクセスする際に使用する内部バスと、
前記内部バスを監視して前記プログラム内の予め指定された変数の状態を１以上モニタし、該モニタする変数の値が予め指定された変数値に書き換えられる場合に前記ＣＰＵの動作を一時停止させる第２の変数ブレイクモードを有した変数ブレイク回路と、
を備えることを特徴とするプログラム処理装置。
【請求項４】
前記変数ブレイク回路は、
モニタする変数のアドレス値を１以上保持するアドレスレジスタと、
前記アドレス値に基づいてモニタした変数の値を該アドレス毎に保持するデータレジスタと
を備えることを特徴とする請求項１乃至３の何れか一項記載のプログラム処理装置。
【請求項５】
前記変数ブレイク回路は、
モニタする複数の変数に対して前記第１の変数ブレイクモード又は前記第２の変数ブレイクモードを個別に設定可能とするモード設定レジスタを備えることを特徴とする請求項２乃至４の何れか一項記載のプログラム処理装置。
【請求項６】
前記変数ブレイク回路は、
インタフェース装置を介してデバッグ装置に接続され、前記アドレス値とそのアドレス値に基づいてモニタした変数の値及び前記第２の変数ブレイクモードにて指定する変数値を、所定の送信用コマンドに続く変数情報として前記デバッグ装置に送信することを特徴とする請求項３乃至５の何れか一項記載のプログラム処理装置。
【請求項７】
前記変数ブレイク回路は、
前記変数情報を所定の送信サイクルにて前記デバッグ装置に定期的に送信することを特徴とする請求項６記載のプログラム処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム処理装置に係り、詳しくは組み込みソフトウェア（ファームウェア）等の動作検証を行う場合に使用して好適な制御ＬＳＩに関する。
【背景技術】
【０００２】
近年、ＣＰＵを内蔵したマイクロコンピュータ等のＬＳＩが組み込み用途として用いられ、ソフトウェアの開発にはエバリュエーションチップ（以下エバチップ）が一般的に用いられる。エバチップには、ターゲットシステムに搭載されるＣＰＵに加えて、ソフトウェアのデバッグを支援するインタフェース回路が搭載されている。そして、ユーザボードに搭載したエバチップにインサーキットエミュレータ（ＩＣＥ(Ｒ)）を接続して、該ＩＣＥからデバッグ用コマンドをＣＰＵに与えることにより、ソフトウェアデバッグが行われている。なお、エバチップを使用したデバッグシステムに関連する先行技術として例えば特許文献１が知られている。
【特許文献１】特開平１１−２８２７１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、ＣＰＵを含めた周辺回路を１チップ上に搭載してシステムレベルの機能を実現するＳＯＣ（System On a Chip）等においては、ＣＰＵのバスやコントロール信号がチップ内部に集約されてしまうため、デバッグ効率が低下するという問題があった。即ち、このようなＳＯＣにおけるソフト開発では、ＣＰＵを個別に評価用ボードに載せてデバッグを行う必要があるため、最終的に１チップにする開発費が必要になるとともに、設計期間が長くなりＴＡＴ（Turn Around Time）を低下させるという問題があった。
【０００４】
加えて、このようなソフトウェアデバッグ等の試験コストは極力低減させることが要求されており、デバッグに使用できる端子は少数に制限されているのが実情である。このため、デバッグを効率良く行うことができないという問題を有していた。
【０００５】
また、現状では、ソフトウェアの開発段階において、予めプログラムのソースコード中にブレイクポイントを設定し、そこを通過する際にプログラムの実行を停止させることで、デバッグを行うようにしている。しかしながら、この方法では、ブレイクポイントの設定のためにプログラムメモリを書き換える必要があるため、デバッグ作業が繁雑であるという問題があった。
【０００６】
本発明はこうした実情に鑑みてなされたものであり、その目的はソフトウェアデバッグの効率向上を図ることのできるプログラム処理装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、請求項１に記載の発明によれば、プログラム処理装置は、プログラムを実行するＣＰＵと、前記ＣＰＵと同一の半導体基板上に集積された、前記ＣＰＵがメモリ空間をアクセスする際に使用する内部バスと、前記内部バスを監視して前記プログラム内の予め指定された変数の状態を１以上モニタし、該モニタする変数の状態に応じて前記ＣＰＵの動作を一時停止させる変数ブレイク回路と、を備える。この構成によれば、プログラム内にてユーザがチェックしたい変数を任意に設定してデバッグを行うことができる。そして、モニタする変数の状態が変更される場合には、ＣＰＵの動作を停止させてプログラムのバグ等を修正することが可能となる。これにより、プログラムの動作
状態を随時把握しながらデバッグを行うことができ、デバッグ作業を効率良く行うことができる。
【０００８】
請求項２に記載の発明によれば、プログラム処理装置は、プログラムを実行するＣＰＵと、前記ＣＰＵと同一の半導体基板上に集積された、前記ＣＰＵがメモリ空間をアクセスする際に使用する内部バスと、前記内部バスを監視して前記プログラム内の予め指定された変数の状態を１以上モニタし、該モニタする変数の値が前記ＣＰＵにより書き換えられる場合に前記ＣＰＵの動作を一時停止させる第１の変数ブレイクモードを有した変数ブレイク回路と、を備える。この構成によれば、モニタする変数の値が書き換えられる毎にプログラムの動作を随時チェックしながらデバッグを行うことができる。
【０００９】
請求項３に記載の発明によれば、プログラム処理装置は、プログラムを実行するＣＰＵと、前記ＣＰＵと同一の半導体基板上に集積された、前記ＣＰＵがメモリ空間をアクセスする際に使用する内部バスと、前記内部バスを監視して前記プログラム内の予め指定された変数の状態を１以上モニタし、該モニタする変数の値が予め指定された変数値に書き換えられる場合に前記ＣＰＵの動作を一時停止させる第２の変数ブレイクモードを有した変数ブレイク回路と、を備える。この構成によれば、予め指定した値に変数が書き換えられる場合にのみＣＰＵの動作が停止されるため、ＣＰＵの動作停止時間を短くすることができる。これにより、デバッグ作業を効率良く行うことができる。
【００１０】
請求項４に記載の発明によれば、前記変数ブレイク回路は、モニタする変数のアドレス値を１以上保持するアドレスレジスタと、前記アドレス値に基づいてモニタした変数の値を該アドレス毎に保持するデータレジスタとを備える。この構成によれば、モニタする変数のアドレス値を複数設定して、複数の変数の状態をチェックすることができる。
【００１１】
請求項５に記載の発明によれば、変数ブレイク回路は、モニタする複数の変数に対して第１の変数ブレイクモード又は第２の変数ブレイクモードを個別に設定可能とするモード設定レジスタを備えている。この構成によれば、プログラム内のモニタする変数に応じて、変数ブレイク機能を任意に設定することが可能となるため、デバッグをより効率良く行うことができる。
【００１２】
請求項６に記載の発明によれば、変数ブレイク回路は、インタフェース装置を介してデバッグ装置に接続されており、前記アドレス値とそのアドレスに基づいてモニタした変数の値及び第２の変数ブレイクモードにて指定する変数値を所定の送信用コマンドに続く変数情報としてデバッグ装置に送信する。これにより、デバッグ装置は、変数ブレイク回路にてモニタする複数の変数情報を受信することができる。
【００１３】
請求項７に記載の発明によれば、変数ブレイク回路は、前記変数情報を所定の送信サイクルにて定期的にデバッグ装置に送信する。これにより、変数の値が更新される場合にもユーザはその状態を随時確認することができ、プログラムの動作状態をより的確に把握することが可能となる。
【発明の効果】
【００１４】
本発明によれば、ソフトウェアデバッグの効率向上を図ることのできるプログラム処理装置を提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明に係るプログラム処理装置を例えばファームウェアのデバッグを行うための制御ＬＳＩに適用した一実施の形態を図面に従って説明する。
【００１６】
図１は、本実施形態のデバッグシステム１１の概略を示すブロック図である。デバッグ
システム１１は、プログラム処理装置としての制御ＬＳＩ１２及びその制御ＬＳＩ１２とツールバスを介して接続されるデバッグ装置としてのパーソナルコンピュータ（以下ＰＣ）１３を含む。後述するように、制御ＬＳＩ１２は、ＣＰＵを含めた周辺回路を１チップに搭載してシステムレベルの機能を実現するシステムＬＳＩである。ＰＣ１３は、例えばＩＣＥ（Ｒ）等にてなるデバッグツール１４を有している。
【００１７】
詳述すると、制御ＬＳＩ１２にはデバッグ用端子（図示略）が備えられ、そのデバッグ用端子にツールバスのバスケーブル１５が接続されている。デバッグ用端子は、制御ＬＳＩ１２のチップサイズに与える影響を少なくするために少数（本実施形態では例えば２ピン）で設けられ、同制御ＬＳＩ１２はバスケーブル１５を介してデバッグツール１４とシリアル通信する。尚、本実施形態では、２つのデバッグ用端子にそれぞれクロックバスとデータバスとが接続され、制御ＬＳＩ１２とデバッグツール１４の間のデータ転送（双方向）はクロックに同期して行われるようになっている。
【００１８】
制御ＬＳＩ１２は、ＣＰＵコア２１、変数ブレイク回路２２、デバッグインタフェース（以下デバッグＩ／Ｆ）２３、外部バスインタフェース（以下外部バスＩ／Ｆ）２４、周辺回路としての内部ＲＡＭ２５及び内部レジスタ２６を同一の半導体基板上に有している。また、制御ＬＳＩ１２は、図示していないが、ＣＰＵコア２１によって動作制御される信号処理回路も有している。
【００１９】
ＣＰＵコア２１、変数ブレイク回路２２、外部バスＩ／Ｆ２４、内部ＲＡＭ２５及び内部レジスタ２６は内部バス２７を介して相互に接続されている。ＣＰＵコア２１と変数ブレイク回路２２は内部バス２８を介して接続され、ＣＰＵコア２１とデバッグＩ／Ｆ２３は内部バス２９を介して接続されている。変数ブレイク回路２２とデバッグＩ／Ｆ２３は内部バス３０を介して接続されている。
【００２０】
外部バスＩ／Ｆ２４には外部バス３１を介してプログラムメモリ３２が接続されている。プログラムメモリ３２は、本実施形態では例えばフラッシュメモリで構成され、同メモリ３２にはデバッグ対象となるファームウェアがＣＰＵコア２１にて実行可能な形態で格納されている。より具体的には、Ｃ言語等の高級言語にて記述されたファームウェア（プログラム）にコンパイル処理及びリンク処理が施され、ＣＰＵコア２１が実行することのできる機械語の命令列に変換されて格納されている。
【００２１】
ＣＰＵコア２１は、プログラムメモリ３２に格納されているプログラムを読み込んで命令をデコードし、該デコード結果に応じた各種の処理を同ＣＰＵコア２１のメモリマップにマッピングされたアドレスにて指定される領域（メモリ空間）をアクセスすることにより実行する。尚、本実施形態において、ＣＰＵコア２１がアクセスするメモリ空間としては、内部バス２７を介して接続される内部ＲＡＭ２５や内部レジスタ２６の他、外部バス３１を介して接続される図示しない周辺回路等のメモリ空間を含む。
【００２２】
変数ブレイク回路２２は、ＣＰＵコア２１によるプログラム実行時において、同ＣＰＵコア２１がメモリ空間をアクセスする際に使用する内部バス２７を監視し、プログラムのソースコード内に設定されている変数の状態を１又は複数モニタする。
【００２３】
詳述すると、変数ブレイク回路２２には、内部レジスタ４１（図２）が備えられており、この内部レジスタ４１には、変数ブレイク回路２２がモニタする変数のアドレス値が設定されている。変数ブレイク回路２２は、ＣＰＵコア２１によるプログラム実行時に内部バス２７（具体的にはアドレスバス）を監視し、前記内部レジスタ４１に設定されているアドレスが内部バス２７に送出されたかどうか（即ち、変数がＣＰＵコア２１によりアクセスされたか否か）をチェックする。そして、その変数に対してＣＰＵコア２１により書
き換え動作が行われる場合に、その更新データを内部バス２７（具体的にはデータバス）より取得して内部レジスタ４１に記憶するようになっている。これにより、プログラム実行時において、変数ブレイク回路２２は、プログラム内の予め指定された変数をモニタする。
【００２４】
また、この変数ブレイク回路２２には、該変数ブレイク回路２２がモニタする変数の状態に応じて、ＣＰＵコア２１の動作を一時停止（ブレイク）させる（具体的にはＴＲＡＰ命令を割り込ませる）変数ブレイク機能が備えられている。
【００２５】
この変数ブレイク機能には、第１の変数ブレイクモード（以下第１のモードという）と、第２の変数ブレイクモード（以下第２のモードという）とが備えられており、変数ブレイク回路２２は、それら第１及び第２のモードのうち何れかのモードに従って変数ブレイク機能を実現する。
【００２６】
詳述すると、第１のモードが設定されるとき、変数ブレイク回路２２は、モニタする変数が任意値に書き換えられる場合（即ち、書き換え動作が発生する場合）にＣＰＵコア２１の動作を一時停止させる。この際、前記と同様にして、変数ブレイク回路２２は、モニタした変数値を内部レジスタ４１に記憶する。
【００２７】
また、第２のモードが設定されるとき、変数ブレイク回路２２は、モニタする変数が予め指定された変数値（指定値）に書き換えられる場合にＣＰＵコア２１の動作を一時停止させる。これらの各モードの設定は、後述するモード設定レジスタ５１（図３）によって行われる。
【００２８】
以下、図２及び図３に従って変数ブレイク回路２２が有する内部レジスタ４１及びモード設定レジスタ５１の具体的構成を説明する。
【００２９】
図２に示すように、内部レジスタ４１は、例えば８種類の変数情報を保持するアドレスレジスタ４２とデータレジスタ４３とから構成されている。尚、本実施形態において、変数情報とは、モニタする変数のアドレス値及びそのアドレス値に基づいてモニタした変数の値及び前述した変数ブレイク機能の第２のモードの設定時に指定する変数値（指定値）のことをいう。
【００３０】
即ち、変数ブレイク回路２２は、８種類の変数の状態をモニタ可能であり、各変数情報はそれぞれモニタデータ「ＭＯＮ０」〜「ＭＯＮ７」としてアドレスレジスタ４２とデータレジスタ４３とに保持されるようになっている。
【００３１】
アドレスレジスタ４２には、第１，第２，第３レジスタ「ＡＤＲＨ」，「ＡＤＲＭ」，「ＡＤＲＬ」にそれぞれ８ビットで格納されているデータ（計２４ビット）がプログラム内でモニタする変数のアドレス値として予め設定されている。
【００３２】
データレジスタ４３には、そのアドレスレジスタ４２に設定されている変数のアドレス値（各２４ビット）に基づいてモニタした８ビットの変数値、あるいは前記第２のモードの設定時に指定する８ビットの変数値（指定値）がそれぞれ「ＤＡＴＡ」として記憶されるようになっている。
【００３３】
本実施形態では、図３に示すモード設定レジスタ５１によって、モニタデータ「ＭＯＮ０」〜「ＭＯＮ７」に変数ブレイク機能が設定されている。
【００３４】
このモード設定レジスタ５１は、第１の設定レジスタ５２（図中、break any ）と、第２の設定レジスタ５３（図中、break it）と、ブレイク発生確認レジスタ５４（図中、break out ）とから構成されている。
【００３５】
各モニタデータ「ＭＯＮ０」〜「ＭＯＮ７」にそれぞれ対応するビットにおいて、第１の設定レジスタ５２のビット値が「１」、第２の設定レジスタ５３のビット値が「０」に設定されるときに、第１のモードが設定されるようになっている。尚、本実施形態では、モニタデータ「ＭＯＮ０」，「ＭＯＮ１」，「ＭＯＮ３」，「ＭＯＮ７」に第１のモードが設定されている。
【００３６】
また、各モニタデータ「ＭＯＮ０」〜「ＭＯＮ７」にそれぞれ対応するビットにおいて、第１及び第２の設定レジスタ５２，５３のビット値がともに「１」に設定されるときに、第２のモードが設定されるようになっている。尚、本実施形態では、モニタデータ「ＭＯＮ２」，「ＭＯＮ４」，「ＭＯＮ５」，「ＭＯＮ６」に第２のモードが設定されている。
【００３７】
ブレイク発生確認レジスタ５４は、変数ブレイク回路２２によるブレイク発生時（ＣＰＵコア２１の動作停止時）にそれぞれ各モニタデータ「ＭＯＮ０」〜「ＭＯＮ７」に対応するビット値が「１」に設定されるようになっている。
【００３８】
変数ブレイク回路２２は、第１のモードが設定されるモニタデータ「ＭＯＮ０」，「ＭＯＮ１」，「ＭＯＮ３」，「ＭＯＮ７」において、それぞれモニタする変数が書き換えられる場合（書き換え値は任意値）に、その更新データをデータレジスタ４３に記憶してＣＰＵコア２１の動作を一時停止させる。そして、この際、変数ブレイク回路２２は、ブレイク発生確認レジスタ５４の対応するビット値を「１」に設定する。
【００３９】
例えば、変数ブレイク回路２２は、図２に示す第１，第２，第３レジスタ「ＡＤＲＨ」，「ＡＤＲＭ」，「ＡＤＲＬ」である「03:0000h」，「03:0001h」，「03:0002h」により指定されるモニタデータ「ＭＯＮ０」の変数をモニタする。そして、変数ブレイク回路２２は、その変数が書き換えられる場合に該更新される変数値をデータレジスタ４３の「03:0003h」に保存してＣＰＵコア２１の動作を一時停止させ、同モニタデータ「ＭＯＮ０」に対応するブレイク発生確認レジスタ５４のビット値を「１」に設定する。このビット値「１」は、プログラムの動作状態確認後にビット値「０」に設定（クリア）される。
【００４０】
また、変数ブレイク回路２２は、第２のモードが設定されるモニタデータ「ＭＯＮ２」，「ＭＯＮ４」，「ＭＯＮ５」，「ＭＯＮ６」において、それぞれモニタする変数がデータレジスタ４３に予め設定されている指定値に書き換えられる場合にＣＰＵコア２１の動作を一時停止させる。そして、この際、変数ブレイク回路２２は、ブレイク発生確認レジスタ５４の対応するビット値を「１」に設定する。
【００４１】
例えば、変数ブレイク回路２２は、図２に示す第１，第２，第３レジスタ「ＡＤＲＨ」，「ＡＤＲＭ」，「ＡＤＲＬ」である「03:0008h」，「03:0009h」，「03:000Ah」により指定されるモニタデータ「ＭＯＮ２」の変数をモニタする。そして、変数ブレイク回路２２は、その変数がデータレジスタ４３の「03:000Bh」に予め設定されている指定値に書き換えられる場合にＣＰＵコア２１の動作を一時停止させ、同モニタデータ「ＭＯＮ２」に対応するブレイク発生確認レジスタ５４のビット値を「１」に設定する。このビット値「１」は、プログラムの動作状態確認後にビット値「０」に設定（クリア）される。
【００４２】
上記のように構成される変数ブレイク回路２２は、内部レジスタ４１（アドレスレジスタ４２及びデータレジスタ４３）に保持している変数情報を、所定の送信用コマンドにて定期的にデバッグＩ／Ｆ２３を介してデバッグツール１４（ＰＣ１３）に送信する。このとき、本実施形態では、バスケーブル１５を２ピンとしているので、シリアルデータが送信されることになる。
【００４３】
例えば、変数ブレイク回路２２は、送信用コマンド「C0h」，「04h」（図示略）に続く変数情報として、モニタデータ「ＭＯＮ０」の第１，第２，第３レジスタ「ＡＤＲＨ」，「ＡＤＲＭ」，「ＡＤＲＬ」である「03:0000h」，「03:0001h」，「03:0002h」に格納された変数のアドレス値を送信した後、そのアドレス値に基づいてモニタした変数値として「03:0003h」に保存されたデータを送信する。
【００４４】
そして、変数ブレイク回路２２は、ＣＰＵコア２１のクロック周波数に基づいて予め設定された所定の送信サイクルに従って、モニタデータ「ＭＯＮ０」，「ＭＯＮ１」，…「ＭＯＮ７」，「ＭＯＮ０」の順に変数情報をデバッグツール１４に送信するようになっている。
【００４５】
前記内部レジスタ４１に対する変数情報の設定及び前記モード設定レジスタ５１に対する各モードの設定（以下モード設定情報という）は、デバッグツール１４によって行われる。
【００４６】
デバッグツール１４は、ＰＣ１３の入力装置（図示略）より入力する開発者（ユーザ）からの指示に基づいて、前記変数情報及びモード設定情報を制御ＬＳＩ１２へ送信する。ＣＰＵコア２１は、転送された変数情報及びモード設定情報をデバッグＩ／Ｆ２３から内部バス２９を介して受け取り、該受け取った情報を内部バス２８を通じて内部レジスタ４１及びモード設定レジスタ５１に設定する。
【００４７】
その後、デバッグツール１４は、ＣＰＵコア２１にプログラム（ファームウェア）を実行させる。その実行過程において、変数ブレイク回路２２は、予め設定された変数のアドレス値に対してデータ（変数値）の書き換え動作が行われていないかどうかを常時監視し、書き換えが発生した場合に該更新された変数値を内部レジスタ４１に記憶する。
【００４８】
この際、変数ブレイク機能が設定されている変数に対しては、前述したように各モードに従ってＣＰＵコア２１の動作が一時停止される。これにより、ユーザは、プログラムの動作状態を確認し、ファームウェアのバグを修正することができる。
【００４９】
さらに、変数ブレイク回路２２は、内部レジスタ４１に保持している変数情報を、所定の送信用コマンドにて内部バス３０を介してデバッグＩ／Ｆ２３からデバッグツール１４（ＰＣ１３）に送信する。デバッグツール１４は、この制御ＬＳＩ１２から送信される変数情報を順次取り込み、その内容をＰＣ１３の表示装置（図示略）に出力する。従って、ユーザは、この変数情報を元にプログラムの動作状態を確認することもできる。
【００５０】
以上記述した本実施形態によれば、以下の効果を奏する。
【００５１】
（１）制御ＬＳＩ１２には、ＣＰＵコア２１がメモリ空間をアクセスする際に使用する内部バス２７を監視し、予め指定された変数の状態をモニタする変数ブレイク回路２２が備えられている。この変数ブレイク回路２２は、モニタする変数が任意値に書き換えられる場合にＣＰＵコア２１の動作を一時停止させる変数ブレイク機能を有している。この構成によれば、プログラム内にてユーザがチェックしたい変数（例えば分岐発生個所における変数等）を任意に設定してデバッグを行うことができる。そして、モニタする変数の値が変更される場合には、ＣＰＵコア２１の動作を停止させてプログラムのバグ等を修正することが可能となる。これにより、プログラムの動作状態を随時把握しながらデバッグを行うことができるため、デバッグ作業を効率良く行うことができる。
【００５２】
（２）変数ブレイク回路２２は、モニタする変数が予め設定した指定値に書き換えられる場合に、ＣＰＵコア２１の動作を一時停止させることができる。この構成によれば、予
め指定した値に変数が書き換えられる場合にのみＣＰＵコア２１の動作を停止させるようにしたため、ＣＰＵコア２１の動作停止時間を短くすることができる。これにより、デバッグ作業を効率良く行うことができる。
【００５３】
（３）本実施形態では、予め指定した変数に対して、変数ブレイク回路２２から順次シリアルで送信される複数の変数情報を元にデバッグを行うことも可能である。この構成によれば、ＣＰＵコア２１の動作を停止させることなく、変数の状態（プログラムの動作状態）をリアルタイムで監視しながらデバッグ作業を進めることができる。
【００５４】
（４）本実施形態では、予め指定した複数の変数に対して、変数ブレイク回路２２から順次シリアルで送信される変数情報を元にデバッグを行うようにした。このため、クロックバスとデータバスの２本のバスケーブル１５によってデバッグを実現することができる。このようにデバッグ用端子数を少なくすることで、制御ＬＳＩ１２のチップサイズの増加を抑えつつ、デバッグ作業を効率良く行うことができる。
【００５５】
（５）本実施形態では、従来のようなデバッグのためのブレイクポイントをプログラムのソースコード中に設定する必要がない。このため、ブレイクポイント設定のためのプログラムメモリの書き換え作業等を不要とすることができる。
【００５６】
（６）本実施形態では、マイコン等のソフト開発において、ＣＰＵ（ＣＰＵコア２１）を搭載したままでソフトウェアデバッグを行うことができる。これにより、ソフト開発効率を向上させて、開発コストの低減を図ることができる。延いては設計期間を短縮してＴＡＴの向上を図ることができる。
【００５７】
尚、上記実施形態は、以下のように変更して実施してもよい。
【００５８】
・本実施形態において、制御ＬＳＩ１２（システムＬＳＩ）は、内部ＲＡＭ２５及び内部レジスタ２６（図１）を備えるが、チップ内にＣＰＵコア２１とともに搭載される周辺回路としては本実施形態に限定されない。
【００５９】
・変数ブレイク回路２２の内部レジスタ４１の構成は、図２に示す態様に限定されるものではない。また、モニタデータとして保持する複数の変数情報は本実施形態で例述した８種類に限定されず、少なくとも１つの変数情報を保持することができればよい。
【００６０】
・変数ブレイク回路２２のモード設定レジスタ５１の構成は、図３に示す態様に限定されるものではない。また、変数ブレイク機能としては、第１及び第２のモードの何れか一方のみを設定可能としてもよい。
【００６１】
・本実施形態では、変数ブレイク機能をモニタデータ「ＭＯＮ０」〜「ＭＯＮ７」に設定したが、勿論、変数ブレイク回路２２がモニタする全ての変数に対して設定してもよい。
【００６２】
・本実施形態では、ファームウェアのデバッグを行う場合に適用したが、この適用例に限定されるものではない。
【００６３】
上記実施形態から把握できる技術思想を以下に記載する。
（イ）  プログラムを実行するＣＰＵと、該ＣＰＵがメモリ空間をアクセスする際に使用する内部バスを監視して前記プログラム内の予め指定された変数の状態を１以上モニタし、該モニタする変数の状態に応じて前記ＣＰＵの動作を一時停止させる変数ブレイク回路と、を同一チップ上に有するプログラム処理装置と、
前記プログラム処理装置に接続され、前記変数ブレイク回路から送信される変数情報を受信して出力するデバッグ装置と
を備えることを特徴とするデバッグシステム。
（ロ）  前記変数ブレイク回路にてモニタすべき変数情報を前記デバッグ装置から設定可能としたことを特徴とする（イ）記載のデバッグシステム。
【図面の簡単な説明】
【００６４】
【図１】一実施の形態のデバッグシステムの概略構成を示すブロック図である。
【図２】変数ブレイク回路の内部レジスタを示す説明図である。
【図３】変数ブレイク回路のモード設定レジスタを示す説明図である。
【符号の説明】
【００６５】
１２：プログラム処理装置としての制御ＬＳＩ、１３：デバッグ装置としてのパーソナルコンピュータ（ＰＣ）、２１：ＣＰＵとしてのＣＰＵコア、２２：変数ブレイク回路、２３：インタフェース装置としてのデバッグＩ／Ｆ、２５：周辺回路としての内部ＲＡＭ、２６：周辺回路としての内部レジスタ、２７：内部バス、４２：アドレスレジスタ、４３：データレジスタ、５１：モード設定レジスタ。
【図１】
2005070950.tif 000003
【図２】
2005070950.tif 000004
【図３】
2005070950.tif 000005