(57)【要約】【課題】タスク処理の実行速度が低下することを回避しつつ割り込み処理を実行することが可能な割り込み制御方法を得る。【解決手段】タスク処理プログラムを実行している最中に割り込み要求が発生すると、タスク処理プログラムが中断されて、割り込みハンドラの実行が開始される。割り込みハンドラによって、割り込み処理許可領域Ｒ２内に複数のブレイクポイントが設定される。再開されたタスク処理プログラムの実行は、複数のブレイクポイントのいずれかに、やがて到達する。すると、マイクロプロセッサ１は、タスク処理プログラムの実行を中断し、ブレイクポイントハンドラの実行を開始する。ブレイクポイントハンドラによって、割り込み処理が実行され、その後、ブレイクポイントの設定が解除される。【選択図】        図５
2004272844.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）タスク処理を実行するための命令が記述された第１のプログラム中に、前記タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第１領域と、前記タスク処理を前記割り込み処理に対して排他的に実行することが必要でない第２領域とを規定するステップと、
（ｂ）前記第１のプログラムの実行中に割り込み要求が発生した場合、前記第１のプログラムの実行を中断し、前記第２領域中に、少なくとも一つのブレイクポイントを設定するステップと、
（ｃ）前記ステップ（ｂ）で中断された前記第１のプログラムの実行を、前記ブレイクポイントの設定が完了した後に再開するステップと、
（ｄ）前記ステップ（ｃ）で再開された前記第１のプログラムの実行が前記ブレイクポイントに到達した場合、前記第１のプログラムの実行を中断し、前記割り込み処理を実行するステップと、
（ｅ）前記割り込み処理の実行が完了した後に、前記ブレイクポイントの設定を解除するステップと
を備える、割り込み制御方法。
【請求項２】
前記ブレイクポイントは複数であり、
前記第２領域内には、複数の分岐命令が含まれており、
前記ステップ（ｂ）においては、前記第２領域の先頭番地、前記第２領域の最終番地、及び、前記複数の分岐命令が格納されている複数の番地に、前記ブレイクポイントがそれぞれ設定される、請求項１に記載の割り込み制御方法。
【請求項３】
前記ブレイクポイントは複数であり、
前記第２領域内には、複数の分岐命令が含まれており、
前記ステップ（ｂ）は、
（ｂ−１）前記第１のプログラムが中断された時点で実行中であった命令が格納されている番地を取得するステップと、
（ｂ−２）前記番地が前記第１領域に属する場合に実行され、前記第２領域の先頭番地のみに前記ブレイクポイントを設定するステップと、
（ｂ−３）前記番地が前記第２領域に属する場合に実行され、前記第２領域の先頭番地、前記第２領域の最終番地、及び、前記複数の分岐命令が格納されている複数の番地に、前記ブレイクポイントをそれぞれ設定するステップと
を有する、請求項１に記載の割り込み制御方法。
【請求項４】
（ｆ）割り込み処理許可フラグを設定するステップをさらに備え、
前記割り込み処理許可フラグが「許可」に設定されている場合において、前記第１のプログラムの実行中に前記割り込み要求が発生した場合には、前記第１のプログラムの実行を中断し、前記ステップ（ｂ）〜（ｅ）を実行することなく、前記割り込み処理が実行され、
前記ステップ（ｂ）〜（ｅ）は、前記割り込み処理許可フラグが「不許可」に設定されている場合に実行される、請求項１〜３のいずれか一つに記載の割り込み制御方法。
【請求項５】
（ａ）タスク処理を実行するための命令が記述された第１のプログラム中に、前記タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第１領域と、前記タスク処理を前記割り込み処理に対して排他的に実行することが必要でない第２領域とを規定するステップと、
（ｂ）前記第１のプログラムの実行中に割り込み要求が発生した場合、前記第１のプログラムの実行を中断し、中断された時点で実行中であった命令が格納されている番地を取得するステップと、
（ｃ）前記番地が前記第１領域に属する場合には、前記第２領域中にブレイクポイントを設定し、一方、前記番地が前記第２領域に属する場合には、前記割り込み処理を実行するステップと、
（ｄ）前記ステップ（ｂ）で中断された前記第１のプログラムの実行を、前記ステップ（ｃ）の後に再開するステップと、
（ｅ）前記ステップ（ｃ）で前記番地が前記第１領域に属していた場合において、前記ステップ（ｄ）で再開された前記第１のプログラムの実行が前記ブレイクポイントに到達した場合、前記第１のプログラムの実行を中断し、前記割り込み処理を実行するステップと、
（ｆ）前記ステップ（ｅ）における前記割り込み処理の実行が完了した後に、前記ブレイクポイントの設定を解除するステップと
を備える、割り込み制御方法。
【請求項６】
前記ステップ（ｃ）において、前記ブレイクポイントは、前記第２領域の先頭番地のみに設定される、請求項５に記載の割り込み制御方法。
【請求項７】
（ｇ）割り込み処理許可フラグを設定するステップをさらに備え、
前記割り込み許可フラグが「許可」に設定されている場合において、前記第１のプログラムの実行中に前記割り込み要求が発生した場合には、前記第１のプログラムの実行を中断し、前記ステップ（ｂ）〜（ｆ）を実行することなく、前記割り込み処理が実行され、
前記ステップ（ｂ）〜（ｆ）は、前記割り込みフラグが「不許可」に設定されている場合に実行される、請求項５又は６に記載の割り込み制御方法。
【請求項８】
前記ブレイクポイントを設定するための処理は、
（ｘ−１）前記ブレイクポイントを設定しようとしている特定番地に格納されている第１の命令を保存するステップと、
（ｘ−２）前記割り込み処理を実行するための第２のプログラムの先頭番地への分岐を指示する第２の命令を、前記特定番地に書き込むステップと
を有する、請求項１〜７のいずれか一つに記載の割り込み制御方法。
【請求項９】
前記ブレイクポイントの設定を解除するための処理は、
（ｙ）前記特定番地に格納されている前記第２の命令を、前記第１の命令に書き換えるステップ
を有する、請求項８に記載の割り込み制御方法。
【請求項１０】
前記ブレイクポイントを設定するための処理は、
（ｘ−１）前記ブレイクポイントを設定しようとしている特定番地を、所定のレジスタに設定するステップと、
（ｘ−２）前記第１のプログラムを実行する過程において、プログラムカウンタに設定されている番地と、前記所定のレジスタに設定されている前記特定番地とを、逐次比較するステップと、
（ｘ−３）前記プログラムカウンタに設定されている前記番地と、前記所定のレジスタに設定されている前記特定番地とが一致した場合、前記割り込み処理を実行するための第２のプログラムの先頭番地を、前記プログラムカウンタに設定するステップと
を有する、請求項１〜７のいずれか一つに記載の割り込み制御方法。
【請求項１１】
前記ブレイクポイントの設定を解除するための処理は、
（ｙ）前記所定のレジスタの設定をクリアするステップ
を有する、請求項１０に記載の割り込み制御方法。
【請求項１２】
前記ブレイクポイントを設定するための処理は、
（ｘ）シミュレータによって実行され、前記ブレイクポイントを設定しようとしている特定番地を、所定の変数に設定するステップ
を有する、請求項１〜７のいずれか一つに記載の割り込み制御方法。
【請求項１３】
前記ブレイクポイントを設定するための処理は、
（ｘ）トランスレータによって実行され、前記ブレイクポイントを設定しようとしている特定番地を、所定の変数に設定するステップ
を有する、請求項１〜７のいずれか一つに記載の割り込み制御方法。
【請求項１４】
前記ブレイクポイントの設定を解除するための処理は、
（ｙ）前記所定の変数の設定をクリアするステップ
を有する、請求項１２又は１３に記載の割り込み制御方法。
【請求項１５】
（ａ）タスク処理を実行するための命令が記述された第１のプログラム中に、所定の変数をレジスタにロードして使用する処理が実行される第１領域と、前記所定の変数を使用した処理が実行されない第２領域とを規定するステップと、
（ｂ）前記第１のプログラムの実行中に、前記所定の変数を使用した処理が実行される割り込み要求が発生した場合、前記第１のプログラムの実行を中断し、中断された時点で実行中であった命令が格納されている番地を取得するステップと、
（ｃ）前記番地が前記第２領域に属する場合において、割り込み処理を実行するステップと、
（ｄ）前記番地が前記第１領域に属する場合において、前記所定の変数を前記レジスタの内容に書き換え、書き換え後の前記所定の変数を用いて割り込み処理を実行するステップと
を備える、割り込み制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、割り込み制御方法に関するものである。
【０００２】
【従来の技術】
タスク処理と割り込み処理とを排他的に実行するために、従来の割り込み制御装置では、割り込みマスクを用いることにより、割り込みハンドラの起動の許可及び不許可を切り換える方式が採用されている。
【０００３】
具体的には、割り込み処理に対して排他的に実行する必要がある第１のタスク処理の実行が開始される前に、割り込みマスクが「不許可」に設定される。そして、第１のタスク処理が完了した後、割り込み処理に対して排他的に実行する必要がない第２のタスク処理の実行が開始される前に、割り込みマスクが「許可」に設定される。
【０００４】
なお、割り込みマスクを用いた割り込み制御装置に関する技術が、下記の特許文献１に開示されている。
【０００５】
【特許文献１】
特開２００２−７３３５０号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、このような従来の割り込み制御装置によると、割り込み要求が発生していない場合であっても、本来のタスク処理以外に、割り込みマスクレジスタを設定するための処理が追加的に実行される。そのため、タスク処理の実行速度が低下してしまうという問題がある。
【０００７】
本発明はかかる問題を解決するために成されたものであり、タスク処理の実行速度が低下することを回避しつつ割り込み処理を実行することが可能な割り込み制御方法を得ることを目的とする。
【０００８】
【課題を解決するための手段】
第１の発明によれば、割り込み制御方法は、（ａ）タスク処理を実行するための命令が記述された第１のプログラム中に、タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第１領域と、タスク処理を割り込み処理に対して排他的に実行することが必要でない第２領域とを規定するステップと、（ｂ）第１のプログラムの実行中に割り込み要求が発生した場合、第１のプログラムの実行を中断し、第２領域中に、少なくとも一つのブレイクポイントを設定するステップと、（ｃ）ステップ（ｂ）で中断された第１のプログラムの実行を、ブレイクポイントの設定が完了した後に再開するステップと、（ｄ）ステップ（ｃ）で再開された第１のプログラムの実行がブレイクポイントに到達した場合、第１のプログラムの実行を中断し、割り込み処理を実行するステップと、（ｅ）割り込み処理の実行が完了した後に、ブレイクポイントの設定を解除するステップとを備える。
【０００９】
第２の発明によれば、割り込み制御方法は、（ａ）タスク処理を実行するための命令が記述された第１のプログラム中に、タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第１領域と、タスク処理を割り込み処理に対して排他的に実行することが必要でない第２領域とを規定するステップと、（ｂ）第１のプログラムの実行中に割り込み要求が発生した場合、第１のプログラムの実行を中断し、中断された時点で実行中であった命令が格納されている番地を取得するステップと、（ｃ）番地が第１領域に属する場合には、第２領域中にブレイクポイントを設定し、一方、番地が第２領域に属する場合には、割り込み処理を実行するステップと、（ｄ）ステップ（ｂ）で中断された第１のプログラムの実行を、ステップ（ｃ）の後に再開するステップと、（ｅ）ステップ（ｃ）で番地が第１領域に属していた場合において、ステップ（ｄ）で再開された第１のプログラムの実行がブレイクポイントに到達した場合、第１のプログラムの実行を中断し、割り込み処理を実行するステップと、（ｆ）ステップ（ｅ）における割り込み処理の実行が完了した後に、ブレイクポイントの設定を解除するステップとを備える。
【００１０】
【発明の実施の形態】
実施の形態１．
図１は、本発明の実施の形態１に係る割り込み制御装置の構成を模式的に示すブロック図である。割り込み制御装置は、マイクロプロセッサ１と、マイクロプロセッサ１によってアクセス可能な記憶部２とを備えている。記憶部２は、ＲＯＭ，ＲＡＭ等の半導体メモリである。
【００１１】
図２は、記憶部２の記憶空間の一部を抜き出して示す模式図である。記憶部２には、タスク処理プログラムを構成する複数の命令、即ちタスク処理を実行するための複数の命令が格納されている。アドレスＡ１〜Ａｎには、割り込み処理に対して排他的に実行することが必要な複数の命令が格納されている。アドレスＡ１〜Ａｎに格納されている命令を実行することは、割り込み処理に対して排他的に実行することが必要な第１のタスク処理を実行することに等しい。また、アドレスＢ１〜Ｂｎには、割り込み処理に対して排他的に実行することが必要でない複数の命令が格納されている。アドレスＢ１〜Ｂｎに格納されている命令を実行することは、割り込み処理に対して排他的に実行することが必要でない第２のタスク処理を実行することに等しい。実際には、第１及び第２のタスク処理が繰り返し実行されることが多いが、説明の簡略化のため、本明細書では、第１及び第２のタスク処理が、それぞれ一回ずつ実行される場合について説明する。なお、図２において、アドレスＢ４，Ｂ７には、分岐命令がそれぞれ格納されているものとする。
【００１２】
図３〜６は、本実施の形態１に係る割り込み制御方法における処理の流れを示すフローチャートである。以下、図１〜６を参照して、本実施の形態１に係る割り込み制御装置の動作について説明する。
【００１３】
図３を参照して、まず、タスク処理プログラムの実行に先立って、開始時処理が一度だけ実行される。ステップＳＰ１１００において、マイクロプロセッサ１は、割り込み処理許可領域及び割り込み処理禁止領域を設定する。割り込み処理許可領域内に含めるべき命令及び割り込み処理禁止領域内に含めるべき命令は、例えば、タスク処理プログラムの設計者によって、プログラムの設計段階で適宜決定される。割り込み処理許可領域を特定する特定情報、及び割り込み処理禁止領域を特定する特定情報は、記憶部２のＲＯＭ内に予め記憶されている。具体的に、ステップＳＰ１１００においてマイクロプロセッサ１は、ＲＯＭ内に記憶されている上記２つの特定情報をロードして、記憶部２のＲＡＭ内に記憶する処理を行う。これによって、割り込み処理許可領域及び割り込み処理禁止領域が規定される。図４〜６に示すその後の処理において、タスク処理プログラムを構成する各命令が割り込み処理許可領域中にあるか割り込み処理禁止領域中にあるかを判断する際には、記憶部２のＲＡＭに記憶されている上記特定情報が参照されることになる。
【００１４】
例えば図２を参照して、割り込み処理禁止領域を特定する特定情報は、その領域に属する命令のアドレスＡ１〜Ａｎで表現されており、割り込み処理許可領域を特定する特定情報は、その領域に属する命令のアドレスＢ１〜Ｂｎで表現されている。また、割り込み処理禁止領域及び割り込み処理許可領域の各々が、アドレスが連続する複数の命令で構成されている場合には、各特定情報は、割り込み処理禁止領域及び割り込み処理許可領域の各々の先頭アドレスと最終アドレスとによって表現してもよい。
【００１５】
図４を参照して、次に、タスク処理プログラムの実行が開始される。ステップＳＰ１２００において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要があるタスク処理を実行する。具体的に、マイクロプロセッサ１は、図２のアドレスＡ１〜Ａｎに格納されている命令を順に実行する。次に、ステップＳＰ１２１０において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。具体的に、マイクロプロセッサ１は、図２のアドレスＢ１〜Ｂｎに格納されている命令を順に実行する。
【００１６】
マイクロプロセッサ１がタスク処理プログラムを実行している最中に、タイマの期限切れやシリアル通信デバイスからの送受信完了等に起因して、外部入力イベントがマイクロプロセッサ１に通知されたものとする。即ち、割り込み要求が発生したものとする。すると、マイクロプロセッサ１は、タスク処理プログラムの実行を中断して、図５に示す割り込みハンドラの実行を開始する。
【００１７】
図５を参照して、まず、ステップＳＰ１３００において、マイクロプロセッサ１は、割り込みハンドラに移行する直前のマイクロプロセッサ１のコンテキスト（レジスタ値等）を保存する。次に、ステップＳＰ１３１０において、マイクロプロセッサ１は、割り込み処理許可領域Ｒ２内に複数のブレイクポイントを設定する。ここで、ブレイクポイントとは、それが設定されたアドレスにプログラムの実行が到達した場合に、所定のプログラム（後述のブレイクポイントハンドラ）の実行が開始されるアドレスを意味する。本実施の形態１において、マイクロプロセッサ１は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１、最終アドレスＢｎ、及び、分岐命令が格納されている全てのアドレスＢ４，Ｂ７に、それぞれブレイクポイントを設定する。割り込み処理禁止領域Ｒ１内には、ブレイクポイントは設定されない。
【００１８】
次に、ステップＳＰ１３２０において、マイクロプロセッサ１は、ステップＳＰ１３００で保存しておいたコンテキストを復元する。次に、ステップＳＰ１３３０において、マイクロプロセッサ１は、割り込まれたアドレスにジャンプする。即ち、割り込みハンドラに移行する直前に実行されていた命令が格納されているアドレスにジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【００１９】
図４に戻り、ステップＳＰ１２１０において、タスク処理プログラムの実行は、図５のステップＳＰ１３１０で設定された複数のブレイクポイントのいずれかに、やがて到達する。ここでは、ブレイクポイントＢＰ１（図示しない）に到達したものとする。すると、マイクロプロセッサ１は、タスク処理プログラムの実行を中断し、図６に示すブレイクポイントハンドラの実行を開始する。ここで、ブレイクポイントハンドラは、タスク処理プログラムの実行がブレイクポイントに到達した場合に起動されるプログラムである。
【００２０】
図６を参照して、まず、ステップＳＰ１４００において、マイクロプロセッサ１は、ブレイクポイントハンドラに移行する直前のマイクロプロセッサ１のコンテキストを保存する。次に、ステップＳＰ１４１０において、マイクロプロセッサ１は、タスク処理に対して排他的に実行する必要がある割り込み処理を実行する。次に、ステップＳＰ１４２０において、マイクロプロセッサ１は、全てのブレイクポイントの設定を解除する。次に、ステップＳＰ１４３０において、マイクロプロセッサ１は、ステップＳＰ１４００で保存しておいたコンテキストを復元する。次に、ステップＳＰ１４４０において、マイクロプロセッサ１は、ブレイクポイントＢＰ１のアドレスにジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【００２１】
ブレイクポイントは割り込み処理禁止領域Ｒ１内には設定されないため、割り込み処理禁止領域Ｒ１内の命令を実行している最中に、ブレイクポイントハンドラが呼び出されることはない。これにより、割り込み処理に対して排他的に実行する必要があるタスク処理と、タスク処理に対して排他的に実行する必要がある割り込み処理との、排他的な実行が実現される。
【００２２】
このように本実施の形態１に係る割り込み制御方法及び割り込み制御装置によると、割り込み要求が発生していない通常動作中においては、排他制御のために本来のタスク処理に追加される処理（割り込みマスクの設定等）が全く行われない。従って、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【００２３】
また、本実施の形態１に係る割り込み制御方法及び割り込み制御装置において、ブレイクポイントは、割り込み処理許可領域Ｒ２の先頭アドレスＢ１、最終アドレスＢｎ、及び、分岐命令が格納されている全てのアドレスＢ４，Ｂ７に、それぞれ設定される。ブレイクポイントの設定後にタスク処理プログラムが再開されてから、タスク処理プログラムの実行がいずれかのブレイクポイントに到達するまでの期間、割り込み処理の実行開始が遅延されることになる。しかしながら、一般的に、分岐命令は数命令に一回の頻度で出現することが多いため、遅延時間をごくわずかに抑えることができる。なお、遅延時間をさらに抑えるべく、分岐命令が格納されているアドレス以外にも、さらにブレイクポイントを設定してもよい。
【００２４】
実施の形態２．
図７は、本発明の実施の形態２に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態２に係る割り込み制御装置は、図５に示した割り込みハンドラの処理の代わりに、図７に示す割り込みハンドラの処理を実行する。以下、図１〜４，６，７を参照して、本実施の形態２に係る割り込み制御装置の動作について説明する。
【００２５】
図３を参照して、まず、上記実施の形態１と同様に、開始時処理が実行される。図４を参照して、次に、上記実施の形態１と同様に、タスク処理プログラムの実行が開始される。
【００２６】
マイクロプロセッサ１がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ１は、タスク処理プログラムの実行を中断して、図７に示す割り込みハンドラの実行を開始する。
【００２７】
図７を参照して、まず、ステップＳＰ２３００において、マイクロプロセッサ１は、割り込みハンドラに移行する直前のマイクロプロセッサ１のコンテキストを保存する。次に、ステップＳＰ２３１０において、マイクロプロセッサ１は、タスク処理プログラムが中断された時点で実行中であった命令が格納されているアドレスを取得する。次に、ステップＳＰ２３２０において、マイクロプロセッサ１は、ステップＳＰ２３１０で取得されたアドレスが、図２の割り込み処理禁止領域Ｒ１中にあるか否かを判定する。
【００２８】
ステップＳＰ２３２０における判定の結果が「ＹＥＳ」である場合、即ち、ステップＳＰ２３１０で取得されたアドレスが割り込み処理禁止領域Ｒ１中にある場合は、ステップＳＰ２３３０に進み、マイクロプロセッサ１は、図２の割り込み処理許可領域Ｒ２の先頭アドレスＢ１のみにブレイクポイントを設定する。
【００２９】
一方、ステップＳＰ２３２０における判定の結果が「ＮＯ」である場合、即ち、ステップＳＰ２３１０で取得されたアドレスが割り込み処理許可領域Ｒ２中にある場合は、ステップＳＰ２３４０に進み、マイクロプロセッサ１は、ブレイクポイントの設定処理を実行することなく、割り込み要求に対応する割り込み処理を直ちに実行する。
【００３０】
ステップＳＰ２３３０，ＳＰ２３４０に引き続き、ステップＳＰ２３５０において、マイクロプロセッサ１は、ステップＳＰ２３００で保存しておいたコンテキストを復元する。次に、ステップＳＰ２３６０において、マイクロプロセッサ１は、割り込まれたアドレスへジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【００３１】
ステップＳＰ２３２０における判定の結果が「ＹＥＳ」であった場合、図４を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１に設定されたブレイクポイントに、やがて到達する。すると、上記実施の形態１と同様に、図６に示したブレイクポイントハンドラによって割り込み処理が実行される。
【００３２】
このように本実施の形態２に係る割り込み制御方法及び割り込み制御装置によると、上記実施の形態１と同様に、通常動作中においては、本来のタスク処理に追加される処理が全く行われない。従って、タスク処理の実行速度が低下することを回避できる。
【００３３】
また、ステップＳＰ２３１０で取得されたアドレスが割り込み処理許可領域Ｒ２中にある場合、マイクロプロセッサ１は、割り込み処理を直ちに実行する。従って、割り込み処理の実行開始が遅延することを回避できる。
【００３４】
さらに、ステップＳＰ２３１０で取得されたアドレスが割り込み処理禁止領域Ｒ１中にある場合、マイクロプロセッサ１は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１のみにブレイクポイントを設定する。従って、上記実施の形態１と比較すると、ブレイクポイントを設定するための処理を簡略化することができる。
【００３５】
実施の形態３．
図８は、本発明の実施の形態３に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態３に係る割り込み制御装置は、図５に示した割り込みハンドラの処理の代わりに、図８に示す割り込みハンドラの処理を実行する。以下、図１〜４，６，８を参照して、本実施の形態３に係る割り込み制御装置の動作について説明する。
【００３６】
図３を参照して、まず、上記実施の形態１と同様に、開始時処理が実行される。図４を参照して、次に、上記実施の形態１と同様に、タスク処理プログラムの実行が開始される。
【００３７】
マイクロプロセッサ１がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ１は、タスク処理プログラムの実行を中断して、図８に示す割り込みハンドラの実行を開始する。
【００３８】
図８を参照して、図７に示したステップＳＰ２３００〜ＳＰ２３２０の処理と同様に、ステップＳＰ３３００〜ＳＰ３３２０の処理が実行される。
【００３９】
ステップＳＰ３３２０における判定の結果が「ＹＥＳ」である場合は、ステップＳＰ３３３０に進み、図７に示したステップＳＰ２３３０と同様に、マイクロプロセッサ１は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１のみにブレイクポイントを設定する。
【００４０】
一方、ステップＳＰ３３２０における判定の結果が「ＮＯ」である場合は、ステップＳＰ３３４０に進み、図５に示したステップＳＰ１３１０と同様に、マイクロプロセッサ１は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１、最終アドレスＢｎ、及び、分岐命令が格納されている全てのアドレスＢ４，Ｂ７に、それぞれブレイクポイントを設定する。
【００４１】
ステップＳＰ３３３０，ＳＰ３３４０に引き続き、図７に示したステップＳＰ２３５０，ＳＰ２３６０の処理と同様に、ステップＳＰ３３５０，ＳＰ３３６０の処理が実行される。
【００４２】
ステップＳＰ３３２０における判定の結果が「ＹＥＳ」であった場合、図４を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１に設定されたブレイクポイントに、やがて到達する。すると、上記実施の形態１と同様に、図６に示したブレイクポイントハンドラによって割り込み処理が実行される。
【００４３】
ステップＳＰ３３２０における判定の結果が「ＮＯ」であった場合、図４を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１、最終アドレスＢｎ、及び、分岐命令が格納されている全てのアドレスＢ４，Ｂ７にそれぞれ設定された複数のブレイクポイントのいずれかに、やがて到達する。すると、上記実施の形態１と同様に、図６に示したブレイクポイントハンドラによって割り込み処理が実行される。
【００４４】
このように本実施の形態３に係る割り込み制御方法及び割り込み制御装置によると、ステップＳＰ３３１０で取得されたアドレスが割り込み処理禁止領域Ｒ１中にある場合、マイクロプロセッサ１は、割り込み処理許可領域Ｒ２の先頭アドレスＢ１のみにブレイクポイントを設定する。従って、上記実施の形態１と比較すると、ブレイクポイントを設定するための処理を簡略化することができる。
【００４５】
実施の形態４．
上記実施の形態１〜３では、割り込み処理許可領域Ｒ２中に一又は複数のブレイクポイントが設定された。本実施の形態４では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第１の例について説明する。なお、本実施の形態４において、図１に示した記憶部２は、読み出し及び書き込みが可能なメモリ（ＲＡＭ）である。
【００４６】
図９は、ブレイクポイントを設定するための第１の例を示すフローチャートである。ステップＳＰ４５００において、マイクロプロセッサ１は、ブレイクポイントを設定しようとしているアドレス（以下「特定アドレス」と称する）に格納されている命令を、記憶部２内の所定の領域（以下「特定領域」と称する）に保存する。次に、ステップＳＰ４５１０において、マイクロプロセッサ１は、ブレイクポイントハンドラの先頭アドレスへの分岐命令（ソフトウェアトラップ命令でも良い）を、特定アドレスに書き込む。
【００４７】
図１０は、ブレイクポイントの設定を解除するための第１の例を示すフローチャートである。ステップＳＰ４６００において、マイクロプロセッサ１は、特定アドレスに格納されている、ブレイクポイントハンドラの先頭アドレスへの分岐命令を、ステップＳＰ４５００で特定領域に保存しておいた命令に書き換える。
【００４８】
このように本実施の形態４に係るブレイクポイントの設定方法によると、タスク処理プログラムの実行がブレイクポイントに到達すると、ブレイクポイントハンドラの先頭アドレスへ分岐されるため、ブレイクポイントハンドラの実行を確実に開始することができる。
【００４９】
また、本実施の形態４に係るブレイクポイントの設定解除方法によると、ブレイクポイントハンドラの先頭アドレスへの分岐命令が、元の命令に書き換えられるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【００５０】
実施の形態５．
本実施の形態５では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第２の例について説明する。
【００５１】
図１１は、本実施の形態５に係る割り込み制御装置の構成を模式的に示すブロック図である。マイクロプロセッサ１は、プログラムカウンタ３と、レジスタ４１〜４ｎとを有している。記憶部２は、少なくとも読み出しが可能なメモリ（ＲＯＭ，ＲＡＭ）である。
【００５２】
図１２は、ブレイクポイントを設定するための第２の例を示すフローチャートである。ステップＳＰ５５００において、マイクロプロセッサ１は、ブレイクポイントを設定しようとしている特定アドレスを、レジスタ４１〜４ｎに設定する。準備されているレジスタ４１〜４ｎの個数だけ、異なる特定アドレスを設定することができる。
【００５３】
図１３は、タスク処理プログラムが実行されている場合にマイクロプロセッサ１によって行われる処理の流れを示すフローチャートである。ステップＳＰ５７００において、マイクロプロセッサ１は、プログラムカウンタ３に設定されているアドレスと、レジスタ４１〜４ｎに設定されている特定アドレスとが一致するか否かを、逐次判定する。
【００５４】
ステップＳＰ５７００における判定の結果が「ＮＯ」である場合は、ステップＳＰ５７１０に進み、マイクロプロセッサ１は、プログラムカウンタ３に設定されているアドレスに格納されている命令を実行する。その命令の実行が完了すると、プログラムカウンタ３の設定値が更新される。プログラムカウンタ３に設定されているアドレスが、レジスタ４１〜４ｎに設定されている特定アドレスのいずれかに一致するまで、ステップＳＰ５７００，ＳＰ５７１０の処理が繰り返される。即ち、タスク処理プログラムが実行される。
【００５５】
ステップＳＰ５７００における判定の結果が「ＹＥＳ」である場合、即ち、プログラムカウンタ３に設定されているアドレスと、レジスタ４１〜４ｎに設定されている特定アドレスのいずれかとが一致した場合は、ステップＳＰ５７２０に進み、ブレイクポイントハンドラの先頭アドレスが、プログラムカウンタ３に設定される。これにより、ステップＳＰ５７２０に続くステップＳＰ５７１０において、ブレイクポイントハンドラの実行が開始される。
【００５６】
図１４は、ブレイクポイントの設定を解除するための第２の例を示すフローチャートである。ステップＳＰ５６００において、マイクロプロセッサ１は、全てのレジスタ４１〜４ｎの値を−１に設定することにより、レジスタ４１〜４ｎの設定をクリアする。
【００５７】
このように本実施の形態５に係るブレイクポイントの設定方法によると、プログラムカウンタ３に設定されているアドレスと、レジスタ４１〜４ｎに設定されている特定アドレスのいずれかとが一致すると、ブレイクポイントハンドラの先頭アドレスがプログラムカウンタ３に設定される。これにより、ブレイクポイントハンドラの実行を確実に開始することができる。
【００５８】
しかも、記憶部２はＲＯＭで足りるため、上記実施の形態４と比較すると、記憶部２に関してコストの低減を図ることができる。
【００５９】
また、本実施の形態５に係るブレイクポイントの設定解除方法によると、レジスタ４１〜４ｎの設定がクリアされるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【００６０】
実施の形態６．
本実施の形態６では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第３の例について説明する。本実施の形態６において、マイクロプロセッサ１は、シミュレータを実行する機能を有している。シミュレータは、シミュレーションを行うためのプログラムである。なお、シミュレーション機能を有するシステムでは、シミュレータを実行するマイクロプロセッサと、シミュレーションの対象となるマイクロプロセッサとが異なるのが一般的であるが、本実施の形態６では、両マイクロプロセッサはいずれもマイクロプロセッサ１である。
【００６１】
図１５は、タスク処理の流れを示すフローチャートである。上記実施の形態１と同様に、ステップＳＰ６２００において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要があるタスク処理を、タスク処理プログラムによって実行する。次に、ステップＳＰ６２１０において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要がないタスク処理を、シミュレータによって実行する。
【００６２】
図１６は、ブレイクポイントを設定するための第３の例を示すフローチャートである。ステップＳＰ６５００において、マイクロプロセッサ１は、ブレイクポイントを設定しようとしている特定アドレスを、所定の変数Ｃ１〜Ｃｎに設定する。変数Ｃ１〜Ｃｎの個数だけ、異なる特定アドレスを設定することができる。
【００６３】
図１７は、図１５のステップＳＰ６２１０の処理内容を具体的に示すフローチャートである。ステップＳＰ６７００において、ＳＰＣ（Ｓｉｍｕｌａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ）変数が、割り込み処理許可領域Ｒ２の先頭アドレスＢ１に設定される。ＳＰＣ変数は、シミュレータで実行中の命令が格納されているアドレスを保持する変数である。次に、ステップＳＰ６７１０において、マイクロプロセッサ１は、ＳＰＣ変数に設定されているアドレスが、割り込み処理許可領域Ｒ２の最終アドレスＢｎに一致するか否かを判定する。
【００６４】
ステップＳＰ６７１０における判定の結果が「ＹＥＳ」である場合は、処理が終了される。一方、ステップＳＰ６７１０における判定の結果が「ＮＯ」である場合は、ステップＳＰ６７２０に進み、マイクロプロセッサ１は、ＳＰＣ変数に設定されているアドレスと、変数Ｃ１〜Ｃｎに設定されている特定アドレスのいずれかとが一致するか否かを、逐次判定する。
【００６５】
ステップＳＰ６７２０における判定の結果が「ＮＯ」である場合は、ステップＳＰ６７３０に進み、マイクロプロセッサ１は、ＳＰＣ変数に設定されているアドレスに格納されている命令を実行する。その命令の実行が完了すると、ＳＰＣ変数の設定値が更新される。その後、ステップＳＰ６７１０における判定が再び実行される。
【００６６】
ステップＳＰ６７２０における判定の結果が「ＹＥＳ」である場合、即ち、ＳＰＣ変数に設定されているアドレスと、変数Ｃ１〜Ｃｎに設定されている特定アドレスのいずれかとが一致する場合は、マイクロプロセッサ１は、シミュレータの実行を中断する。そして、図６に示した手順に従い、割り込み処理を実行し（ステップＳＰ６７４０）、ブレイクポイントの設定を解除する（ステップＳＰ６７５０）。その後、シミュレータの実行に戻り、ステップＳＰ６７１０における判定が再び実行される。
【００６７】
図１８は、ブレイクポイントの設定を解除するための第３の例を示すフローチャートであり、図１７のステップＳＰ６７５０の処理内容を具体的に示したものに相当する。ステップＳＰ６６００において、マイクロプロセッサ１は、全ての変数Ｃ１〜Ｃｎの値を−１に設定することにより、変数Ｃ１〜Ｃｎの設定をクリアする。
【００６８】
上記実施の形態５に係るブレイクポイントの設定方法では、設定できるブレイクポイントの個数の上限は、マイクロプロセッサ１が有するレジスタ４１〜４ｎの個数に制限される。従って、多数のブレイクポイントを設定したい場合には、それに応じて多数のレジスタ４１〜４ｎを準備する必要があり、コストが上昇する。これに対し、本実施の形態６に係るブレイクポイントの設定方法によると、変数Ｃ１〜Ｃｎを保存しておくためのメモリ容量の範囲内で、ブレイクポイントを設定できる。そのため、多数のブレイクポイントを設定したい場合であっても、コストの上昇を抑制することができる。
【００６９】
また、本実施の形態６に係るブレイクポイントの設定解除方法によると、変数Ｃ１〜Ｃｎの設定がクリアされるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【００７０】
実施の形態７．
本実施の形態７では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第４の例について説明する。本実施の形態７において、マイクロプロセッサ１は、トランスレータを実行する機能を有している。トランスレータは、トランスレーション（変換）を行うためのプログラムである。トランスレーション実行では、ある命令が別の命令に変換され、変換後の命令が実行される。なお、トランスレーション機能を有するシステムでは、トランスレータを実行するマイクロプロセッサと、変換後の命令を実行するマイクロプロセッサとが異なるのが一般的であるが、本実施の形態７では、両マイクロプロセッサはいずれもマイクロプロセッサ１である。
【００７１】
図１９は、タスク処理の流れを示すフローチャートである。上記実施の形態１と同様に、ステップＳＰ７２００において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要があるタスク処理を、タスク処理プログラムによって実行する。次に、ステップＳＰ７２１０において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要がないタスク処理を、トランスレータによって実行する。
【００７２】
図２０は、図１９のステップＳＰ７２１０の処理内容を具体的に示すフローチャートである。ステップＳＰ７７００において、ＴＰＣ（Ｔｒａｎｓｌａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ）変数が、割り込み処理許可領域Ｒ２の先頭アドレスＢ１に設定される。ＴＰＣ変数は、トランスレータで実行中のプログラムを構成する複数の命令のうち、そのとき変換しようとしている命令が格納されているアドレスを保持する変数である。次に、ステップＳＰ７７１０において、マイクロプロセッサ１は、ＴＰＣ変数に設定されているアドレスが、割り込み処理許可領域Ｒ２の最終アドレスＢｎに一致するまで、トランスレーション実行を継続する。
【００７３】
本実施の形態７に係る、ブレイクポイントを設定するための第４の例では、上記実施の形態６と同様に、マイクロプロセッサ１は、ブレイクポイントを設定しようとしている特定アドレスを、所定の変数Ｃ１〜Ｃｎに設定する。また、本実施の形態７に係る、ブレイクポイントの設定を解除するための第４の例では、上記実施の形態６と同様に、マイクロプロセッサ１は、全ての変数Ｃ１〜Ｃｎの値を−１に設定することにより、変数Ｃ１〜Ｃｎの設定をクリアする。
【００７４】
図２１，２２は、図２０のステップＳＰ７７１０の処理内容を具体的に示すフローチャートである。ステップＳＰ７８００において、マイクロプロセッサ１は、ＴＰＣ変数に設定されているアドレスが、割り込み処理許可領域Ｒ２の最終アドレスＢｎに一致しているか否かを判定する。
【００７５】
ステップＳＰ７８００における判定の結果が「ＹＥＳ」である場合は、処理が終了される。一方、ステップＳＰ７８００における判定の結果が「ＮＯ」である場合は、ステップＳＰ７８１０に進み、マイクロプロセッサ１は、変換後の命令を格納するためのバッファを空にする。次に、ステップＳＰ７８２０において、マイクロプロセッサ１は、ＴＰＣ変数に設定されているアドレスと、変数Ｃ１〜Ｃｎに設定されている特定アドレスのいずれかとが一致するか否かを、逐次判定する。
【００７６】
ステップＳＰ７８２０における判定の結果が「ＹＥＳ」である場合、即ち、ＴＰＣ変数に設定されているアドレスと、変数Ｃ１〜Ｃｎに設定されている特定アドレスのいずれかとが一致した場合は、マイクロプロセッサ１は、ブレイクポイントハンドラをサブルーチンとして実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファ中に追加する。
【００７７】
ステップＳＰ７８３０に引き続き、及び、ステップＳＰ７８２０における判定の結果が「ＮＯ」である場合は、ステップＳＰ７８４０において、マイクロプロセッサ１は、ＴＰＣ変数に設定されているアドレスに格納されている命令が、無条件分岐命令であるか否かを判定する。
【００７８】
ステップＳＰ７８４０における判定の結果が「ＹＥＳ」である場合は、ステップＳＰ７９００に進み、マイクロプロセッサ１は、分岐先のアドレスからトランスレーション実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファの最後に追加する。このネイティブ命令は、トランスレーション処理の先頭へ分岐するようなネイティブ命令である。一方、ステップＳＰ７８４０における判定の結果が「ＮＯ」である場合は、ステップＳＰ７８５０に進み、マイクロプロセッサ１は、ＴＰＣ変数に設定されているアドレスに格納されている命令が、条件付き分岐命令であるか否かを判定する。
【００７９】
ステップＳＰ７８５０における判定の結果が「ＹＥＳ」である場合は、ステップＳＰ７８８０に進み、マイクロプロセッサ１は、その条件が満足されているときは分岐先のアドレスからトランスレーション実行し、その条件が満足されていないときはＴＰＣ変数に設定されているアドレスの次のアドレスからトランスレーション実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファ中に追加する。
【００８０】
ステップＳＰ７９００，ＳＰ７８８０に引き続き、ステップＳＰ７８９０において、バッファの先頭へのジャンプが実行される。その結果、これまでにバッファ中に蓄積されたネイティブ命令が、トランスレーション実行されることになる。このとき、ステップＳＰ７８３０で生成されたネイティブ命令（即ちブレイクポイントハンドラを実行するようなネイティブ命令）がバッファ中に存在していれば、そのネイティブ命令がトランスレーション実行されることにより、ブレイクポイントハンドラが実行される。即ち、割り込み処理が実行される。さらに、バッファの最後には、トランスレーション処理に戻る命令が格納されているので、バッファ中に蓄積されているネイティブ命令のトランスレーション実行が完了した後は、トランスレーション処理（図２１の先頭）に戻り、以降、実行が継続されることになる。
【００８１】
ステップＳＰ７８５０における判定の結果が「ＮＯ」である場合は、ステップＳＰ７８６０に進み、マイクロプロセッサ１は、ＴＰＣ変数に設定されているアドレスに格納されている命令に対応するネイティブ命令を生成し、そのネイティブ命令をバッファの最後に追加する。次に、ステップＳＰ７８７０において、次の命令が格納されているアドレスが、ＴＰＣ変数に設定される。即ち、ＴＰＣ変数が更新される。その後、ステップＳＰ７８２０における判定が再び実行される。
【００８２】
本実施の形態７に係るブレイクポイントの設定方法及びブレイクポイントの設定解除方法によっても、上記実施の形態６と同様の効果を得ることができる。
【００８３】
実施の形態８．
図２３，２４は、上記実施の形態１を基礎として、本実施の形態８に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態８に係る割り込み制御装置は、図４に示したタスク処理プログラムの処理の代わりに、図２３に示すタスク処理プログラムの処理を実行する。また、図５に示した割り込みハンドラの処理の代わりに、図２４に示す割り込みハンドラの処理を実行する。
【００８４】
図２３を参照して、ます、ステップＳＰ８２００において、割り込み処理許可フラグが「許可」又は「不許可」に設定される。次に、ステップＳＰ８２１０において、マイクロプロセッサ１は、割り込み処理に対する排他的実行が必要な場合があるタスク処理を実行する。次に、ステップＳＰ８２２０において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。
【００８５】
図２４を参照して、ステップＳＰ８３００において、マイクロプロセッサ１は、割り込みハンドラに移行する直前のマイクロプロセッサ１のコンテキストを保存する。次に、ステップＳＰ８３１０において、マイクロプロセッサ１は、割り込み処理許可フラグが「許可」に設定されているか否かを判定する。
【００８６】
ステップＳＰ８３１０における判定の結果が「ＹＥＳ」である場合、即ち割り込み処理許可フラグが「許可」に設定されている場合は、ステップＳＰ８３２０に進み、マイクロプロセッサ１は、ブレイクポイントの設定処理を行うことなく、割り込み処理を直ちに実行する。
【００８７】
一方、ステップＳＰ８３１０における判定の結果が「ＮＯ」である場合、即ち割り込み処理許可フラグが「不許可」に設定されている場合は、ステップＳＰ８３３０に進み、マイクロプロセッサ１は、図５のステップＳＰ１３１０と同様に、割り込み処理許可領域Ｒ２内に複数のブレイクポイントを設定する。
【００８８】
ステップＳＰ８３２０，ＳＰ８３３０に引き続き、ステップＳＰ８３４０において、マイクロプロセッサ１は、ステップＳＰ８３００で保存しておいたコンテキストを復元する。次に、ステップＳＰ８３５０において、マイクロプロセッサ１は、割り込まれたアドレスへジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【００８９】
ステップＳＰ８３１０における判定の結果が「ＮＯ」であった場合、再開されたタスク処理プログラムの実行は、ステップＳＰ８３３０で設定された複数のブレイクポイントのいずれかに、やがて到達する。すると、上記実施の形態１と同様に、図６に示したブレイクポイントハンドラによって割り込み処理が実行される。
【００９０】
なお、以上の説明では、上記実施の形態１を基礎として本実施の形態８に係る発明を適用する例について述べたが、上記実施の形態２〜７を基礎として、本実施の形態８に係る発明を適用することも可能である。
【００９１】
このように本実施の形態８に係る割り込み制御方法及び割り込み制御装置によると、タスク処理と割り込み処理とを排他的に実行するか非排他的に実行するかを、割り込み処理許可フラグの設定によって切り換えることができる。
【００９２】
実施の形態９．
タスク処理と割り込み処理とを排他的に実行しなければならない理由は、以下の通りである。即ち、タスク処理及び割り込み処理の両者が共通にアクセスする変数（グローバル変数）が存在し、一方がそれを変更し、他方がそれを参照するという状況において、一方によるグローバル変数の変更が完了する前に、他方によってグローバル変数を使用した処理が行われることを、回避しなければならないからである。
【００９３】
例えば、タスク処理によって所定のグローバル変数Ｇが変更され、割り込み処理によってグローバル変数Ｇが参照される状況を考える。このとき、タスク処理においては、グローバル変数Ｇを所定のレジスタにロードする第１ステップと、レジスタの設定値を用いて所定の処理を実行した後、レジスタの設定値を変更する第２ステップと、グローバル変数Ｇを、変更後のレジスタの設定値に書き換える第３ステップとが、この順に実行される。ここで、第３ステップが完了する前にグローバル変数Ｇを用いて割り込み処理を実行してしまうと、変更前のグローバル変数Ｇが参照されることとなり、支障が発生する。
【００９４】
本実施の形態９では、かかる支障の発生を適切に回避し得る、割り込み制御方法及び割り込み制御装置について説明する。なお、説明の簡略化のため、グローバル変数Ｇが１個のみ存在する場合を例にとり説明する。
【００９５】
図２５は、本実施の形態９に係る割り込み制御装置の構成を模式的に示すブロック図である。マイクロプロセッサ１は、所定のレジスタ６を有している。
【００９６】
図２６は、記憶部２の記憶空間の一部を抜き出して示す模式図である。記憶部２には、タスク処理プログラムを構成する複数の命令、即ちタスク処理を実行するための複数の命令が格納されている。アドレスＡ１には、グローバル変数Ｇをレジスタ６へロードすることを指示する命令が格納されている。アドレスＡ８には、グローバル変数Ｇをレジスタ６の設定値に書き換えることを指示する命令が格納されている。アドレスＡ２〜Ａ７に格納された命令によって、レジスタ６の設定値を用いた処理が実行された後、レジスタ６の設定値が変更される。アドレスＡ９〜Ａｎに格納された命令によっては、グローバル変数Ｇを用いたタスク処理が実行されない。即ち、アドレスＡ９〜Ａｎに格納された命令を実行することによるタスク処理は、本来、割り込み処理に対して排他的に実行する必要がないタスク処理である。
【００９７】
図２７〜３０は、本実施の形態９に係る割り込み制御方法における処理の流れを示すフローチャートである。以下、図２５〜３０を参照して、本実施の形態９に係る割り込み制御装置の動作について説明する。
【００９８】
図２７を参照して、まず、タスク処理プログラムの実行に先立って、開始時処理が一度だけ実行される。ステップＳＰ９１００において、マイクロプロセッサ１は、グローバル変数使用領域及びグローバル変数不使用領域を設定する。グローバル変数使用領域内に含めるべき命令及びグローバル変数不使用領域内に含めるべき命令は、例えば、タスク処理プログラムの設計者によって、プログラムの設計段階で適宜決定される。グローバル変数使用領域を特定する特定情報、及びグローバル変数不使用領域を特定する特定情報は、記憶部２のＲＯＭ内に予め記憶されている。具体的に、ステップＳＰ９１００においてマイクロプロセッサ１は、ＲＯＭ内に記憶されている上記２つの特定情報をロードして、記憶部２のＲＡＭ内に記憶する処理を行う。これによって、グローバル変数使用領域及びグローバル変数不使用領域が設定される。図２８〜３０に示すその後の処理において、タスク処理プログラムを構成する各命令がグローバル変数使用領域中にあるかグローバル変数不使用領域中にあるかを判断する際には、記憶部２のＲＡＭに記憶されている上記特定情報が参照されることになる。
【００９９】
例えば図２６を参照して、グローバル変数使用領域Ｒ１ａを特定する特定情報は、その領域に属する命令のアドレスＡ１〜Ａ８で表現されており、グローバル変数不使用領域Ｒ１ｂを特定する特定情報は、その領域に属する命令のアドレスＡ９〜Ａｎで表現されている。また、グローバル変数使用領域及びグローバル変数不使用領域の各々が、アドレスが連続する複数の命令で構成されている場合には、各特定情報は、グローバル変数使用領域及びグローバル変数不使用領域の各々の先頭アドレスと最終アドレスとによって表現してもよい。
【０１００】
次に、ステップＳＰ９１１０において、マイクロプロセッサ１は、図２８に示す所定のルーチンを登録する。図２８を参照して、ステップＳＰ９４００では、グローバル変数Ｇがレジスタ６の設定値に書き換えられる。ステップＳＰ９４１０では、変更後のグローバル変数Ｇを用いて割り込み処理が実行される。ステップＳＰ９４２０では、グローバル変数Ｇがレジスタ６にロードされる。
【０１０１】
図２９を参照して、開始時処理が完了した後、タスク処理プログラムの実行が開始される。ステップＳＰ９２００において、マイクロプロセッサ１は、グローバル変数Ｇをレジスタ６にロードする。次に、ステップＳＰ９２１０において、マイクロプロセッサ１は、レジスタ６の設定値を使用した所定のタスク処理を実行する。このタスク処理によって、レジスタ６の設定値が変更される。次に、ステップＳＰ９２２０において、マイクロプロセッサ１は、グローバル変数Ｇを、変更後のレジスタ６の設定値に書き換える。次に、ステップＳＰ９２３０において、マイクロプロセッサ１は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。
【０１０２】
マイクロプロセッサ１がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ１は、タスク処理プログラムの実行を中断して、図３０に示す割り込みハンドラの実行を開始する。
【０１０３】
図３０を参照して、まず、ステップＳＰ９３００において、マイクロプロセッサ１は、割り込みハンドラに移行する直前のマイクロプロセッサ１のコンテキストを保存する。次に、ステップＳＰ９３１０において、マイクロプロセッサ１は、割り込みハンドラが起動された時点（即ち、タスク処理プログラムが中断された時点）で実行中であった命令が格納されているアドレスを取得する。次に、ステップＳＰ９３２０において、マイクロプロセッサ１は、ステップＳＰ９３１０で取得されたアドレスが、図２６のグローバル変数使用領域Ｒ１ａ中にあるか否かを判定する。
【０１０４】
ステップＳＰ９３２０における判定の結果が「ＮＯ」である場合、即ち、ステップＳＰ９３１０で取得されたアドレスがグローバル変数不使用領域Ｒ１ｂ中にある場合は、ステップＳＰ９３３０に進み、マイクロプロセッサ１は、割り込み処理を実行する。
【０１０５】
一方、ステップＳＰ９３２０における判定の結果が「ＹＥＳ」である場合、即ち、ステップＳＰ９３１０で取得されたアドレスがグローバル変数使用領域Ｒ１ａ中にある場合は、ステップＳＰ９３４０に進み、マイクロプロセッサ１は、図２８に示したルーチンを呼び出して実行する。
【０１０６】
ステップＳＰ９３３０，ＳＰ９３４０に引き続き、図７に示したステップＳＰ２３５０，ＳＰ２３６０の処理と同様に、ステップＳＰ９３５０，ＳＰ９３６０の処理が実行される。
【０１０７】
このように本実施の形態９に係る割り込み制御方法及び割り込み制御装置によると、割り込み要求が発生していない通常動作中においては、本来のタスク処理に追加される処理（割り込みマスクの設定等）が全く行われない。従って、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【０１０８】
また、グローバル変数使用領域Ｒ１ａ中のいずれかの命令が実行されている最中に割り込み要求が発生すると、予め登録しておいた所定のルーチンが呼び出される。そして、そのルーチンにおいては、割り込み処理の実行が開始される前に、グローバル変数Ｇがレジスタ６の設定値に書き換えられる。従って、割り込み処理がグローバル変数Ｇを参照する時には、グローバル変数Ｇは、タスク処理の実行によって更新された最新の値にすでに書き換えられている。その結果、更新前のグローバル変数Ｇが割り込み処理において参照されてしまうことに起因する上記支障の発生を、適切に回避することができる。
【０１０９】
【発明の効果】
第１及び第２の発明によると、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図２】記憶部の記憶空間の一部を抜き出して示す模式図である。
【図３】本発明の実施の形態１に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図４】本発明の実施の形態１に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図５】本発明の実施の形態１に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図６】本発明の実施の形態１に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図７】本発明の実施の形態２に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図８】本発明の実施の形態３に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図９】ブレイクポイントを設定するための第１の例を示すフローチャートである。
【図１０】ブレイクポイントの設定を解除するための第１の例を示すフローチャートである。
【図１１】本発明の実施の形態５に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図１２】ブレイクポイントを設定するための第２の例を示すフローチャートである。
【図１３】タスク処理プログラムが実行されている場合にマイクロプロセッサによって行われる処理の流れを示すフローチャートである。
【図１４】ブレイクポイントの設定を解除するための第２の例を示すフローチャートである。
【図１５】タスク処理の流れを示すフローチャートである。
【図１６】ブレイクポイントを設定するための第３の例を示すフローチャートである。
【図１７】図１５のステップＳＰ６２１０の処理内容を具体的に示すフローチャートである。
【図１８】ブレイクポイントの設定を解除するための第３の例を示すフローチャートである。
【図１９】タスク処理の流れを示すフローチャートである。
【図２０】図１９のステップＳＰ７２１０の処理内容を具体的に示すフローチャートである。
【図２１】図２０のステップＳＰ７７１０の処理内容を具体的に示すフローチャートである。
【図２２】図２０のステップＳＰ７７１０の処理内容を具体的に示すフローチャートである。
【図２３】本発明の実施の形態８に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図２４】本発明の実施の形態８に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図２５】本発明の実施の形態９に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図２６】記憶部の記憶空間の一部を抜き出して示す模式図である。
【図２７】本発明の実施の形態９に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図２８】本発明の実施の形態９に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図２９】本発明の実施の形態９に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図３０】本発明の実施の形態９に係る割り込み制御方法における処理の流れを示すフローチャートである。
【符号の説明】
１  マイクロプロセッサ、２  記憶部、３  プログラムカウンタ、４１〜４ｎ，６  レジスタ。
【図１】
2004272844.tif 000003
【図２】
2004272844.tif 000004
【図３】
2004272844.tif 000005
【図４】
2004272844.tif 000006
【図５】
2004272844.tif 000007
【図６】
2004272844.tif 000008
【図７】
2004272844.tif 000009
【図８】
2004272844.tif 000010
【図９】
2004272844.tif 000011
【図１０】
2004272844.tif 000012
【図１１】
2004272844.tif 000013
【図１２】
2004272844.tif 000014
【図１３】
2004272844.tif 000015
【図１４】
2004272844.tif 000016
【図１５】
2004272844.tif 000017
【図１６】
2004272844.tif 000018
【図１７】
2004272844.tif 000019
【図１８】
2004272844.tif 000020
【図１９】
2004272844.tif 000021
【図２０】
2004272844.tif 000022
【図２１】
2004272844.tif 000023
【図２２】
2004272844.tif 000024
【図２３】
2004272844.tif 000025
【図２４】
2004272844.tif 000026
【図２５】
2004272844.tif 000027
【図２６】
2004272844.tif 000028
【図２７】
2004272844.tif 000029
【図２８】
2004272844.tif 000030
【図２９】
2004272844.tif 000031
【図３０】
2004272844.tif 000032