(57)【要約】【課題】全端子をエミュレーションすることができる集積回路装置及びその制御方法、並びにデバッグシステム及びその制御方法を提供する。【解決手段】デバッグシステムは、オンチップデバックが可能なマイコン４００を搭載したターゲットシステム３００とオンチップデバッグエミュレータ２００とを有する。マイコン４００は、ＣＰＵ４１１と、デバッグモード時にデバッグ端子として機能すると共に、ユーザモード時にはユーザ端子として機能するＤＥＢＵＧ／ＵＳＥＲ端子４０７と、デバッグモードの際にデバック機能を制御するデバッグ機能制御部４０２と、ユーザモードの際にポート機能を制御する汎用出力ポート４０１と、モードに応じて端子４０７をデバッグ機能制御部４０２又は汎用出力ポート４０１のいずれかに接続するセレクタ４０３とを有する。ＣＰＵ４１１は、現在のモードの検知結果に応じてセレクタを制御する。【選択図】図１
2011159126.tif 000002
【特許請求の範囲】
【請求項１】
オンチップデバックが可能な集積回路装置であって、
ＣＰＵ（central processing unit）と、
デバッグモード時にオンチップデバッグエミュレータとの間で信号の入出力を行うデバッグ端子として機能すると共に、ユーザモード時にはユーザ端子として機能する兼用端子と、
前記デバッグモードの際にデバック機能を制御するデバッグ機能制御部と、
前記ユーザモードの際にポート機能を制御するポート機能制御部と、
モードに応じて前記兼用端子を前記デバッグ機能制御部又はポート機能制御部のいずれかに接続するモード切替部とを有し、
前記ＣＰＵは、現在のモードの検知結果に応じて前記モード切替部を制御する、集積回路装置。
【請求項２】
前記デバッグ機能制御部、前記ポート機能制御部及び前記モード切替部を有するマイコンと、
前記ユーザモードで前記マイコンと共に動作するデバイスとを有し、
前記兼用端子は、前記ユーザモード時には、前記デバイスに信号を入出力するユーザ専用端子と接続される、請求項１記載の集積回路装置。
【請求項３】
前記兼用端子と前記ユーザ専用端子とは、前記集積回路装置内の配線により接続される、請求項２記載の集積回路装置。
【請求項４】
前記兼用端子と前記ユーザ専用端子とは前記ユーザモード時に、前記オンチップデバッグエミュレータを介して接続される、請求項２記載の集積回路装置。
【請求項５】
前記オンチップエミュレータのインターバルタイマと同期して動作するインターバルタイマを有し、
前記ＣＰＵは、前記インターバルタイマの値に応じてデバッグモードに切り替える、請求項１乃至４のいずれか１項記載の集積回路装置。
【請求項６】
デバックモードに設定するための値であるオプションバイトが格納されたメモリを有し、
前記ＣＰＵは、前記オプションバイトの値に基づきオンチップデバッグを開始する
ことを特徴とする請求項１乃至５のいずれか１項記載の集積回路装置。
【請求項７】
デバッグモードの際にデバック機能を制御するデバッグ機能制御部と、ユーザモードの際にポート機能を制御するポート機能制御部とを有し、オンチップデバックが可能な集積回路装置の制御方法であって、
ユーザモードとデバッグモードの切り替わりを検知し、
前記ユーザモード時には、兼用端子をユーザ端子とし、前記ポート機能制御部との間で信号の入出力をさせ、
前記デバッグモード時には、前記兼用端子をデバッグ端子とし、オンチップエミュレータと通信できるよう、前記デバッグ機能制御部との間で信号を入出力させる、集積回路装置の制御方法。
【請求項８】
ＣＰＵ（central processing unit）を内蔵し、オンチップデバックが可能なマイコンを搭載したターゲットシステムと、
ホストコンピュータと前記ターゲットシステムとの間に接続され前記マイコンと前記ホストコンピュータとの通信を可能にするオンチップデバッグエミュレータと、を備え、
前記マイコンは、
前記ＣＰＵ（central processing unit）と、
デバッグモード時にオンチップデバッグエミュレータとの間で信号の入出力を行うデバッグ端子として機能すると共に、ユーザモード時にはユーザ端子として機能する兼用端子と、
前記デバッグモードの際にデバック機能を制御するデバッグ機能制御部と、
前記ユーザモードの際にポート機能を制御するポート機能制御部と、
モードに応じて前記兼用端子を前記デバッグ機能制御部又はポート機能制御部のいずれかに接続するモード切替部とを有し、
前記ＣＰＵは、現在のモードの検知結果に応じて前記モード切替部を制御する、デバッグシステム。
【請求項９】
前記ターゲットシステムは、前記ユーザモードで前記マイコンと共に動作するデバイスを有し、
前記兼用端子は、前記ユーザモード時には、前記デバイスに信号を入出力するユーザ専用端子と接続される、請求項８記載のデバッグシステム。
【請求項１０】
前記兼用端子と前記ユーザ専用端子とは、前記ユーザモード時に、前記オンチップデバッグエミュレータを介して接続される、請求項９記載のデバッグシステム。
【請求項１１】
前記オンチップデバッグエミュレータは、前記兼用端子をエミュレーションするユーザ端子エミュレーション部を有する、請求項９又は１０記載のデバッグシステム。
【請求項１２】
前記ユーザ端子エミュレーション部は、前記兼用端子と前記ユーザ専用端子との接続を制御する、請求項１１項記載のデバッグシステム。
【請求項１３】
前記ユーザ端子エミュレーション部は、前記デバッグモード時にオンして前記兼用端子と前記ユーザ専用端子とを接続するスイッチを有する、請求項１１又は１２記載のデバッグシステム。
【請求項１４】
前記ユーザ端子エミュレーション部は、
デバッグモード直前の前記兼用端子の出力信号値を保持する出力信号値保持回路と、
前記デバッグモード時に、前記出力値保持回路から前記出力値を前記ユーザ専用端子に出力するよう制御する端子入出力制御回路と、を有する、請求項１１乃至１３記載のデバッグシステム。
【請求項１５】
ＣＰＵ（central processing unit）を内蔵し、オンチップデバックが可能なマイコンを搭載したターゲットシステムと、ホストコンピュータと前記ターゲットシステムとの間に接続され前記マイコンと前記ホストコンピュータとの通信を可能にするオンチップデバッグエミュレータと、を備えたデバッグシステムの制御方法であって、
前記ターゲットシステムは、
ユーザモードとデバッグモードの切り替わりを検知し、
前記ユーザモード時には、兼用端子をユーザ端子とし、前記ポート機能制御部との間で信号の入出力をさせ、
前記デバッグモード時には、前記兼用端子をデバッグ端子とし、オンチップエミュレータと通信できるよう、前記デバッグ機能制御部との間で信号を入出力させ、
前記オンチップデバッグエミュレータは、前記兼用端子のエミュレーションを実行する、デバッグシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ機能を有するマイコンを搭載した集積回路装置及びその制御方法、並びに、当該集積回路装置をターゲットデバイスとし、オンチップデバッグエミュレータと接続してデバッグを行うデバッグシステム及びその制御方法に関する。
【背景技術】
【０００２】
従来、エンドユーザにとって不要な端子を削減することを目的としたデバッグシステムが特許文献１に開示されている。この特許文献１に記載のデバッグシステムは、マイクロコンピュータとデバッグツールとを有する。マイクロコンピュータは、ＣＰＵと、固定値入力用端子と、リセット信号が第１のレベルの時に固定値入力用端子から入力された信号を受け取って固定値を保持する固定値保持部と、リセット信号が第２のレベルの時に固定値が変化しないように制御する制御部とを有する。固定値入力用端子は、リセット信号が第１のレベルの時には固定値の入力のために使用され、リセット信号が第２のレベルの時にはデバッグモジュールの通信のために使用される。デバッグモジュールは、リセット信号が第２のレベルの時に、固定値入力用端子を介して外部のデバッグツールと通信を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３１０７１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
マイコンのオンチップデバッグエミュレーションは、ユーザのターゲットシステムに搭載されたマイコンに、通信手段を設ける必要がある。すなわち、ターゲットシステムにオンチップデバッグエミュレータとのデバッグ通信端子、起動時のモード設定端子、マイコン内部のデバッグ制御回路、デバッグのためのプロクラム格納手段などを設け、オンチップデバッグエミュレータと通信させる必要がある。この通信を行うためには、少なくともモード設定端子１本と、デバッグ通信端子１本が必要となる。これをモード設定専用、デバッグ通信専用の専用端子とすると、ユーザモード時にユーザ端子として使用できないという問題点がある。
【０００５】
マイコンの種類に応じては、電源及びＧＮＤ端子以外のユーザ端子が数ピンしかないものがあり、そのようなマイコンにおいてもオンチップデバッグを実施するために、上記のような専用端子を設けることは困難な場合がある。
【０００６】
特許文献１に記載の技術は、リセット時のモード設定のための端子をその端子入力をリセット後も保持し、リセットが解除されたならば端子モードがデバッグ専用端子に切り替わるものである。これにより、デバッグ専用端子を限られた数内に削減することは可能であるものの、全端子をユーザが使用可能な、すなわち、デバッグ時にエミュレーション可能な端子とすることはできない、という問題点がある。すなわち、モード設定端子とデバッグ通信端子の兼用を可能としても、デバッグ通信用の端子と排他使用となる端子が依然存在することになり、全ての端子をユーザ端子とし、エミュレーションすることはできないという問題点がある。
【課題を解決するための手段】
【０００７】
本発明にかかる集積回路装置は、オンチップデバックが可能な集積回路装置であって、ＣＰＵ（central processing unit）と、デバッグモード時にオンチップデバッグエミュレータとの間で信号の入出力を行うデバッグ端子として機能すると共に、ユーザモード時にはユーザ端子として機能する兼用端子と、前記デバッグモードの際にデバック機能を制御するデバッグ機能制御部と、前記ユーザモードの際にポート機能を制御するポート機能制御部と、モードに応じて前記兼用端子を前記デバッグ機能制御部又はポート機能制御部のいずれかに接続するモード切替部とを有し、前記ＣＰＵは、現在のモードの検知結果に応じて前記モード切替部を制御するものである。
【０００８】
本発明においては、デバッグモード時にオンチップデバッグエミュレータとの間で信号の入出力を行うデバッグ端子として機能すると共に、ユーザモード時にはユーザ端子として機能する兼用端子と、モード切替部により切り換える。このことにより、デバッグモード時にはデバッグ通信用に使用しつつ、ユーザモード時にはユーザ端子として使用することができ、全端子のエミュレーションを可能とする。
【０００９】
なお、本発明にかかる集積回路装置は、マイコン単体は勿論、マイコンとデバイスのターゲットシステムを含むものである。
【００１０】
本発明にかかる集積回路装置の制御方法は、デバッグモードの際にデバック機能を制御するデバッグ機能制御部と、ユーザモードの際にポート機能を制御するポート機能制御部とを有し、オンチップデバックが可能な集積回路装置の制御方法であって、ユーザモードとデバッグモードの切り替わりを検知し、前記ユーザモード時には、兼用端子をユーザ端子とし、前記ポート機能制御部との間で信号の入出力をさせ、前記デバッグモード時には、前記兼用端子をデバッグ端子とし、オンチップエミュレータと通信できるよう、前記デバッグ機能制御部との間で信号を入出力させるものである。
【００１１】
本発明にかかるデバッグシステムは、ＣＰＵ（central processing unit）を内蔵し、オンチップデバックが可能なマイコンを搭載したターゲットシステムと、ホストコンピュータと前記ターゲットシステムとの間に接続され前記マイコンと前記ホストコンピュータとの通信を可能にするオンチップデバッグエミュレータと、を備え、前記マイコンは、前記ＣＰＵ（central processing unit）と、デバッグモード時にオンチップデバッグエミュレータとの間で信号の入出力を行うデバッグ端子として機能すると共に、ユーザモード時にはユーザ端子として機能する兼用端子と、前記デバッグモードの際にデバック機能を制御するデバッグ機能制御部と、前記ユーザモードの際にポート機能を制御するポート機能制御部と、モードに応じて前記兼用端子を前記デバッグ機能制御部又はポート機能制御部のいずれかに接続するモード切替部とを有し、前記ＣＰＵは、現在のモードの検知結果に応じて前記モード切替部を制御するものである。
【００１２】
本発明にかかるデバッグシステムの制御方法は、ＣＰＵ（central processing unit）を内蔵し、オンチップデバックが可能なマイコンを搭載したターゲットシステムと、ホストコンピュータと前記ターゲットシステムとの間に接続され前記マイコンと前記ホストコンピュータとの通信を可能にするオンチップデバッグエミュレータと、を備えたデバッグシステムの制御方法であって、前記ターゲットシステムは、ユーザモードとデバッグモードの切り替わりを検知し、前記ユーザモード時には、兼用端子をユーザ端子とし、前記ポート機能制御部との間で信号の入出力をさせ、前記デバッグモード時には、前記兼用端子をデバッグ端子とし、オンチップエミュレータと通信できるよう、前記デバッグ機能制御部との間で信号を入出力させ、前記オンチップデバッグエミュレータは、前記兼用端子のエミュレーションを実行するものである。
【発明の効果】
【００１３】
本発明によれば、全端子をエミュレーションすることができる集積回路装置及びその制御方法、並びにデバッグシステム及びその制御方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態１のデバッグシステムを示すブロック図である。
【図２】オンチップデバッグに関するオプションバイトの一例を示す図である。
【図３】本発明の実施の形態１におけるターゲットシステム３００の詳細を示す図である。
【図４】本発明の実施の形態１のデバッグシステムにおける動作を説明する図である。
【図５】本発明の実施の形態２にかかるデバッグシステムを示すブロック図である
【図６】本発明の実施の形態２にかかるデバッグシステムを更に詳細に示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、マイコン自身がデバッグモジュールを搭載することで、オンチップデバッグを可能としたデバッグシステムに適用したものである。本実施の形態においては、オンチップデバッグモード時に、エミュレータ通信用端子と排他使用となるポート機能のためのユーザ端子をエミュレーション可能とする。すなわち、従来不可能であった、全端子をユーザ端子として使用可能とするものである。
【００１６】
本発明の実施の形態１．
先ず、本発明の実施の形態１について説明する。図１は、本発明の実施の形態１のデバッグシステムを示すブロック図である。図１に示すように、本実施の形態にかかるデバッグシステムは、ＣＰＵ（central processing unit）４１１を内蔵し、オンチップデバックが可能なマイコンを搭載したターゲットシステム３００と、ホストＰＣ１００とターゲットシステム３００との間に接続されマイコン４００とホストＰＣとの通信を可能にするオンチップデバッグエミュレータ２００と、を備える。
【００１７】
ここで、マイコン４００は、ＤＥＢＵＧ／ＵＳＥＲ端子４０７、汎用出力ポート４０１、及びデバッグ機能制御部４０２、セレクタ４０３を有する。ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、デバッグモード時にオンチップデバッグエミュレータとの間で信号の入出力を行うデバッグ端子として機能すると共に、ユーザモード時にはユーザ端子として機能する兼用端子である。デバッグ機能制御部４０２は、デバッグモードの際にデバック機能を制御する。汎用出力ポート４０１は、ユーザモードの際にポート機能を制御するポート機能制御部として機能する。また、セレクタ４０３は、モードに応じてＤＥＢＵＧ／ＵＳＥＲ端子４０７を汎用出力ポート４０１又はデバッグ機能制御部４０２のいずれかに接続するモード切替部として機能する。ＣＰＵ４１１は、ＲＵＮコマンド／ＢＲＥＡＫを検知し、ＣＰＵ４１１がデバッグモード制御部４０９からセレクタ４０３に対しＤＥＢＵＧ／ＵＳＥＲ選択信号４１０を送信させることで、ＤＥＢＵＧ／ＵＳＥＲ端子４０７のモードを切替える。
【００１８】
以下、本実施の形態について、詳細に説明する。ホストＰＣ１００は、ホストコネクタ２０３を使用して通信ケーブル１０１により、オンチップデバッグエミュレータ２００と接続される。オンチップデバッグエミュレータ２００は、ホスト通信制御部２０１及びデバッグ動作制御部２０２を有する。ホスト通信制御部２０１は、ホストＰＣ１００から送信されたコマンドを受信する。デバッグ動作制御部２０２は、コマンドを解釈し、その結果に基づき指定の動作を実行するため、ターゲットシステム３００に搭載されたマイコン４００と通信する。
【００１９】
オンチップデバッグエミュレータ２００は、エミュレータ通信端子（エミュレータ側）２０４を有し、ターゲットシステム３００は、エミュレータ通信端子（ターゲット側）３０１を有している。これらの端子には、ターゲットケーブル６００が接続されている。
【００２０】
デバッグ動作のための通信は、このターゲットケーブル６００を介して行われる。エミュレータ通信端子（ターゲット側）３０１は、ＤＥＢＵＧ／ＵＳＥＲ端子４０７と接続され、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、マイコン４００に接続される。これらを使用して、マイコン４００とデバッグ動作制御部２０２とが通信する。
【００２１】
ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、マイコン４００のパワーオンリセット後に決定される動作モードに応じ、その機能を切り替えることができる機能端子である。マイコン４００は、エミュレータを接続してプログラムデバッグを行うためのデバッグモードと、デバッグを行わないユーザモードの２つを有する。デバッグモードにおいては、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、デバッグ用の通信端子として機能する。この場合、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、オンチップデバッグエミュレータ２００と通信を行う。また、ユーザモードにおいては、ユーザに開示された機能のみで動作する。
【００２２】
本実施の形態においては、マイコン４００がパワーオンリセット解除後にデバッグ機能を使用するか否かを、オプションバイト機能を用いて行う。なお、ここでは、説明の明確化のため、ユーザモードの際は、ユーザ端子は出力ポート端子として機能するものとする。
ターゲットシステム３００には、マイコン４００の他にデバイス５００が搭載されており、ＤＥＢＵＧ／ＵＳＥＲ端子４０７が、デバイス５００に接続されるユーザ端子５０１にも接続される。マイコン４００の内部のプログラム動作に応じてＤＥＢＵＧ／ＵＳＥＲ端子４０７の端子レベルがユーザ端子５０１を介してデバイス５００にも印加される。
【００２３】
ＤＥＢＵＧ／ＵＳＥＲ端子４０７のもう１つの機能は、デバッグ通信機能である。オンチップデバッグエミュレータ２００から送信されたコマンドは、ＤＥＢＵＧ／ＵＳＥＲ端子４０７を介してマイコン４００のデバッグ機能制御部４０２と通信を行い、マイコン４００はそのコマンドに応じた所定の動作を実行する。
【００２４】
例えば、マイコン内部のレジスタ情報を収集してオンチップデバッグエミュレータ２００に送出したり、マイコン４００に内蔵された不揮発性メモリ４１２にプログラムをロードしたり、又は任意のアドレスからユーザプログラムを実行させる、などの動作があり、これらの動作を行う際にはＤＥＢＵＧ／ＵＳＥＲ端子４０７はデバッグ通信モード端子として機能する。
【００２５】
従来、オンチップデバッグエミュレータ２００からマイコン４００をデバッグ通信で制御し、エミュレーションを行う際には、いかなる場合にもデバッグ通信端子が最低１本必要であった。これに対し、本実施の形態においては、このデバッグ通信端子をユーザプログラム実行時に限り、ユーザ端子すなわち出力ポート端子として機能させるための手段をマイコン４００内部に有し、オンチップデバッグエミュレータ２００との連携により、従来のデバッグ作業となんら遜色なくユーザプログラムのデバッグを可能とするものである。これによりユーザ開示の端子機能全てについて外部回路に特別な配慮が必要なく、エミュレーションが可能となる。
【００２６】
次に、オプションバイトについて説明する。特許文献１に記載されている初期動作モードの設定方法は、パワーオンリセット解除の際の該当端子レベルによりリセット解除後の動作モードを選択するという方法である。この方法における端子レベルの設定の代替手段がオプションバイト機能である。具体的には、端子レベルの替わりにフラッシュＲＯＭ（Read Only Memory）の特定アドレスのビット値に意味を持たせ、リセット解除後にマイコン内部の裏ファームウエアが当該アドレスを読み込み、その値に従いマイクロコンピュータの端子状態や、初期動作モードを決定する。図２は、オンチップデバッグに関するオプションバイトの一例を示す図である。オプションバイトの情報自体は、フラッシュＲＯＭプログラミングの際に事前に書き込んでおくのが通常である。
【００２７】
図２に示すように、例えばアドレス０００Ｃ３Ｈに８ビットのデータからなるオプションバイトを記載する。オプションバイトの最上位ビット（ＯＣＤＥＮＳＥＴ）及び最下位ビット（ＯＣＤＥＲＳＤ）に、モードに応じた値を設定する。本例においては、例えばモード０として、最上位ビット及び最下位ビットをそれぞれ００と設定する。これによりオンチップデバッグ動作が禁止される。リセット時にはユーザモードで起動する。すなわち、ＤＥＢＵＧ／ＵＳＥＲ端子４０７端子は、リセット時にポート端子モードで起動する。
【００２８】
また、モード１では０１が設定され、オプションバイトの設定が禁止される。さらに、モード２では、１０が設定され、オンチップデバッグ動作が許可される。リセット時には、オンチップデバッグモードで起動する。すなわちＤＥＢＵＧ／ＵＳＥＲ端子４０７は、リセット時にデバッグ端子モードで起動する。セキュリティ動作は有効となる。セキュリティ動作有効時には、セキュリティ用ＩＤコード認証を何度失敗しても、内蔵フラッシュ・メモリを消去せず、セキュリティ動作無効時には、セキュリティ用ＩＤコード認証を失敗した場合、内蔵フラッシュ・メモリの全領域を消去する。すなわち、セキュリティ用ＩＤコードの認証を失敗した場合において、マイコン内部に組み込まれたファームウエアがＯＣＤＥＮＳＥＴ、ＯＣＤＥＲＳＤを参照して、フラッシュ・メモリを全消去するか否かを判断する。
【００２９】
モード３では、１１が設定され、モード２と同様、オンチップデバッグ動作が許可される。リセット時には、オンチップデバッグモードで起動する。すなわちＤＥＢＵＧ／ＵＳＥＲ端子４０７は、リセット時にデバッグ端子モードで起動する。ただし、セキュリティ動作は無効となる。
【００３０】
このような設定により、オンチップデバッグ機能を使用するためには、事前に書き込み器によりモード２あるいはモード３の設置値を不揮発性メモリのオプションバイトに該当するアドレスに書き込んでおく必要がある。以下の説明においては、このオプションバイトの設定が、オンチップデバッグが有効である設定、すなわち、上記の例では、モード２又はモード３の設定になっているものとして説明する。また、ＤＥＢＵＧ／ＵＳＥＲ端子４０７においては、通常の初期状態はユーザモードであるとする。
【００３１】
図３は、ターゲットシステム３００の詳細を示す図である。図３に示すように、ターゲットシステム３００には、マイコン４００及びデバイス５００が搭載されている。マイコン４００は、ＤＥＢＵＧ／ＵＳＥＲ端子４０７を使用して信号の入出力を行う。デバイス５００は、ユーザ端子５０１を使用して信号の入出力を行う。そして、本実施の形態においては、ＤＥＢＵＧ／ＵＳＥＲ端子４０７が、ユーザ端子５０１とプリントパタンにて接続されている。また、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、エミュレータ通信端子（ターゲット側）３０１を介してオンチップデバッグエミュレータ２００に接続される。
【００３２】
そして、デバッグモード制御部４０９が出力するＤＥＢＵＧ／ＵＳＥＲ選択信号４１０により、セレクタ４０３が切り替わり、ＤＥＢＵＧ／ＵＳＥＲ端子４０７がＵＳＥＲ（汎用出力ポート）端子として動作するか、デバッグ通信用の端子として動作するかが決定される。すなわち、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、モードに応じて汎用出力ポート４０１又はデバッグ機能制御部４０２に、セレクタ４０３により選択的に接続される。
【００３３】
デバッグ機能制御部４０２は、デバッグ専用シリアル通信機能部４０５及びデバッグモード制御部４０９を有する。デバッグ専用シリアル通信機能部４０５はユーザには開示されない機能であり、デバッグモード下でのみ動作する通信機能ブロックである。このデバッグ専用シリアル通信機能部４０５は、メモリ４１２に格納されたデバッグモニタプログラム４０６に従い、オンチップデバッグエミュレータ２００との通信を行う。デバッグモードすなわちデバッグモニタプログラム動作中は、ユーザプログラムが停止している状態であり、本モードの際は、ＤＥＢＵＧ／ＵＳＥＲ選択信号４１０により、デバッグ専用シリアル通信機能部４０５の入出力信号をＤＥＢＵＧ／ＵＳＥＲ端子４０７に入出力してエミュレータ２００との通信を行う。
【００３４】
ＣＰＵ４１１は、デバッグモニタプログラム４０６に従い、具体的には、次のように動作する。オンチップデバッグエミュレータ２００から受信したコマンド及びデータは、デバッグ専用シリアル通信制御部４０５によりＣＰＵ４１１内のＲＡＭ（不図示）に保存される。コマンドは定期的にＣＰＵ４１１によりデコードされる。コマンドがレジスタ表示コマンドであれば、ＣＰＵ４１１Uはデバッグモニタプログラム４０６のレジスタ情報収集ルーチンを実行する。その情報は、シリアル通信制御部４０５を介してオンチップデバッグエミュレータ２００に送信される。
【００３５】
ＣＰＵ４１１が受信したコマンドがユーザプログラム実行コマンド（以下、ＲＵＮコマンドともいう。）であれば、デバッグモニタプログラム４０６のＲＵＮコマンドルーチンを実行する。具体的には、ＣＰＵ４１１のプログラムカウンタにユーザプログラム実行の先頭アドレスをセットし、デバッグモニタプログラム４０６からユーザプログラム実行状態に遷移する。この遷移は、デバッグモニタプログラム４０６の特権割込み状態からの復帰という形で実行される。
【００３６】
ユーザモードに遷移すると、ＤＥＢＵＧ／ＵＳＥＲ選択信号４１０はユーザ端子側に遷移し、マイコン４００内部の汎用出力ポート４０１のレベルをＤＥＢＵＧ／ＵＳＥＲ端子４０７より出力する。すなわち、ユーザプログラム実行を開始すると、ＣＰＵ４１１はデバッグモード制御部４０９に対し状態遷移を通知する。例えば、ＣＰＵ４１１からデバッグモード制御部４０９へ接続されている信号は、ＬＯＷ＝デバッグモード、ＨＩ＝ユーザモードというように変化する。これにより、ＤＥＢＵＧ／ＵＳＥＲ選択信号４１０が変化し、セレクタ４０３により、ＤＥＢＵＧ／ＵＳＥＲ端子４０７の機能が切り替えられる。以上により、ユーザプログラム実行中に限り、デバッグ通信専用端子（デバッグモード時のＤＥＢＵＧ／ＵＳＥＲ端子４０７）がユーザ端子（ユーザモード時のＤＥＢＵＧ／ＵＳＥＲ端子４０７）をエミュレーションする。
【００３７】
次に、マイコンリセットからの典型的な動作状態遷移について説明する。図４は、そのタイミングチャートを示す図である。ＣＰＵ４１１は、モード１からモード５まで遷移する。先ず、モード１において、ＣＰＵはリセットされる。次に、ＣＰＵ４１１は、モード２に遷移し、ブートプログラムが実行され、初期設定が行われる。このときＣＰＵ４１１は、オプションバイトを読み込み、デバッグ機能の有効又は無効が設定される。ここでは、デバッグ機能が有効に設定される場合について説明する。
【００３８】
モード１では、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、デバッグ通信端子として機能する。オンチップデバッグエミュレータ２００は、デバッグ通信状態となり、マイコン４００からの初期化完了の応答を待つ。
【００３９】
次に、初期化が終了すると、ＣＰＵ４１１はモード３に遷移し、デバッグ通信モードとなる。ＣＰＵ４１１は、オンチップデバッグエミュレータ２００からのコマンド待ち、レジスタのリード／ライト、メモリダンプ、プログラムのロード等が実行される。ユーザプログラムの実行（ＲＵＮコマンドの実行）でモード４のユーザモード（ＲＵＮモード）へ遷移する。
【００４０】
ユーザモードでは、ＣＰＵ４１１は、ＲＵＮコマンドを実行する（ユーザプログラムを実行する）ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、このときユーザ端子として機能する。オンチップデバッグエミュレータ２００は、マイコン４００からのブレーク情報待ちとなる。そして、このユーザモードにおいて、事前に設定した諸条件によりブレークが発生したら、再びマイコン４００のＣＰＵ動作状態はモード５のデバッグ通信モードに戻る。デバッグ通信モードでは、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、再びデバッグ通信端子として機能する。オンチップデバッグエミュレータ２００は、マイコン４００へコマンドを送信するなどのデバッグ通信を行う。
【００４１】
なお、本実施の形態において、デバイス５００に信号の入出力を行うユーザ端子５０１は、物理的にマイコン４００への信号の入出力を行うＤＥＢＵＧ／ＵＳＥＲ端子４０７にワーヤードされている。このため、デバッグ通信モードの際も、ＤＥＢＵＧ／ＵＳＥＲ端子４０７の端子レベルの変化が、入力信号として、あるいはハイインピーダンス状態になってユーザ端子５０１に伝達されるが、デバッグ者が了解していればなんらデバッグ作業の支障となるものではない。
【００４２】
本実施の形態においては、ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、デバッグモードの際にはデバッグ機能制御部４０２とデバッグ動作制御部２０２との通信を行わせるデバッグ端子として機能し、ユーザモードの際にはデバイス５００と汎用出力ポート４０１との通信を行わせるユーザ端子として機能するよう、マイコン４００のセレクタ４０３によりＤＥＢＵＧ／ＵＳＥＲ端子４０７の機能を切り替える。これにより、従来デバッグ専用として使用されるＤＥＢＵＧ／ＵＳＥＲ端子４０７をユーザモードにおいても使用可能とすることで、当該ＤＥＢＵＧ／ＵＳＥＲ端子４０７のエミュレーションを可能にすることができる。
【００４３】
本発明の実施の形態２．
上述の本実施の形態においては、ＤＥＢＵＧ／ＵＳＥＲ端子４０７がデバイス５００のユーザ端子５０１にワイヤードされているため、デバッグ通信の動作がそのままデバイス５００に伝達され、デバッグ通信中に限っては通常の動作と異なる動作になるという問題点があった。この問題点は、デバッグ者がデバッグシステムとして上記の動作を認識していれば特に問題がない場合が多いが、ユーザ端子５０１の端子レベルにより内部回路の動作だけでなくシステム全体の動作の等価性が維持できない場合もある。このような問題点を改善する本発明の実施の形態２について説明する。
【００４４】
図５は、本発明の実施の形態２にかかるデバッグシステムを示すブロック図である。なお、図５及び後述する図６に示す本実施の形態において、図１に示す実施の形態１と同一の構成要素には同一の符号を付しその詳細な説明を省略する。
【００４５】
図５に示すように、ホストＰＣ１００は、通信ケーブル１０１にてオンチップデバッグエミュレータ２００のホストコネクタ２０３に接続されている。
【００４６】
オンチップデバッグエミュレータ２００は、ホスト通信制御部２０１及びデバッグ動作制御部２０２を有し、上述の実施の形態１と同様、ホストＰＣ１００から送信されてきたコマンドを解釈し、実行する。
【００４７】
エミュレータ２００とターゲットシステム３００との通信は、ターゲットケーブル６００を介して行われる。ターゲットケーブル６００のオンチップデバッグエミュレータ２００側は、エミュレータ通信端子（エミュレータ側）２０４と接続され、ターゲットシステム３００側は、エミュレータ通信端子（ターゲット側）３０１と接続される。エミュレータ通信端子（ターゲット側）３０１は、ＤＥＢＵＧ／ＵＳＥＲ端子４０７と接続され、これを経由しオンチップデバッグエミュレータ２００のデバッグ動作制御部２０２と、ターゲットシステム３００のマイコン４００とが通信する。
【００４８】
ＤＥＢＵＧ／ＵＳＥＲ端子４０７は、実施の形態１と異なり、ユーザ端子５０１に接続されておらず、エミュレータ通信端子（ターゲット側）３０１とのみ接続される。ユーザ端子５０１は、ユーザ信号通信端子（ターゲット側）３０２と接続され、ユーザ信号通信端子（ターゲット側）３０２は、オンチップデバッグエミュレータ２００のユーザ信号通信端子（エミュレータ側）２１０と接続されている。
【００４９】
また、本実施の形態におけるオンチップデバッグエミュレータ２００は、実施の形態１と異なり、ＤＥＢＵＧ／ＵＳＥＲ端子４０７をエミュレーションするユーザ端子エミュレーション部２０８をさらに有する。このユーザ端子エミュレーション部２０８は、ＤＥＢＵＧ／ＵＳＥＲ端子４０７とユーザ端子５０１との接続を制御する。
【００５０】
具体的には、ユーザ端子エミュレーション部２０８は、デバッグモード直前のＤＥＢＵＧ／ＵＳＥＲ端子４０７の出力信号値を保持する出力信号値保持回路２０６、出力信号値保持回路２０６の出力値をユーザ端子５０１に出力するよう制御する端子入出力制御回路２０５、３ステートバッファ２０７、及びデバッグモード時にオンしてＤＥＢＵＧ／ＵＳＥＲ端子４０７とユーザ端子５０１とを接続するリレースイッチ２０９を有する。
【００５１】
リレースイッチ２０９は、ユーザプログラム実行中に、デバイス５００のユーザ端子５０１とマイコン４００のＤＥＢＵＧ／ＵＳＥＲ端子４０７をワイヤードする。端子入出力制御回路２０５は、デバッグ動作制御部２０２により、ユーザモードがデバッグモードに切り替わるタイミング、デバッグモードがユーザモードに切り替わるタイミングの通知を受け、リレースイッチ２０９のＯＮ又はＯＦＦを制御する。
【００５２】
したがって、オンチップデバッグエミュレータ２００からマイコン４００に対してユーザプログラムＲＵＮコマンドが発行されると、端子入出力制御回路２０５の制御によりリレースイッチ２０９はＯＮとなる。これにより、ＤＥＢＵＧ／ＵＳＥＲ端子４０７とユーザ端子５０１とは、オンチップデバッグエミュレータ２００を経由して接続される。また、ユーザプログラムが停止（ブレーク）すると、端子入出力制御回路２０５の制御によりリレースイッチ２０９はＯＦＦとなる。これにより、ユーザ端子５０１とＤＥＢＵＧ／ＵＳＥＲ端子４０７とは、物理的に切断される。
【００５３】
出力信号値保持回路２０６は、ブレーク直前のＤＥＢＵＧ／ＵＳＥＲ端子４０７の端子状態を保持する。この端子状態は、３ステートバッファ２０７を経由して出力信号値保持回路２０６からターゲットシステム３００に搭載されたデバイス５００のユーザ端子５０１に伝達される。次に、ブレーク状態の検出方法について説明する。
【００５４】
図６は、本実施の形態にかかるデバッグシステムを更に詳細に示す図であり、特にマイコン４００内部の構成を詳細に示す図である。ここでは、ブレークのための手段及び手順の一例について説明する。
【００５５】
オンチップデバッグエミュレータ２００にはインターバルタイマ２１３が搭載されている。このインターバルタイマ２１３は、ユーザプログラムの実行及びブレークのタイミングをマイコン４００と同期させる手段となる。
【００５６】
ターゲットシステム３００において、本実施の形態においては、上述したようにマイコン４００のＤＥＢＵＧ／ＵＳＥＲ端子４０７とデバイス５００のユーザ端子５０１とは、ターゲットシステム３００内のボードプリントパタンにて接続されていない。ＤＥＢＵＧ／ＵＳＥＲ端子４０７及びユーザ端子５０１は、それぞれエミュレータ用の接続端子であるエミュレータ通信端子（ターゲット側）３０１及びユーザ信号通信端子（ターゲット側）３０２と接続される。エミュレータ通信端子（ターゲット側）３０１及びユーザ信号通信端子（ターゲット側）３０２は、オンチップデバッグエミュレータ２００のそれぞれエミュレータ通信端子（エミュレータ側）２０４及びユーザ信号通信端子（エミュレータ側）２１０と接続され、リレースイッチ２０９にてユーザプログラムＲＵＮのときのみワイヤード接続される。
【００５７】
ブレークにより、出力信号値保持回路２０６により、直前のＤＥＢＵＧ／ＵＳＥＲ端子４０７の値が保持され、出力信号値保持回路２０６からターゲットシステム３００に伝達される。
【００５８】
次に、マイコン４００内部の各ブロックについて説明する。マイコン４００は、汎用出力ポート４０１、デバッグ機能制御部４０２、ＣＰＵ４１１、及びメモリ４１２を有する。また、セレクタ４０３を有し、このセレクタ４０３により、汎用出力ポート４０１の出力又はデバッグ専用シリアル通信機能部４０５の出力のいずれかの選択を行う。これにより、ユーザプログラムＲＵＮ中のユーザ端子エミュレーションを実現する。
【００５９】
デバッグ機能制御部４０２は、ＣＰＵ４１１がブレーク状態、すなわちデバッグ通信モード中に動作する機能ブロックであり、デバッグ専用シリアル通信機能部４０５は、デバッグモニタプログラム４０６をＣＰＵ４１１が実行することでエミュレータ２００との通信を行う。
【００６０】
また、メモリ４１２にはデバッグモニタプログラム４０６の他、ユーザプログラム４０８及びオプションバイト４１３が格納され、それぞれマイコン４００の該当する動作モードの特に読み出され、その後のモード設定や、プログラム実行が行われる。
【００６１】
ＣＰＵ４１１は、ユーザプログラムＲＵＮ状態とブレーク状態を表すモード信号をデバッグモード制御部４０９に出力し、デバッグモード制御部４０９は、セレクタ４０３にＤＥＢＵＧ／ＵＳＥＲ選択信号４１０を出力する。これにより、セレクタ４０３により、ブレーク中はデバッグ通信信号が選択され、ＲＵＮ中は、ユーザ信号出力が選択され、ＤＥＢＵＧ／ＵＳＥＲ端子４０７がデバッグ通信端子又はユーザ端子として機能する。
【００６２】
次に、ユーザプログラムＲＵＮ後、デバッグ通信を回復する方法について説明する。インターバルタイマ２１３は、マイコン４００に内蔵されたインターバルタイマ４１４と同期して動作する。ＣＰＵ４１１は、インターバルタイマ４１４の値に応じてユーザモードからデバッグモードに切り替える。すなわち、インターバルタイマ２１３及びインターバルタイマ４１４は、ユーザプログラムＲＵＮ中に、エミュレータ２００とマイコン４００とが定期的かつ同時にユーザプログラムをブレークさせ、デバッグ通信をするための一手段として設けられる。具体的には、ユーザプログラムＲＵＮと同時に、例えば１ｍｓをインターバルタイマ２１３及びインターバルタイマ４１４に同時にセットし、同一クロックでダウンカウントをスタートする。カウンタ値が０になったら、エミュレータはリレースイッチ２０９をＯＦＦにし、ユーザ端子エミュレーション部２０８に保持された直前のユーザ信号値（ＤＥＢＵＧ／ＵＳＥＲ端子４０７の信号レベル）をターゲットシステム３００へ出力する。
【００６３】
マイコン４００内部のインターバルタイマ値０によりＣＰＵ４１１にブレーク割込みを発生させ、ＣＰＵ４１１はデバッグモニタプログラム４０６を実行し、デバッグ専用シリアル通信機能部４０５経由でエミュレータ２００と通信を開始する。そして、所定の動作を完了し、かつ強制ブレークコマンドがホストＰＣ１００から通知されていない場合は、ターゲットシステム３００は、再びユーザプログラムＲＵＮを行う。
【００６４】
一方、インターバルタイマ値が０のタイミングの時点で、すでにＣＰＵ４１１側がブレークポイント等によりブレーク状態にあったならば、オンチップデバッグエミュレータ２００側のインターバルタイマ２１３の値が０のタイミングでオンチップデバッグエミュレータ２００はそのブレーク状態を認識する。この場合も、ターゲットシステム３００は、ホストＰＣ１００からＲＵＮコマンドの発行がない限り、継続してブレーク状態を続行する。
【００６５】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【００６６】
例えば、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、記録媒体に記録して提供することも可能であり、また、インターネットその他の伝送媒体を介して伝送することにより提供することも可能である。
【符号の説明】
【００６７】
１００  ホストＰＣ
１０１  通信ケーブル
２００  オンチップデバッグエミュレータ
２０１  ホスト通信制御部
２０２  デバッグ動作制御部
２０３  ホストコネクタ
２０４  エミュレータ通信端子（エミュレータ側）
２０５  端子入出力制御回路
２０６  出力信号値保持回路
２０７  ３ステートバッファ
２０８  ユーザ端子エミュレーション部
２０９  リレースイッチ
２１０  ユーザ信号通信端子（エミュレータ側）
２１３  インターバルタイマ
３００  ターゲットシステム
３０１  エミュレータ通信端子（ターゲット側）
３０２  ユーザ信号通信端子（ターゲット側）
４００  マイコン
４０１  汎用出力ポート
４０２  デバッグ機能制御部
４０３  セレクタ
４０５  デバッグ専用シリアル通信機能部
４０６  デバッグモニタプログラム
４０８  ユーザプログラム
４０９  デバッグモード制御部
４１０  ＤＥＢＵＧ／ＵＳＥＲ選択信号
４１１  ＣＰＵ
４１２  メモリ
４１３  オプションバイト
４１４  インターバルタイマ
４０７  ＤＥＢＵＧ／ＵＳＥＲ端子
５００  デバイス
５０１  ユーザ端子
６００  ターゲットケーブル
【図１】
2011159126.tif 000003
【図２】
2011159126.tif 000004
【図３】
2011159126.tif 000005
【図４】
2011159126.tif 000006
【図５】
2011159126.tif 000007
【図６】
2011159126.tif 000008