(57)【要約】【課題】  ユーザプログラムにおける所定区間の実行中は、デバッグ割込み信号の入力に拘わらず、デバッグプログラム実行モードへの遷移を防ぐ。【解決手段】  本発明のプロセッサは、ユーザプログラム及びデバッグプログラムを実行するＣＰＵコアと、実行の中断を禁止する割込禁止区間を前記ＣＰＵコアが前記ユーザプログラムにおいて実行しているか否かを検出する検出ブロックと、前記ＣＰＵコアが前記割込禁止区間以外の区間の実行中に、前記デバッグプログラムの実行を要求するデバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムを中断させて前記デバッグプログラムを実行させ、一方、前記ＣＰＵコアが前記割込禁止区間の実行中に、前記デバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムをそのまま継続して実行させる判定ブロックと、を備える。【選択図】  図１
2005128773.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラム及びデバッグプログラムを実行するＣＰＵコアと、
実行の中断を禁止する割込禁止区間を前記ＣＰＵコアが前記ユーザプログラムにおいて実行しているか否かを検出する検出ブロックと、
前記ＣＰＵコアが前記割込禁止区間以外の区間の実行中に、前記デバッグプログラムの実行を要求するデバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムを中断させて前記デバッグプログラムを実行させ、一方、前記ＣＰＵコアが前記割込禁止区間の実行中に、前記デバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムをそのまま継続して実行させる判定ブロックと、
を備えたことを特徴とするマイクロプロセッサ。
【請求項２】
前記ユーザプログラムは、指定区間における実行の中断を禁止する割込禁止命令を有し、
前記検出ブロックは、前記ＣＰＵコアが前記割込禁止命令による前記指定区間を実行しているか否かに基づき、前記ＣＰＵコアが前記割込禁止区間を実行中であるか否かを検出する検出手段を含むことを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記検出ブロックは、所定のメモリアドレスパターンを保持しており、前記所定のメモリアドレスパターンと同一のパターンを含むメモリアドレスの命令を前記ＣＰＵコアが実行しているか否かに基づき、前記ＣＰＵコアが前記割込禁止区間を実行中であるか否かを検出する検出手段を含むことを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項４】
前記検出ブロックは、所定の開始メモリアドレス及び所定の終了メモリアドレスを有し、前記開始メモリアドレス及び前記終了メモリアドレスによるメモリアドレス区間内の命令を前記ＣＰＵコアが実行しているか否かに基づき、前記ＣＰＵコアが前記割込禁止区間を実行中であるか否かを検出する検出手段を含むことを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項５】
ユーザプログラムを実行して、接続された制御対象機器を制御するＣＰＵコアと、
デバッグプログラムの実行を要求するデバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムを中断させて、前記デバッグプログラムを実行させるデバッグ要求ブロックとを備え、
前記デバッグ要求ブロックは、前記制御対象機器により特定処理が行われている場合は、前記デバッグ割込み信号の入力に拘わらず、前記ユーザプログラムを中断させないことを特徴とするマイクロプロセッサ。
【請求項６】
コンパイラがソースプログラムをアセンブリコードにコンパイルする方法であって、
実行の中断が禁止される割込禁止区間を前記ソースプログラム中で検出するステップと、
前記ソースプログラムをアセンブリコードにコンパイルすると共に前記検出された割込禁止区間の前後に割込禁止区間を表す命令コードを挿入するステップと、
を備えたコンパイル方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグプログラムを用いてユーザプログラムの検証を行うマイクロプロセッサ及びコンパイル方法に関する。
【背景技術】
【０００２】
従来におけるマイクロプロセッサ等が有するデバッグ機能（例えばCPUコアに接続されたDSU（Debug Support Unit）により実現）は、マイクロプロセッサの動作モードをユーザプログラム実行モードからデバッグプログラム実行モードへ遷移させることを実現する。
【０００３】
具体的には、ユーザ端末等の外部機器からＤＳＵに特定の信号（デバッグ割込み信号）が入力されると、ＤＳＵは、ＣＰＵコアにユーザプログラムを中断させて、デバッグプログラムを実行させる。あるいは、ＣＰＵコアがユーザプログラムの実行中に特定の命令を実行することによってもデバッグプログラム実行モードへの遷移が実現される。
【０００４】
モード遷移によりデバッグプログラムを実行したマイクロプロセッサは、復帰命令(例えばDRET命令)を実行するなどして、ユーザプログラム実行モードへ復帰する。つまり、マイクロプロセッサは、デバッグプログラム実行モードへ遷移した際のプログラムカウンタ（PC）+1に格納された命令を実行する。従って、ユーザから見た場合、デバッグプログラムの実行中は、ユーザプログラムは中断している。
【０００５】
以上のように、マイクロプロセッサのモード遷移機能を用いてユーザプログラムの実行・中断を制御することで、ユーザプログラム実行中のシステム状況に影響を与えることなく、デバッグ処理を行うことができる。
【特許文献１】特開２００２−５５８４７号公報
【特許文献２】特開２００２−２０２９００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来においては、ユーザ端末等の外部機器からＤＳＵへデバッグ割込み信号が入力されると、ユーザプログラムのいかなる区間が実行されていても、強制的にデバッグプログラム実行モードへ遷移させられる問題があった。
【０００７】
一般的に、ユーザプログラムにはOS（Operating System）カーネルやライブラリなど、ユーザ以外によって作成されたルーチンプログラム等がリンクされている。ユーザプログラムにリンクされたルーチンプログラム等は情報（例えばソース・コード）が公開されていないことが多く、このような場合、ユーザプログラムのデバッグ作業が困難になることがある。
【０００８】
例えば、このようなルーチンプログラムを実行しているときに、マイクロプロセッサがデバッグプログラム実行モードへ遷移させられてしまうと、中断した箇所がルーチンプログラム内のどこであるか特定できないなどの状況が起こる。
【０００９】
また、I/O処理を実現するユーザプログラム、例えばイーサネット（登録商標）・コントローラ用のプログラムでは、データの入出力の途中でプログラムが中断すると、データ取得が不完全となる場合がある。つまり、プログラムの続きを実行したとしても、続きのデータを完全に取得できる保障がなく、従って、続きのプログラム実行に支障をきたすこともある。
【００１０】
本発明は、上記問題点に鑑みてなされたものであり、その目的は、ユーザプログラムにおける特定区間の実行中は、デバッグ割込み信号の入力に拘わらず、デバッグプログラム実行モードへの遷移を防ぐことを可能にしたマイクロプロセッサ及びコンパイル方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明のマイクロプロセッサは、ユーザプログラム及びデバッグプログラムを実行するＣＰＵコアと、実行の中断を禁止する割込禁止区間を前記ＣＰＵコアが前記ユーザプログラムにおいて実行しているか否かを検出する検出ブロックと、前記ＣＰＵコアが前記割込禁止区間以外の区間の実行中に、前記デバッグプログラムの実行を要求するデバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムを中断させて前記デバッグプログラムを実行させ、一方、前記ＣＰＵコアが前記割込禁止区間の実行中に、前記デバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムをそのまま継続して実行させる判定ブロックと、を備えたものとして構成される。
【００１２】
また、本発明のマイクロプロセッサは、ユーザプログラムを実行して、接続された制御対象機器を制御するＣＰＵコアと、デバッグプログラムの実行を要求するデバッグ割込み信号が入力された場合は、前記ＣＰＵコアに前記ユーザプログラムを中断させて、前記デバッグプログラムを実行させるデバッグ要求ブロックとを備え、前記デバッグ要求ブロックは、前記制御対象機器により特定処理が行われている場合は、前記デバッグ割込み信号の入力に拘わらず、前記ユーザプログラムを中断させないことを特徴とする。
【００１３】
また、本発明のコンパイル方法は、コンパイラがソースプログラムをアセンブリコードにコンパイルする方法であって、実行の中断が禁止される割込禁止区間を前記ソースプログラム中で検出するステップと、前記ソースプログラムをアセンブリコードにコンパイルすると共に前記検出された割込禁止区間の前後に割込禁止区間を表す命令コードを挿入するステップと、を備えたことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ユーザプログラムの中断を禁止する区間をＣＰＵコアが実行しているか否かを判定する判定ブロックを設けたので、前記区間の実行中は、デバッグ割込み信号の入力に拘わらず、デバッグプログラム実行モードへの遷移を阻止することを実現できる。
【発明を実施するための最良の形態】
【００１５】
（第１の実施の形態）
先ず、本実施の形態の特徴について簡単に説明する。
【００１６】
本実施の形態は、ユーザプログラムにおいて実行の中断を禁止する区間 (クリティカル区間)をＣＰＵコアが実行しているか否かを判定し、クリティカル区間を実行中である場合は、デバッグ割込み信号の入力に拘わらず、ＣＰＵコアをデバッグプログラム実行モードへ遷移させないことを特徴とする。
【００１７】
以下、図面を参照しながら、本実施の形態について説明する。
【００１８】
図１は、本発明の第１の実施の形態としてマイクロプロセッサ１の構成を示すブロック図である。
【００１９】
このマイクロプロセッサ１は、ユーザプログラムを格納したメモリ２に接続されている。マイクロプロセッサ１とメモリ２とは例えばワンチップにより構成される。
【００２０】
メモリ２内のユーザプログラムには、実行中の中断を禁止する区間を特定するクリティカル区間進入命令及びクリティカル区間終了命令が挿入されている。
【００２１】
図３は、ユーザプログラム（アセンブリコード）例を示す図である。
【００２２】
このユーザプログラムは、ＬＡＮケーブル等から送られてきたデータを取り込んでメモリ２内に格納することを実現する。ユーザプログラムは、初期処理などを行う第１の命令群と、Ｉ／Ｏ処理を行うＩ／Ｏ処理命令群と、終了処理などを行う第２の命令群等を含む。Ｉ／Ｏ処理命令群の前後には、クリティカル区間進入命令（dentcli）とクリティカル区間終了命令（dextcli）が挿入されている。
【００２３】
また、マイクロプロセッサ１は、ユーザ端末３に接続され、ユーザ端末３から、デバッグプログラムの実行を要求するデバッグ割込み信号を受信する。
【００２４】
以上のようにメモリ２及びユーザ端末３に接続されたマイクロプロセッサ１は、ＣＰＵコア４と、フラグ設定部５と、条件判定ブロック６と、ＤＳＵ（Debug Support Unit）８とを備える。
【００２５】
ＣＰＵコア４は、上述のユーザプログラムを実行する。ＣＰＵコア４は、クリティカル区間進入命令（dentcli命令）の実行の結果、フラグ設定命令を生成し、フラグ設定部５に出力する。また、ＣＰＵコア４は、クリティカル区間終了命令（dextcli命令）の実行の結果、フラグ解除命令を生成し、フラグ設定部５に出力する。
【００２６】
フラグ設定部５は、ＣＰＵコア４からフラグ設定命令を受け取ると、クリティカル区間フラグに真（“１”）を設定する。一方、フラグ設定部５は、ＣＰＵコア４からフラグ解除命令を受け取ると、クリティカル区間フラグに偽（“０”）を設定する。このクリティカル区間フラグには、初期値として、偽（“０”）が設定されている。
【００２７】
条件判定ブロック６は、ユーザ端末３からのデバッグ割込み信号（デバッグプログラム実行モードへの遷移を要求する信号）を、上述のクリティカル区間フラグの内容に応じて、ＤＳＵ８に通過させたり、させなかったりする。
【００２８】
より詳しくは、クリティカル区間フラグが真（“１”）のときは、条件判定ブロック６は、ユーザ端末３からのデバッグ割込み信号をＤＳＵ８に通過させない。一方、クリティカル区間フラグが偽（“０”）のときは、条件判定ブロック６は、ユーザ端末３からのデバッグ割込み信号をそのままＤＳＵ８に通過させる。
【００２９】
ＤＳＵ８は、ＣＰＵコア４やメモリ２内の内部リソースを参照すること等（デバッグ処理）を実現するデバッグプログラムを備える。
【００３０】
ＤＳＵ８は、ユーザ端末３からデバッグ割込み信号を受け取った場合は、ユーザプログラム実行モードからデバッグプログラム実行モードにＣＰＵコア４を遷移させる。より詳しくは、ＤＳＵ８は、デバッグ割込み信号を受け取った場合は、ＣＰＵコア４にデバッグ開始信号を送出する。デバッグ開始信号を受け取ったＣＰＵコア４は、実行中のユーザプログラムを中断して（次に実行する命令を格納したプログラムカウンタ値を記憶して）、ＤＳＵ８内のデバッグプログラム８を実行する。
【００３１】
ＣＰＵコア４によるデバッグプログラムの実行中にＤＳＵ８がユーザ端末３からデバッグを中止する指示（図示せず）を受け取った場合は、ＤＳＵ８はデバッグ終了信号をＣＰＵコア４に送出する。デバッグ終了信号を受け取ったＣＰＵコア４は、デバッグプログラムの実行を終了する命令（例えばDRET等）（予めＣＰＵコア４内に格納されている）を実行してデバッグプログラムを終了し、その旨をＤＳＵ８に通知する。この後、ＣＰＵコア４は、引き続き、中断した箇所から、ユーザプログラムを実行する。
【００３２】
次に、図３のユーザプログラムを参照して、マイクロプロセッサ１による処理ステップについて説明する。
【００３３】
図２は、マイクロプロセッサ１による処理ステップを説明するフローチャートである。
【００３４】
ＣＰＵコア４は、メモリ２内のユーザプログラム（図３参照）を読み出し、まず、第１の命令群を実行する（ステップＳ１）。この結果、ＣＰＵコア４は、後続のＩ／Ｏ処理に必要な初期データを内部レジスタに設定する（ステップＳ１）。
【００３５】
次に、ＣＰＵコア４は、第１の命令群の次に配置された、クリティカル区間進入命令（dentcli）を実行する（ステップＳ２）。即ち、ＣＰＵコア４は、フラグ設定部５にフラグ設定命令を送出し、フラグ設定命令を受け取ったフラグ設定部５は、クリティカル区間フラグを“１”に設定する。
【００３６】
次に、ＣＰＵコア４は、クリティカル区間進入命令（dentcli）の次に配置されたＩ／Ｏ処理命令群を実行する（ステップＳ３）。即ち、ＣＰＵコア４は、ＬＡＮケーブル等から送られてくるデータを順次、取り込み、メモリ２内に格納する（ステップＳ３−１、Ｓ３−２）。図２に示すように、データの取り込み中、ユーザ端末３からデバッグ割込み信号が条件判定ブロック６に入力された場合、クリティカル区間フラグが真（“１”）であるため、条件判定ブロック６は、デバッグ割込み信号をＤＳＵ８に通過させない。従って、ＣＰＵコア４は、実行中のＩ／Ｏ処理命令群を中断しない。
【００３７】
ＣＰＵコア４は、全てのデータを受け取ったら（ステップＳ３−２のＹＥＳ）、Ｉ／Ｏ処理命令群の実行を終了し、このＩ／Ｏ処理命令群の次に配置されたクリティカル区間終了命令（dextcli）を実行する（ステップＳ４）。即ち、ＣＰＵコア４は、フラグ設定部５にフラグ解除命令を送出し、フラグ解除命令を受け取ったフラグ設定部５は、クリティカル区間フラグを“０”に設定する。
【００３８】
クリティカル区間フラグが“０”に設定されたら、条件判定ブロック６は、ユーザ端末３からのデバッグ割込み信号をＤＳＵ８に通過させる（ステップＳ５）。デバッグ割込み信号を受け取ったＤＳＵ８は、デバッグ開始信号をＣＰＵコア４に送出する。デバッグ開始信号を受け取ったＣＰＵコア４は、実行中のユーザプログラムを中断して、デバッグプログラムの実行を開始する（ステップＳ５）。
【００３９】
ＣＰＵコア４によるデバッグプログラムの実行中に、ＤＳＵ８が、ユーザ端末３からデバッグ中止の指示（図示せず）を受け取ったら、ＣＰＵコア４にデバッグ終了命令を送出する（ステップＳ６）。デバッグ終了命令を受け取ったＣＰＵコア４は、例えば上述のDRET命令を実行して、デバッグプログラムを終了する。デバッグプログラムを終了したＣＰＵコア４は、上で中断した箇所から、引き続き、ユーザプログラムを実行する（ステップＳ６）。
【００４０】
ここで、本実施の形態をより良く理解するために、従来のマイクロプロセッサによる処理ステップについて見てみる。
【００４１】
図４は、従来のマイクロプロセッサによる処理ステップを説明するフローチャートである。
【００４２】
図４に示すように、従来においては、Ｉ／Ｏ処理（ステップＳ２２）中に、デバッグ割込み信号が入力されると、強制的にデバッグプログラム実行モードに遷移させられる（ステップＳ２３）。このため、デバッグプログラム実行モードの終了後、ユーザプログラム実行モードに戻ったとしても（ステップＳ２４）、データの完全性は保証されない（ステップＳ２２−２）。
【００４３】
これに対して、本実施の形態では、クリティカル区間進入命令（dentcli）とクリティカル区間終了命令（dextcli）によってＩ／Ｏ処理命令群は中断を阻止されるので、送られてきたデータを確実に取得できる。
【００４４】
上述した例では、クリティカル区間進入命令及びクリティカル区間終了命令により特定された区間における中断を阻止したが、ＣＰＵコア４により制御される機器（制御対象機器）側から中断を阻止することも可能である。
【００４５】
例えば、ユーザプログラムの内容が、制御対象機器が保有する容器内に満たされた液体を加熱し、液体が所定の温度になったことを検知したら、加熱を停止するものであったとする。制御対象機器は、ＣＰＵコア４による制御の下、容器内の液体を加熱したり、加熱を停止したりする。この場合、加熱中は、実行中のユーザプログラムを中断することは安全性の観点から好ましくない。容器内の液体が許容の温度を超えて加熱される恐れがあるからである。
【００４６】
そこで、図５に示すように、制御対象機器１０にクリティカル区間フラグを保有させる。制御対象機器１０は、加熱等の特定処理を行っている場合は、クリティカル区間フラグを“１”に設定し、特定処理以外の処理を行っている場合は、クリティカル区間フラグを“０”に設定する。条件判定ブロック６は、このクリティカル区間フラグに基づきデバッグ割込み信号を通過させるか否かを判断する。
【００４７】
上述のようにユーザプログラム中にクリティカル区間進入命令及びクリティカル区間終了命令を挿入する場合では例えば人間による挿入のし忘れ等によるリスクがあるが、このように制御対象機器１０側に、中断を許可するか否かを判断させることで、不測の事態を確実に防止できる。
【００４８】
ここで、上述では、クリティカル区間をアセンブリコードで特定する例を示したが、クリティカル区間進入及び終了命令に対応する文法をＣ言語などの高級言語にも用意し、これに対応したコンパイラを用意することで、Ｃ言語などの高級言語でも、クリティカル区間を特定するプログラムを作成できる。
【００４９】
この場合、コンパイルの処理ステップとしては、まず、Ｃ言語等で記述されたソースプログラム内からクリティカル区間を検出する。クリティカル区間を検出したら、ソースプログラムをコンパイルして、検出したクリティカル区間の前後にクリティカル区間進入及び終了命令を挿入した状態のアセンブリコードを生成する。
【００５０】
以上のように、本実施の形態によれば、クリティカル区間進入命令及びクリティカル区間終了命令によりクリティカル区間を特定し、クリティカル区間の実行中はデバッグ割込み信号を通過させないようにしたので、クリティカル区間の実行中に、ユーザプログラムが中断して、デバッグプログラム実行モードに遷移することを阻止できる。つまり、本実施の形態によれば、クリティカル区間内ではデバッグプログラム実行モードへの遷移を確実に防ぐと共に、クリティカル区間以外の区間ではモード遷移要求を確実に実行するデバッグ手法を提供できる。以上ように、本実施の形態によれば、デバッグプログラムの実行許可/不許可をユーザプログラムによって制御できる。
【００５１】
また、本実施の形態によれば、高級言語等により記述された従来のユーザプログラム（ソースプログラム）を多少変更すると共に、従来のコンパイラの設定を多少変更して、ソースプログラムを再コンパイルするだけで、クリティカル区間を特定したアセンブリコードを容易に生成できる。従って、ソースプログラムの再利用化も容易になる。
【００５２】
（第２の実施の形態）
本実施の形態は、ＣＰＵコアが特定のアドレスビットパターンを有する命令を実行中であるか否かを判定し、特定のアドレスビットパターンを有する命令を実行中である場合は、ユーザ端末３からのデバッグ割込み信号をＤＳＵ８に通過させないことを特徴とする。
【００５３】
以下、本実施の形態について詳しく説明する。
【００５４】
図６は、本発明の第２の実施の形態としてのマイクロプロセッサ１１の構成を示すブロック図である。
【００５５】
図６に示すように、アドレスマスクレジスタ１２は、所定長のアドレスビットパターン（アドレスマスク）を格納する。アドレス長が３２ビットの場合、アドレスマスクは、例えば「１１１１ＸＸＸ・・Ｘ」（Ｘは、“１”あるいは“０”のどちらでも可）（Ｘは２８ビット分）となる。この場合のアドレスマスクは、上位４ビット［３１：２９］が全て１となるパターンを表す。アドレスマスクレジスタ１２内のアドレスマスクは、ＣＰＵコア４から、随時、変更可能である。
【００５６】
アドレスマスク比較ブロック１３は、ＣＰＵコア４からプログラムカウンタ（ＰＣ）値を受け取り、このプログラムカウンタ値をアドレスマスクと比較する。プログラムカウンタ値がアドレスマスクに示されるビットパターンを有していれば、アドレスマスク比較ブロック１３は、内部に保持しているクリティカル区間フラグを“１”に設定する。一方、プログラムカウンタ値がアドレスマスクに示されるビットパターンを有していない場合は、アドレスマスク比較ブロック１３は、クリティカル区間フラグを“０”に設定する。
【００５７】
条件判定ブロック６は、アドレスマスク比較ブロック１３内のクリティカル区間フラグが“１”であればユーザ端末３からのデバッグ割込み信号をＤＳＵ８に通過させないが、 “０”であればこのデバッグ割込み信号をＤＳＵ８に通過させる。
【００５８】
以上のように、本実施の形態によれば、プログラムカウンタ値とアドレスマスクとを比較し、プログラムカウンタ値がアドレスマスクに示されるビットパターンを有する場合は、デバッグ割込み信号を通過させないようにしたので、同一のビットパターンを有するアドレス群（例えばメモリ２における特定セグメント）を実行している間は、ユーザプログラムの中断を阻止できる。つまり、ユーザプログラム実行モードからデバッグプログラム実行モードへ遷移することを阻止できる。以上の効果を具体例を用いて説明すると以下の通りである。
【００５９】
例えば、ＴＸ４９コア（登録商標）向けのＬｉｎｕｘ（登録商標）などのＯＳ（Operating System）では、上位４ビット［３１：２９］によって３２ビットアドレス空間内を複数のセグメントに分けて管理している。ＬｉｎｕｘなどのＯＳは、例えば、カーネルプログラムとアプリケーションプログラムとをそれぞれ別のセグメントに格納する。
【００６０】
このような場合、カーネルプログラムが格納されたセグメントのビットパターンをアドレスマスクとすることで、カーネルプログラムの実行中はデバッグプログラム実行モードへの遷移を阻止することが可能となる。
【００６１】
また、本実施の形態によれば、以上のように構成したので、ユーザプログラムに変更を加える必要はない。従って、既に存在するユーザプログラムをそのままの状態で、デバッグ対象として用いることができる。
【００６２】
（第３の実施の形態）
本実施の形態は、ＣＰＵコアが、指定されたアドレス範囲の命令を実行中であるか否かを判定し、指定のアドレス範囲を実行中である場合は、ユーザ端末３からのデバッグ割込み信号をＤＳＵ８に通過させないことを特徴とする。
【００６３】
以下、本発明の実施の形態について詳しく説明する。
【００６４】
図７は、本発明の第３の実施の形態としてのマイクロプロセッサ１４の構成を示すブロックである。
【００６５】
図７に示すように、開始アドレスレジスタ１５及び終了アドレスレジスタ１６は、それぞれ、開始アドレス及び終了アドレスを保持する。これらの開始アドレス及び終了アドレスは、ユーザプログラムにおいて、中断を禁止するクリティカル区間を定める。開始アドレス及び終了アドレスは、ＣＰＵコア４によって、随時、変更可能である。
【００６６】
開始終了アドレス比較ブロック１８は、ＣＰＵコア４からプログラムカウンタ値を受信し、このプログラムカウンタ値が、開始アドレス及び終了アドレスによるアドレス範囲に含まれる場合は、内部に保持したクリティカル区間フラグを“１”に設定する。例えば、受け取ったプログラムカウンタ値が開始アドレスと一致した時点でクリティカル区間フラグを“１”に設定し、受け取ったプログラムカウンタ値が終了アドレスを越えた時点で、クリティカル区間フラグを“０”に設定する。
【００６７】
条件判定ブロック６は、開始終了アドレス比較ブロック１８内のクリティカル区間フラグが“１”であれば、ユーザ端末３からのデバッグ割込み信号をＤＳＵ８に通過させず、 “０”であればこのデバッグ割込み信号をＤＳＵ８に通過させる。
【００６８】
以上のように、本実施の形態によれば、開始アドレスと終了アドレスとにより特定されるアドレス範囲の命令の実行中は、ユーザ端末３からのデバッグ割込み信号をＤＳＵ８に通過させないようにしたので、特定のアドレス範囲の実行中に、ユーザプログラムが中断されて、デバッグプログラム実行モードに遷移することを阻止できる。これにより、マイクロプロセッサ固有のハードウェアアーキテクチャに即したプログラムデバッグシステムの構築も可能となる。
【００６９】
また、本実施の形態によれば、以上のように構成したので、ユーザプログラムに変更を加える必要はない。従って、既に存在するユーザプログラムをそのままの状態でデバッグ対象として用いることができる。
【００７０】
ここで、上述において、開始アドレス及び終了アドレスは随時、変更可能であると述べたが、開始アドレス及び終了アドレスの変更は、ユーザプログラムの中身を一切変更することなくできることが好ましい。このためには、例えば、開始アドレス及び終了アドレスを設定可能なＲＯＭモニタプログラムを別途用意し、このＲＯＭモニタプログラムをデバッグプログラム実行モード中に動作させればよい。これにより、デバッグ作業者は、ユーザプログラムの中身等を一切変更することなく、デバッグ作業中に、随時、システムの状況などを確認しながら、クリティカル区間を特定できる。
【００７１】
以上では、第１〜第３の実施の形態をそれぞれ別個のものとして説明したが、これらを組み合わせることもできる。
【００７２】
例えば、第１〜第３の実施の形態におけるクリティカル区間フラグにそれぞれ適宜変更可能な優先順位を設定し、最も高い優先順位を有するクリティカル区間フラグを適用するようにする。これにより、より柔軟性に富んだ、デバッグ作業が可能となる。
【図面の簡単な説明】
【００７３】
【図１】本発明の第１の実施の形態としてのマイクロプロセッサの構成を示すブロック図である。
【図２】マイクロプロセッサによる処理ステップを説明するためのフローチャートである。
【図３】クリティカル区間進入命令及びクリティカル区間終了命令を含むユーザプログラム例を示す図である。
【図４】従来のマイクロプロセッサによる処理ステップを説明するフローチャートである。
【図５】ＣＰＵコア４による制御対象機器側からユーザプログラムの中断の可否を制御可能にしたマイクロプロセッサの構成を示す図である。
【図６】本発明の第２の実施の形態としてのマイクロプロセッサの構成を示すブロック図である。
【図７】本発明の第３の実施の形態としてのマイクロプロセッサの構成を示すブロック図である。
【符号の説明】
【００７４】
１，１１，１４  マイクロプロセッサ
２  メモリ
３  ユーザ端末
４  ＣＰＵコア
５  フラグ設定部
６  条件判定ブロック
８  ＤＳＵ
１０  制御対象機器
１２  アドレスマスクレジスタ
１３  アドレスマスク比較ブロック
１５  開始アドレスレジスタ
１６  終了アドレスレジスタ
１８  開始終了アドレス比較ブロック
【図１】
2005128773.tif 000003
【図２】
2005128773.tif 000004
【図３】
2005128773.tif 000005
【図４】
2005128773.tif 000006
【図５】
2005128773.tif 000007
【図６】
2005128773.tif 000008
【図７】
2005128773.tif 000009