(57)【特許請求の範囲】
【請求項１】
第１クロックに基づいてデバッグ対象となるプログラムを実行するＣＰＵ部と、前記第１クロックは前記ＣＰＵ部の指示に基づいてクロック速度を変更され、
デバッグを行うユーザーに対するマンマシンインタフェースを有する外部ツール装置と、
前記第１クロックに基づいてデバッグデータを前記外部ツール装置へ送信する第１送信部と、
前記第１クロックと異なる第２クロックに基づいてデバッグデータを前記外部ツール装置へ送信する第２送信部と、
前記外部ツール装置から送信されるデータを受信する受信部と
を具備し、
前記外部ツール装置は、
前記第１送信部および前記第２送信部から送信されるデバッグデータを受信するツール受信部と、
前記受信部にコマンドを送信するツール送信部と、
送受信の通信速度を示す情報と、発行する前記コマンドとを関連付けて格納する通信速度管理テーブルと、
前記通信速度管理テーブルを参照して、前記ツール受信部および前記ツール送信部を、発行する前記コマンドに応じた送受信速度に切り替えて制御するツール制御部と
を備える
情報処理装置。
【請求項２】
前記第１クロックのクロック速度の変更を示す情報を保持する速度変更情報記憶部をさらに具備し、
前記外部ツール装置は、前記速度変更情報記憶部に保持される情報を読み出して、前記通信速度管理テーブルを書き換える
請求項１に記載の情報処理装置。
【請求項３】
前記外部ツール装置が発行するコマンドに応答して、前記第１送信部、前記第２送信部の一方を選択してデバッグデータを送信するシーケンス制御部をさらに具備する
請求項１から請求項２のいずれかに記載の情報処理装置。
【請求項４】
前記ＣＰＵ部は、前記外部ツール装置に通知してから前記第１クロックのクロック速度を変更する
請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項５】
前記ＣＰＵ部は、
前記第１クロックに基づいてプログラムを実行するＣＰＵと、
前記ＣＰＵから前記第１クロックの速度変更要求を受けると前記シーケンス制御部に通知し、前記シーケンス制御部から許可を受けた後に前記第１のクロック速度を変更するクロック制御部と
を備え、
前記シーケンス制御部は、前記第１クロックの速度変更要求の通知に応答して、前記外部ツール装置に速度変更を通知すると、前記クロック制御部に前記第１クロックの速度変更を許可する
請求項３に記載の情報処理装置。
【請求項６】
前記第１クロックは、前記ＣＰＵ部を駆動するシステムクロックであり、
前記第２クロックは、デバッグに使用される固定されたクロック速度のデバッグクロックである
請求項１から請求項５のいずれかに記載の情報処理装置。
【請求項７】
第１クロックに基づいてデバッグ対象となるプログラムを実行するＣＰＵ部と、前記第１クロックは前記ＣＰＵ部の指示に基づいてクロック速度を変更され、
デバッグを行うユーザーに対するマンマシンインタフェースを有する外部ツール装置に対して、前記第１クロックに基づいてデバッグデータを前記外部ツール装置へ送信する第１送信部と、
前記第１クロックと異なる第２クロックに基づいてデバッグデータを前記外部ツール装置へ送信する第２送信部と、
前記外部ツール装置から送信されるデータを受信する受信部と
を具備し、
前記第１クロックのクロック速度の変更を示す情報を保持する速度変更情報記憶部をさらに具備し、
前記外部ツール装置は、送受信の通信速度を示す情報と、発行するコマンドとを関連付けて格納する通信速度管理テーブルを備え、
前記通信速度管理テーブルは、前記速度変更情報記憶部に保持される情報に基づいて書き換えられる
マイクロコントローラ。
【請求項８】
前記外部ツール装置が発行するコマンドに応答して、前記第１送信部、前記第２送信部の一方を選択してデバッグデータを送信するシーケンス制御部をさらに具備する
請求項７に記載のマイクロコントローラ。
【請求項９】
前記ＣＰＵ部は、前記外部ツール装置に通知してから前記第１クロックのクロック速度を変更する
請求項７から請求項８のいずれかに記載のマイクロコントローラ。
【請求項１０】
前記ＣＰＵ部は、
前記第１クロックに基づいてプログラムを実行するＣＰＵと、
前記ＣＰＵから前記第１クロックの速度変更要求を受けると前記シーケンス制御部に通知し、前記シーケンス制御部から許可を受けた後に前記第１のクロック速度を変更するクロック制御部と
を備え、
前記シーケンス制御部は、前記第１クロックの速度変更要求の通知に応答して、前記外部ツール装置に速度変更を通知し、前記クロック制御部に前記第１クロックの速度変更を許可する
請求項８に記載のマイクロコントローラ。
【請求項１１】
ＣＰＵ部の指示に基づいてクロック速度を変更される第１クロックに基づいて、デバッグ対象となるプログラムを実行するマイクロコントローラの第１送信部から送信されるデバッグデータと、
前記第１クロックと異なる第２クロックに基づいて前記マイクロコントローラの第２送信部から送信されるデバッグデータと
を受信するツール受信部と、
前記マイクロコントローラの受信部へデバッグするためのコマンドを送信するツール送信部と
を具備し、
デバッグを行うユーザーに対するマンマシンインタフェースを有し、
送受信の通信速度を示す情報と、発行する前記コマンドとを関連付けて格納する通信速度管理テーブルと、
前記通信速度管理テーブルを参照して、前記ツール受信部および前記ツール送信部を、発行する前記コマンドに応じた送受信速度に切り替えて制御するツール制御部と
をさらに具備する
外部ツール装置。
【請求項１２】
前記マイクロコントローラは、前記第１クロックのクロック速度の変更を示す情報を保持する速度変更情報記憶部をさらに備え、
前記速度変更情報記憶部に保持される情報を読み出して、前記通信速度管理テーブルを書き換える
請求項１１に記載の外部ツール装置。
【請求項１３】
第１クロックに基づいてデバッグ対象となるプログラムを実行するマイクロコントローラと、デバッグを行うユーザーに対するマンマシンインタフェースを有する外部ツール装置とを用いてデバッグするデバッグ方法であって、
前記第１クロックに基づいてデバッグデータを前記外部ツール装置へ第１送信部から送信するステップと、
前記第１クロックと異なる第２クロックに基づいてデバッグデータを前記外部ツール装置へ第２送信部から送信するステップと、
前記外部ツール装置から送信されるデータを受信部により受信するステップと、
前記マイクロコントローラの指示に基づいて前記第１クロックのクロック速度を変更するステップと
を具備し、
前記外部ツール装置において、
前記第１送信部および前記第２送信部から送信されるデバッグデータをツール受信部により受信するステップと、
前記受信部にコマンドをツール送信部から送信するステップと、
送受信の通信速度を示す情報と、発行する前記コマンドとを関連付けて通信速度管理テーブルに格納するステップと、
前記通信速度管理テーブルを参照して、前記ツール受信部および前記ツール送信部を、発行する前記コマンドに応じた送受信速度に切り替えて制御するステップと
を具備する
デバッグ方法。
【請求項１４】
前記マイクロコントローラは、前記第１クロックのクロック速度の変更を示す情報を保持する速度変更情報記憶部をさらに備え、
前記速度変更情報記憶部に保持される情報を読み出して、前記通信速度管理テーブルを書き換えるステップをさらに具備する
請求項１３に記載のデバッグ方法。
【請求項１５】
前記外部ツール装置が発行するコマンドに応答して、前記第１送信部、前記第２送信部の一方を選択してデバッグデータを送信するステップをさらに具備する
請求項１３から請求項１４のいずれかに記載のデバッグ方法。
【請求項１６】
前記第１クロックのクロック速度を変更するステップは、前記外部ツール装置に前記クロック速度の変更を通知するステップを含み、
前記変更を通知するステップの後に前記第１クロックのクロック速度が変更される
請求項１３から請求項１５のいずれかに記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、そのデバッグ装置、デバッグ方法に関する。
【背景技術】
【０００２】
特開２００６−２５２００６号公報には、外部ツール（ホスト装置）とマイクロコントローラ（ＭＣＵ：ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  ｕｎｉｔ）内蔵のデバッグ装置とのインタフェースのために、非同期通信ユニット（ＵＡＲＴ：ｕｎｉｖｅｒｓａｌ  ａｓｙｎｃｈｒｏｎｕｓ  ｒｅｃｅｉｖｅｒ−ｔｒａｎｓｍｉｔｔｅｒ）を使用し、マイクロコントローラの外部端子の１ピンで外部ツールとインタフェースする例が示されている。この非同期通信ユニットにはＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）から送受信の指示がなされ、かつ、非同期通信ユニットの動作クロックは、クロック発振器から供給される。このクロック発振器のクロック出力は、ＣＰＵにも供給される。
【０００３】
非同期通信ユニットの動作クロックは、クロック発振器から供給され、また、このクロック発振器のクロック出力はＣＰＵにも供給される構成となっている。したがって、マイクロコントローラが低消費電力を実現するモードに遷移してクロックが停止される場合には、非同期通信ユニットも同時に停止し、外部ツールとの通信ができなくなるため、デバッグ作業が中断してしまう。
【０００４】
また、特許第４１４５１４６号公報には、外部ツール（ホスト装置）とマイクロコントローラ（ＭＣＵ）内蔵のデバッグ装置とのインタフェースのために、バックグラウンドデバッグシステムを使用する技術が開示されている。マイクロコントローラ内蔵のデバッグ装置は、外部端子の１ピンで外部ツールとインタフェースする。バックグラウンドデバッグシステムは、ＣＰＵとは独立に動作することが可能である。動作のためのクロックは、クロック装置から専用のバックグラウンドデバッグクロック信号により供給される。また、バックグラウンドデバッグシステムが活性化されていることが、クロック装置にＥＮ＿ＢＤＭ信号によって通知されている場合には、例えＣＰＵ等へのクロック供給が停止してもバックグラウンドデバッグクロック信号は停止しない。この点は、特開２００６−２５２００６号公報に開示された技術と大きく異なる。
【０００５】
さらに、クロック制御部は、クロック分周機能を有し、分周されたクロックが供給されるバッグラウンドデバッグシステムと、外部ツールとの間通信速度を同期化するための方法が示されている。通信速度の同期手順は、次の通りである。最初に外部ツールから同期要求を出力し、その同期要求をバックグラウンドデバッグシステムが検出すると、規定のクロック数分の幅（１２８周期）の“Ｌ”パルスを応答する。外部ツールは、この“Ｌ”パルスの幅（時間）を測定することにより、バックグラウンドデバッグシステムが使用しているバックグラウンドデバッグクロックのクロック速度を知ることができる。外部ツールは、バックグラウンドデバッグクロックのクロック速度と同じクロック速度で通信する。したがって、通信速度の同期を行うことができる。
【０００６】
このように、バックグラウンドデバッグシステムが活性化されている場合には、マイクロコントローラ（ＭＣＵ）がクロックを停止して低消費電力を実現するモードに遷移してもバックグラウンドデバッグクロックは停止することはない。これにより、外部ツールとの通信が常時可能となり、デバッグ作業の継続が可能である。しかしながら、一般的なマイクロコントローラの低電力モード遷移方法では、デバッグ対象であるユーザーアプリケーションプログラムによってクロック制御部の分周比が変更されることが多い。したがって、低速クロックモード、すなわち低電力モードに移行するマイクロコントローラ（ＭＣＵ）であり、かつ、クロック制御部および発振器を共有するマイクロコントローラの場合、バックグラウンドデバッグクロックのクロック速度切り替わり時点と、バッグラウンドデバッグシステムと外部ツールとの通信状態とは一般的に無関係であり、通信速度が非同期に変化することによって通信が不正となることがある。つまり、デバッグ作業が正常に継続できなくなる。
【０００７】
尚、特許第４１４５１４６号公報には、バックグラウンドデバッグシステムと外部ツールとの通信速度を同期化する方法が示されている。しかし、この通信速度同期方法では、常に外部ツールからの同期要求を起点に同期手続きが行われるため、デバッグ作業の途中、特に通信の途中においてクロック制御部の分周比が変更された場合には、外部ツールが通信速度を適切な時点に変更することができない。すなわち、外部ツールは、バックグラウンドデバッククロックの変更のタイミングを検出する手段および方法を持たないため、前述の通信不正を回避することができない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−２５２００６号公報
【特許文献２】特許第４１４５１４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、デバッグ機能のパフォーマンスを最適に保つように、通信内容に適合する通信速度で通信不整合を起こすことなくデータを送受することができるデバッグ装置、通信方法、情報処理装置を提供する。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明の観点では、情報処理装置は、ＣＰＵ部（２０１、２０２）と、外部ツール装置（５０１、５０２）と、第１送信部（４０１、４０２）と、第２送信部（４０５）と、受信部（３０１、３０２）とを具備する。ＣＰＵ部（２０１、２０２）は、第１クロック（ＳＣＬＫ）に基づいてデバッグ対象となるプログラムを実行する。その第１クロック（ＳＣＬＫ）は、ＣＰＵ部（２０１、２０２）の指示に基づいてクロック速度を変更される。外部ツール装置（５０１、５０２）は、デバッグを行うユーザーに対するマンマシンインタフェースを有する。第１送信部（４０１、４０２）は、第１クロック（ＳＣＬＫ）に基づいてデバッグデータを外部ツール装置（５０１、５０２）へ送信する。第２送信部（４０５）は、第１クロック（ＳＣＬＫ）と異なる第２クロック（ＤＣＬＫ）に基づいてデバッグデータを外部ツール装置（５０１、５０２）へ送信する。受信部（３０１、３０２）は、外部ツール装置（５０１、５０２）から送信されるデータを受信する。
【００１２】
本発明の他の観点では、マイクロコントローラ（１０１、１０２）は、ＣＰＵ部（２０１、２０２）と、第１送信部（４０１、４０２）と、第２送信部（４０５）と、受信部（３０１、３０２）とを具備する。ＣＰＵ部（２０１、２０２）は、第１クロック（ＳＣＬＫ）に基づいてデバッグ対象となるプログラムを実行する。この第１クロック（ＳＣＬＫ）は、ＣＰＵ部（２０１、２０２）の指示に基づいてクロック速度を変更される。第１送信部（４０１、４０２）は、デバッグを行うユーザーに対するマンマシンインタフェースを有する外部ツール装置（５０１、５０２）に対して、第１クロック（ＳＣＬＫ）に基づいてデバッグデータを外部ツール装置（５０１、５０２）へ送信する。第２送信部（４０５）は、第１クロック（ＳＣＬＫ）と異なる第２クロック（ＤＣＬＫ）に基づいてデバッグデータを外部ツール装置（５０１、５０２）へ送信する。受信部（３０１、３０２）は、外部ツール装置（５０１、５０２）から送信されるデータを受信する。
【００１３】
また、本発明の他の観点では、デバッグ装置は、第１送信部（４０１、４０２）と、第２送信部（４０５）と、受信部（３０１、３０２）とを具備する。第１送信部（４０１、４０２）は、ＣＰＵ部（２０１、２０２）の指示に基づいてクロック速度を変更される第１クロック（ＳＣＬＫ）に基づいて、デバッグデータを外部ツール装置（５０１、５０２）へ送信する。このＣＰＵ部（２０１、２０２）は、デバッグ対象となるプログラムを実行する。第２送信部（４０５）は、第１クロック（ＳＣＬＫ）と異なる第２クロック（ＤＣＬＫ）に基づいて、デバッグデータを外部ツール装置（５０１、５０２）へ送信する。受信部（３０１、３０２）は、外部ツール装置（５０１、５０２）から送信されるデータを受信する。
【００１４】
さらに、本発明の他の観点では、デバッグを行うユーザーに対するマンマシンインタフェースを有する外部ツール装置（５０１、５０２）は、ツール受信部（５４０）と、ツール送信部（５３０）とを具備する。ツール受信部（５４０）は、ＣＰＵ部（２０１、２０２）の指示に基づいてクロック速度を変更される第１クロック（ＳＣＬＫ）に基づいて、デバッグ対象となるプログラムを実行するマイクロコントローラ（１０１、１０２）の第１送信部（４０１、４０２）から送信されるデバッグデータと、第１クロック（ＳＣＬＫ）と異なる第２クロック（ＤＣＬＫ）に基づいてマイクロコントローラ（１０１、１０２）の第２送信部（４０１、４０２）から送信されるデバッグデータとを受信する。ツール送信部（５３０）は、マイクロコントローラ（１０１、１０２）の受信部（３０１、３０２）へデバッグするためのコマンドを送信する。
【００１５】
また、本発明の他の観点では、デバッグ方法は、第１クロック（ＳＣＬＫ）に基づいてデバッグ対象となるプログラムを実行するマイクロコントローラ（１０１、１０２）と、デバッグを行うユーザーに対するマンマシンインタフェースを有する外部ツール装置（５０１、５０２）とを用いてデバッグするデバッグ方法であって、第１送信部（４０１、４０２）から送信するステップと、第２送信部（４０５）から送信するステップと、受信するステップと、クロック速度を変更するステップとを具備する。第１送信部（４０１、４０２）から送信するステップでは、第１クロック（ＳＣＬＫ）に基づいてデバッグデータが外部ツール装置（５０１、５０２）へ第１送信部（４０１、４０２）から送信される。第２送信部（４０５）から送信するステップでは、第１クロック（ＳＣＬＫ）と異なる第２クロック（ＤＣＬＫ）に基づいてデバッグデータが外部ツール装置（５０１、５０２）へ第２送信部（４０５）から送信される。受信するステップでは、外部ツール装置（５０１、５０２）から送信されるデータが受信部（３０１、３０２）により受信される。クロック速度を変更するステップでは、マイクロコントローラ（１０１、１０２）の指示に基づいて前記第１クロック（ＳＣＬＫ）のクロック速度が変更される。
【発明の効果】
【００１６】
本発明によれば、デバッグ作業とは独立に、ユーザープログラムによりシステムクロック速度が変更された場合でも外部ツールと通信不整合を起こすことなく、かつデバッグ用通信の速度を最適に保つことができる情報処理装置、そのデバッグ装置、デバッグ方法を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態に係る情報処理装置の構成を示す図である。
【図２】ＣＰＵ部２０１の構成を示す図である。
【図３】送受信部３０１の構成を示す図である。
【図４】送信部４００の構成を示す図である。
【図５】外部ツール５０１の構成を示す図である。
【図６】通信速度管理テーブル５２１の構成を示す図である。
【図７】第１の実施の形態において説明されるコマンドの内容を示す図である。
【図８】マイクロコントローラ１０１と外部ツール５０１と間で通信する際の転送フォーマットを示す図である。
【図９】外部ツール５０１の動作を示すフローチャートである。
【図１０】送受信部３０１の動作を示すフローチャートである。
【図１１】本発明の第２の実施の形態に係る情報処理装置の構成を示す図である。
【図１２】ＣＰＵ部２０２の構成を示す図である。
【図１３】送受信部３０２の構成を示す図である。
【図１４】送信部４０２の構成を示す図である。
【図１５】外部ツール５０２の構成を示す図である。
【図１６】第２の実施の形態において説明されるコマンドの内容を示す図である。
【図１７】通信速度管理テーブル５２２の構成を示す図である。
【図１８】マイクロコントローラ１０２と外部ツール５０２と間で通信する際の転送フォーマットを示す図である。
【図１９】送受信されるデータのフォーマットを示す図である。
【図２０】外部ツール５０２の動作を示すフローチャートである。
【図２１】外部ツール５０２のトレース終了時の動作を示すフローチャートである。
【図２２Ａ】送受信部３０２の動作を示すフローチャートである。
【図２２Ｂ】送受信部３０２の動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
（第１の実施の形態）
図１は、本発明に係る情報処理装置のデバッグ時の構成を示すブロック図である。情報処理装置は、マイクロコントローラ（ＭＣＵ）１０１と、外部ツール５０１とを具備する。マイクロコントローラ１０１は、送受信部３０１、送信部４０１、ＣＰＵ部２０１、デバッグクロック生成部１５０、同期化回路１３０、１４０、クロック速度表示レジスタ１２０、クロック生成部１１０を備える。ＣＰＵ部２０１を除いた部分が所謂デバッグ装置であり、ＣＰＵ部２０１は、デバッグをサポートする機能を有する。これらブロックのうち、送受信部３０１、送信部４０１、クロック速度表示レジスタ１２０は、従来にない本発明の特徴となる部分である。また、送受信部３０１には、デバッグクロック生成部１５０から出力されるデバッグクロック信号ＤＣＬＫが供給され、送信部４０１には、ＣＰＵ部２０１で生成されるシステムクロック信号ＳＣＬＫが供給されることを特徴とする。尚、本実施の形態では、デバッグ機能の一つであるＲＡＭモニタ機能を実現する例を示す。なお、同期化回路１３０、１４０は、基準とする動作クロックの異なるブロック間で入出力される信号を同期化する回路である。同期化の前後で信号の意味合いは変わらないため、同期化後の信号は、同期化前の信号を示す符号に“（ＳＹＮ）”を付加して同期化後であることを示す。
【００１９】
図２は、ＣＰＵ部２０１の構成を示すブロック図である。ＣＰＵ部２０１は、ＣＰＵ２１０、ＲＯＭ２２０、ＲＡＭ２３０、システムクロック制御部２４０、ＲＡＭアドレス設定レジスタ２５０、ＲＡＭモニタ制御部２６０を備え、デバッグ機能としてＲＡＭモニタ機能をサポートする。ＲＯＭ２２０は、ユーザーアプリケーションプログラムが格納される読み出し専用の記憶装置である。ＲＡＭ２３０は、ユーザーアプリケーションプログラム実行時に必要なデータを保持する読み書き可能な記憶装置である。ＲＡＭ２３０は、ＣＰＵ２１０からのアクセスポートとＲＡＭモニタ制御部２６０からのアクセスポートとを有する。ＣＰＵ２１０は、ＲＯＭ２２０に格納されるユーザーアプリケーションプログラムを実行する中央演算処理装置である。
【００２０】
ＲＡＭアドレス設定レジスタ２５０は、デバッグ目的でＲＡＭ２３０をアクセスするためのアドレスを保持するレジスタである。アクセスするアドレスは、デバッグローカルバス信号ＤＬＢを介してＲＡＭアドレス設定レジスタ２５０に設定される。設定内容は、ＲＡＭモニタ制御部２６０に通知される。ＲＡＭモニタ制御部２６０は、ＲＡＭアドレス設定レジスタ２５０から通知されるＲＡＭアドレスを使用してＲＡＭ２３０へのアクセスサイクルを発生させる。アクセスの結果得られたデータは、ＲＡＭモニタデータ信号ＲＭＮＴにより送信部４０１へ出力される。尚、ＲＡＭ２３０のアクセスは、デバッグローカルバス信号ＤＬＢを介してＲＡＭモニタ制御部２６０内部のＲＡＭアクセス開始制御ビットがセットされることにより行われる。
【００２１】
システムクロック制御部２４０は、入力されるクロック入力信号ＩＣＬＫに基づいて生成されるシステムクロック信号ＳＣＬＫを出力する。すなわち、システムクロック制御部２４０は、クロック入力信号ＩＣＬＫを分周する機能およびクロック停止させる機能を有し、ＣＰＵ２１０から設定可能である。さらに、システムクロック制御部２４０は、分周およびクロック停止等のクロック速度の変更を実行する前に、クロック速度変更要求信号ＣＲＥＱを出力する。その後、クロック速度変更要求信号ＣＲＥＱに応答して送受信部３０１から出力されるクロック速度変更許可信号ＣＡＣＫがアクティブになると、システムクロック制御部２４０は、クロック速度の変更を実行する。本実施の形態では、分周されていないシステムクロック速度を“高速システムクロック速度”、分周されたクロック速度を“低速システムクロック速度”、システムクロックが停止している状態を“システムクロック停止”と呼ぶ。当然ながら、“システムクロック停止”の状態のときには、ＣＰＵ部２０１は動作を停止する。“システムクロック停止”状態の解除は、ＣＰＵ部２０１へのリセットや割り込み等が入力されることにより行われるものとする。また、初期状態では、“高速システムクロック速度”の状態にあるものとする。
【００２２】
図３に示されるように、送受信部３０１は、シーケンス制御部３１１、送信部４０５、受信データサンプリング部３２１、受信シフタ３３０、コマンドバッファ部３４０、ライトデータバッファ部３５０、コマンド実行部３６０を備える。シーケンス制御部３１１は、ＲＡＭモニタ処理実現のための中核をなすもので、送受信の手順制御、コマンドの解析、コマンド実行の指示、システムクロック制御部２４０のクロック速度変更許可制御、ＩＮＦＯビット付加指示を行う。詳細な動作は、後述する。
【００２３】
受信データサンプリング部３２１は、外部ツール５０１から転送されるデータを示すデバッグ通信入力信号ＤＩをデバッグクロック信号ＤＣＬＫに基づいて非同期サンプリングし、得られた１ビットデータを受信シフタ３３０に出力する。また、受信の開始と終了を知るためのスタートビット（ＳＴＲビット）、ストップビット（ＳＴＰビット）を検出する機能を有する。ストップビットの２ビットデータ値は、受信シフタ３３０に出力されるが、スタートビットは受信の開始検出のみに使用され、１ビットデータとしては出力されない。
【００２４】
受信シフタ３３０は、１１ビットのシフトレジスタであり、受信データサンプリング部３２１から１ビットのデータを取り込み、１ビットシフトして直列並列変換する。そして、１１ビットのシフトが完了すると、受信シフタ３３０は、ビット０〜ビット７を受信データとして受信データ信号ＲＣＶＤに出力する。同時に、受信シフタ３３０は、受信完了信号ＲＶＥＤをアクティブにし、外部ツール５０１から受信データを受け取ったことをシーケンス制御部３１１に通知する。
【００２５】
コマンドバッファ部３４０は、コマンド取り込み信号ＣＭＧＴがアクティブになると、受信データ信号ＲＣＶＤから８ビットの受信データを取り込み、コマンドコード部分（ＣＭＤ［０：１］）を抽出してコマンドデータ信号ＣＤとしてシーケンス制御部３１１に出力する。
【００２６】
ライトデータバッファ部３５０は、ライトデータ取り込み信号ＷＤＧＴがアクティブになると、受信データ信号ＲＣＶＤから８ビットの受信データを取り込み、ライトデータ信号ＷＤとしてコマンド実行部３６０に出力する。
【００２７】
コマンド実行部３６０は、コマンド実行開始信号ＣＳＴがアクティブになると、それぞれのコマンドに対応する動作を行う。コマンド実行開始信号ＣＳＴは、処理中のコマンド情報を含む。コマンドの処理が完了すると、コマンド実行部３６０は、コマンド実行完了信号ＣＥＤをシーケンス制御部３１１に出力する。例えば、処理中のコマンド情報がライトデータ転送を行うコマンド“０２Ｈ”（ＲＡＭアドレス設定レジスタライト）を示す場合には、８ビットのライトデータ信号ＷＤからデータを取り込み、コマンド実行部ライトバス信号ＷＢに出力する。データを出力すると、コマンド実行部３６０は、コマンド実行完了信号ＣＥＤを出力する。また、コマンド情報がリードデータ転送を行うコマンド“００Ｈ”（クロック速度表示レジスタリード）を示す場合には、コマンド実行部リードバス信号ＲＢから８ビットのデータを取り込み、そのデータをコマンド実行部リードデータ出力信号ＣＲＤＯとして送信部４０５に出力し、コマンド実行完了信号ＣＥＤをシーケンス制御部３１１に出力する。なお、“００Ｈ”等の表記は、１６進数であることを示す。
【００２８】
図４は、送信部４００の構成を示すブロック図である。送受信部３０１に内蔵される送信部４０５と、送信部４０１とは、図４に示される送信部４００と同じ構成であり、リードデータバッファ部４１０、送信シフタ４２０を備える。リードデータバッファ部４１０は、データ入力信号ＲＤＩから８ビットのデータを受け取って保持し、リードバッファ部有効信号ＢＶＤを出力する。ここで、データ入力信号ＲＤＩは、送信部４０５ではコマンド実行部３６０から入力されるコマンド実行部リードデータ出力信号ＣＲＤＯに相当し、送信部４０１ではＣＰＵ部２０１から出力されるＲＡＭモニタデータ信号ＲＭＮＴに相当する。また、リードバッファ部有効信号ＢＶＤは、送信部４０５ではシーケンス制御部３１１に出力されるリードバッファ部有効信号ＢＶＤＢに相当し、送信部４０１では同期化回路１４０を介してシーケンス制御部３１１に出力されるリードバッファ部有効信号ＢＶＤＡに相当する。
【００２９】
送信シフタ４２０は、１２ビットのシフトレジスタである。送信開始信号ＳＳＴがアクティブになると、リードデータバッファ部４１０に格納される８ビットのデータが送信シフタ４２０にセットされ、入力されるクロック信号ＣＬＫのクロック速度で、図８に示されるリードデータ転送のフォーマットに従って送信部出力信号ＲＤＯからシフト出力される。送信シフタ４２０は、シフト出力する際にＩＮＦＯ情報セット要求信号ＳＩＱがアクティブであれば、ビット９のＩＮＦＯビットをアクティブ“１”にする。１２ビットのシフト出力が完了すると、送信シフタ４２０は、送信完了信号ＳＥＤをアクティブにする。ここで、入力されるクロック信号ＣＬＫは、送信部４０１ではシステムクロック信号ＳＣＬＫに相当し、送信部４０５ではデバッグクロック信号ＤＣＬＫに相当する。また、送信開始信号ＳＳＴは、送信部４０１では送信開始信号ＳＳＴＡ（ＳＹＮ）に相当し、送信部４０５では送信開始信号ＳＳＴＢに相当する。送信部出力信号ＲＤＯは、送信部４０１では送信部出力信号ＳＤＯに相当し、送信部４０５では送信部出力信号ＳＲＯに相当する。ＩＮＦＯ情報セット要求信号ＳＩＱは、送信部４０１ではＩＮＦＯ情報セット要求信号ＳＩＱＡ（ＳＹＮ）に相当し、送信部４０５ではＩＮＦＯ情報セット要求信号ＳＩＱＢに相当する。送信完了信号ＳＥＤは、送信部４０１では送信完了信号ＳＥＤＡに相当し、送信部４０５では送信完了信号ＳＥＤＢに相当する。
【００３０】
図５は、外部ツール５０１の構成を示すブロック図である。外部ツール５０１は、ツール制御部５１１、通信速度管理テーブル５２１、ツール送信部５３０、ツール受信部５４０を備える。ツール送信部５３０は、所定の転送フォーマットに従ってデバッグ通信入出力信号ＤＩＯを介して外部ツール５０１からマイクロコントローラ１０１へデータを送信する。ツール受信部５４０は、所定の転送フォーマットに従ってデバッグ通信入出力信号ＤＩＯを介してマイクロコントローラ１０１から外部ツール５０１へ送られてくるデータを受信する。このときの通信速度を、ツール制御部５１１は、通信速度管理テーブル５２１を参照して制御する。
【００３１】
図６に、通信速度管理テーブル５２１の構成が示される。通信速度管理テーブル５２１は、マイクロコントローラ１０１と通信する際の送信用クロック速度、受信用クロック速度を示す情報をコマンドＣＭＤのコードに関連付けて格納する。ツール制御部５１１は、このテーブルを参照して、発行するコマンド毎に送信用クロック速度、受信用クロック速度を適切に切り替える。また、ツール制御部５１１は、必要に応じて、このテーブルの内容を更新する。
【００３２】
図７は、本実施の形態において説明されるコマンドの内容を示す。本実施の形態で説明されるＲＡＭモニタ機能は、これらのコマンドが外部ツール５０１から発行され、マイクロコントローラ１０１が処理することにより実現される。
【００３３】
図８は、デバッグ通信入出力信号ＤＩＯを介してマイクロコントローラ１０１と外部ツール５０１と間で通信する際のリード／ライト転送フォーマットを示す図である。ビット０に“０”固定のスタートビット（ＳＴＲ）が割り当てられ、ビット１〜８に8ビットのデータが割り当てられ、ビット９に所定の情報が割り当てられ、ビット１０〜１１に“１”固定のストップビット（ＳＴＰ）が割り当てられる。外部ツール５０１が発行してマイクロコントローラ１０１に実行させるコマンドは、転送フォーマットによって転送される。図８（ａ）に示されるように、リードコマンド転送フォーマットは、ビット１〜２にコマンドＣＭＤのコードが割り当てられ、ビット３〜８は未使用である。ビット９は“０”固定とする。図８（ｂ）に示されるように、リードデータ転送フォーマットは、ビット１〜８に転送される８ビットのリードデータが割り当てられる。リードデータ転送フォーマットのビット９の位置に、クロック速度表示レジスタ１２０が更新されたことを示すＩＮＦＯビットが割り当てられる。ライトコマンド転送フォーマットは、図８（ｃ）に示されるように、ビット１〜２にコマンドＣＭＤのコードが割り当てられ、ビット３〜８は未使用である。ビット９は“０”固定とする。ライトデータ転送フォーマットは、図８（ｄ）に示されるように、ビット１〜８に転送される８ビットのリードデータが割り当てられる。
【００３４】
次に、本実施の形態における動作の概要を説明する。送受信部３０１と送信部４０１とは、デバック通信入出力信号ＤＩＯを介して外部ツール５０１との間で、１ピンを使用して非同期の通信をする。この通信は、図８に示されるリード／ライト転送フォーマットに従って行われる。
【００３５】
ライト転送の場合、次のように行われる。ライト転送を必要とする図７に示されるコマンドのコード（ＣＭＤ［０：１］）が、外部ツール５０１から送受信部３０１に対して転送されると、送受信部３０１は、受信およびコマンド解析を行い、コマンドを実行する。例えば、コマンドのコード（ＣＭＤ［０：１］）が“０２Ｈ”（ＲＡＭアドレス設定レジスタライト）の場合、送受信部３０１は、コマンド転送に続いて外部ツール５０１から転送されてくるデータを受信し、同期化回路１３０を介してデバッグローカルバス信号ＤＬＢに出力してライトサイクルを実行する。転送されてきたデータは、ＣＰＵ部２０１に搭載されるＲＡＭアドレス設定レジスタ２５０に書き込まれる。
【００３６】
リード転送の場合、次のように行われる。リード転送を必要とする図７に示されるコマンドのコード（ＣＭＤ［０：１］）が、外部ツール５０１から送受信部３０１に対して転送されると、送受信部３０１は、受信およびコマンド解析を行い、コマンドを実行する。例えば、コマンドのコード（ＣＭＤ［０：１］）が“０３Ｈ”（ＲＡＭモニタリード）の場合、送受信部３０１は、同期化回路１３０を介してデバッグローカルバス信号ＤＬＢに制御情報を出力してライトサイクルを実行し、ＲＡＭモニタ制御部２６０にＲＡＭ２３０のリードアクセスを開始するように指示する。
【００３７】
ＲＡＭモニタ制御部２６０は、送受信部３０１からの指示に応答して、ＲＡＭアドレス設定レジスタ２５０に保持されているＲＡＭアドレスを使用してＲＡＭ２３０をリードアクセスする。リードアクセスの結果得られたデータは、ＲＡＭモニタデータ信号ＲＭＮＴを介して送信部４０１に出力される。送信部４０１は、入力されたＲＡＭモニタデータをシステムクロック信号ＳＣＬＫのクロック速度で送信部出力信号ＳＤＯとして出力する。ＲＡＭモニタデータは、図８（ｂ）に示される転送フォーマットに従って転送される。送信部出力信号ＳＤＯは、デバック通信入出力信号ＤＩＯと３ステートバス接続されている。したがって、送信部４０１から出力されるＲＡＭモニタデータは、デバック通信入出力信号ＤＩＯを介して外部ツール５０１に転送される。
【００３８】
一方、外部ツール５０１は、マイクロコントローラ１０１に“０３Ｈ”（ＲＡＭモニタリード）のコマンド転送をした後、マイクロコントローラ１０１からデバック通信入出力信号ＤＩＯを介して出力されてくるＲＡＭモニタデータ取得に備える。すなわち、ツール制御部５１１は、通信速度管理テーブル５２１を参照して“０３Ｈ”のコマンドに応答して転送されるデータを受信するための受信用クロック速度をツール受信部５４０に設定する。その後、デバック通信入出力信号ＤＩＯによってＣＰＵ部２０１から外部ツール５０１に出力されてくるＲＡＭモニタデータをツール受信部５４０は受信する。そして、外部ツール５０１は、取得したＲＡＭモニタデータを、デバッグを行っているユーザーに知らせるために表示装置等に示す。
【００３９】
同様に、コマンドのコード（ＣＭＤ［０：１］）が“００Ｈ”（クロック速度表示レジスタリード）の場合には、送受信部３０１は、コマンド実行部リードバス信号ＲＢを介してクロック速度表示レジスタ１２０に設定されるデータを読み出す。送信部４０５は、読み出されたデータを送受信部出力信号ＳＲＯとしてデバッグクロック速度で出力する。
【００４０】
一方、外部ツール５０１は、マイクロコントローラ１０１へ“００Ｈ”（クロック速度表示レジスタリード）のコマンド転送をした後、マイクロコントローラ１０１からデバック通信入出力信号ＤＩＯを介して出力されてくるデータ取得に備える。すなわち、ツール制御部５１１は、通信速度管理テーブル５２１を参照して、“００Ｈ”のコマンドに応答して転送されるデータを受信するための受信用クロック速度をツール受信部５４０に設定する。その後、デバック通信入出力信号ＤＩＯによってマイクロコントローラ１０１から外部ツール５０１に出力されるデータを、ツール受信部５４０は受信する。取得したデータは、ツール受信部５４０の受信速度制御に使用される。
【００４１】
マイクロコントローラ１０１は、クロック速度を下げて低電力モードに移行する機能を有する。そのため、以上説明してきた通信処理を含むデバッグ処理の最中に、マイクロコントローラ１０１がシステムクロック速度を下げることがある。その場合、次のような手順でシステムクロック信号ＳＣＬＫの速度変更を行う。
【００４２】
例えば、コマンド“０３Ｈ”（ＲＡＭモニタリード）を処理する前または処理中に、ＣＰＵ２１０が、システムクロック制御部２４０に対してクロック速度変更を要求する例を示す。その場合には、システムクロック制御部２４０は、クロック速度変更要求信号ＣＲＥＱをアクティブにして送受信部３０１に通知するとともに、クロック速度表示レジスタ１２０に変更後の速度を示す情報を設定する。
【００４３】
クロック速度変更要求信号ＣＲＥＱがアクティブになると、送受信部３０１は、ＩＮＦＯ情報セット要求信号ＳＩＱＡをアクティブにして送信部４０１に通知する。送信部４０１は、ＩＮＦＯ情報セット要求信号ＳＩＱＡがアクティブであれば、ビット９のＩＮＦＯビットをアクティブ（“１”）にしてリードデータ転送を行う。
【００４４】
外部ツール５０１は、受信したデータのＩＮＦＯビットがアクティブであれば、コマンド“００Ｈ”（クロック速度表示レジスタリード）を発行し、クロック速度表示レジスタ１２０の内容を取得して解析する。外部ツール５０１は、ビット７の“要求”ビットがアクティブであれば（図７参照）、ビット０〜ビット２に表示されているシステムクロック速度に従い、通信速度管理テーブル５２１のコマンド“０３Ｈ”の受信用クロック速度欄を更新する（図６参照）。以後コマンド“０３Ｈ”を発行してＲＡＭモニタデータを受信する際には更新された受信用クロック速度情報が使用される。したがって、ツール受信部５４０では変更後のシステムクロック速度で正常にデータ受信が可能となる。
【００４５】
ビット７の“要求”ビットは、一度読み出されると自動的にクリアされる。また、ビット０〜ビット２に表示されているシステムクロック速度が“システムクロック停止”を示す場合には、システムクロック速度が“高速システムクロック速度”または“低速システムクロック速度”示すようになるまで、外部ツール５０１はクロック速度表示レジスタ１２０を繰り返し読み出して待ち合わせる。
【００４６】
一方、送信部４０１からのＩＮＦＯビットを含むデータの送信が完了すると、送信部４０１は、そのことを示す送信完了信号ＳＥＤＣを、同期化回路１４０を介して送受信部３０１に通知する。送受信部３０１は、送信部４０１から送信完了を受けると、ＣＰＵ部２０１のシステムクロック制御部２４０に対するクロック速度変更許可信号ＣＡＣＫをアクティブにする。システムクロック制御部２４０は、クロック速度変更許可信号ＣＡＣＫがアクティブになると、システムクロック信号ＳＣＬＫのクロック速度を変更する。
【００４７】
さらに、詳細な各部の動作を説明する。図９、図１０に、ＲＡＭモニタ機能を実現するすために必要なコマンド処理の動作およびシステムクロック信号ＳＣＬＫの変更許可制御の動作が示される。
【００４８】
図９は、ＲＡＭモニタ機能およびをシステムクロック信号ＳＣＬＫの変更許可制御における外部ツール５０１の動作を示すフローチャートである。図９を参照して外部ツール５０１の動作を説明する。
【００４９】
ステップＳ１０２では、ツール制御部５１１は、通信速度管理テーブル５２１を参照して、コマンド“０２Ｈ”（ＲＡＭアドレス設定レジスタライト）を発行するときのライトコマンド転送およびライトデータ転送に適するクロック速度をツール送信部５３０に設定する。コマンド“０２Ｈ”の場合には、送信用クロック速度は、図６に示されているように“デバッグクロック速度”となる。
【００５０】
ステップＳ１０４では、デバッグ通信入出力信号ＤＩＯによって、ＣＭＤ［０：１］＝“０２Ｈ”がマイクロコントローラ１０１にデバッククロック速度で送出される。
【００５１】
ステップＳ１０６では、デバッグ通信入出力信号ＤＩＯによって、デバッククロック速度で、８ビットで示される所望のＲＡＭアドレス値を送出する。
【００５２】
ステップＳ１０８では、ツール制御部５１１は、通信速度管理テーブル５２１を参照して、コマンド“０３Ｈ”（ＲＡＭモニタリード）を発行するときのリードコマンド転送およびリードデータ転送に適するクロック速度をツール送信部５３０とツール受信部５４０とに設定する。コマンド“０３Ｈ”の場合には、図６に示されるように、送信用クロック速度は、“デバッグクロック速度”となり、受信用クロック速度は、“高速システムクロック速度（初期値）”となる。
【００５３】
ステップＳ１１０では、ツール送信部５３０は、デバッグ通信入出力信号ＤＩＯによって、ＣＭＤ［０：１］＝０３Ｈにしたデータをマイクロコントローラ１０１にデバッククロック速度で送出する。
【００５４】
ステップＳ１１２では、ツール受信部５４０は、デバッグ通信入出力信号ＤＩＯを介して、高速システムクロック速度でマイクロコントローラ１０１の送信部４０１から出力される８ビットのＲＡＭモニタデータおよびＩＮＦＯビットを受信する。
【００５５】
ステップＳ１１４では、外部ツール５０１は、受信したＲＡＭモニタデータを表示装置へ表示する等の処理を行う。
【００５６】
ステップＳ１２０では、ツール制御部５１１は、受信したＩＮＦＯビットの値を調べ、ＩＮＦＯビットの値が“０”であれば、ステップＳ１０２に戻り、次にモニタすべきＲＡＭデータのリード処理を行う。ＩＮＦＯビットの値が“１”すなわちクロック速度表示レジスタ１２０が更新されていれば、ステップＳ１２２〜ステップＳ１３０の通信速度管理テーブル５２１の更新処理を行う。
【００５７】
ステップＳ１２２では、ツール制御部５１１は、通信速度管理テーブル５２１を参照して、コマンド“００Ｈ”（クロック速度表示レジスタリード）を発行するときのライトコマンド転送およびリードトデータ転送に適するクロック速度をツール送信部５３０とツール受信部５４０とに設定する。コマンド“００Ｈ”の場合には、送信用クロック速度および受信用クロック速度は、図６に示されるように、“デバッグクロック速度”となる。
【００５８】
ステップＳ１２４では、ツール送信部５３０は、デバッグ通信入出力信号ＤＩＯを介して、ＣＭＤ［０：１］＝００Ｈにしたデータをマイクロコントローラ１０１にデバッククロック速度で送出する。
【００５９】
ステップＳ１２６では、ツール受信部５４０は、デバッグ通信入出力信号ＤＩＯを介して、デバッグクロック速度で送信部４０５から出力される８ビットのクロック速度表示レジスタ１２０に示される値を受信する。
【００６０】
ステップＳ１２８では、ツール制御部５１１は、受信したクロック速度表示レジスタ１２０の値に基づいて、通信速度管理テーブル５２１を更新する。
【００６１】
ステップＳ１３０では、ツール制御部５１１は、クロック速度表示レジスタ１２０の値を調べる。ビット２“停止”がアクティブであれば、ステップＳ１２４に戻り、改めてクロック速度表示レジスタ１２０の値を読み出し、ビット０“高速”またはビット１“低速”がアクティブになるまで待ち合わせる。“システムクロック停止”の状態では、ＣＰＵ部２０１は動作を停止しており、ＲＡＭモニタ制御部２６０のＲＡＭモニタ処理は実行できないためである。ビット２“停止”がアクティブでなければ、ステップＳ１０２に戻り、次にモニタすべきＲＡＭデータのリード処理を行う。
【００６２】
次に、送信部４０５およびシーケンス制御部３１１を中心とする送受信部３０１の詳細な動作を説明する。図１０は、送信部４０１およびシーケンス制御部３１１を中心とする送受信部３０１の動作を示すフローチャートである。
【００６３】
ステップＳ２０１では、受信データサンプリング部３２１は、リードコマンド転送またはライトコマンド転送を検出するためにデバック通信入力信号ＤＩを監視し、ＳＴＲビットを検出するまで待ち合わせる。
【００６４】
ステップＳ２０３では、受信データサンプリング部３２１は、デバッグクロック信号ＤＣＬＫに基づいて生成されるクロック信号によってデバック通信入出力信号ＤＩＯをサンプリングし、得られた１ビットデータを受信シフタ３３０に出力する。受信シフタ３３０は、受信サンプリング部３２１から送られてくるデータを１ビットシフトしながら取り込む。そして、１１ビット分のデータを格納し終わると、受信シフタ３３０は、８ビットのデータ部分を受信データ信号ＲＣＶＤとして出力するとともに、受信完了信号ＲＶＥＤをアクティブにしてシーケンス制御部３１１に受信完了を通知する。シーケンス制御部３１１は、受信完了信号ＲＶＥＤがアクティブになると、コマンド取り込み信号ＣＭＧＴをアクティブにしてコマンドバッファ部３４０にコマンド取り込みを指示する。コマンドバッファ部３４０は、コマンド取り込み信号ＣＭＧＴがアクティブになると、受信データ信号ＲＣＶＤから８ビットデータを取り込み、シーケンス制御部３１１にコマンドデータ信号ＣＤを出力する。
【００６５】
ステップＳ２０５では、シーケンス制御部３１１は、コマンドバッファ部３４０から出力されるコマンドデータ信号ＣＤのコマンド部分（ＣＭＤ［０：１］の２ビットデータ）を抽出し、コマンド解析を行う。コマンド（ＣＭＤ［０：１］）が“００Ｈ”であればステップＳ２１０へ、“０２Ｈ”であればステップＳ２２２へ、“０３Ｈ”であればステップＳ２３０へ分岐する。その他の値であれば、ステップＳ２０１へ戻ってコマンド入力待ちとなる。
【００６６】
ステップＳ２１０では、シーケンス制御部３１１は、コマンド実行開始信号ＣＳＴをアクティブにしてコマンド実行部３６０にコマンド実行を指示する。コマンド実行開始信号ＣＳＴは、“００Ｈ”（クロック速度表示レジスタリード）コマンドを処理中であることを示す情報を含む。コマンド実行部３６０は、コマンド実行開始信号ＣＳＴがアクティブになると、コマンド実行部リードバス信号ＲＢを使用してクロック速度表示レジスタ１２０をリードアクセスする。クロック速度表示レジスタ１２０に設定される８ビットの値を取り込むと、コマンド実行部３６０は、リードデータをコマンド実行部リードデータ出力信号ＣＲＤＯとして出力するとともに、コマンド実行完了信号ＣＥＤをアクティブにしてシーケンス制御部３１１に読み出し完了を通知する。送信部４０５は、コマンド実行部３６０から出力される８ビットのコマンド実行部リードデータ出力信号ＣＲＤＯのデータを内部のリードデータバッファ部４１０に格納すると、リードバッファ部有効信号ＢＶＤＢをアクティブにしてシーケンス制御部３１１に送信準備が終わったことを通知する。
【００６７】
ステップＳ２１２では、シーケンス制御部３１１は、リードバッファ部有効信号ＢＶＤＢがアクティブになると、クロック速度変更要求信号ＣＲＥＱの状態を調べる。クロック速度変更要求信号ＣＲＥＱが、アクティブであれば、シーケンス制御部３１１は、ＩＮＦＯ情報セット要求信号ＳＩＱＢをアクティブ（“１”）にする（ステップＳ２１４）。クロック速度変更要求信号ＣＲＥＱが、アクティブでなければ、シーケンス制御部３１１は、ＩＮＦＯ情報セット要求信号ＳＩＱＢをインアクティブ（“０”）にする（ステップＳ２１５）。
【００６８】
ステップＳ２１７では、シーケンス制御部３１１は、送信開始信号ＳＳＴＢをアクティブにして送信部４０５にデータの送信を指示する。送信部４０５は、リードデータバッファ部４１０に格納されている８ビットデータと、ＩＮＦＯ情報セット要求信号ＳＩＱＢにより指定される１ビットデータと、１ビットのＳＴＲビットと、２ビットのＳＴＰビットとを結合した１２ビットデータを送信シフタ４２０に格納する。送信シフタ４２０は、デバッグクロック信号ＤＣＬＫに同期して１ビットずつデータを送受信部出力信号ＳＲＯとしてシフト出力する。１２ビットのシフト出力が完了すると、送信シフタ４２０は、送信完了信号ＳＥＤＢをアクティブにする。
【００６９】
ステップＳ２１９では、シーケンス制御部３１１は、クロック速度変更許可信号ＣＡＣＫをアクティブにする。システムクロック制御部２４０は、クロック速度変更許可信号ＣＡＣＫがアクティブになると、システムクロック信号ＳＣＬＫの速度を変更する。その後、送受信部３０１は、ステップＳ２０１に戻って、次のコマンドを待つ。
【００７０】
ステップＳ２２２では、受信データサンプリング部３２１は、ライトデータ転送を検出するためにデバック通信入出力信号ＤＩＯを監視し、ＳＴＲビットを検出するまで待ち合わせる。
【００７１】
ステップＳ２２４では、受信データサンプリング部３２１は、デバッグクロック信号ＤＣＬＫに基づいて生成される信号によってデバック通信入出力信号ＤＩＯをサンプリングし、得られたデータを受信シフタ３３０に出力する。受信シフタ３３０は、受信データサンプリング部３２１から送られてくるデータを１ビットシフトしながら取り込む。１１ビット分のデータを格納し終わると、受信シフタ３３０は、８ビットデータ部分を受信データ信号ＲＣＶＤとして出力するとともに、受信完了信号ＲＶＥＤをアクティブにしてシーケンス制御部３１１に受信完了を通知する。シーケンス制御部３１１は、ライトデータ取り込み信号ＷＤＧＴをアクティブにしてライトデータバッファ部３５０にデータの取り込みを指示する。ライトデータバッファ部３５０は、受信データ信号ＲＣＶＤから８ビットデータを取り込み、コマンド実行部３６０にライトデータ信号ＷＤを出力する。
【００７２】
ステップＳ２２６では、シーケンス制御部３１１は、コマンド実行開始信号ＣＳＴをアクティブにしてコマンド実行部３６０に通知する。コマンド実行開始信号ＣＳＴは、“０２Ｈ”コマンド処理中を示す情報を含む。コマンド実行開始信号ＣＳＴがアクティブになると、コマンド実行部３６０は、コマンド実行部ライトバス信号ＷＢを使用し、デバッグローカルバス信号ＤＬＢにＲＡＭアドレス設定レジスタ２５０書き込みデータを出力し、ライトサイクルを実行させる。コマンド実行部３６０は、コマンド実行完了信号ＣＥＤをアクティブにしてシーケンス制御部３１１に実行完了を通知する。その後、送受信部３０１は、ステップＳ２０１に戻って、次のコマンドを待つ。
【００７３】
一方、デバッグローカルバス信号ＤＬＢがＲＡＭアドレス設定レジスタ２５０に対するライトサイクルを示す場合、ＲＡＭアドレス設定レジスタ２５０は、デバッグローカルバス信号ＤＬＢから８ビットの書き込みデータを取り込んで保持する。保持内容は、ＲＡＭモニタ制御部２６０に通知される。
【００７４】
ステップＳ２３０では、シーケンス制御部３１１は、コマンド実行開始信号ＣＳＴをアクティブにしてコマンド実行部３６０にコマンド実行を指示する。コマンド実行開始信号ＣＳＴは、“０３Ｈ”コマンド処理中を示す情報を含む。コマンド実行開始信号ＣＳＴがアクティブになると、コマンド実行部３６０は、コマンド実行部ライトバス信号ＷＢを使用してデバッグローカルバス信号ＤＬＢにＲＡＭモニタ制御部２６０の内部のＲＡＭアクセス開始制御ビットをセットすることを示す制御情報を出力してライトサイクルを実行する。コマンド実行部３６０は、コマンド実行完了信号ＣＥＤをアクティブにしてシーケンス制御部３１１にコマンド実行完了を通知する。
【００７５】
ステップＳ２３１では、ＲＡＭモニタ制御部２６０は、内部にあるＲＡＭアクセス開始制御ビットがセットされると、ＲＡＭアドレス設定レジスタ２５０から入力される８ビットのＲＡＭアドレスを使用してＲＡＭ２３０をリードアクセスする。リードアクセスの結果得られた８ビットのリードデータは、ＲＡＭモニタデータ信号ＲＭＮＴとして出力される。送信部５０１は、ＲＡＭモニタデータ信号ＲＭＮＴに含まれる８ビットのリードデータを内部のリードデータバッファ部４１０に格納し、リードバッファ部有効信号ＢＶＤＡをアクティブにする。リードバッファ部有効信号ＢＶＤＡは、同期化回路１４０を介して、リードバッファ部有効信号ＢＶＤＡ（ＳＹＮ）としてシーケンス制御部３１１に通知される。
【００７６】
ステップＳ２３２では、シーケンス制御部３１１は、リードバッファ部有効信号ＢＶＤＡがアクティブになると、クロック速度変更要求信号ＣＲＥＱの状態を調べる。クロック速度変更要求信号ＣＲＥＱがアクティブであれば、シーケンス制御部３１１は、ＩＮＦＯ情報セット要求信号ＳＩＱＡをアクティブ（“１”）にする（ステップＳ２３４）。クロック速度変更要求信号ＣＲＥＱがアクティブでなければ、シーケンス制御部３１１は、ＩＮＦＯ情報セット要求信号ＳＩＱＡをインアクティブ（“０”）にする（ステップＳ２３５）。
【００７７】
ステップＳ２３７では、シーケンス制御部３１１は、送信開始信号ＳＳＴＡをアクティブにし、同期化回路１４０を介して送信部４０１に通知する。送信部４０１は、送信開始信号ＳＳＴＡ（ＳＹＮ）がアクティブになると、リードデータバッファ部４１０に格納されている８ビットデータと、同期化回路１４０を介して入力されるＩＮＦＯ情報セット要求信号ＳＩＱＡ（ＳＹＮ）により指定される１ビットデータと、１ビットのＳＴＲビットと、２ビットのＳＴＰビットとを結合した１２ビットデータを送信シフタ４２０に格納する。送信シフタ４２０は、システムクロック信号ＳＣＬＫに同期して１ビットずつ送信データを送受信部出力信号ＳＲＯとしてシフト出力する。１２ビットのシフト出力が完了すると、送信シフタ４２０は、送信完了信号ＳＥＤＣをアクティブにする。送信完了信号ＳＥＤＣは、同期化回路１４０を介して送信完了信号ＳＥＤＡ（ＳＹＮ）としてシーケンス制御部３１１に送信完了を通知する。
【００７８】
ステップＳ２３９では、シーケンス制御部３１１は、送信完了信号ＳＥＤＡ（ＳＹＮ）がアクティブになると、ＣＰＵ部２０１内のシステムクロック制御部２４０へのクロック速度変更許可信号ＣＡＣＫをアクティブにする。システムクロック制御部２４０は、クロック速度変更許可信号ＣＡＣＫがアクティブになると、ＣＰＵ２１０から設定されたシステムクロック速度にシステムクロック信号ＳＣＬＫのクロック速度を変更する。その後、送受信部３０１は、ステップＳ２０１に戻って、次のコマンドを待つ。
【００７９】
以上説明したように、本発明では、情報処理装置は、停止することのない一般的に低速であるデバッグクロック信号ＤＣＬＫに基づいて動作する送受信部３０１と、クロック速度が変化し得る一般的に高速であるシステムクロックに基づいて動作する送信部４０１と、速度可変であるシステムクロックの速度情報を表示するクロック速度表示レジスタ１２０とを具備し、かつ、送受信部３０１内のシーケンス制御部３１１に、ＣＰＵ部２０１内のシステムクロック制御部２４０とハンドシェーク制御する機能とクロック表示レジスタ１２０の表示内容が変更されたことを示す情報を送信部４０１に通知し外部に送出させる機能を備える。これにより、マイクロコントローラ側が主導してマイクロコントローラと外部ツールとのデバッグ用通信速度を同期させることができる。したがって、アプリケーションプログラムでシステムクロックの速度をデバッグ用の通信とは非同期に変化させても、デバッグ用の通信は正常に行われる。
【００８０】
（第２の実施の形態）
図１１に、本発明の第２の実施の形態に係る情報処理装置の構成が示される。本実施の形態では、第１の実施の形態における送受信部３０１は送受信部３０２に、送信部４０１は送信部４０２に、ＣＰＵ部２０１はＣＰＵ部２０２に、外部ツール５０１は外部ツール５０２にそれぞれ置き換わり、各内部ブロックの一部が異なっている。また、第１の実施の形態におけるデバッグクロック生成部１５０は削除され、デバッグクロック信号ＤＣＬＫは、外部ツール５０２から供給される。さらに、送受信部３０２からＩＮＦＯ情報セット要求信号ＳＩＱＡは出力されず、対応する送信部４０２への入力はインアクティブ（“０”）に固定される。その他は、第１の実施の形態と変わらないので説明を省略する。
【００８１】
図１２は、デバッグ機能としてデータトレース機能を実現するＣＰＵ部２０２の構成を示すブロック図である。ＣＰＵ２１０、システムクロック制御部２４０、ＲＡＭ２３０、ＲＯＭ２２０は、第１の実施の形態と同じものであり、動作も同じである。ただし、ＲＡＭ２３０のデバッグ用のアクセスポートは未接続となっている。第１の実施の形態では、ＲＡＭモニタ機能を実現するために記載されていたＲＡＭアドレス設定レジスタ２５０およびＲＡＭモニタ制御部２６０は、データトレース機能を実現するためのデータトレース制御部２７０に置き換わっている。データトレース制御部２７０は、ＣＰＵ２１０の動作を監視し、ＣＰＵ２１０がＲＡＭ２３０等へのストア命令を実行するとトレースデータを生成してトレース出力信号ＴＲＯとしてシステムクロック信号ＳＣＬＫに同期して出力する。トレースデータは、図１９（ａ）に示されるフォーマットＡの１６ビットのデータである。また、システムクロック制御部２４０が出力するクロック速度変更要求信号ＣＲＥＱがアクティブになると、図１９（ｂ）に示されるフォーマットＢの８ビットのデータが生成され、トレース出力信号ＴＲＯとして出力される。リードバッファ部ビジー信号ＲＢＳＹがアクティブのときに、データが生成された場合には、そのデータは内部で保持され、リードバッファ部ビジー信号ＲＢＳＹがインアクティブになった後に出力される。尚、データトレース制御部２７０の有効化、無効化の設定は、デバッグローカルバス信号ＤＬＢを介してデータトレース制御部２７０内部の制御ビットを操作することによって行われる。
【００８２】
本実施の形態では、デバッグ機能としてデータトレース機能を実現するために、対応するコマンドは、図７に示されるコマンドから図１６に示されるコマンドに変更される。図１６は、本実施の形態において説明されるコマンドの内容を示す。データトレース機能は、これらのコマンドを使用し実現される。
【００８３】
図１３は、送受信部３０２の構成を示すブロック図である。送受信部３０２は、シーケンス制御部３１２、送信部４０５、受信データサンプリング部３２２、受信シフタ３３０、コマンドバッファ部３４０、ライトデータバッファ部３５０、コマンド実行部３６０を備える。これらのブロックのうち、受信シフタ３３０、ライトデータバッファ部３５０、コマンドバッファ部３４０、コマンド実行部３６０、送信部４０５は、第１の実施の形態と同じものであり、動作も同じである。受信データサンプリング部３２２は、デバッグクロック信号ＤＣＬＫで同期サンプリングする点が異なるだけで受信データサンプリング部３２１と同様に、外部ツール５０２から転送されるデバッグ通信入力信号ＤＩをサンプリングして１ビットデータを得る。シーケンス制御部３１２は、シーケンス制御部３１１と同様に、コマンドバッフ部３４０から入力されるコマンド（ＣＭＤ［０：２］）を解析し、そのコマンドに応じた処理を、ライトデータバッファ部３５０、コマンド実行部３６０、送信部４０５、クロック速度変更許可信号ＣＡＣＫを使用し、実現するものである。
【００８４】
図１４は、送信部４０２の構成を示すブロック図である。送信部４０２は、送信制御部４３０、送信シフタ４２０、リードデータバッファ部４１１を備える。送信シフタ４２０は、第１の実施の形態と同じものであり、動作も同じである。リードデータバッファ部４１１は、それぞれ８ビットのデータを保持するＭバッファ部４１２とＬバッファ部４１３とを含む記憶装置である。Ｍバッファ部４１２、Ｌバッファ部４１３は、送信制御部４３０から書き込まれる８ビットのデータを保持する。送信制御部４３０は、トレースデータの格納制御および送信シフタ４２０の動作制御を行う。
【００８５】
送信制御部４３０は、ＣＰＵ部２０２からトレース出力信号ＴＲＯを介して入力されるトレースデータがフォーマットＡ（図１９（ａ）参照）のトレースデータであれば、そのビット０〜ビット７部分の８ビットデータをリードデータバッファ部４１１のＭバッファ部４１２に格納し、ビット８〜ビット１５部分の８ビットデータをリードデータバッファ部４１１のＬバッファ部４１３に格納する。そして、送信制御部４３０は、リードバッファ部有効信号ＢＶＤＣをアクティブにする。その後、送信開始信号ＳＳＴがアクティブになると、送信制御部４３０は、Ｍバッファ部４１２およびＬバッファ部４１３に格納された、それぞれ８ビットデータを送信シフタ４２０に送り、送信部出力信号ＳＳＯとして外部ツール５０２へ出力する。送信シフタ４２０が送信部出力信号ＳＳＯとして１６ビット分のデータを出力し終わると、送信制御部４３０は、送信完了信号ＳＥＤＣをアクティブにする。
【００８６】
一方、トレース出力信号ＴＲＯを介して入力されるトレースデータがフォーマットＢ（図１９（ｂ）参照）のデータであれば、そのビット０〜ビット７の部分の８ビットデータは、Ｍバッファ部４１２に格納される。そして、送信制御部４３０は、リードバッファ部有効信号ＢＶＤＣをアクティブにする。その後、送信開始信号ＳＳＴＣ（ＳＹＮ）がアクティブになると、Ｍバッファ部４１２に格納された８ビットデータを送信シフタ４２０に送り、シフト開始信号ＳＦＴＳをアクティブにして送信部出力信号ＳＳＯとして出力する。送信シフタ４２０が８ビット分のデータを出力し終わると、送信シフタ４２０は、送信完了を示すシフト終了信号ＳＦＴＥをアクティブにする。シフト終了信号ＳＦＴＥによって送信完了を検知した送信制御部４３０は、送信完了信号ＳＥＤＣをアクティブにして送受信部３０２（シーケンス制御部３１２）に送信完了を通知する。
【００８７】
図１５は、外部ツール５０２の構成を示すブロック図である。外部ツール５０２は、ツール制御部５１２、通信速度管理テーブル５２２、ツール送信部５３０、ツール受信部５４０、トレースメモリ部５５０、デバッグクロック生成部５６０を備える。ツール受信部５４０は、第１の実施の形態と同じものであり、動作も同じである。ツール送信部５３０は、第１の実施の形態とは同期するクロックが異なり、デバッグクロック信号ＤＣＬＫに同期して図１８に示される転送フォーマットのデータを送信する。デバッグクロック生成部５６０は、デバッグクロック生成部１５０と同じように、デバッグクロック信号ＤＣＬＫを生成する。本実施の形態では、マイクロコントローラ１０２へ外部ツール５０２からデバッグクロック信号ＤＣＬＫを供給する。トレースメモリ部５５０は、ツール受信部５４０が受信したトレースデータを格納する記憶装置である。ツール制御部５１２は、通信速度管理テーブル５２２を参照して受信速度を制御する。また、ツール受信部５４０が図１９（ａ）に示されるフォーマットのトレースデータを受信すると、ツール制御部５１２は、そのトレースデータをトレースメモリ部５５０に送って格納する。その他、第１の実施の形態で説明されたツール制御部５１１と同じ機能を有する。
【００８８】
図１７は、通信速度管理テーブル５２２の構成を示す図である。通信速度管理テーブル５２２は、マイクロコントローラ１０２と通信する際の送信用クロック速度、受信用クロック速度を示す情報をコマンドＣＭＤのコードに関連付けて格納する。通信速度管理テーブル５２２は、第１の実施の形態における通信速度管理テーブル５２１と同じように使用され、マイクロコントローラ１０２と通信する際に参照される。本実施の形態では、デバッグ機能としてデータトレース機能を説明するため、一部のコマンドが変更されている。また、送信用クロック速度と、コマンド（ＣＭＤ［０：２］）“００Ｈ”の受信用クロック速度とは、外部ツール５０２のデバッグクロック生成部５６０が生成するため、固定されたデバッグクロック速度となっている。可変にすることは可能である。
【００８９】
図１８は、デバッグ通信入力信号ＤＩとデバッグ通信出力信号ＤＯを介してマイクロコントローラ１０２と外部ツール５０２間で通信をする際の転送フォーマットを示す図である。転送フォーマットは、リードコマンド転送フォーマット（図１８（ａ））、リードデータ転送フォーマット（図１８（ｂ））、データトレース転送フォーマット（図１８（ｃ）（ｄ））、制御コマンド転送フォーマット（図１８（ｅ））を備える。図１８（ｃ）（ｄ）に示されるように、データトレースの転送の際の１６ビットのデータ送信は、８ビットのデータ送信を２回行うことで実現する。また、データトレース制御部２７０が複数の１６ビットのトレースデータを生成する場合、トレース転送Ｌとトレース転送Ｍとが繰り返し実行される。同様に、８ビットのトレースデータが生成される場合には、トレース転送Ｌが繰り返し実行される。尚、第１の実施の形態において割り付けられているリードデータ転送のビット９の位置のＩＮＦＯビットは、未使用として“０”固定とされている。
【００９０】
図１９は、送受信されるデータのフォーマットを示す。図１９（ａ）には、データトレース制御部２７０によって生成されるトレースデータの１６ビットのデータフォーマット（フォーマットＡ）が示される。図１９（ｂ）には、システムクロック制御部２４０が出力するクロック速度変更要求信号ＣＲＥＱがアクティブになったことを示す８ビットのデータフォーマット（フォーマットＢ）が示される。フォーマットＢのトレースデータは、第１の実施の形態におけるＩＮＦＯビット情報の代わりとなるものである。図１９（ｃ）には、各フォーマットのビット０〜２に割り当てられるＴＣＯＤＥが示す情報を示す。
【００９１】
データトレース機能およびシステムクロック信号ＳＣＬＫの変更許可制御実現する際の動作が説明される。図２０は、外部ツール５０２の動作を示すフローチャートである。
【００９２】
ステップＳ３０１では、ツール制御部５１２は、ＣＭＤ［０：２］＝０４Ｈ（“データトレース開始”）にした制御コマンドデータをマイクロコントローラ１０２へ、デバッグ通信入力信号ＤＩを介して、デバッグクロック信号ＤＣＬＫに同期させて送出する。
【００９３】
ステップＳ３０３では、ツール制御部５１２は、通信速度管理テーブル５２２を参照して、次に転送されるコマンド“０６Ｈ”（トレース転送Ｌ、トレース転送Ｍ）に適する受信クロック速度をツール受信部５４０に設定する。
【００９４】
ステップＳ３０４では、ツール制御部５１２は、ＣＭＤ［０：２］＝０６Ｈ（“トレースデータ取得”）にしたリードコマンドデータをマイクロコントローラ１０２へデバッグ通信入力信号ＤＩを介して、デバッグクロック信号ＤＣＬＫに同期させて送出する。
【００９５】
ステップＳ３０５では、ＣＰＵ２１０の実行の結果、データトレース制御部２７０において生成されたトレースデータがデバッグ通信出力信号ＤＯを介して転送されてくるので、ツール受信部５４０は受信する。トレースデータは、フォーマットＡの下位８ビットのトレースデータか、フォーマットＢの８ビットのトレースデータである。受信されたトレースデータは、一時的にツール制御部５１２で記憶する。
【００９６】
ステップＳ３０６では、ツール制御部５１２は、ツール受信部５４０で受信した８ビットデータに含まれるＴＣＯＤＥ［０：１］を解析する。ＴＣＯＤＥ［０：１］＝０１Ｈであれば、続いて転送されてくるフォーマットＡの上位８ビットのトレースデータがツール受信部５４０によって受信される（ステップＳ３０８）。ツール制御部５１２は、ステップＳ３０８において受信された８ビットのトレースデータと、ステップＳ３０５において受信された８ビットのトレースデータとに基づいて、フォーマットＡのトレースデータを再生し、トレースメモリ部５５０に格納する（ステップＳ３０９）。
【００９７】
ＴＣＯＤＥ［０：１］＝０２Ｈであれば、マイクロコントローラ１０２は、クロック速度の変更を要求している。したいがって、以下の処理を行う。
【００９８】
ステップＳ３１１では、ツール制御部５１２は、通信速度管理テーブル５２２を参照して、次に転送するコマンド“００Ｈ”のリードデータ転送に適する受信クロック速度をツール受信部５４０に設定する。
【００９９】
ステップＳ３１３では、ツール制御部５１２は、ＣＭＤ［０：２］＝００Ｈ（“クロック速度表示レジスタリード”）にしたリードコマンドデータを発行し、ツール送信部５３０は、デバッグ通信入力信号ＤＩを介して、デバッグクロック信号ＤＣＬＫに同期させてマイクロコントローラ１０２へ送出する。
【０１００】
ステップＳ３１４では、ツール受信部５４０は、デバッグ通信出力信号ＤＯを介してデバッグクロック速度で入力されるデータを受信する。受信されるデータは、８ビットのクロック速度表示レジスタ１２０の値である。
【０１０１】
ステップＳ３１６では、ツール制御部５１２は、受信したクロック速度表示レジスタ１２０の値に従って、通信速度管理テーブル５２２を更新する。
【０１０２】
ステップＳ３１７では、ツール制御部５１２は、ＣＭＤ［０：２］＝０１Ｈ（“クロック速度変更許可”）にした制御コマンドを発行する。ツール送信部５３０は、デバッグ通信入力信号ＤＩを介して、デバッグクロック信号ＤＣＬＫに同期させてマイクロコントローラ１０２へ送出する。
【０１０３】
ステップＳ３１９では、ツール制御部５１２は、受信したクロック速度表示レジスタ１２０の値を調べ、ビット２“停止”がアクティブであれば、ステップＳ３１３に戻る。再度、クロック速度表示レジスタ１２０の値を読み出し、ビット０“高速”またはビット１“低速”がアクティブになるまで待ち合わせる。“システムクロック停止”状態では、データトレース制御部２７０も停止しているため、トレースデータが生成されることはない。“システムクロック停止”状態が解除されると（ステップＳ３１９−ＮＯ）、ステップＳ３０３に戻り、トレースデータ取得のための処理が再開される。
【０１０４】
図２１には、データトレース処理を終了させるときのツール制御部５１２の動作が示される。ステップＳ３５０では、ツール制御部５１２は、ＣＭＤ［０：２］＝０５Ｈ（“データトレース終了”）にした制御コマンドを発行し、ツール送信部５３０は、デバッグ通信入力信号ＤＩを介して、デバッグクロック信号ＤＣＬＫに同期させてマイクロコントローラ１０２へ送出する。このコマンドを発行することにより、ステップＳ３０１〜ステップＳ３１９のデータトレース処理を終了させる。
【０１０５】
図２２Ａ、図２２Ｂは、マイクロコントローラ１０２側の動作、すなわち、送信部４０２およびシーケンス制御部３１２を中心とする送受信部３０２の動作を示すフローチャートである。
【０１０６】
ステップＳ４０２（図２２Ａ）では、受信データサンプリング部３２２は、リードコマンド転送または制御コマンド転送を検出するためにデバック通信入力信号ＤＩを監視し、ＳＴＲビットを検出するまで待ち合わせる。
【０１０７】
ステップＳ４０４では、受信データサンプリング部３２２は、デバッグクロック信号ＤＣＬＫでデバック通信入出力信号ＤＩＯをサンプリングし、得られた１ビットのデータを受信シフタ３３０に出力する。受信シフタ３３０は、受信データサンプリング部３２１から送られてくるデータを１ビットシフトしながら取り込む。そして、１１ビット分のデータを格納し終わると、８ビットのデータ部分を受信データ信号ＲＣＶＤに出力するとともに、受信完了信号ＲＶＥＤをアクティブにしてシーケンス制御部３１２に受信完了を通知する。シーケンス制御部３１２は、コマンド取り込み信号ＣＭＧＴをアクティブにしてコマンドバッファ部３４０にコマンド取り込みを指示する。コマンドバッファ部３４０は、受信データ信号ＲＣＶＤの８ビットデータを取り込み、シーケンス制御部３１２にコマンドデータ信号ＣＤを出力する。
【０１０８】
ステップＳ４１０では、シーケンス制御部３１２は、コマンドバッファ部３４０からコマンドデータ信号ＣＤとして出力される８ビットのデータからコマンド（ＣＭＤ［０：２］）の３ビットを抽出し、コマンド解析を行う。コマンド（ＣＭＤ［０：２］）が、“００Ｈ”であればステップＳ４１２（図２２Ｂ）へ、“０１Ｈ”であればステップＳ４２２（図２２Ｂ）へ、“０４Ｈ”であればステップＳ４３２（図２２Ｂ）へ、“０５Ｈ”であればステップＳ４４２（図２２Ｂ）へ、“０６Ｈ”であればステップＳ４５２（図２２Ａ）へ分岐する。
【０１０９】
ステップＳ４１２（図２２Ｂ）では、コマンド（ＣＭＤ［０：２］）は“００Ｈ”（クロック速度表示レジスタリード）を示し、シーケンス制御部３１２は、コマンド実行開始信号ＣＳＴをアクティブにしてコマンド実行部３６０にコマンド実行を指示する。コマンド実行開始信号ＣＳＴは、“００Ｈ”コマンド処理中（クロック速度表示レジスタリード）の情報を含む。コマンド実行部３６０は、コマンド実行開始信号ＣＳＴがアクティブになると、コマンド実行部リードバス信号ＲＢを使用してクロック速度表示レジスタ１２０をリードアクセスする。コマンド実行部３６０は、読み出した８ビットのリードデータをコマンド実行部リードデータ出力信号ＣＲＤＯとして出力するとともに、コマンド実行完了信号ＣＥＤをアクティブにしてシーケンス制御部３１２に読み出し完了を通知する。一方、送信部４０５は、コマンド実行部３６０から出力されるコマンド実行部リードデータ出力信号ＣＲＤＯの８ビットのデータを内部のリードデータバッファ部４１０に格納し、リードバッファ部有効信号ＢＶＤＢをアクティブにしてシーケンス制御部３１２に送信準備の完了を通知する。
【０１１０】
ステップＳ４１４では、シーケンス制御部３１２は、送信開始信号ＳＳＴＢをアクティブにして送信部４０５に送信を指示する。送信部４０５は、リードデータバッファ部４１０に格納されている８ビットデータと、ＩＮＦＯ情報セット要求信号ＳＩＱＢにより指定される１ビットデータ（値は“０”に固定）と、１ビットのＳＴＲビットと、２ビットのＳＴＰビットとを結合した１２ビットデータを内部の送信シフタ４２０に格納する。送信シフタ４２０は、デバッグクロック信号ＤＣＬＫに同期してデータを１ビットずつ送受信部出力信号ＳＲＯとしてシフト出力する。送信シフタ４２０は、１２ビットのシフト出力が完了すると、送信完了信号ＳＥＤＢをアクティブにする。
【０１１１】
ステップＳ４２２では、コマンド（ＣＭＤ［０：２］）は“０１Ｈ”（クロック速度変更許可）を示し、シーケンス制御部３１２は、クロック速度変更許可信号ＣＡＣＫをアクティブにしてシステムクロック制御部２４０にクロック速度の変更が許可されたことを通知する。ＣＰＵ部２０２のシステムクロック制御部２４０は、システムクロック信号ＳＣＬＫの速度を変更する。
【０１１２】
ステップＳ４３２では、コマンド（ＣＭＤ［０：２］）は“０４Ｈ”（データトレース開始）を示し、シーケンス制御部３１２は、コマンド実行開始信号ＣＳＴをアクティブにしてコマンド実行部３６０にデータトレース開始を指示する。コマンド実行開始信号ＣＳＴは、“０４Ｈ”コマンド処理中の情報を含む。コマンド実行部３６０は、コマンド実行部ライトバス信号ＷＢを使用してデータトレース制御部２７０が備える内部の制御ビットを操作し、データトレースの開始を指示する。同時にコマンド実行部３６０は、コマンド実行完了信号ＣＥＤをアクティブにしてシーケンス制御部３１２にデータトレースが開始されたことを通知する。
【０１１３】
ステップＳ４４２では、コマンド（ＣＭＤ［０：２］）は“０５Ｈ”（データトレース終了）を示し、シーケンス制御部３１２は、コマンド実行開始信号ＣＳＴをアクティブにしてコマンド実行部３６０にデータトレース終了を指示する。コマンド実行開始信号ＣＳＴは、“０５Ｈ”コマンド処理中の情報を含む。コマンド実行部３６０は、コマンド実行部ライトバス信号ＷＢを使用してデータトレース制御部２７０が備える制御ビットを操作し、データトレースの終了を指示する。同時にコマンド実行部３６０は、コマンド実行完了信号ＣＥＤをアクティブにしてシーケンス制御部３１２にデータトレースが終了したことを通知する。
【０１１４】
ステップＳ４５２（図２２Ａ）では、コマンド（ＣＭＤ［０：２］）は“０６Ｈ”（トレースデータ取得）を示し、送信制御部４３０は、ＣＰＵ部２０２から８ビットのトレースデータ、つまり、フォーマットＡの下位８ビットのトレースデータまたはフォーマットＢのトレースデータがトレース出力信号ＴＲＯによって転送されてくるまで待機する。８ビットのトレースデータが転送されてくると（ステップＳ４５２−ＹＥＳ）、送信制御部４３０は、次の動作（ステップＳ４５４）に移行する。
【０１１５】
ステップＳ４５４では、送信制御部４３０は、トレース出力信号ＴＲＯによって転送される８ビットのトレースデータをＭバッファ部４１２に格納する。
【０１１６】
ステップＳ４５６では、送信制御部４３０は、転送されてきたトレースデータのＴＣＯＤＥを調べる。送信制御部４３０は、ＴＣＯＤＥが、“０１Ｈ”（ＣＰＵライト）であればステップＳ４５８へ、“０２Ｈ”（ＩＮＦＯアクティブ）であればステップＳ４７２へ分岐する。
【０１１７】
ステップＳ４５８では、送信制御部４３０は、トレース出力信号ＴＲＯによって次の８ビットのトレースデータ、つまり、フォーマットＡの上位８ビットのトレースデータが転送されてくるまで待機する。
【０１１８】
ステップＳ４６２では、送信制御部４３０は、転送されてきた８ビットのトレースデータをＬバッファ部４１３へ格納する。
【０１１９】
ステップＳ４６３では、送信制御部４３０は、リードバッファ部ビジー信号ＲＢＳＹをアクティブにして出力すべきトレースデータを保持していることをＣＰＵ部２０２に通知する。また、送信制御部４３０は、リードバッファ部有効信号ＢＶＤＣをアクティブにしてフォーマットＡの１６ビットのトレースデータがＭバッファ部４１２およびＬバッファ部４１３に格納されたことを送受信部３０２へ通知する。尚、ＣＰＵ部２０２のデータトレース制御部２７０は、リードバッファ部ビジー信号ＲＢＳＹがアクティブになると、トレースデータが生成されてもリードバッファ部ビジー信号ＲＢＳＹがインアクティブになるまで内部で保持して待ち合わせる。
【０１２０】
ステップＳ４６５では、シーケンス制御部３１２は、同期化回路１４０を介して入力されるリードバッファ有効信号ＢＶＤＣ（ＳＹＮ）がアクティブになると、送信開始信号ＳＳＴＣをアクティブにする。同期化回路１４０を介して入力される送信開始信号ＳＳＴＣ（ＳＹＮ）がアクティブになると、送信制御部４３０は、送信開始信号ＳＦＴＳをアクティブにして送信シフタ４２０に送信開始を指示する。送信シフタ４２０は、送信制御部４３０から出力されるＭバッファ部４１２の８ビットデータと、１ビットのＳＴＲビットと、１ビットの固定値“０”、２ビットのＳＴＰビットとを結合した１２ビットのデータをシステムクロック信号ＳＣＬＫに同期して１ビットずつ送信部出力信号ＳＳＯとしてシフト出力する。送信シフタ４２０は、１２ビットのシフト出力が完了すると送信完了を示す送信完了信号ＳＦＴＥをアクティブにする。
【０１２１】
ステップＳ４６６では、送信完了信号ＳＦＴＥがアクティブになると、送信制御部４３０は、送信開始信号ＳＦＴＳをアクティブにして送信シフタ４２０に次のデータの送信を指示する。送信シフタ４２０は、送信制御部４３０から出力されるＬバッファ部４１３の８ビットデータと、１ビットのＳＴＲビットと、１ビットの固定値“０”と、２ビットのＳＴＰビットとを結合した１２ビットのデータをシステムクロック信号ＳＣＬＫに同期して１ビットずつ送信部出力信号ＳＳＯとしてシフト出力する。送信シフタ４２０は、１２ビットのシフト出力が完了すると、送信完了信号ＳＦＴＥをアクティブにして送信制御部４３０に送信完了を通知する。送信制御部４３０は、送信完了信号ＳＥＤＣをアクティブにしてシーケンス制御部３１２に１６ビットのトレースデータの送信完了を通知する。
【０１２２】
ステップＳ４６８では、送信制御部４３０は、リードバッファ部ビジー信号ＲＢＳＹをインアクティブにする。シーケンス制御部３１２は、同期化回路１４０を介して入力される送信完了信号ＳＥＤＣ（ＳＹＮ）がアクティブになったことによってデータ送信完了を検知し、コマンド解析（ステップＳ４１０）に戻り、コマンドが変わるまで繰り返す。
【０１２３】
ステップＳ４７２では、ＴＣＯＤＥは“０２Ｈ”（ＩＮＦＯアクティブ）を示し、送信制御部４３０は、リードバッファ部ビジー信号ＲＢＳＹおよびリードバッファ部有効信号ＢＶＤＣをアクティブにする。リードバッファ部有効信号ＢＶＤＣは、フォーマットＢの８ビットのトレースデータがＭバッファ部４１２に格納されたことを示す。
【０１２４】
ステップＳ４７４では、シーケンス制御部３１２は、同期化回路１４０を介して入力されるリードバッファ有効信号ＢＶＤＣ（ＳＹＮ）がアクティブになると、送信開始信号ＳＳＴＣをアクティブにして送信部４０２に８ビットデータの送信開始を指示する。同期化回路１４０を介して入力される送信開始信号ＳＳＴＣ（ＳＹＮ）がアクティブになると、送信制御部４３０は、送信開始信号ＳＦＴＳをアクティブにして送信シフタ４２０に送信開始を指示する。送信シフタ４２０は、送信制御部４３０から出力されるＭバッファ部４１２の８ビットデータと、１ビットのＳＴＲビットと、１ビットの固定値“０”とを結合した１２ビットのデータをシステムクロック信号ＳＣＬＫに同期して１ビットずつ送信部出力信号ＳＳＯとしてシフト出力する。送信シフタ４２０は、１２ビットのシフト出力が完了すると、送信完了信号ＳＦＴＥをアクティブにして送信制御部４３０に送信完了を通知する。送信制御部４３０は、送信完了信号ＳＥＤＣをアクティブにして８ビットデータの送信完了をシーケンス制御部３１２に通知する。
【０１２５】
ステップＳ４７６では、送信制御部４３０は、リードバッファ部ビジー信号ＲＢＳＹをインアクティブにする。シーケンス制御部３１２は、同期化回路１４０を介して入力される送信完了信号ＳＥＤＣ（ＳＹＮ）がアクティブになったことによってデータ送信完了を検知し、コマンド解析（ステップＳ４１０）に戻り、コマンドが変わるまで繰り返す。
【０１２６】
本実施の形態では、外部ツール５０２からリードコマンド転送を行うことなく、トレースデータを無限に行うことができる動作例を示した。すなわち、外部ツール５０２からリードコマンド転送を行うことなく、マイクロコントローラ１０２から外部ツール５０２へデータを送信できるため、マイクロコントローラ１０２と外部ツール５０２との通信の一部として、ＣＰＵ２１０のデータライトアクセスの実行の様子を観測できるデータトレース機能を実現できる。
【０１２７】
本発明によれば、マイクロコントローラ内部のシステムクロック信号をデバッグ用の通信クロックに使用するときに、デバッグ用の通信状態とは無関係に、そのシステムクロックの速度が変更されたとしても（停止を含む）、デバッグ用の通信が不正になることがない。したがって、デバッグ用の通信に基づくデバッグ作業がシステムクロックの速度に依存することなく継続できる。さらに、デバッグ用の通信のためのクロックとしてマイクロコントローラ内部の高速なクロックを使用することが可能になり、通信速度の高速化を容易に行うことができ、デバッグ機能のパフォーマンス向上ができる。
【０１２８】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではなく、矛盾のない限り組み合わせて実施の可能である。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１２９】
１０１、１０２  マイクロコントローラ
１１０  クロック生成部
１２０  クロック速度表示レジスタ
１３０、１４０  同期化回路
１５０  デバッグクロック生成部
２０１、２０２  ＣＰＵ部
２１０  ＣＰＵ
２２０  ＲＯＭ
２３０  ＲＡＭ
２４０  システムクロック制御部
２５０  ＲＡＭアドレス設定レジスタ
２６０  ＲＡＭモニタ制御部
２７０  データトレース制御部
３０１、３０２  送受信部
３１１、３１２  シーケンス制御部
３２１、３２２  受信データサンプリング部
３３０  受信シフタ
３４０  コマンドバッファ部
３５０  ライトデータバッファ部
３６０  コマンド実行部
４００、４０１、４０２、４０５  送信部
４１０、４１１  リードデータバッファ部
４１２  Ｍバッファ部
４１３  Ｌバッファ部
４２０  送信シフタ
４３０  送信制御部
５０１、５０２  外部ツール
５１１、５１２  ツール制御部
５２１、５２２  通信速度管理テーブル
５３０  ツール送信部
５４０  ツール受信部
５５０  トレースメモリ部
５６０  デバッグクロック生成部
【図１】
0005467891.tif 000002
【図２】
0005467891.tif 000003
【図３】
0005467891.tif 000004
【図４】
0005467891.tif 000005
【図５】
0005467891.tif 000006
【図６】
0005467891.tif 000007
【図７】
0005467891.tif 000008
【図８】
0005467891.tif 000009
【図９】
0005467891.tif 000010
【図１０】
0005467891.tif 000011
【図１１】
0005467891.tif 000012
【図１２】
0005467891.tif 000013
【図１３】
0005467891.tif 000014
【図１４】
0005467891.tif 000015
【図１５】
0005467891.tif 000016
【図１６】
0005467891.tif 000017
【図１７】
0005467891.tif 000018
【図１８】
0005467891.tif 000019
【図１９】
0005467891.tif 000020
【図２０】
0005467891.tif 000021
【図２１】
0005467891.tif 000022
【図２２Ａ】
0005467891.tif 000023
【図２２Ｂ】
0005467891.tif 000024