(57)【要約】【課題】公知文献記載の技術では、一定の時間内にデバッグ用プログラムを切り替え、実行を開始することが非常に困難であるという課題があった。【解決手段】デバッグユニット部と、複数モードデバッグ割込み制御部と、実行部とを具備するプロセッサによって解決できる。デバッグユニット部は、デバッグ対象となるユーザープログラムの実行を監視し、デバッグ条件が成立したときに、デバッグ割込みをかける。複数モードデバッグ割込み制御部は、デバッグ割込みを受けて、所定のデバッグ用プログラムを選択するためのデバッグモードを指定する。実行部は、デバッグユニット部がデバッグ割込みをかけたときに、複数モードデバッグ割込み制御部が指定したデバッグモードに基づいて、デバッグ用プログラムを選択し、実行する。【選択図】図３
2010140240.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ対象となるユーザープログラムの実行を監視し、デバッグ条件が成立したときに、デバッグ割込みをかけるデバッグユニット部と、
前記デバッグ割込みを受けて、所定のデバッグ用プログラムを選択するためのデバッグモードを指定する複数モードデバッグ割込み制御部と、
前記デバッグユニット部がデバッグ割込みをかけたときに、前記複数モードデバッグ割込み制御部が指定したデバッグモードに基づいて、デバッグ用プログラムを選択し、実行する実行部とを具備する
プロセッサ。
【請求項２】
前記実行部は、
前記デバッグモードに基づいて、第一のデバッグ用プログラムにアクセスするための第一のアドレスか、第二のデバッグ用プログラムにアクセスするための第二のアドレスかを選択するアドレス選択部を備え、
前記アドレス選択部が選択したアドレスから命令をフェッチし、実行する
請求項１記載のプロセッサ。
【請求項３】
前記複数モードデバッグ割込み制御部は、
前記デバッグ割込みと、前記所定のデバッグ用プログラムとを対応付けるデータを格納するレジスタを備え、
前記デバッグ割込みを受けたときに、前記レジスタを参照することによって、デバッグモードを指定する
請求項２記載のプロセッサ。
【請求項４】
前記デバッグユニット部は、
第一種別のデバッグ条件が成立したときに、第一種別のデバッグ割込みをかけ、第二種別のデバッグ条件が成立したときに、第二種別のデバッグ割込みをかけ、
前記複数モードデバッグ割込み制御部が備える前記レジスタは、
前記第一種別のデバッグ割込みと、前記第一のデバッグ用プログラムとを対応付ける第一のデータと、前記第二種別のデバッグ割込みと、前記第二のデバッグ用プログラムとを対応付ける第二のデータとを格納する
請求項３記載のプロセッサ。
【請求項５】
前記デバッグユニット部は、
ユーザーの操作によって、予め、前記ユーザープログラムにおける特定の処理に関連付けて前記第一種別のデバッグ条件の設定を受けると、前記特定の処理に関連して成立するデバック条件を前記第一種別のデバッグ条件として前記第一種別のデバッグ割込みをかける
請求項４記載のプロセッサ。
【請求項６】
前記実行部は、
前記第二のデバッグ用プログラムを選択するためのデバッグモードが指定された場合において、前記第二のデバッグ用プログラムへの切り替えに一定の時間的制約が無いときには、前記第二種別のデバッグ割込みがかけられた後、前記第二のデバッグ用プログラムをロードする時間待ってから、前記第二のデバッグ用プログラムを実行する
請求項５記載のプロセッサ。
【請求項７】
請求項１〜６いずれか１項に記載の一のプロセッサと、請求項１〜６いずれか１項に記載の他のプロセッサとを擁し、
前記一のプロセッサにおける複数モードデバッグ割込み制御部は、前記一のプロセッサにおいてデバッグ割込みがかかると、前記他のプロセッサにおける複数モードデバッグ割込み制御部へ、前記一のプロセッサにおけるデバッグモードを指定すると共に、一斉ブレークのデバッグ割込みをかけるための一斉ブレーク割込みを送信し、
前記他のプロセッサにおける複数モードデバッグ割込み制御部は、前記一のプロセッサにおける複数モードデバッグ割込み制御部から、前記一のプロセッサにおけるデバッグモードを指定されて、前記一斉ブレーク割込みを受信すると、前記他のプロセッサにおいてデバッグ割込みをかけると共に、前記他のプロセッサにおける実行部に対して、前記一のプロセッサにおけるデバッグモードと同一のデバッグモードを指定する
マルチプロセッサ。
【請求項８】
前記他のプロセッサは、
前記一のプロセッサから受信する前記一斉ブレーク割込みを許可するか否かを決定するマスク部を具備し、
前記マスク部が前記一斉ブレーク割込みを許可したときには、前記他のプロセッサにおいて、前記一斉ブレークのデバッグ割込みをかけ、
前記マスク部が前記一斉ブレーク割込みを許可しなかったときには、前記他のプロセッサにおいて、前記一斉ブレークのデバッグ割込みをかけない
請求項７記載のマルチプロセッサ。
【請求項９】
プロセッサ内において、デバッグ対象となるユーザープログラムの実行を監視し、デバッグ条件が成立したときに、デバッグ割込みをかけることと、
前記プロセッサ内において、前記デバッグ割込みを受けて、所定のデバッグ用プログラムを選択するためのデバッグモードを指定することと、
前記プロセッサ内において、前記デバッグ割込みをかけることによって、デバッグ割込みがかけられたときに、前記指定することによって指定されたデバッグモードに基づいて、所定のデバッグ用プログラムを選択し、実行することとを具備する
デバッグ方法。
【請求項１０】
前記実行することにおいては、
前記デバッグモードに基づいて、第一のデバッグ用プログラムにアクセスするための第一のアドレスか、第二のデバッグ用プログラムにアクセスするための第二のアドレスかを選択することと、
前記選択することによって選択されたアドレスから命令をフェッチすることとを含む
請求項９記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、マルチプロセッサ、及び、デバッグ方法に関する。
【背景技術】
【０００２】
近年、自動車制御機器や携帯電話機の高機能化、高性能化に伴い、組込み型マイクロコンピュータのソフトウェアも大規模化や複雑化が進んでいる。また、組込み型マイクロコンピュータのソフトウェアをデバッグするため、ＯＳ上のタスクを効率よくデバッグできるタスク・デバッガが開発されている。タスク・デバッガでは、デバッグ対象タスクを停止させるためのブレークポイントを設定し、そのブレークポイントまでデバッグ対象タスクを実行させたところでブレークをかけ、ブレークポイントにおけるメモリの内容などを確認する。
【０００３】
このようなタスク・デバッグの機能と、システム全体を停止させるシステム・デバッグの機能とを併せ持った発明が知られている。特開２００６−７９２６１号公報（特許文献１参照）には、「プログラムのデバッグ方法」の発明が記載されている。この発明では、２つのデバッグ用モニタプログラムを含むターゲットシステムへ、デバッガからデバッグコマンドを送信する。ターゲットシステムがデバッグコマンドを受信すると、モニタ管理プログラムが切り替え処理を行い、それら２つのデバッグ用モニタプログラムを切り替える。このような方法により、同一デバッグ環境下で、デバッグ対象タスクのみを停止させるタスク・デバッグと、システム全体を停止させるシステム・デバッグとを実現可能にしている。
【０００４】
【特許文献１】特開２００６−７９２６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
組込み型マイクロコンピュータの制御対象システムは非常に複雑化している。そこで、制御対象システムの開発効率化のために、デバッグに際して、一部のアルゴリズムを外部の高性能汎用コンピュータで代替実行するバイパスエミュレーションというデバッグ手法が用いられている。図１に、バイパスエミュレーションの説明図を示す。図示するように、バイパスエミュレーションでは、外部計算機を用いて一部の処理をバイパスさせる。バイパスエミュレーションのブレークが発生したとき、ユーザープログラムから代替プログラム（デバッグ用プログラム）へ制御が移行する。マイクロコンピュータは、代替プログラムを実行し、バイパス処理の入力値を外部計算機に出力する（ＳＴＥＰ００）。外部計算機は、［処理１］，［処理２］，［処理３］を実行し、これらの演算結果をマイクロコンピュータへ返す。マイクロコンピュータは、代替プログラムを実行し、外部計算機による演算結果を取り込む（ＳＴＥＰ９９）。ここで、代替プログラムからユーザープログラムへ制御が戻る。
【０００６】
このようなバイパスエミュレーションを実行するデバッグと、他のデバッグとを備えたデバッグ環境を構築したいという要請がある。しかし、特許文献１の技術では、バイパスエミュレーションの実行を一定の時間内に収めることが非常に困難であるという課題がある。まず、特許文献１の技術では、例えば、システム・デバッグからタスク・デバッグへ切り替えを行う際に、デバッガを操作してデバッグコマンドを送信しなければならない。更に、ターゲットシステムでは、モニタ管理プログラムが切り替え処理を実行し、デバッグ用モニタプログラムを切り替える必要がある。バイパスエミュレーションの実行を開始するのが可能になるのは、モニタ管理プログラムが切り替え処理を終了した後になるので、応答が非常に遅くなり、おそらく制御対象システムの正常動作を維持できなくなる。
【０００７】
また、特許文献１では、デバッグ用プログラムを切り替える際に、デバッガを操作してデバッグコマンドを送信する方法を採用しているため、ユーザープログラムのどの部分をどのデバッグ用プログラムに関連付けるのかは、ユーザーによるデバッガの操作に委ねられている。そのため、ユーザープログラムにおける特定の処理を、バイパスエミュレーションに関連付けするような設定ができないという課題がある。
【０００８】
さらに、マルチプロセッサ型マイクロコンピュータでは、一方のプロセッサは一のユーザープログラムを実行し、他方のプロセッサは他のユーザープログラムを実行している。そのため、特許文献１の技術をマルチプロセッサ型マイクロコンピュータに適用した場合には、所定のタイミングで、一方のプロセッサのデバッグモードと、他方のプロセッサのデバッグモードとを一致させることが非常に困難になる。従って、マルチプロセッサ型マイクロコンピュータで実施されている一斉ブレーク（同期ブレークとも呼ばれることがある。）を容易に行えないなどの課題がある。
【課題を解決するための手段】
【０００９】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、［課題を解決するための手段］を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１０】
本発明の一つ目のアスペクトによるプロセッサは、デバッグユニット部（Ｂ２）と、複数モードデバッグ割込み制御部（Ｂ６）と、実行部（Ｂ７）とを具備する。デバッグユニット部（Ｂ２）は、デバッグ対象となるユーザープログラムの実行を監視し、デバッグ条件が成立したときに、デバッグ割込みをかける。複数モードデバッグ割込み制御部（Ｂ６）は、デバッグ割込みを受けて、所定のデバッグ用プログラムを選択するためのデバッグモードを指定する。実行部（Ｂ７）は、デバッグユニット部（Ｂ２）がデバッグ割込みをかけたときに、複数モードデバッグ割込み制御部（Ｂ６）が指定したデバッグモードに基づいて、デバッグ用プログラムを選択し、実行する。
【００１１】
本発明の二つ目のアスペクトによるマルチプロセッサは、上記一つ目のアスペクトを備えた一のプロセッサ（Ｂ１００−１）と、他のプロセッサ（Ｂ１００−２）とを擁する。一のプロセッサ（Ｂ１００−１）における複数モードデバッグ割込み制御部（Ｂ１０６−１）は、一のプロセッサ（Ｂ１００−１）においてデバッグ割込みがかかると、他のプロセッサ（Ｂ１００−２）における複数モードデバッグ割込み制御部（Ｂ１０６−２）へ、一のプロセッサ（Ｂ１００−１）におけるデバッグモードを指定すると共に、一斉ブレークのデバッグ割込みをかけるための一斉ブレーク割込みを送信する。他のプロセッサ（Ｂ１００−２）における複数モードデバッグ割込み制御部（Ｂ１０６−２）は、一のプロセッサ（Ｂ１００−１）における複数モードデバッグ割込み制御部（Ｂ１０６−１）から、一のプロセッサ（Ｂ１００−１）におけるデバッグモードを指定されて、一斉ブレーク割込みを受信すると、他のプロセッサ（Ｂ１００−２）においてデバッグ割込みをかけると共に、他のプロセッサ（Ｂ１００−２）における実行部（Ｂ７−２）に対して、一のプロセッサ（Ｂ１００−１）におけるデバッグモードと同一のデバッグモードを指定する。
【００１２】
本発明の三つ目のアスペクトによるデバッグ方法は、デバッグ割込みをかけることと、デバッグモードを指定することと、実行することとを具備する。デバッグ割込みをかけることにおいては、プロセッサ（Ｂ０）内において、デバッグ対象となるユーザープログラムの実行を監視し、デバッグ条件が成立したときに、デバッグ割込みをかける。デバッグモードを指定することにおいては、プロセッサ（Ｂ０）内において、デバッグ割込みを受けて、所定のデバッグ用プログラムを選択するためのデバッグモードを指定する。実行することにおいては、プロセッサ（Ｂ０）内において、デバッグ割込みをかけることによって、デバッグ割込みがかけられたときに、指定することによって指定されたデバッグモードに基づいて、所定のデバッグ用プログラムを選択し、実行する。
【発明の効果】
【００１３】
本発明によれば、複数のデバッグモードを備え、かつ、所望のデバッグ用プログラムへの切り替えを高速に行うことが可能になる。
【発明を実施するための最良の形態】
【００１４】
本発明を実施するための最良の形態の一つについて、図面を用いて説明する。図２に、一つの実施の形態におけるプロセッサの構成を説明するブロック図を示す。図２において、ユーザープログラムには、一つ又は複数のデバッグ条件（以下、ブレークポイント、ブレーク条件とも言う。）を設定することができる。図２では、５つのブレークポイントが設定されている。各ブレークポイントは、所望のデバッグ用プログラムに関連付けることが可能である。プロセッサ１０は、複数のデバッグモードに対応しており、複数種類のデバッグ用プログラムＷ，Ｘ，Ｙ，Ｚを格納したそれぞれの記憶領域のいずれにもアクセス可能である。
【００１５】
図示するように、本実施の形態におけるプロセッサ１０は、デバッグユニット部１１と、複数モードデバッグ割込み制御部１２と、実行部１３とを備えている。デバッグユニット部１１は、ユーザープログラムの実行を監視し、設定されたブレークポイントを検出すると、そのブレークポイントに対応したデバッグ割込みをかける。図２では、３種類のデバッグ割り込みα，β，γが定義されている。複数モードデバッグ割込み制御部１２は、デバッグユニット部１１からデバッグ割込みを受け付けると、そのデバッグ割込みに対応したデバッグモードを指定する。実行部１３は、指定されたデバッグモードに基づいて、いずれかのデバッグ用プログラムを選択し、実行する。
【００１６】
例えば、ユーザープログラム開発者が、図２に示すように、ユーザープログラムにおける１０００番目のステップにブレークαを設定する操作を行った場合、デバッグユニット部１１は、その設定内容を記憶し、１０００番目のステップが実行されたところでデバッグ割込みαをかける。複数モードデバッグ割込み制御部１２は、“α”というデバッグ割込みの種別に対して、どのデバッグ用プログラムを対応付けるかを示す対応データを予め記憶しており、デバッグ割込みαを受け付けると、その対応データに基づいて、デバッグ用プログラムＷのデバッグモードを指定する。実行部１３は、指定されたデバッグモードに基づいて、デバッグ用プログラムＷを選択し、実行する。
【実施例１】
【００１７】
以下、具体的な実施例を挙げて、本発明について更に詳述する。図３は、実施例１におけるプロセッサＢ０の構成説明図である。図示するように、プロセッサＢ０は、複数モードデバッグ割込み制御部Ｂ６と、実行部Ｂ７と、デバッグユニット部Ｂ２とを備えている。図中、ＩＣＥ（Ｉｎ−Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ（登録商標））Ｂ１は、ユーザーによって操作される外部装置である。
【００１８】
図３において、デバッグユニット部Ｂ２は、ＩＣＥ  Ｂ１からの指示等に従い、プロセッサＢ０内の資源を制御し、デバッグ機能を実現する。デバッグユニット部Ｂ２は、ＩＣＥ  Ｂ１と通信し、ＩＣＥインタフェース入力信号Ｓ１１と、ＩＣＥインタフェース出力信号Ｓ１２とを用いて、ユーザープログラムに対するデバッグ条件を設定する。実施例１におけるデバッグユニット部Ｂ２には、第一種別のブレーク割込みαを生じさせるデバッグ条件ｘと、第二種別のブレーク割込みβを生じさせるデバッグ条件ｙとの二つの種別のデバッグ条件が設定されている。デバッグユニット部Ｂ２は、実行部Ｂ７によるユーザープログラムの実行を監視し、デバッグ条件ｘが成立するとブレーク割込みαをかけ、デバッグ条件ｙが成立するとブレーク割込みβをかける。
【００１９】
実行部Ｂ７は、デバッグ対象のユーザープログラムと、バイパスエミュレーションを行うランタイムデバッグ用プログラムと、通常デバッグ用プログラムとのいずれかを選択し、実行する機能を有する。実行部Ｂ７は、ブレーク割込み要求信号Ｓ３を受信すると、ブレーク割込み要因情報Ｓ５に基づいて、ランタイムデバッグ用プログラム格納領域Ｂ４のアドレス、又は、通常デバッグ用プログラム格納領域Ｂ５のアドレスのいずれかを選択し、選択したアドレスに分岐し、いずれかのデバッグ用プログラムの命令をフェッチし、実行する。
【００２０】
複数モードデバッグ割込み制御部Ｂ６は、複数の種別のブレーク割込みを受け付けることができる。実施例１においては、ブレーク割込みαと、ブレーク割込みβとの２つの種別のブレーク割込みが用意されている。複数モードデバッグ割込み制御部Ｂ６は、第一種別のブレーク割込みαを受け付けたとき、どちらのデバッグ用プログラムを実行するかを制御し、また、第二種別のブレーク割込みβを受け付けたとき、どちらのデバッグ用プログラムを実行するのかを制御する。これらの制御は、ブレーク割込み要因情報Ｓ５を出力することによって行い、このブレーク割込み要因情報Ｓ５によって、デバッグ用プログラムを選択するためのデバッグモードを指定する。
【００２１】
図中、デバッグ対象のユーザープログラムは、ユーザーが作成したプログラムであり、ユーザープログラム格納領域Ｂ３に格納される。ランタイムデバッグ用プログラムは、バイパスエミュレーションを行うなど、高速な応答が要求されるデバッグ処理を実現するためのプログラムであり、ランタイムデバッグ用プログラム格納領域Ｂ４に格納される。通常デバッグ用プログラムは、バイパスエミュレーションのように一定の時間的制約の下で実行を開始する必要が無いプログラムであり、通常デバッグ用プログラム格納領域Ｂ５に格納される。実施例１におけるプロセッサＢ０は、３つのプログラム格納領域Ｂ３，Ｂ４，Ｂ５のいずれかのアドレスを選択し、そのアドレスから命令をフェッチし、実行する。
【００２２】
《動作の説明》
［ＩＣＥを用いた初期設定動作］実施例１におけるプロセッサＢ０を使用してデバッグを行う際には、デバッグ対象のユーザープログラムの実行に先立って、ユーザーがＩＣＥ  Ｂ１を操作し、ＩＣＥ  Ｂ１からプロセッサＢ０へ各種の設定などを行う。まず、ＩＣＥインタフェース入力信号Ｓ１１を介して、デバッグユニット部Ｂ２を活性化させる。デバッグユニット部Ｂ２が活性化されると、デバッグユニット有効信号Ｓ７がアクティブになる。
【００２３】
次に、複数モードデバッグ割込み制御部Ｂ６に対して、どの種別のブレーク割込みと、どのデバッグ用プログラムとを対応付けるかを示す対応データを設定する。ＩＣＥインタフェース入力信号Ｓ１１と、アクセスバス信号Ｓ１０とを介して、ＩＣＥ  Ｂ１から通常デバッグ用プログラム格納領域Ｂ５へ、対応データを設定するためのプログラムを転送する。転送完了後、デバッグユニット部Ｂ２は、転送完了及び実行開始を示す実行部制御信号Ｓ８を実行部Ｂ７へ送信する。実行部Ｂ７が、システムバス信号Ｓ６を介して、設定のためのプログラムを起動すると、複数モードデバッグ割込み制御部Ｂ６に、対応付けを示す対応データが設定される。実施例１においては、ブレーク割込みαをランタイムデバッグ用プログラムに対応付け、かつ、ブレーク割込みβを通常デバッグ用プログラムに対応付けたとする。
【００２４】
また、デバッグユニット部Ｂ２は、ＩＣＥインタフェース入力信号Ｓ１１を介して、ブレーク条件を受け付け、設定する。ブレーク条件は多数設定することができ、それぞれのブレーク条件に対して、第一種別のブレーク割込みαか、第二種別のブレーク割込みβかを設定することが可能である。実施例１においては、ユーザープログラムに対して２つのブレーク条件ｘ，ｙを設定し、ブレーク条件ｘが成立したときにはブレーク割込みαをかけ、ブレーク条件ｙが成立したときにはブレーク割込みβをかけるように設定したとする。
【００２５】
［ユーザープログラムの実行開始］ＩＣＥ  Ｂ１を操作することによる初期設定が終わると、デバッグユニット部Ｂ２は、ユーザープログラムの実行開始を示す実行部制御信号Ｓ８を実行部Ｂ７へ送信する。実行部Ｂ７は、ユーザープログラム格納領域Ｂ３のアドレスを選択し、ユーザープログラムの実行を開始する。実行部Ｂ７がユーザープログラムを実行している状態にあるとき、デバッグユニット部Ｂ２は、実行部Ｂ７から送信される実行部状態信号Ｓ９を常時監視する。そして、ブレーク条件が成立したことを検出した場合には、設定に従って、ブレーク割込みをかける。
【００２６】
［ランタイムブレーク割込みのための条件を検出した場合の動作］デバッグユニット部Ｂ２が、ブレーク条件ｘの成立を検出すると、ブレーク割込みαがかかる。複数モードデバッグ割り込み制御部Ｂ６は、デバッグユニット部Ｂ２からブレーク割込みα入力信号Ｓ１を受信する。このブレーク割込みα入力信号Ｓ１を受けて、複数モードデバッグ割込み制御部Ｂ６は、実行部Ｂ７に対して、ブレーク割込み要求信号Ｓ３を出力する。同時に、複数モードデバッグ割込み制御部Ｂ６は、設定されている対応データを参照して、実行部Ｂ７に対して、ランタイムデバッグ用プログラムのデバッグモードを指定するブレーク割込み要因情報Ｓ５を出力する。
【００２７】
実行部Ｂ７は、複数モードデバッグ割込み制御部Ｂ６からブレーク割込み要求信号Ｓ３と、ランタイムデバッグ用プログラムのデバッグモードを指定するブレーク割込み要因情報Ｓ５とを受信する。実行部Ｂ７は、ブレーク割込みの受け付けが完了すると、複数モードデバッグ割込み制御部Ｂ６へブレーク割り込み受け付け完了信号Ｓ４を返す。複数モードデバッグ割込み制御部Ｂ６は、ブレーク割込み受け付け完了信号Ｓ４を受信すると、ブレーク割込み要求信号Ｓ３をオフにする。
【００２８】
それから、実行部Ｂ７は、ブレーク割込み要因情報Ｓ５に基づいて、ランタイムデバッグ用プログラム格納領域Ｂ４のアドレスにある命令をフェッチし、ランタイムデバッグ用プログラムを実行する。ユーザープログラムからランタイムデバッグ用プログラムへの切り替えは、実行部Ｂ７において速やかに行われ、ＩＣＥ  Ｂ１やデバッグユニット部Ｂ２などは介在しない。
【００２９】
［通常ブレーク割込みのための条件を検出した場合の動作］デバッグユニット部Ｂ２が、ブレーク条件ｙの成立を検出すると、ブレーク割込みβがかかる。複数モードデバッグ割り込み制御部Ｂ６は、デバッグユニット部Ｂ２からブレーク割込みβ入力信号Ｓ２を受信する。このブレーク割込みβ入力信号Ｓ２を受けて、複数モードデバッグ割込み制御部Ｂ６は、実行部Ｂ７に対して、ブレーク割込み要求信号Ｓ３を出力する。同時に、複数モードデバッグ割込み制御部Ｂ６は、設定されている対応データを参照して、実行部Ｂ７に対して、通常デバッグ用プログラムのデバッグモードを指定するブレーク割込み要因情報Ｓ５を出力する。
【００３０】
実行部Ｂ７は、ブレーク割込み要求信号Ｓ３と、通常デバッグ用プログラムのデバッグモードを指定するブレーク割込み要因情報Ｓ５とを受信すると、通常デバッグ用プログラム格納領域Ｂ５のアドレスにある命令をフェッチし、通常デバッグ用プログラムを実行しようとする。このとき、実行部制御信号Ｓ８が、通常デバッグ用プログラム格納領域Ｂ５へのアクセスを許可していた場合には、実行部Ｂ７は、通常デバッグ用プログラム格納領域Ｂ５のアドレスにある命令をフェッチし、速やかに通常デバッグ用プログラムを実行する。
【００３１】
一方、実行部制御信号Ｓ８が、通常デバッグ用プログラム格納領域Ｂ５へのアクセスを禁止していた場合には、実行部Ｂ７は、プログラムの実行を一時的に停止する。ユーザーがＩＣＥ  Ｂ１を操作して、所望の機能を有する通常デバッグ用プログラムを通常デバッグ用プログラム格納領域Ｂ５へロードし、実行部制御信号Ｓ８によるアクセス禁止を解除する。実行部Ｂ７は、通常デバッグ用プログラム格納領域Ｂ５のアドレスにある命令をフェッチし、ロードされた通常デバッグ用プログラムを実行する。なお、２回目以降に通常デバッグ用プログラムを実行する場合には、通常デバッグ用プログラム格納領域Ｂ５に既にロードされている同一の通常デバッグ用プログラムを用いても良く、また、通常デバッグ用プログラム格納領域Ｂ５に他の通常デバッグ用プログラムを上書きして、異なる機能を持った通常デバッグ用プログラムを用いるようにすることも可能である。
【００３２】
以上の動作説明で分かるように、実施例１では、ランタイムブレーク割込みをかける動作も、通常ブレーク割込みをかける動作も、ユーザープログラムの実行に合わせて自動的に行われ、かつ、ランタイムデバッグ用プログラムを実行するか、通常デバッグ用プログラムを実行するかの選択も、ユーザープログラムの実行に合わせて自動的に行われており、ユーザーによる操作などは介在していない。
【００３３】
《複数モードデバッグ割込み制御部の詳細構成》
図４は、複数モードデバッグ割込み制御部の詳細構成を説明するブロック図である。図示するように、実施例１における複数モードデバッグ割込み制御部Ｂ６は、ブレーク割込み要求生成部ｂ６１と、ブレーク割り込み要因情報生成部ｂ６２と、設定レジスタ部ｂ６６と、バスインタフェース部ｂ６３とを備えている。設定レジスタ部ｂ６６は、ブレーク割込みαに対応するランタイムブレーク選択ビットα保持部ｂ６４と、ブレーク割込みβに対応するランタイムブレーク選択ビットβ保持部ｂ６５とを有している。
【００３４】
ランタイムブレーク選択ビットαの設定と、ランタイムブレーク選択ビットβの設定とは、初期設定時に行われる。設定のためのプログラムを起動して、システムバス信号Ｓ６と、バスインタフェース部ｂ６３と、内部アクセスバス信号Ｓ１７とを介して、設定レジスタ部ｂ６６に対応データを書き込む。実施例１においては、ブレーク割込みαにランタイムデバッグ用プログラムを対応付け、ブレーク割込みβに通常デバッグ用プログラムを対応付けるので、ランタイムブレーク選択ビットα保持部ｂ６４に“１”を書き込み、ランタイムブレーク選択ビットβ保持部ｂ６５に“０”を書き込む。すなわち、ランタイムブレーク選択ビットが“１”のときには、ランタイムのデバッグモードでデバッグを行い、ランタイムブレーク選択ビットが“０”のときには、ランタイムのデバッグモードでのデバッグは行わない。
【００３５】
［ランタイムブレーク割込みのための条件が検出された場合の動作］複数モードデバッグ割込み制御部Ｂ６では、ブレーク割込み要求生成部ｂ６１が、ブレーク割込みα入力信号Ｓ１を受信する。ブレーク割込み要求生成部ｂ６１は、ブレーク割込み要求信号Ｓ３を生成し、実行部Ｂ７へ出力すると共に、ブレーク割込み種別信号Ｓ１４を生成し、ブレーク割込み要因情報生成部ｂ６２へ出力する。ブレーク割込み要因情報生成部ｂ６２は、ブレーク割込み種別信号Ｓ１４と、ランタイムブレーク選択ビットα保持部ｂ６４の内容を通知するランタイムブレーク選択ビットα出力信号Ｓ１５とに基づいて、ブレーク割込み要因情報Ｓ５を生成し、実行部Ｂ７へ出力する。ランタイムブレーク選択ビットαは“１”に設定されているので、実行部Ｂ７へ出力されるブレーク割込み要因情報Ｓ５は、ランタイムのデバッグモードを指定している。その後、実行部Ｂ７からブレーク割込み受け付け完了信号Ｓ４を受信すると、ブレーク割込み要求生成部ｂ６１は、ブレーク割込み要求信号Ｓ３をオフにする。
【００３６】
［通常ブレーク割込みのための条件が検出された場合の動作］複数モードデバッグ割込み制御部Ｂ６では、ブレーク割込み要求生成部ｂ６１が、ブレーク割込みβ入力信号Ｓ２を受信する。ブレーク割込み要求生成部ｂ６１は、ブレーク割込み要求信号Ｓ３を生成し、実行部Ｂ７へ出力すると共に、ブレーク割込み種別信号Ｓ１４を生成し、ブレーク割込み要因情報生成部ｂ６２へ出力する。ブレーク割込み要因情報生成部ｂ６２は、ブレーク割込み種別信号Ｓ１４と、ランタイムブレーク選択ビットβ保持部ｂ６５の内容を通知するランタイムブレーク選択ビットβ出力信号Ｓ１６とに基づいて、ブレーク割込み要因情報Ｓ５を生成し、実行部Ｂ７へ出力する。ランタイムブレーク選択ビットβは“０”に設定されているので、実行部Ｂ７へ出力されるブレーク割込み要因情報Ｓ５は、通常のデバッグモードを指定している。その後、実行部Ｂ７からブレーク割込み受け付け完了信号Ｓ４を受信すると、ブレーク割込み要求生成部ｂ６１は、ブレーク割込み要求信号Ｓ３をオフにする。
【００３７】
《実行部の詳細構成》
図５は、実行部の詳細構成を説明するブロック図である。図示するように、実行部Ｂ７は、ユーザープログラムアクセス用アドレス生成部ｂ７１と、ランタイムデバッグプログラムアクセス用アドレス生成部ｂ７２と、通常デバッグプログラムアクセス用アドレス生成部ｂ７３と、アドレス選択部ｂ７４と、ブレーク割込み受け付け部ｂ７５と、命令実行部ｂ７６と、バスインタフェース部ｂ７７とを備えている。
【００３８】
ブレーク割込み受け付け部ｂ７５は、デバッグユニット部Ｂ２からデバッグユニット有効信号Ｓ７を受信すると活性化し、ブレーク割込み要求信号Ｓ３を受け付けるようになる。この状態でブレーク割込み要求信号Ｓ３を受け付けたとき、ブレーク割込み受け付け部ｂ７５は、命令実行部状態信号Ｓ２９を参照する。命令実行部状態信号Ｓ２９がデバッグプログラムの実行中（ブレーク状態）を示していた場合、ブレーク割込み受け付け部ｂ７５は、ブレーク割込みの受け付けを保留する。
【００３９】
一方、命令実行部状態信号Ｓ２９がユーザープログラムの実行中（ユーザー状態）を示していた場合、ブレーク割込み受け付け部ｂ７５は、ブレーク割込みを受け付けて、命令実行部ｂ７６へブレーク割込み受け付け信号Ｓ２５を出力する。その後、命令実行部ｂ７６によって、命令実行部状態信号Ｓ２９がブレーク状態を示す内容に変更されると、ブレーク割込み受け付け部ｂ７５は、複数モードデバッグ割込み制御部Ｂ６へブレーク割込み受け付け完了信号Ｓ４を出力する。
【００４０】
命令実行部ｂ７６は、命令要求信号Ｓ２８を出力し、命令フェッチバス信号Ｓ２６を入力することによって命令をフェッチする。命令要求信号Ｓ２８には、命令実行部ｂ７６がユーザー状態にあるのか、ブレーク状態にあるのかを示す情報も含まれている。フェッチした命令を実行した結果、データアクセスが発生した場合には、命令実行部ｂ７６は、データアクセスバス信号Ｓ２７と、バスインタフェース部ｂ７７と、システムバス信号Ｓ６とを介して、データを取り込む。
【００４１】
命令実行部ｂ７６は、実行部制御信号Ｓ８を受信することによって、デバッグユニット部Ｂ２から、命令実行の開始制御や停止制御などを受ける。また、命令実行部ｂ７６は、実行部状態信号Ｓ９を送信することによって、デバッグユニット部Ｂ２へ、プログラムの実行状態を通知している。それから、命令実行部ｂ７６は、ブレーク割込み受け付け部ｂ７５からブレーク割込み受け付け信号Ｓ２５を受信すると、ユーザー状態からブレーク状態へ移行し、命令実行部状態信号Ｓ２９を、ユーザー状態を示す内容から、ブレーク状態を示す内容に変更する。
【００４２】
ユーザープログラムアクセス用アドレス生成部ｂ７１は、命令要求信号Ｓ２８の指示に基づいて、ユーザープログラムにアクセスするためのアドレスを生成し、ユーザープログラム格納領域Ｂ３のアドレスを示す第一アドレス情報Ｓ２１を出力する。ランタイムデバッグプログラムアクセス用アドレス生成部ｂ７２は、命令要求信号Ｓ２８の指示に基づいて、ランタイムデバッグ用プログラムにアクセスするためのアドレスを生成し、ランタイムデバッグ用プログラム格納領域Ｂ４のアドレスを示す第二アドレス情報Ｓ２２を出力する。通常デバッグプログラムアクセス用アドレス生成部ｂ７３は、命令要求信号Ｓ２８の指示に基づいて、通常デバッグ用プログラムにアクセスするためのアドレスを生成し、通常デバッグ用プログラム格納領域Ｂ５のアドレスを示す第三アドレス情報Ｓ２３を出力する。
【００４３】
アドレス選択部ｂ７４は、命令実行部状態信号Ｓ２９と、ブレーク割込み要因情報Ｓ５とに基づいて、第一アドレス情報Ｓ２１、第二アドレス情報Ｓ２２、又は、第三アドレス情報Ｓ２３のいずれかを選択する。そして、選択アドレス情報Ｓ２４をバスインタフェース部ｂ７７に出力する。命令実行部状態信号Ｓ２９がユーザー状態を示していたとき、アドレス選択部ｂ７４は、第一アドレス情報Ｓ２１を選択する。命令実行部状態信号Ｓ２９がブレーク状態を示し、かつ、ブレーク割込み要因情報Ｓ５がランタイムのデバッグモードを示していたとき、アドレス選択部ｂ７４は、第二アドレス情報Ｓ２２を選択する。命令実行部状態信号Ｓ２９がブレーク状態を示し、かつ、ブレーク割込み要因情報Ｓ５が通常のデバッグモードを示していたとき、アドレス選択部ｂ７４は、第三アドレス情報Ｓ２３を選択する。
【００４４】
《詳細構成における動作》
［初期設定動作］命令実行部ｂ７６が、複数モードデバッグ割込み制御部Ｂ６におけるランタイムブレーク選択ビットα保持部ｂ６４への書き込み命令、又はランタイムブレーク選択ビットβ保持部ｂ６５への書き込み命令をフェッチし、実行すると、データアクセスバス信号Ｓ２７、バスインタフェース部ｂ７７、システムバス信号Ｓ６を介して、書き込みアクセスが発行される。システムバス信号Ｓ６に現れる書き込みデータは、複数モードデバッグ割込み制御部Ｂ６におけるバスインタフェース部ｂ６３に取り込まれる。そして、内部アクセスバス信号Ｓ１７を介して設定レジスタ部ｂ６６への書き込みが行われる。
【００４５】
［ユーザー状態中の動作］ユーザー状態中は、実行部Ｂ７が動作して、複数モードデバッグ割込み制御部Ｂ６は動作しない。
１．命令実行部ｂ７６は、ユーザー状態を示す情報を付加して、命令要求信号Ｓ２８を出力する。また、ユーザー状態を示す命令実行部状態信号Ｓ２９を出力する。
２．ユーザープログラムアクセス用アドレス生成部ｂ７１は、命令要求信号Ｓ２８に基づいて、第一アドレス情報Ｓ２１を出力する。ランタイムデバッグプログラムアクセス用アドレス生成部ｂ７２及び通常デバッグプログラムアクセス用アドレス生成部ｂ７３は、命令要求信号Ｓ２８にユーザー状態を示す情報が付加されているので動作しない。
３．アドレス選択部ｂ７４は、命令実行部状態信号Ｓ２９に基づいて、第一アドレス情報Ｓ２１、第二アドレス情報Ｓ２２、又は、第三アドレス情報Ｓ２３の中から第一アドレス情報Ｓ２１を選択し、選択アドレス情報Ｓ２４を出力する。
４．バスインタフェース部ｂ７７は、選択アドレス情報Ｓ２４に基づいて、命令フェッチ要求アクセスを生成し、システムバス信号Ｓ６に出力すると共に、システムバス信号Ｓ６からユーザープログラムの命令を受信し、命令フェッチバス信号Ｓ２６に出力する。
５．命令実行部ｂ７６は、命令フェッチバス信号Ｓ２６を介してフェッチした命令を実行する。また、このときの命令実行の状態を、実行部状態信号Ｓ９に出力する。
【００４６】
［ユーザー状態中にランタイムブレーク割込みが発生した場合の動作］実行部Ｂ７がユーザープログラムを実行しているときに、複数モードデバッグ割込み制御部Ｂ６が、デバッグユニット部Ｂ２からブレーク割込みα入力信号Ｓ１を受信した場合である。
１．ブレーク割込み要求生成部ｂ６１は、ブレーク割込み要求信号Ｓ３を実行部Ｂ７へ出力する。また、割込み入力信号が、ブレーク割込みα入力信号Ｓ１であったことを示すブレーク割込み種別信号Ｓ１４をブレーク割込み要因情報生成部ｂ６２へ出力する。
２．ブレーク割込み要因情報生成部ｂ６２は、ブレーク割込み種別信号Ｓ１４と、ランタイムブレーク選択ビットα出力信号Ｓ１５とに基づいて、ランタイムのデバッグモードを指定するブレーク割込み要因情報Ｓ５をアドレス選択部ｂ７４へ出力する。なお、ランタイムブレーク選択ビットαは、“１”に設定されているので、ランタイムブレーク選択ビットα出力信号Ｓ１５は、ランタイムのデバッグモードを指定する。
３．ブレーク割込み受け付け部ｂ７５は、ブレーク割込み要求信号Ｓ３を受け付けると、ブレーク割込み受け付け信号Ｓ２５を命令実行部ｂ７６へ出力する。
４．命令実行部ｂ７６は、ブレーク割込み受け付け信号Ｓ２５を受信すると、内部の状態をユーザー状態からブレーク状態に変更する。そして、ブレーク状態を示す命令実行部状態信号Ｓ２９を、ブレーク割込み受け付け部ｂ７５、及び、アドレス選択部ｂ７４に出力する。また、ブレーク状態中であることを示す情報を加味した命令要求信号Ｓ２８を出力する。
５．ブレーク割込み受け付け部ｂ７５は、命令実行部状態信号Ｓ２９がユーザー状態からブレーク状態へ変更されたことを確認すると、内部を初期化し、ブレーク割込み受け付け完了信号Ｓ４をブレーク割込み要求生成部ｂ６１へ出力する。
６．ランタイムデバッグプログラムアクセス用アドレス生成部ｂ７２、及び、通常デバッグプログラムアクセス用アドレス生成部ｂ７３は、ブレーク状態中であることを示す情報を加味した命令要求信号Ｓ２８を受信すると、それぞれ、第二アドレス情報Ｓ２２、第三アドレス情報Ｓ２３を生成し、アドレス選択部ｂ７４へ出力する。ユーザープログラムアクセス用アドレス生成部ｂ７１は、命令要求信号Ｓ２８がブレーク状態中であることを示しているので動作しない。
７．アドレス選択部ｂ７４は、ブレーク状態を示している命令実行部状態信号Ｓ２９と、ランタイムのデバッグモードを指定しているブレーク割込み要因情報Ｓ５とに基づいて、第一アドレス情報Ｓ２１、第二アドレス情報Ｓ２２、又は、第三アドレス情報Ｓ２３の中から、第二アドレス情報Ｓ２２を選択する。そして、第二アドレス情報Ｓ２２を選択アドレス情報Ｓ２４としてバスインタフェース部ｂ７７へ出力する。
８．バスインタフェース部ｂ７７は、選択アドレス情報Ｓ２４を用いて命令フェッチ要求アクセスを生成し、システムバス信号Ｓ６として出力する。その後、ランタイムデバッグ用プログラム格納領域Ｂ４から命令が読み出され、システムバス信号Ｓ６に現れる。バスインタフェース部ｂ７７は、この命令を読み込む。
９．読み込まれた命令は、命令フェッチバス信号Ｓ２６を介して命令実行部ｂ７６に渡される。ランタイムデバッグ用プログラムの命令が実行される。
【００４７】
［ユーザー状態中に通常ブレーク割込みが発生した場合の動作］実行部Ｂ７がユーザープログラムを実行しているときに、複数モードデバッグ割込み制御部Ｂ６が、デバッグユニット部Ｂ２からブレーク割込みβ入力信号Ｓ２を受信した場合である。
１．ブレーク割込み要求生成部ｂ６１は、ブレーク割込み要求信号Ｓ３を実行部Ｂ７へ出力する。また、割込み入力信号が、ブレーク割込みβ入力信号Ｓ２であったことを示すブレーク割込み種別信号Ｓ１４をブレーク割込み要因情報生成部ｂ６２へ出力する。
２．ブレーク割込み要因情報生成部ｂ６２は、ブレーク割込み種別信号Ｓ１４と、ランタイムブレーク選択ビットβ出力信号Ｓ１６とに基づいて、通常のデバッグモードを指定するブレーク割込み要因情報Ｓ５をアドレス選択部ｂ７４へ出力する。なお、ランタイムブレーク選択ビットβは、“０”に設定されているので、ランタイムブレーク選択ビットβ出力信号Ｓ１６は、通常のデバッグモードを指定する。
３．ブレーク割込み受け付け部ｂ７５は、ブレーク割込み要求信号Ｓ３を受け付けると、ブレーク割込み受け付け信号Ｓ２５を命令実行部ｂ７６へ出力する。
４−１．命令実行部ｂ７６は、ブレーク割込み受け付け信号Ｓ２５を受信すると、内部の状態をユーザー状態からブレーク状態に変更する。そして、ブレーク状態を示す命令実行部状態信号Ｓ２９を、ブレーク割込み受け付け部ｂ７５、及び、アドレス選択部ｂ７４に出力する。また、ブレーク状態中であることを示す情報を加味した命令要求信号Ｓ２８を出力する。
４−２．命令実行部ｂ７６がブレーク状態へ移行したとき、実行部制御信号Ｓ８によって通常デバッグ用プログラム格納領域Ｂ５へのアクセスが禁止されていた場合、命令実行部ｂ７６は、ブレーク状態中であることを示す情報を加味した命令要求信号Ｓ２８を一定時間待ってから出力する。その間に、ユーザーがＩＣＥ  Ｂ１を操作して、所望の機能を有する通常デバッグ用プログラムを通常デバッグ用プログラム格納領域Ｂ５へロードし、実行部制御信号Ｓ８による禁止を解除する。
５．ブレーク割込み受け付け部ｂ７５は、命令実行部状態信号Ｓ２９がユーザー状態からブレーク状態へ変更されたことを確認すると、内部を初期化し、ブレーク割込み受け付け完了信号Ｓ４をブレーク割込み要求生成部ｂ６１へ出力する。
６．ランタイムデバッグプログラムアクセス用アドレス生成部ｂ７２、及び、通常デバッグプログラムアクセス用アドレス生成部ｂ７３は、ブレーク状態中であることを示す情報を加味した命令要求信号Ｓ２８を受信すると、それぞれ、第二アドレス情報Ｓ２２、第三アドレス情報Ｓ２３を生成し、アドレス選択部ｂ７４へ出力する。ユーザープログラムアクセス用アドレス生成部ｂ７１は、命令要求信号Ｓ２８がブレーク状態中であることを示しているので動作しない。
７．アドレス選択部ｂ７４は、ブレーク状態を示している命令実行部状態信号Ｓ２９と、通常のデバッグモードを指定しているブレーク割込み要因情報Ｓ５とに基づいて、第一アドレス情報Ｓ２１、第二アドレス情報Ｓ２２、又は、第三アドレス情報Ｓ２３の中から、第三アドレス情報Ｓ２３を選択する。そして、第三アドレス情報Ｓ２２を選択アドレス情報Ｓ２４としてバスインタフェース部ｂ７７へ出力する。
８．バスインタフェース部ｂ７７は、選択アドレス情報Ｓ２４を用いて命令フェッチ要求アクセスを生成し、システムバス信号Ｓ６として出力する。その後、通常デバッグ用プログラム格納領域Ｂ５から命令が読み出され、システムバス信号Ｓ６に現れる。バスインタフェース部ｂ７７は、この命令を読み込む。
９．読み込まれた命令は、命令フェッチバス信号Ｓ２６を介して命令実行部ｂ７６に渡される。通常デバッグ用プログラムの命令が実行される。
【００４８】
《実施例１の効果》
以上説明したように、実施例１では、デバッグ条件の成立を契機として発生するブレーク割込みを、高速に応答可能なランタイムブレーク割込みとして使用するか、高速な応答は不要だが高機能なデバッグ機能を実現できる通常ブレークとして使用するかを、自動的に、かつ、高速に決定し、素早くデバッグ用プログラムの実行を開始することができる。デバッグ用プログラム格納領域のアドレスを選択することによって、瞬時にデバッグ用プログラムへ分岐できる。
【実施例２】
【００４９】
図６は、実施例２におけるマルチプロセッサの構成説明図である。図示するように、実施例２におけるマルチプロセッサは、実施例１におけるプロセッサＢ０とおおよそ同様の構成を有する二つのプロセッサＢ１００−１，Ｂ１００−２を擁している。図６において、プロセッサＢ１００−１のデバッグユニット部Ｂ２−１、及び、プロセッサＢ１００−２のデバッグユニット部Ｂ２−２は、実施例１におけるプロセッサＢ０のデバッグユニット部Ｂ２と同様の機能及び構成を有し、また、プロセッサＢ１００−１の実行部Ｂ７−１、及び、プロセッサＢ１００−２の実行部Ｂ７−２は、実施例１におけるプロセッサＢ０の実行部Ｂ７と同様の機能及び構成を有している。
【００５０】
図６のＩＣＥ  Ｂ１は、図３のＩＣＥ  Ｂ１と同じものであり、ＩＣＥインタフェース入力信号Ｓ１１と、ＩＣＥインタフェース出力信号Ｓ１２とを用いて、二つのデバッグユニット部Ｂ２−１，Ｂ２−２の設定を行うことができる。デバッグユニット部Ｂ２−１の設定を行う場合、ユニット部間信号Ｓ１０２がデバッグユニット部Ｂ２−２をスルーして、ＩＣＥインタフェース出力信号Ｓ１２となり、デバッグユニット部Ｂ２−２の設定を行う場合、ＩＣＥインタフェース入力信号Ｓ１１がデバッグユニット部Ｂ２−１をスルーして、ユニット部間信号Ｓ１０２となり、デバッグユニット部Ｂ２−２の入力となる。
【００５１】
実施例２におけるブレーク割込みα入力信号Ｓ１−１，Ｓ１−２と、ブレーク割込みβ入力信号Ｓ２−１，Ｓ２−２と、ブレーク割込み要求信号Ｓ３−１，Ｓ３−２と、ブレーク割込み受け付け完了信号Ｓ４−１，Ｓ４−２と、ブレーク割込み要因情報Ｓ５−１，Ｓ５−２と、システムバス信号Ｓ６−１，Ｓ６−２と、デバッグユニット有効信号Ｓ７−１，Ｓ７−２と、実行部制御信号Ｓ８−１，Ｓ８−２と、実行部状態信号Ｓ９−１，Ｓ９−２と、アクセスバス信号Ｓ１０−１，Ｓ１０−２とについても、それぞれ、実施例１におけるブレーク割込みα入力信号Ｓ１と、ブレーク割込みβ入力信号Ｓ２と、ブレーク割込み要求信号Ｓ３と、ブレーク割込み受け付け完了信号Ｓ４と、ブレーク割込み要因情報Ｓ５と、システムバス信号Ｓ６と、デバッグユニット有効信号Ｓ７と、実行部制御信号Ｓ８と、実行部状態信号Ｓ９と、アクセスバス信号Ｓ１０と同様の役割りを有している。
【００５２】
実施例２におけるユーザープログラム格納領域Ｂ３−１，Ｂ３−２と、ランタイムデバッグ用プログラム格納領域Ｂ４−１，Ｂ４−２と、通常デバッグ用プログラム格納領域Ｂ５−１，Ｂ５−２とについても、それぞれ、実施例１におけるユーザープログラム格納領域Ｂ３と、ランタイムデバッグ用プログラム格納領域Ｂ４と、通常デバッグ用プログラム格納領域Ｂ５と同様の機能を有している。
【００５３】
実施例２における複数モードデバッグ割込み制御部Ｂ１０６−１，Ｂ１０６−２は、実施例１における複数モードデバッグ割込み制御部Ｂ１０６に機能追加が為されていて、マルチプロセッサ対応になっている。図７に、実施例２におけるマルチプロセッサ対応複数モードデバッグ割込み制御部の構成説明図を示す。図６のマルチプロセッサ対応複数モードデバッグ割込み制御部Ｂ１０６−１，Ｂ１０６−２は、図７のマルチプロセッサ対応複数モードデバッグ割込み制御部Ｂ１０６と同様の構成及び機能を有している。
【００５４】
図７において、ブレーク割り込み要因情報生成部ｂ６２と、バスインタフェース部ｂ６３と、ブレーク割込みαに対応するランタイムブレーク選択ビットα保持部ｂ６４と、ブレーク割込みβに対応するランタイムブレーク選択ビットβ保持部ｂ６５とは、それぞれ、図４に示したものと同様の機能を有している。
【００５５】
マルチプロセッサ対応複数モードデバッグ割込み制御部Ｂ１０６の設定レジスタ部ｂ６６’には、一斉ブレーク受付イネーブルビット保持部ｂ６７が追加されている。一斉ブレーク受付イネーブルビット保持部ｂ６７は、初期設定時に書き込まれる一斉ブレーク受付イネーブルビットを保持する。一斉ブレーク割込みを受け付けるとき、一斉ブレーク受付イネーブルビットは“１”であり、一斉ブレーク割込みを受け付けないとき、一斉ブレーク受付イネーブルビットは“０”である。
【００５６】
マスク部ｂ６９は、前段のプロセッサから伝達される一斉ブレーク割込み入力信号Ｓ１０１−（ｋ）と、一斉ブレーク受付イネーブルビットとのＡＮＤ条件をとって、ＡＮＤ条件が成立したときにブレーク割込み入力信号Ｓ１８を出力する。一斉ブレーク受付イネーブルビットが“１”のときに一斉ブレーク割込み信号Ｓ１０１−（ｋ）を受信した場合、マスク部ｂ６９は、一斉ブレーク割込みを許可してブレーク割込み入力信号Ｓ１８を出力する。一斉ブレーク受付イネーブルビットが“０”のときに一斉ブレーク割込み信号Ｓ１０１−（ｋ）を受信した場合、マスク部ｂ６９は、一斉ブレーク割込みを許可せず、ブレーク割込み入力信号Ｓ１８を出力しない。
【００５７】
図７において、ブレーク割込み要求生成部ｂ６１’は、図４におけるブレーク割込み要求生成部ｂ６１の機能に加えて、マスク部ｂ６９からのブレーク割込み入力信号Ｓ１８も受け付ける機能を有している。ブレーク割込み要求生成部ｂ６１’は、マスク部ｂ６９からブレーク割込み入力信号Ｓ１８を受け付けると、ブレーク割込み要求信号Ｓ３を出力すると共に、一斉ブレーク割込み信号Ｓ１０１−（ｋ）で指定されているデバッグモードと同一のデバッグモードを示すブレーク割込み種別信号Ｓ１４を出力する。ブレーク要因記憶ビット保持部ｂ６８は、マルチプロセッサ対応複数モードデバッグ割込み制御部Ｂ１０６がブレーク割込みを受け付け、かつ、実行部がブレーク状態に移行したことを確認してから、次段のプロセッサに、一斉ブレーク割込み信号Ｓ１０１−（ｋ＋１）を出力する。この一斉ブレーク割込み信号Ｓ１０１−（ｋ＋１）は、ブレーク割込み要因情報Ｓ５に基づいて生成されており、デバッグモードを指定する情報を含んでいる。
【００５８】
《マルチプロセッサの動作》
［一斉ブレーク割込みが設定され、プロセッサＢ１００−１でブレーク割込みが発生した場合の動作］
１−１．プロセッサＢ１００−１において、マルチプロセッサ対応複数モードデバッグ割込み制御部Ｂ１０６−１が、ブレーク割込みβ入力信号Ｓ２を受信したとする。
１−２．ブレーク割込み要求生成部ｂ６１’は、ブレーク割込み要求信号Ｓ３を出力する。また、その割込みが、ブレーク割込みβ入力信号Ｓ２によるものであることを示すブレーク割込み種別信号Ｓ１４をブレーク割込み要因情報生成部ｂ６２へ出力する。
１−３．ブレーク割込み要因情報生成部ｂ６２は、ブレーク割込み種別信号Ｓ１４と、ランタイムブレーク選択ビットβ出力信号Ｓ１６とに基づいて、通常のデバッグモードを指定するブレーク割込み要因情報Ｓ５を出力する。なお、ランタイムブレーク選択ビットβは、実施例１と同様に、“０”に設定されているものとする。
１−４．その後、実行部がブレーク状態に移行すると、ブレーク割込み要求生成部ｂ６１’は、ブレーク割込み受け付け完了信号Ｓ４を受信する。
１−５．ブレーク要因記憶ビット保持部ｂ６８は、ブレーク割込み要因情報Ｓ５に基づいて、通常のデバッグモードを指定する情報を生成し、かつ、ブレーク割込み受け付け完了信号Ｓ４を契機として、一斉ブレーク割込み要求信号Ｓ１０１−２を、プロセッサＢ１００−２へ出力する。
２−１．プロセッサＢ１００−２において、マスク部ｂ６９が一斉ブレーク割込み入力信号Ｓ１０１−２を受信する。マスク部ｂ６９は、プロセッサＢ１００−１から出力された一斉ブレーク割込み入力信号Ｓ１０１−２と、一斉ブレーク受付イネーブルビットとのＡＮＤ条件をとる。一斉ブレーク受付イネーブルビットが“０”であれば、マスク部ｂ６９は、一斉ブレーク割込み入力信号Ｓ１０１−２をマスクし、ブレーク割込み入力信号Ｓ１８を出力しない。一方、一斉ブレーク受付イネーブルビットが“１”のとき、マスク部ｂ６９は、一斉ブレーク割込みを許可してブレーク割込み入力信号Ｓ１８を出力する。
２−２．マスク部ｂ６９からブレーク割込み入力信号Ｓ１８を受信したとき、ブレーク割込み要求生成部ｂ６１’は、ブレーク割込み要求信号Ｓ３を出力する。また、プロセッサＢ１００−１側で発生した通常のデバッグモードと同一のデバッグモードを示すブレーク割込み種別信号Ｓ１４をブレーク割込み要因情報生成部ｂ６２へ出力する。
２−３．ブレーク割込み要因情報生成部ｂ６２は、ブレーク割込み種別信号Ｓ１４と、ランタイムブレーク選択ビットβ出力信号Ｓ１６とに基づいて、通常のデバッグモードを指定するブレーク割込み要因情報Ｓ５を出力する。なお、ランタイムブレーク選択ビットβは、プロセッサＢ１００−１と同様に、“０”に設定されているものとする。
２−４．その後、実行部がブレーク状態に移行すると、ブレーク割込み要求生成部ｂ６１’は、ブレーク割込み受け付け完了信号Ｓ４を受信する。
２−５．ブレーク要因記憶ビット保持部ｂ６８は、ブレーク割込み要因情報Ｓ５に基づいて、通常のデバッグモードを指定する情報を生成し、かつ、ブレーク割込み受け付け完了信号Ｓ４を契機として、一斉ブレーク割込み要求信号Ｓ１０１−１を、プロセッサＢ１００−１へ出力する。
３．以上の動作により、プロセッサＢ１００−１と、プロセッサＢ１００−２とは、同期して通常のデバッグモードに移行し、一斉ブレークのブレーク割込みを処理する。
【００５９】
《実施例２の効果》
実施例２においては、通常のデバッグモードをさらに細分化し、マルチプロセッサ型のマイクロコンピュータでは必須ともいえる一斉ブレークのデバッグモードを実現することが可能になる。
【図面の簡単な説明】
【００６０】
【図１】バイパスエミュレーションの説明図
【図２】一実施の形態におけるプロセッサの構成を説明するブロック図
【図３】実施例１におけるプロセッサＢ０の構成説明図
【図４】複数モードデバッグ割込み制御部の詳細構成を説明するブロック図
【図５】実行部の詳細構成を説明するブロック図
【図６】実施例２におけるマルチプロセッサの構成説明図
【図７】実施例２におけるマルチプロセッサ対応複数モードデバッグ割込み制御部の構成説明図
【符号の説明】
【００６１】
１０，Ｂ０，Ｂ１００−１，Ｂ１００−２  プロセッサ
１１，Ｂ２，Ｂ２−１，Ｂ２−２  デバッグユニット部
１２，Ｂ６，Ｂ１０６−１，Ｂ１０６−２  複数モードデバッグ割込み制御部
１３，Ｂ７，Ｂ７−１，Ｂ７−２  実行部
Ｂ１  ＩＣＥ
Ｂ３〜Ｂ５，Ｂ３−１〜Ｂ５−１，Ｂ３−２〜Ｂ５−２  プログラム格納領域
ｂ６１，ｂ６１’  ブレーク割込み要求生成部
ｂ６２  ブレーク割込み要因情報生成部
ｂ６３，ｂ７７  バスインタフェース部
ｂ６４  ランタイムブレーク選択ビットα保持部
ｂ６５  ランタイムブレーク選択ビットβ保持部
ｂ６６，ｂ６６’  設定レジスタ部
ｂ６７  一斉イネーブル受付イネーブルビット
ｂ６８  ブレーク要因記憶ビット保持部
ｂ６９  マスク部
ｂ７１〜ｂ７３  アドレス生成部
ｂ７４  アドレス選択部
ｂ７５  ブレーク割込み受け付け部
ｂ７６  命令実行部
【図１】
2010140240.tif 000003
【図２】
2010140240.tif 000004
【図３】
2010140240.tif 000005
【図４】
2010140240.tif 000006
【図５】
2010140240.tif 000007
【図６】
2010140240.tif 000008
【図７】
2010140240.tif 000009