JP2004272844A - 割り込み制御方法 - Google Patents
割り込み制御方法 Download PDFInfo
- Publication number
- JP2004272844A JP2004272844A JP2003066292A JP2003066292A JP2004272844A JP 2004272844 A JP2004272844 A JP 2004272844A JP 2003066292 A JP2003066292 A JP 2003066292A JP 2003066292 A JP2003066292 A JP 2003066292A JP 2004272844 A JP2004272844 A JP 2004272844A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- program
- processing
- address
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】タスク処理の実行速度が低下することを回避しつつ割り込み処理を実行することが可能な割り込み制御方法を得る。
【解決手段】タスク処理プログラムを実行している最中に割り込み要求が発生すると、タスク処理プログラムが中断されて、割り込みハンドラの実行が開始される。割り込みハンドラによって、割り込み処理許可領域R2内に複数のブレイクポイントが設定される。再開されたタスク処理プログラムの実行は、複数のブレイクポイントのいずれかに、やがて到達する。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断し、ブレイクポイントハンドラの実行を開始する。ブレイクポイントハンドラによって、割り込み処理が実行され、その後、ブレイクポイントの設定が解除される。
【選択図】 図5
【解決手段】タスク処理プログラムを実行している最中に割り込み要求が発生すると、タスク処理プログラムが中断されて、割り込みハンドラの実行が開始される。割り込みハンドラによって、割り込み処理許可領域R2内に複数のブレイクポイントが設定される。再開されたタスク処理プログラムの実行は、複数のブレイクポイントのいずれかに、やがて到達する。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断し、ブレイクポイントハンドラの実行を開始する。ブレイクポイントハンドラによって、割り込み処理が実行され、その後、ブレイクポイントの設定が解除される。
【選択図】 図5
Description
【0001】
【発明の属する技術分野】
この発明は、割り込み制御方法に関するものである。
【0002】
【従来の技術】
タスク処理と割り込み処理とを排他的に実行するために、従来の割り込み制御装置では、割り込みマスクを用いることにより、割り込みハンドラの起動の許可及び不許可を切り換える方式が採用されている。
【0003】
具体的には、割り込み処理に対して排他的に実行する必要がある第1のタスク処理の実行が開始される前に、割り込みマスクが「不許可」に設定される。そして、第1のタスク処理が完了した後、割り込み処理に対して排他的に実行する必要がない第2のタスク処理の実行が開始される前に、割り込みマスクが「許可」に設定される。
【0004】
なお、割り込みマスクを用いた割り込み制御装置に関する技術が、下記の特許文献1に開示されている。
【0005】
【特許文献1】
特開2002−73350号公報
【0006】
【発明が解決しようとする課題】
しかしながら、このような従来の割り込み制御装置によると、割り込み要求が発生していない場合であっても、本来のタスク処理以外に、割り込みマスクレジスタを設定するための処理が追加的に実行される。そのため、タスク処理の実行速度が低下してしまうという問題がある。
【0007】
本発明はかかる問題を解決するために成されたものであり、タスク処理の実行速度が低下することを回避しつつ割り込み処理を実行することが可能な割り込み制御方法を得ることを目的とする。
【0008】
【課題を解決するための手段】
第1の発明によれば、割り込み制御方法は、(a)タスク処理を実行するための命令が記述された第1のプログラム中に、タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第1領域と、タスク処理を割り込み処理に対して排他的に実行することが必要でない第2領域とを規定するステップと、(b)第1のプログラムの実行中に割り込み要求が発生した場合、第1のプログラムの実行を中断し、第2領域中に、少なくとも一つのブレイクポイントを設定するステップと、(c)ステップ(b)で中断された第1のプログラムの実行を、ブレイクポイントの設定が完了した後に再開するステップと、(d)ステップ(c)で再開された第1のプログラムの実行がブレイクポイントに到達した場合、第1のプログラムの実行を中断し、割り込み処理を実行するステップと、(e)割り込み処理の実行が完了した後に、ブレイクポイントの設定を解除するステップとを備える。
【0009】
第2の発明によれば、割り込み制御方法は、(a)タスク処理を実行するための命令が記述された第1のプログラム中に、タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第1領域と、タスク処理を割り込み処理に対して排他的に実行することが必要でない第2領域とを規定するステップと、(b)第1のプログラムの実行中に割り込み要求が発生した場合、第1のプログラムの実行を中断し、中断された時点で実行中であった命令が格納されている番地を取得するステップと、(c)番地が第1領域に属する場合には、第2領域中にブレイクポイントを設定し、一方、番地が第2領域に属する場合には、割り込み処理を実行するステップと、(d)ステップ(b)で中断された第1のプログラムの実行を、ステップ(c)の後に再開するステップと、(e)ステップ(c)で番地が第1領域に属していた場合において、ステップ(d)で再開された第1のプログラムの実行がブレイクポイントに到達した場合、第1のプログラムの実行を中断し、割り込み処理を実行するステップと、(f)ステップ(e)における割り込み処理の実行が完了した後に、ブレイクポイントの設定を解除するステップとを備える。
【0010】
【発明の実施の形態】
実施の形態1.
図1は、本発明の実施の形態1に係る割り込み制御装置の構成を模式的に示すブロック図である。割り込み制御装置は、マイクロプロセッサ1と、マイクロプロセッサ1によってアクセス可能な記憶部2とを備えている。記憶部2は、ROM,RAM等の半導体メモリである。
【0011】
図2は、記憶部2の記憶空間の一部を抜き出して示す模式図である。記憶部2には、タスク処理プログラムを構成する複数の命令、即ちタスク処理を実行するための複数の命令が格納されている。アドレスA1〜Anには、割り込み処理に対して排他的に実行することが必要な複数の命令が格納されている。アドレスA1〜Anに格納されている命令を実行することは、割り込み処理に対して排他的に実行することが必要な第1のタスク処理を実行することに等しい。また、アドレスB1〜Bnには、割り込み処理に対して排他的に実行することが必要でない複数の命令が格納されている。アドレスB1〜Bnに格納されている命令を実行することは、割り込み処理に対して排他的に実行することが必要でない第2のタスク処理を実行することに等しい。実際には、第1及び第2のタスク処理が繰り返し実行されることが多いが、説明の簡略化のため、本明細書では、第1及び第2のタスク処理が、それぞれ一回ずつ実行される場合について説明する。なお、図2において、アドレスB4,B7には、分岐命令がそれぞれ格納されているものとする。
【0012】
図3〜6は、本実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。以下、図1〜6を参照して、本実施の形態1に係る割り込み制御装置の動作について説明する。
【0013】
図3を参照して、まず、タスク処理プログラムの実行に先立って、開始時処理が一度だけ実行される。ステップSP1100において、マイクロプロセッサ1は、割り込み処理許可領域及び割り込み処理禁止領域を設定する。割り込み処理許可領域内に含めるべき命令及び割り込み処理禁止領域内に含めるべき命令は、例えば、タスク処理プログラムの設計者によって、プログラムの設計段階で適宜決定される。割り込み処理許可領域を特定する特定情報、及び割り込み処理禁止領域を特定する特定情報は、記憶部2のROM内に予め記憶されている。具体的に、ステップSP1100においてマイクロプロセッサ1は、ROM内に記憶されている上記2つの特定情報をロードして、記憶部2のRAM内に記憶する処理を行う。これによって、割り込み処理許可領域及び割り込み処理禁止領域が規定される。図4〜6に示すその後の処理において、タスク処理プログラムを構成する各命令が割り込み処理許可領域中にあるか割り込み処理禁止領域中にあるかを判断する際には、記憶部2のRAMに記憶されている上記特定情報が参照されることになる。
【0014】
例えば図2を参照して、割り込み処理禁止領域を特定する特定情報は、その領域に属する命令のアドレスA1〜Anで表現されており、割り込み処理許可領域を特定する特定情報は、その領域に属する命令のアドレスB1〜Bnで表現されている。また、割り込み処理禁止領域及び割り込み処理許可領域の各々が、アドレスが連続する複数の命令で構成されている場合には、各特定情報は、割り込み処理禁止領域及び割り込み処理許可領域の各々の先頭アドレスと最終アドレスとによって表現してもよい。
【0015】
図4を参照して、次に、タスク処理プログラムの実行が開始される。ステップSP1200において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要があるタスク処理を実行する。具体的に、マイクロプロセッサ1は、図2のアドレスA1〜Anに格納されている命令を順に実行する。次に、ステップSP1210において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。具体的に、マイクロプロセッサ1は、図2のアドレスB1〜Bnに格納されている命令を順に実行する。
【0016】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、タイマの期限切れやシリアル通信デバイスからの送受信完了等に起因して、外部入力イベントがマイクロプロセッサ1に通知されたものとする。即ち、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図5に示す割り込みハンドラの実行を開始する。
【0017】
図5を参照して、まず、ステップSP1300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキスト(レジスタ値等)を保存する。次に、ステップSP1310において、マイクロプロセッサ1は、割り込み処理許可領域R2内に複数のブレイクポイントを設定する。ここで、ブレイクポイントとは、それが設定されたアドレスにプログラムの実行が到達した場合に、所定のプログラム(後述のブレイクポイントハンドラ)の実行が開始されるアドレスを意味する。本実施の形態1において、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7に、それぞれブレイクポイントを設定する。割り込み処理禁止領域R1内には、ブレイクポイントは設定されない。
【0018】
次に、ステップSP1320において、マイクロプロセッサ1は、ステップSP1300で保存しておいたコンテキストを復元する。次に、ステップSP1330において、マイクロプロセッサ1は、割り込まれたアドレスにジャンプする。即ち、割り込みハンドラに移行する直前に実行されていた命令が格納されているアドレスにジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0019】
図4に戻り、ステップSP1210において、タスク処理プログラムの実行は、図5のステップSP1310で設定された複数のブレイクポイントのいずれかに、やがて到達する。ここでは、ブレイクポイントBP1(図示しない)に到達したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断し、図6に示すブレイクポイントハンドラの実行を開始する。ここで、ブレイクポイントハンドラは、タスク処理プログラムの実行がブレイクポイントに到達した場合に起動されるプログラムである。
【0020】
図6を参照して、まず、ステップSP1400において、マイクロプロセッサ1は、ブレイクポイントハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP1410において、マイクロプロセッサ1は、タスク処理に対して排他的に実行する必要がある割り込み処理を実行する。次に、ステップSP1420において、マイクロプロセッサ1は、全てのブレイクポイントの設定を解除する。次に、ステップSP1430において、マイクロプロセッサ1は、ステップSP1400で保存しておいたコンテキストを復元する。次に、ステップSP1440において、マイクロプロセッサ1は、ブレイクポイントBP1のアドレスにジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0021】
ブレイクポイントは割り込み処理禁止領域R1内には設定されないため、割り込み処理禁止領域R1内の命令を実行している最中に、ブレイクポイントハンドラが呼び出されることはない。これにより、割り込み処理に対して排他的に実行する必要があるタスク処理と、タスク処理に対して排他的に実行する必要がある割り込み処理との、排他的な実行が実現される。
【0022】
このように本実施の形態1に係る割り込み制御方法及び割り込み制御装置によると、割り込み要求が発生していない通常動作中においては、排他制御のために本来のタスク処理に追加される処理(割り込みマスクの設定等)が全く行われない。従って、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【0023】
また、本実施の形態1に係る割り込み制御方法及び割り込み制御装置において、ブレイクポイントは、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7に、それぞれ設定される。ブレイクポイントの設定後にタスク処理プログラムが再開されてから、タスク処理プログラムの実行がいずれかのブレイクポイントに到達するまでの期間、割り込み処理の実行開始が遅延されることになる。しかしながら、一般的に、分岐命令は数命令に一回の頻度で出現することが多いため、遅延時間をごくわずかに抑えることができる。なお、遅延時間をさらに抑えるべく、分岐命令が格納されているアドレス以外にも、さらにブレイクポイントを設定してもよい。
【0024】
実施の形態2.
図7は、本発明の実施の形態2に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態2に係る割り込み制御装置は、図5に示した割り込みハンドラの処理の代わりに、図7に示す割り込みハンドラの処理を実行する。以下、図1〜4,6,7を参照して、本実施の形態2に係る割り込み制御装置の動作について説明する。
【0025】
図3を参照して、まず、上記実施の形態1と同様に、開始時処理が実行される。図4を参照して、次に、上記実施の形態1と同様に、タスク処理プログラムの実行が開始される。
【0026】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図7に示す割り込みハンドラの実行を開始する。
【0027】
図7を参照して、まず、ステップSP2300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP2310において、マイクロプロセッサ1は、タスク処理プログラムが中断された時点で実行中であった命令が格納されているアドレスを取得する。次に、ステップSP2320において、マイクロプロセッサ1は、ステップSP2310で取得されたアドレスが、図2の割り込み処理禁止領域R1中にあるか否かを判定する。
【0028】
ステップSP2320における判定の結果が「YES」である場合、即ち、ステップSP2310で取得されたアドレスが割り込み処理禁止領域R1中にある場合は、ステップSP2330に進み、マイクロプロセッサ1は、図2の割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。
【0029】
一方、ステップSP2320における判定の結果が「NO」である場合、即ち、ステップSP2310で取得されたアドレスが割り込み処理許可領域R2中にある場合は、ステップSP2340に進み、マイクロプロセッサ1は、ブレイクポイントの設定処理を実行することなく、割り込み要求に対応する割り込み処理を直ちに実行する。
【0030】
ステップSP2330,SP2340に引き続き、ステップSP2350において、マイクロプロセッサ1は、ステップSP2300で保存しておいたコンテキストを復元する。次に、ステップSP2360において、マイクロプロセッサ1は、割り込まれたアドレスへジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0031】
ステップSP2320における判定の結果が「YES」であった場合、図4を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域R2の先頭アドレスB1に設定されたブレイクポイントに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0032】
このように本実施の形態2に係る割り込み制御方法及び割り込み制御装置によると、上記実施の形態1と同様に、通常動作中においては、本来のタスク処理に追加される処理が全く行われない。従って、タスク処理の実行速度が低下することを回避できる。
【0033】
また、ステップSP2310で取得されたアドレスが割り込み処理許可領域R2中にある場合、マイクロプロセッサ1は、割り込み処理を直ちに実行する。従って、割り込み処理の実行開始が遅延することを回避できる。
【0034】
さらに、ステップSP2310で取得されたアドレスが割り込み処理禁止領域R1中にある場合、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。従って、上記実施の形態1と比較すると、ブレイクポイントを設定するための処理を簡略化することができる。
【0035】
実施の形態3.
図8は、本発明の実施の形態3に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態3に係る割り込み制御装置は、図5に示した割り込みハンドラの処理の代わりに、図8に示す割り込みハンドラの処理を実行する。以下、図1〜4,6,8を参照して、本実施の形態3に係る割り込み制御装置の動作について説明する。
【0036】
図3を参照して、まず、上記実施の形態1と同様に、開始時処理が実行される。図4を参照して、次に、上記実施の形態1と同様に、タスク処理プログラムの実行が開始される。
【0037】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図8に示す割り込みハンドラの実行を開始する。
【0038】
図8を参照して、図7に示したステップSP2300〜SP2320の処理と同様に、ステップSP3300〜SP3320の処理が実行される。
【0039】
ステップSP3320における判定の結果が「YES」である場合は、ステップSP3330に進み、図7に示したステップSP2330と同様に、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。
【0040】
一方、ステップSP3320における判定の結果が「NO」である場合は、ステップSP3340に進み、図5に示したステップSP1310と同様に、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7に、それぞれブレイクポイントを設定する。
【0041】
ステップSP3330,SP3340に引き続き、図7に示したステップSP2350,SP2360の処理と同様に、ステップSP3350,SP3360の処理が実行される。
【0042】
ステップSP3320における判定の結果が「YES」であった場合、図4を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域R2の先頭アドレスB1に設定されたブレイクポイントに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0043】
ステップSP3320における判定の結果が「NO」であった場合、図4を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7にそれぞれ設定された複数のブレイクポイントのいずれかに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0044】
このように本実施の形態3に係る割り込み制御方法及び割り込み制御装置によると、ステップSP3310で取得されたアドレスが割り込み処理禁止領域R1中にある場合、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。従って、上記実施の形態1と比較すると、ブレイクポイントを設定するための処理を簡略化することができる。
【0045】
実施の形態4.
上記実施の形態1〜3では、割り込み処理許可領域R2中に一又は複数のブレイクポイントが設定された。本実施の形態4では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第1の例について説明する。なお、本実施の形態4において、図1に示した記憶部2は、読み出し及び書き込みが可能なメモリ(RAM)である。
【0046】
図9は、ブレイクポイントを設定するための第1の例を示すフローチャートである。ステップSP4500において、マイクロプロセッサ1は、ブレイクポイントを設定しようとしているアドレス(以下「特定アドレス」と称する)に格納されている命令を、記憶部2内の所定の領域(以下「特定領域」と称する)に保存する。次に、ステップSP4510において、マイクロプロセッサ1は、ブレイクポイントハンドラの先頭アドレスへの分岐命令(ソフトウェアトラップ命令でも良い)を、特定アドレスに書き込む。
【0047】
図10は、ブレイクポイントの設定を解除するための第1の例を示すフローチャートである。ステップSP4600において、マイクロプロセッサ1は、特定アドレスに格納されている、ブレイクポイントハンドラの先頭アドレスへの分岐命令を、ステップSP4500で特定領域に保存しておいた命令に書き換える。
【0048】
このように本実施の形態4に係るブレイクポイントの設定方法によると、タスク処理プログラムの実行がブレイクポイントに到達すると、ブレイクポイントハンドラの先頭アドレスへ分岐されるため、ブレイクポイントハンドラの実行を確実に開始することができる。
【0049】
また、本実施の形態4に係るブレイクポイントの設定解除方法によると、ブレイクポイントハンドラの先頭アドレスへの分岐命令が、元の命令に書き換えられるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【0050】
実施の形態5.
本実施の形態5では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第2の例について説明する。
【0051】
図11は、本実施の形態5に係る割り込み制御装置の構成を模式的に示すブロック図である。マイクロプロセッサ1は、プログラムカウンタ3と、レジスタ41〜4nとを有している。記憶部2は、少なくとも読み出しが可能なメモリ(ROM,RAM)である。
【0052】
図12は、ブレイクポイントを設定するための第2の例を示すフローチャートである。ステップSP5500において、マイクロプロセッサ1は、ブレイクポイントを設定しようとしている特定アドレスを、レジスタ41〜4nに設定する。準備されているレジスタ41〜4nの個数だけ、異なる特定アドレスを設定することができる。
【0053】
図13は、タスク処理プログラムが実行されている場合にマイクロプロセッサ1によって行われる処理の流れを示すフローチャートである。ステップSP5700において、マイクロプロセッサ1は、プログラムカウンタ3に設定されているアドレスと、レジスタ41〜4nに設定されている特定アドレスとが一致するか否かを、逐次判定する。
【0054】
ステップSP5700における判定の結果が「NO」である場合は、ステップSP5710に進み、マイクロプロセッサ1は、プログラムカウンタ3に設定されているアドレスに格納されている命令を実行する。その命令の実行が完了すると、プログラムカウンタ3の設定値が更新される。プログラムカウンタ3に設定されているアドレスが、レジスタ41〜4nに設定されている特定アドレスのいずれかに一致するまで、ステップSP5700,SP5710の処理が繰り返される。即ち、タスク処理プログラムが実行される。
【0055】
ステップSP5700における判定の結果が「YES」である場合、即ち、プログラムカウンタ3に設定されているアドレスと、レジスタ41〜4nに設定されている特定アドレスのいずれかとが一致した場合は、ステップSP5720に進み、ブレイクポイントハンドラの先頭アドレスが、プログラムカウンタ3に設定される。これにより、ステップSP5720に続くステップSP5710において、ブレイクポイントハンドラの実行が開始される。
【0056】
図14は、ブレイクポイントの設定を解除するための第2の例を示すフローチャートである。ステップSP5600において、マイクロプロセッサ1は、全てのレジスタ41〜4nの値を−1に設定することにより、レジスタ41〜4nの設定をクリアする。
【0057】
このように本実施の形態5に係るブレイクポイントの設定方法によると、プログラムカウンタ3に設定されているアドレスと、レジスタ41〜4nに設定されている特定アドレスのいずれかとが一致すると、ブレイクポイントハンドラの先頭アドレスがプログラムカウンタ3に設定される。これにより、ブレイクポイントハンドラの実行を確実に開始することができる。
【0058】
しかも、記憶部2はROMで足りるため、上記実施の形態4と比較すると、記憶部2に関してコストの低減を図ることができる。
【0059】
また、本実施の形態5に係るブレイクポイントの設定解除方法によると、レジスタ41〜4nの設定がクリアされるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【0060】
実施の形態6.
本実施の形態6では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第3の例について説明する。本実施の形態6において、マイクロプロセッサ1は、シミュレータを実行する機能を有している。シミュレータは、シミュレーションを行うためのプログラムである。なお、シミュレーション機能を有するシステムでは、シミュレータを実行するマイクロプロセッサと、シミュレーションの対象となるマイクロプロセッサとが異なるのが一般的であるが、本実施の形態6では、両マイクロプロセッサはいずれもマイクロプロセッサ1である。
【0061】
図15は、タスク処理の流れを示すフローチャートである。上記実施の形態1と同様に、ステップSP6200において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要があるタスク処理を、タスク処理プログラムによって実行する。次に、ステップSP6210において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を、シミュレータによって実行する。
【0062】
図16は、ブレイクポイントを設定するための第3の例を示すフローチャートである。ステップSP6500において、マイクロプロセッサ1は、ブレイクポイントを設定しようとしている特定アドレスを、所定の変数C1〜Cnに設定する。変数C1〜Cnの個数だけ、異なる特定アドレスを設定することができる。
【0063】
図17は、図15のステップSP6210の処理内容を具体的に示すフローチャートである。ステップSP6700において、SPC(Simulation Program Counter)変数が、割り込み処理許可領域R2の先頭アドレスB1に設定される。SPC変数は、シミュレータで実行中の命令が格納されているアドレスを保持する変数である。次に、ステップSP6710において、マイクロプロセッサ1は、SPC変数に設定されているアドレスが、割り込み処理許可領域R2の最終アドレスBnに一致するか否かを判定する。
【0064】
ステップSP6710における判定の結果が「YES」である場合は、処理が終了される。一方、ステップSP6710における判定の結果が「NO」である場合は、ステップSP6720に進み、マイクロプロセッサ1は、SPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致するか否かを、逐次判定する。
【0065】
ステップSP6720における判定の結果が「NO」である場合は、ステップSP6730に進み、マイクロプロセッサ1は、SPC変数に設定されているアドレスに格納されている命令を実行する。その命令の実行が完了すると、SPC変数の設定値が更新される。その後、ステップSP6710における判定が再び実行される。
【0066】
ステップSP6720における判定の結果が「YES」である場合、即ち、SPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致する場合は、マイクロプロセッサ1は、シミュレータの実行を中断する。そして、図6に示した手順に従い、割り込み処理を実行し(ステップSP6740)、ブレイクポイントの設定を解除する(ステップSP6750)。その後、シミュレータの実行に戻り、ステップSP6710における判定が再び実行される。
【0067】
図18は、ブレイクポイントの設定を解除するための第3の例を示すフローチャートであり、図17のステップSP6750の処理内容を具体的に示したものに相当する。ステップSP6600において、マイクロプロセッサ1は、全ての変数C1〜Cnの値を−1に設定することにより、変数C1〜Cnの設定をクリアする。
【0068】
上記実施の形態5に係るブレイクポイントの設定方法では、設定できるブレイクポイントの個数の上限は、マイクロプロセッサ1が有するレジスタ41〜4nの個数に制限される。従って、多数のブレイクポイントを設定したい場合には、それに応じて多数のレジスタ41〜4nを準備する必要があり、コストが上昇する。これに対し、本実施の形態6に係るブレイクポイントの設定方法によると、変数C1〜Cnを保存しておくためのメモリ容量の範囲内で、ブレイクポイントを設定できる。そのため、多数のブレイクポイントを設定したい場合であっても、コストの上昇を抑制することができる。
【0069】
また、本実施の形態6に係るブレイクポイントの設定解除方法によると、変数C1〜Cnの設定がクリアされるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【0070】
実施の形態7.
本実施の形態7では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第4の例について説明する。本実施の形態7において、マイクロプロセッサ1は、トランスレータを実行する機能を有している。トランスレータは、トランスレーション(変換)を行うためのプログラムである。トランスレーション実行では、ある命令が別の命令に変換され、変換後の命令が実行される。なお、トランスレーション機能を有するシステムでは、トランスレータを実行するマイクロプロセッサと、変換後の命令を実行するマイクロプロセッサとが異なるのが一般的であるが、本実施の形態7では、両マイクロプロセッサはいずれもマイクロプロセッサ1である。
【0071】
図19は、タスク処理の流れを示すフローチャートである。上記実施の形態1と同様に、ステップSP7200において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要があるタスク処理を、タスク処理プログラムによって実行する。次に、ステップSP7210において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を、トランスレータによって実行する。
【0072】
図20は、図19のステップSP7210の処理内容を具体的に示すフローチャートである。ステップSP7700において、TPC(Translation Program Counter)変数が、割り込み処理許可領域R2の先頭アドレスB1に設定される。TPC変数は、トランスレータで実行中のプログラムを構成する複数の命令のうち、そのとき変換しようとしている命令が格納されているアドレスを保持する変数である。次に、ステップSP7710において、マイクロプロセッサ1は、TPC変数に設定されているアドレスが、割り込み処理許可領域R2の最終アドレスBnに一致するまで、トランスレーション実行を継続する。
【0073】
本実施の形態7に係る、ブレイクポイントを設定するための第4の例では、上記実施の形態6と同様に、マイクロプロセッサ1は、ブレイクポイントを設定しようとしている特定アドレスを、所定の変数C1〜Cnに設定する。また、本実施の形態7に係る、ブレイクポイントの設定を解除するための第4の例では、上記実施の形態6と同様に、マイクロプロセッサ1は、全ての変数C1〜Cnの値を−1に設定することにより、変数C1〜Cnの設定をクリアする。
【0074】
図21,22は、図20のステップSP7710の処理内容を具体的に示すフローチャートである。ステップSP7800において、マイクロプロセッサ1は、TPC変数に設定されているアドレスが、割り込み処理許可領域R2の最終アドレスBnに一致しているか否かを判定する。
【0075】
ステップSP7800における判定の結果が「YES」である場合は、処理が終了される。一方、ステップSP7800における判定の結果が「NO」である場合は、ステップSP7810に進み、マイクロプロセッサ1は、変換後の命令を格納するためのバッファを空にする。次に、ステップSP7820において、マイクロプロセッサ1は、TPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致するか否かを、逐次判定する。
【0076】
ステップSP7820における判定の結果が「YES」である場合、即ち、TPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致した場合は、マイクロプロセッサ1は、ブレイクポイントハンドラをサブルーチンとして実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファ中に追加する。
【0077】
ステップSP7830に引き続き、及び、ステップSP7820における判定の結果が「NO」である場合は、ステップSP7840において、マイクロプロセッサ1は、TPC変数に設定されているアドレスに格納されている命令が、無条件分岐命令であるか否かを判定する。
【0078】
ステップSP7840における判定の結果が「YES」である場合は、ステップSP7900に進み、マイクロプロセッサ1は、分岐先のアドレスからトランスレーション実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファの最後に追加する。このネイティブ命令は、トランスレーション処理の先頭へ分岐するようなネイティブ命令である。一方、ステップSP7840における判定の結果が「NO」である場合は、ステップSP7850に進み、マイクロプロセッサ1は、TPC変数に設定されているアドレスに格納されている命令が、条件付き分岐命令であるか否かを判定する。
【0079】
ステップSP7850における判定の結果が「YES」である場合は、ステップSP7880に進み、マイクロプロセッサ1は、その条件が満足されているときは分岐先のアドレスからトランスレーション実行し、その条件が満足されていないときはTPC変数に設定されているアドレスの次のアドレスからトランスレーション実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファ中に追加する。
【0080】
ステップSP7900,SP7880に引き続き、ステップSP7890において、バッファの先頭へのジャンプが実行される。その結果、これまでにバッファ中に蓄積されたネイティブ命令が、トランスレーション実行されることになる。このとき、ステップSP7830で生成されたネイティブ命令(即ちブレイクポイントハンドラを実行するようなネイティブ命令)がバッファ中に存在していれば、そのネイティブ命令がトランスレーション実行されることにより、ブレイクポイントハンドラが実行される。即ち、割り込み処理が実行される。さらに、バッファの最後には、トランスレーション処理に戻る命令が格納されているので、バッファ中に蓄積されているネイティブ命令のトランスレーション実行が完了した後は、トランスレーション処理(図21の先頭)に戻り、以降、実行が継続されることになる。
【0081】
ステップSP7850における判定の結果が「NO」である場合は、ステップSP7860に進み、マイクロプロセッサ1は、TPC変数に設定されているアドレスに格納されている命令に対応するネイティブ命令を生成し、そのネイティブ命令をバッファの最後に追加する。次に、ステップSP7870において、次の命令が格納されているアドレスが、TPC変数に設定される。即ち、TPC変数が更新される。その後、ステップSP7820における判定が再び実行される。
【0082】
本実施の形態7に係るブレイクポイントの設定方法及びブレイクポイントの設定解除方法によっても、上記実施の形態6と同様の効果を得ることができる。
【0083】
実施の形態8.
図23,24は、上記実施の形態1を基礎として、本実施の形態8に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態8に係る割り込み制御装置は、図4に示したタスク処理プログラムの処理の代わりに、図23に示すタスク処理プログラムの処理を実行する。また、図5に示した割り込みハンドラの処理の代わりに、図24に示す割り込みハンドラの処理を実行する。
【0084】
図23を参照して、ます、ステップSP8200において、割り込み処理許可フラグが「許可」又は「不許可」に設定される。次に、ステップSP8210において、マイクロプロセッサ1は、割り込み処理に対する排他的実行が必要な場合があるタスク処理を実行する。次に、ステップSP8220において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。
【0085】
図24を参照して、ステップSP8300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP8310において、マイクロプロセッサ1は、割り込み処理許可フラグが「許可」に設定されているか否かを判定する。
【0086】
ステップSP8310における判定の結果が「YES」である場合、即ち割り込み処理許可フラグが「許可」に設定されている場合は、ステップSP8320に進み、マイクロプロセッサ1は、ブレイクポイントの設定処理を行うことなく、割り込み処理を直ちに実行する。
【0087】
一方、ステップSP8310における判定の結果が「NO」である場合、即ち割り込み処理許可フラグが「不許可」に設定されている場合は、ステップSP8330に進み、マイクロプロセッサ1は、図5のステップSP1310と同様に、割り込み処理許可領域R2内に複数のブレイクポイントを設定する。
【0088】
ステップSP8320,SP8330に引き続き、ステップSP8340において、マイクロプロセッサ1は、ステップSP8300で保存しておいたコンテキストを復元する。次に、ステップSP8350において、マイクロプロセッサ1は、割り込まれたアドレスへジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0089】
ステップSP8310における判定の結果が「NO」であった場合、再開されたタスク処理プログラムの実行は、ステップSP8330で設定された複数のブレイクポイントのいずれかに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0090】
なお、以上の説明では、上記実施の形態1を基礎として本実施の形態8に係る発明を適用する例について述べたが、上記実施の形態2〜7を基礎として、本実施の形態8に係る発明を適用することも可能である。
【0091】
このように本実施の形態8に係る割り込み制御方法及び割り込み制御装置によると、タスク処理と割り込み処理とを排他的に実行するか非排他的に実行するかを、割り込み処理許可フラグの設定によって切り換えることができる。
【0092】
実施の形態9.
タスク処理と割り込み処理とを排他的に実行しなければならない理由は、以下の通りである。即ち、タスク処理及び割り込み処理の両者が共通にアクセスする変数(グローバル変数)が存在し、一方がそれを変更し、他方がそれを参照するという状況において、一方によるグローバル変数の変更が完了する前に、他方によってグローバル変数を使用した処理が行われることを、回避しなければならないからである。
【0093】
例えば、タスク処理によって所定のグローバル変数Gが変更され、割り込み処理によってグローバル変数Gが参照される状況を考える。このとき、タスク処理においては、グローバル変数Gを所定のレジスタにロードする第1ステップと、レジスタの設定値を用いて所定の処理を実行した後、レジスタの設定値を変更する第2ステップと、グローバル変数Gを、変更後のレジスタの設定値に書き換える第3ステップとが、この順に実行される。ここで、第3ステップが完了する前にグローバル変数Gを用いて割り込み処理を実行してしまうと、変更前のグローバル変数Gが参照されることとなり、支障が発生する。
【0094】
本実施の形態9では、かかる支障の発生を適切に回避し得る、割り込み制御方法及び割り込み制御装置について説明する。なお、説明の簡略化のため、グローバル変数Gが1個のみ存在する場合を例にとり説明する。
【0095】
図25は、本実施の形態9に係る割り込み制御装置の構成を模式的に示すブロック図である。マイクロプロセッサ1は、所定のレジスタ6を有している。
【0096】
図26は、記憶部2の記憶空間の一部を抜き出して示す模式図である。記憶部2には、タスク処理プログラムを構成する複数の命令、即ちタスク処理を実行するための複数の命令が格納されている。アドレスA1には、グローバル変数Gをレジスタ6へロードすることを指示する命令が格納されている。アドレスA8には、グローバル変数Gをレジスタ6の設定値に書き換えることを指示する命令が格納されている。アドレスA2〜A7に格納された命令によって、レジスタ6の設定値を用いた処理が実行された後、レジスタ6の設定値が変更される。アドレスA9〜Anに格納された命令によっては、グローバル変数Gを用いたタスク処理が実行されない。即ち、アドレスA9〜Anに格納された命令を実行することによるタスク処理は、本来、割り込み処理に対して排他的に実行する必要がないタスク処理である。
【0097】
図27〜30は、本実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。以下、図25〜30を参照して、本実施の形態9に係る割り込み制御装置の動作について説明する。
【0098】
図27を参照して、まず、タスク処理プログラムの実行に先立って、開始時処理が一度だけ実行される。ステップSP9100において、マイクロプロセッサ1は、グローバル変数使用領域及びグローバル変数不使用領域を設定する。グローバル変数使用領域内に含めるべき命令及びグローバル変数不使用領域内に含めるべき命令は、例えば、タスク処理プログラムの設計者によって、プログラムの設計段階で適宜決定される。グローバル変数使用領域を特定する特定情報、及びグローバル変数不使用領域を特定する特定情報は、記憶部2のROM内に予め記憶されている。具体的に、ステップSP9100においてマイクロプロセッサ1は、ROM内に記憶されている上記2つの特定情報をロードして、記憶部2のRAM内に記憶する処理を行う。これによって、グローバル変数使用領域及びグローバル変数不使用領域が設定される。図28〜30に示すその後の処理において、タスク処理プログラムを構成する各命令がグローバル変数使用領域中にあるかグローバル変数不使用領域中にあるかを判断する際には、記憶部2のRAMに記憶されている上記特定情報が参照されることになる。
【0099】
例えば図26を参照して、グローバル変数使用領域R1aを特定する特定情報は、その領域に属する命令のアドレスA1〜A8で表現されており、グローバル変数不使用領域R1bを特定する特定情報は、その領域に属する命令のアドレスA9〜Anで表現されている。また、グローバル変数使用領域及びグローバル変数不使用領域の各々が、アドレスが連続する複数の命令で構成されている場合には、各特定情報は、グローバル変数使用領域及びグローバル変数不使用領域の各々の先頭アドレスと最終アドレスとによって表現してもよい。
【0100】
次に、ステップSP9110において、マイクロプロセッサ1は、図28に示す所定のルーチンを登録する。図28を参照して、ステップSP9400では、グローバル変数Gがレジスタ6の設定値に書き換えられる。ステップSP9410では、変更後のグローバル変数Gを用いて割り込み処理が実行される。ステップSP9420では、グローバル変数Gがレジスタ6にロードされる。
【0101】
図29を参照して、開始時処理が完了した後、タスク処理プログラムの実行が開始される。ステップSP9200において、マイクロプロセッサ1は、グローバル変数Gをレジスタ6にロードする。次に、ステップSP9210において、マイクロプロセッサ1は、レジスタ6の設定値を使用した所定のタスク処理を実行する。このタスク処理によって、レジスタ6の設定値が変更される。次に、ステップSP9220において、マイクロプロセッサ1は、グローバル変数Gを、変更後のレジスタ6の設定値に書き換える。次に、ステップSP9230において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。
【0102】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図30に示す割り込みハンドラの実行を開始する。
【0103】
図30を参照して、まず、ステップSP9300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP9310において、マイクロプロセッサ1は、割り込みハンドラが起動された時点(即ち、タスク処理プログラムが中断された時点)で実行中であった命令が格納されているアドレスを取得する。次に、ステップSP9320において、マイクロプロセッサ1は、ステップSP9310で取得されたアドレスが、図26のグローバル変数使用領域R1a中にあるか否かを判定する。
【0104】
ステップSP9320における判定の結果が「NO」である場合、即ち、ステップSP9310で取得されたアドレスがグローバル変数不使用領域R1b中にある場合は、ステップSP9330に進み、マイクロプロセッサ1は、割り込み処理を実行する。
【0105】
一方、ステップSP9320における判定の結果が「YES」である場合、即ち、ステップSP9310で取得されたアドレスがグローバル変数使用領域R1a中にある場合は、ステップSP9340に進み、マイクロプロセッサ1は、図28に示したルーチンを呼び出して実行する。
【0106】
ステップSP9330,SP9340に引き続き、図7に示したステップSP2350,SP2360の処理と同様に、ステップSP9350,SP9360の処理が実行される。
【0107】
このように本実施の形態9に係る割り込み制御方法及び割り込み制御装置によると、割り込み要求が発生していない通常動作中においては、本来のタスク処理に追加される処理(割り込みマスクの設定等)が全く行われない。従って、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【0108】
また、グローバル変数使用領域R1a中のいずれかの命令が実行されている最中に割り込み要求が発生すると、予め登録しておいた所定のルーチンが呼び出される。そして、そのルーチンにおいては、割り込み処理の実行が開始される前に、グローバル変数Gがレジスタ6の設定値に書き換えられる。従って、割り込み処理がグローバル変数Gを参照する時には、グローバル変数Gは、タスク処理の実行によって更新された最新の値にすでに書き換えられている。その結果、更新前のグローバル変数Gが割り込み処理において参照されてしまうことに起因する上記支障の発生を、適切に回避することができる。
【0109】
【発明の効果】
第1及び第2の発明によると、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【図面の簡単な説明】
【図1】本発明の実施の形態1に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図2】記憶部の記憶空間の一部を抜き出して示す模式図である。
【図3】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図4】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図5】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図6】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図7】本発明の実施の形態2に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図8】本発明の実施の形態3に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図9】ブレイクポイントを設定するための第1の例を示すフローチャートである。
【図10】ブレイクポイントの設定を解除するための第1の例を示すフローチャートである。
【図11】本発明の実施の形態5に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図12】ブレイクポイントを設定するための第2の例を示すフローチャートである。
【図13】タスク処理プログラムが実行されている場合にマイクロプロセッサによって行われる処理の流れを示すフローチャートである。
【図14】ブレイクポイントの設定を解除するための第2の例を示すフローチャートである。
【図15】タスク処理の流れを示すフローチャートである。
【図16】ブレイクポイントを設定するための第3の例を示すフローチャートである。
【図17】図15のステップSP6210の処理内容を具体的に示すフローチャートである。
【図18】ブレイクポイントの設定を解除するための第3の例を示すフローチャートである。
【図19】タスク処理の流れを示すフローチャートである。
【図20】図19のステップSP7210の処理内容を具体的に示すフローチャートである。
【図21】図20のステップSP7710の処理内容を具体的に示すフローチャートである。
【図22】図20のステップSP7710の処理内容を具体的に示すフローチャートである。
【図23】本発明の実施の形態8に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図24】本発明の実施の形態8に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図25】本発明の実施の形態9に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図26】記憶部の記憶空間の一部を抜き出して示す模式図である。
【図27】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図28】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図29】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図30】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【符号の説明】
1 マイクロプロセッサ、2 記憶部、3 プログラムカウンタ、41〜4n,6 レジスタ。
【発明の属する技術分野】
この発明は、割り込み制御方法に関するものである。
【0002】
【従来の技術】
タスク処理と割り込み処理とを排他的に実行するために、従来の割り込み制御装置では、割り込みマスクを用いることにより、割り込みハンドラの起動の許可及び不許可を切り換える方式が採用されている。
【0003】
具体的には、割り込み処理に対して排他的に実行する必要がある第1のタスク処理の実行が開始される前に、割り込みマスクが「不許可」に設定される。そして、第1のタスク処理が完了した後、割り込み処理に対して排他的に実行する必要がない第2のタスク処理の実行が開始される前に、割り込みマスクが「許可」に設定される。
【0004】
なお、割り込みマスクを用いた割り込み制御装置に関する技術が、下記の特許文献1に開示されている。
【0005】
【特許文献1】
特開2002−73350号公報
【0006】
【発明が解決しようとする課題】
しかしながら、このような従来の割り込み制御装置によると、割り込み要求が発生していない場合であっても、本来のタスク処理以外に、割り込みマスクレジスタを設定するための処理が追加的に実行される。そのため、タスク処理の実行速度が低下してしまうという問題がある。
【0007】
本発明はかかる問題を解決するために成されたものであり、タスク処理の実行速度が低下することを回避しつつ割り込み処理を実行することが可能な割り込み制御方法を得ることを目的とする。
【0008】
【課題を解決するための手段】
第1の発明によれば、割り込み制御方法は、(a)タスク処理を実行するための命令が記述された第1のプログラム中に、タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第1領域と、タスク処理を割り込み処理に対して排他的に実行することが必要でない第2領域とを規定するステップと、(b)第1のプログラムの実行中に割り込み要求が発生した場合、第1のプログラムの実行を中断し、第2領域中に、少なくとも一つのブレイクポイントを設定するステップと、(c)ステップ(b)で中断された第1のプログラムの実行を、ブレイクポイントの設定が完了した後に再開するステップと、(d)ステップ(c)で再開された第1のプログラムの実行がブレイクポイントに到達した場合、第1のプログラムの実行を中断し、割り込み処理を実行するステップと、(e)割り込み処理の実行が完了した後に、ブレイクポイントの設定を解除するステップとを備える。
【0009】
第2の発明によれば、割り込み制御方法は、(a)タスク処理を実行するための命令が記述された第1のプログラム中に、タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第1領域と、タスク処理を割り込み処理に対して排他的に実行することが必要でない第2領域とを規定するステップと、(b)第1のプログラムの実行中に割り込み要求が発生した場合、第1のプログラムの実行を中断し、中断された時点で実行中であった命令が格納されている番地を取得するステップと、(c)番地が第1領域に属する場合には、第2領域中にブレイクポイントを設定し、一方、番地が第2領域に属する場合には、割り込み処理を実行するステップと、(d)ステップ(b)で中断された第1のプログラムの実行を、ステップ(c)の後に再開するステップと、(e)ステップ(c)で番地が第1領域に属していた場合において、ステップ(d)で再開された第1のプログラムの実行がブレイクポイントに到達した場合、第1のプログラムの実行を中断し、割り込み処理を実行するステップと、(f)ステップ(e)における割り込み処理の実行が完了した後に、ブレイクポイントの設定を解除するステップとを備える。
【0010】
【発明の実施の形態】
実施の形態1.
図1は、本発明の実施の形態1に係る割り込み制御装置の構成を模式的に示すブロック図である。割り込み制御装置は、マイクロプロセッサ1と、マイクロプロセッサ1によってアクセス可能な記憶部2とを備えている。記憶部2は、ROM,RAM等の半導体メモリである。
【0011】
図2は、記憶部2の記憶空間の一部を抜き出して示す模式図である。記憶部2には、タスク処理プログラムを構成する複数の命令、即ちタスク処理を実行するための複数の命令が格納されている。アドレスA1〜Anには、割り込み処理に対して排他的に実行することが必要な複数の命令が格納されている。アドレスA1〜Anに格納されている命令を実行することは、割り込み処理に対して排他的に実行することが必要な第1のタスク処理を実行することに等しい。また、アドレスB1〜Bnには、割り込み処理に対して排他的に実行することが必要でない複数の命令が格納されている。アドレスB1〜Bnに格納されている命令を実行することは、割り込み処理に対して排他的に実行することが必要でない第2のタスク処理を実行することに等しい。実際には、第1及び第2のタスク処理が繰り返し実行されることが多いが、説明の簡略化のため、本明細書では、第1及び第2のタスク処理が、それぞれ一回ずつ実行される場合について説明する。なお、図2において、アドレスB4,B7には、分岐命令がそれぞれ格納されているものとする。
【0012】
図3〜6は、本実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。以下、図1〜6を参照して、本実施の形態1に係る割り込み制御装置の動作について説明する。
【0013】
図3を参照して、まず、タスク処理プログラムの実行に先立って、開始時処理が一度だけ実行される。ステップSP1100において、マイクロプロセッサ1は、割り込み処理許可領域及び割り込み処理禁止領域を設定する。割り込み処理許可領域内に含めるべき命令及び割り込み処理禁止領域内に含めるべき命令は、例えば、タスク処理プログラムの設計者によって、プログラムの設計段階で適宜決定される。割り込み処理許可領域を特定する特定情報、及び割り込み処理禁止領域を特定する特定情報は、記憶部2のROM内に予め記憶されている。具体的に、ステップSP1100においてマイクロプロセッサ1は、ROM内に記憶されている上記2つの特定情報をロードして、記憶部2のRAM内に記憶する処理を行う。これによって、割り込み処理許可領域及び割り込み処理禁止領域が規定される。図4〜6に示すその後の処理において、タスク処理プログラムを構成する各命令が割り込み処理許可領域中にあるか割り込み処理禁止領域中にあるかを判断する際には、記憶部2のRAMに記憶されている上記特定情報が参照されることになる。
【0014】
例えば図2を参照して、割り込み処理禁止領域を特定する特定情報は、その領域に属する命令のアドレスA1〜Anで表現されており、割り込み処理許可領域を特定する特定情報は、その領域に属する命令のアドレスB1〜Bnで表現されている。また、割り込み処理禁止領域及び割り込み処理許可領域の各々が、アドレスが連続する複数の命令で構成されている場合には、各特定情報は、割り込み処理禁止領域及び割り込み処理許可領域の各々の先頭アドレスと最終アドレスとによって表現してもよい。
【0015】
図4を参照して、次に、タスク処理プログラムの実行が開始される。ステップSP1200において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要があるタスク処理を実行する。具体的に、マイクロプロセッサ1は、図2のアドレスA1〜Anに格納されている命令を順に実行する。次に、ステップSP1210において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。具体的に、マイクロプロセッサ1は、図2のアドレスB1〜Bnに格納されている命令を順に実行する。
【0016】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、タイマの期限切れやシリアル通信デバイスからの送受信完了等に起因して、外部入力イベントがマイクロプロセッサ1に通知されたものとする。即ち、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図5に示す割り込みハンドラの実行を開始する。
【0017】
図5を参照して、まず、ステップSP1300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキスト(レジスタ値等)を保存する。次に、ステップSP1310において、マイクロプロセッサ1は、割り込み処理許可領域R2内に複数のブレイクポイントを設定する。ここで、ブレイクポイントとは、それが設定されたアドレスにプログラムの実行が到達した場合に、所定のプログラム(後述のブレイクポイントハンドラ)の実行が開始されるアドレスを意味する。本実施の形態1において、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7に、それぞれブレイクポイントを設定する。割り込み処理禁止領域R1内には、ブレイクポイントは設定されない。
【0018】
次に、ステップSP1320において、マイクロプロセッサ1は、ステップSP1300で保存しておいたコンテキストを復元する。次に、ステップSP1330において、マイクロプロセッサ1は、割り込まれたアドレスにジャンプする。即ち、割り込みハンドラに移行する直前に実行されていた命令が格納されているアドレスにジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0019】
図4に戻り、ステップSP1210において、タスク処理プログラムの実行は、図5のステップSP1310で設定された複数のブレイクポイントのいずれかに、やがて到達する。ここでは、ブレイクポイントBP1(図示しない)に到達したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断し、図6に示すブレイクポイントハンドラの実行を開始する。ここで、ブレイクポイントハンドラは、タスク処理プログラムの実行がブレイクポイントに到達した場合に起動されるプログラムである。
【0020】
図6を参照して、まず、ステップSP1400において、マイクロプロセッサ1は、ブレイクポイントハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP1410において、マイクロプロセッサ1は、タスク処理に対して排他的に実行する必要がある割り込み処理を実行する。次に、ステップSP1420において、マイクロプロセッサ1は、全てのブレイクポイントの設定を解除する。次に、ステップSP1430において、マイクロプロセッサ1は、ステップSP1400で保存しておいたコンテキストを復元する。次に、ステップSP1440において、マイクロプロセッサ1は、ブレイクポイントBP1のアドレスにジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0021】
ブレイクポイントは割り込み処理禁止領域R1内には設定されないため、割り込み処理禁止領域R1内の命令を実行している最中に、ブレイクポイントハンドラが呼び出されることはない。これにより、割り込み処理に対して排他的に実行する必要があるタスク処理と、タスク処理に対して排他的に実行する必要がある割り込み処理との、排他的な実行が実現される。
【0022】
このように本実施の形態1に係る割り込み制御方法及び割り込み制御装置によると、割り込み要求が発生していない通常動作中においては、排他制御のために本来のタスク処理に追加される処理(割り込みマスクの設定等)が全く行われない。従って、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【0023】
また、本実施の形態1に係る割り込み制御方法及び割り込み制御装置において、ブレイクポイントは、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7に、それぞれ設定される。ブレイクポイントの設定後にタスク処理プログラムが再開されてから、タスク処理プログラムの実行がいずれかのブレイクポイントに到達するまでの期間、割り込み処理の実行開始が遅延されることになる。しかしながら、一般的に、分岐命令は数命令に一回の頻度で出現することが多いため、遅延時間をごくわずかに抑えることができる。なお、遅延時間をさらに抑えるべく、分岐命令が格納されているアドレス以外にも、さらにブレイクポイントを設定してもよい。
【0024】
実施の形態2.
図7は、本発明の実施の形態2に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態2に係る割り込み制御装置は、図5に示した割り込みハンドラの処理の代わりに、図7に示す割り込みハンドラの処理を実行する。以下、図1〜4,6,7を参照して、本実施の形態2に係る割り込み制御装置の動作について説明する。
【0025】
図3を参照して、まず、上記実施の形態1と同様に、開始時処理が実行される。図4を参照して、次に、上記実施の形態1と同様に、タスク処理プログラムの実行が開始される。
【0026】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図7に示す割り込みハンドラの実行を開始する。
【0027】
図7を参照して、まず、ステップSP2300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP2310において、マイクロプロセッサ1は、タスク処理プログラムが中断された時点で実行中であった命令が格納されているアドレスを取得する。次に、ステップSP2320において、マイクロプロセッサ1は、ステップSP2310で取得されたアドレスが、図2の割り込み処理禁止領域R1中にあるか否かを判定する。
【0028】
ステップSP2320における判定の結果が「YES」である場合、即ち、ステップSP2310で取得されたアドレスが割り込み処理禁止領域R1中にある場合は、ステップSP2330に進み、マイクロプロセッサ1は、図2の割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。
【0029】
一方、ステップSP2320における判定の結果が「NO」である場合、即ち、ステップSP2310で取得されたアドレスが割り込み処理許可領域R2中にある場合は、ステップSP2340に進み、マイクロプロセッサ1は、ブレイクポイントの設定処理を実行することなく、割り込み要求に対応する割り込み処理を直ちに実行する。
【0030】
ステップSP2330,SP2340に引き続き、ステップSP2350において、マイクロプロセッサ1は、ステップSP2300で保存しておいたコンテキストを復元する。次に、ステップSP2360において、マイクロプロセッサ1は、割り込まれたアドレスへジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0031】
ステップSP2320における判定の結果が「YES」であった場合、図4を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域R2の先頭アドレスB1に設定されたブレイクポイントに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0032】
このように本実施の形態2に係る割り込み制御方法及び割り込み制御装置によると、上記実施の形態1と同様に、通常動作中においては、本来のタスク処理に追加される処理が全く行われない。従って、タスク処理の実行速度が低下することを回避できる。
【0033】
また、ステップSP2310で取得されたアドレスが割り込み処理許可領域R2中にある場合、マイクロプロセッサ1は、割り込み処理を直ちに実行する。従って、割り込み処理の実行開始が遅延することを回避できる。
【0034】
さらに、ステップSP2310で取得されたアドレスが割り込み処理禁止領域R1中にある場合、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。従って、上記実施の形態1と比較すると、ブレイクポイントを設定するための処理を簡略化することができる。
【0035】
実施の形態3.
図8は、本発明の実施の形態3に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態3に係る割り込み制御装置は、図5に示した割り込みハンドラの処理の代わりに、図8に示す割り込みハンドラの処理を実行する。以下、図1〜4,6,8を参照して、本実施の形態3に係る割り込み制御装置の動作について説明する。
【0036】
図3を参照して、まず、上記実施の形態1と同様に、開始時処理が実行される。図4を参照して、次に、上記実施の形態1と同様に、タスク処理プログラムの実行が開始される。
【0037】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図8に示す割り込みハンドラの実行を開始する。
【0038】
図8を参照して、図7に示したステップSP2300〜SP2320の処理と同様に、ステップSP3300〜SP3320の処理が実行される。
【0039】
ステップSP3320における判定の結果が「YES」である場合は、ステップSP3330に進み、図7に示したステップSP2330と同様に、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。
【0040】
一方、ステップSP3320における判定の結果が「NO」である場合は、ステップSP3340に進み、図5に示したステップSP1310と同様に、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7に、それぞれブレイクポイントを設定する。
【0041】
ステップSP3330,SP3340に引き続き、図7に示したステップSP2350,SP2360の処理と同様に、ステップSP3350,SP3360の処理が実行される。
【0042】
ステップSP3320における判定の結果が「YES」であった場合、図4を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域R2の先頭アドレスB1に設定されたブレイクポイントに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0043】
ステップSP3320における判定の結果が「NO」であった場合、図4を参照して、再開されたタスク処理プログラムの実行は、割り込み処理許可領域R2の先頭アドレスB1、最終アドレスBn、及び、分岐命令が格納されている全てのアドレスB4,B7にそれぞれ設定された複数のブレイクポイントのいずれかに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0044】
このように本実施の形態3に係る割り込み制御方法及び割り込み制御装置によると、ステップSP3310で取得されたアドレスが割り込み処理禁止領域R1中にある場合、マイクロプロセッサ1は、割り込み処理許可領域R2の先頭アドレスB1のみにブレイクポイントを設定する。従って、上記実施の形態1と比較すると、ブレイクポイントを設定するための処理を簡略化することができる。
【0045】
実施の形態4.
上記実施の形態1〜3では、割り込み処理許可領域R2中に一又は複数のブレイクポイントが設定された。本実施の形態4では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第1の例について説明する。なお、本実施の形態4において、図1に示した記憶部2は、読み出し及び書き込みが可能なメモリ(RAM)である。
【0046】
図9は、ブレイクポイントを設定するための第1の例を示すフローチャートである。ステップSP4500において、マイクロプロセッサ1は、ブレイクポイントを設定しようとしているアドレス(以下「特定アドレス」と称する)に格納されている命令を、記憶部2内の所定の領域(以下「特定領域」と称する)に保存する。次に、ステップSP4510において、マイクロプロセッサ1は、ブレイクポイントハンドラの先頭アドレスへの分岐命令(ソフトウェアトラップ命令でも良い)を、特定アドレスに書き込む。
【0047】
図10は、ブレイクポイントの設定を解除するための第1の例を示すフローチャートである。ステップSP4600において、マイクロプロセッサ1は、特定アドレスに格納されている、ブレイクポイントハンドラの先頭アドレスへの分岐命令を、ステップSP4500で特定領域に保存しておいた命令に書き換える。
【0048】
このように本実施の形態4に係るブレイクポイントの設定方法によると、タスク処理プログラムの実行がブレイクポイントに到達すると、ブレイクポイントハンドラの先頭アドレスへ分岐されるため、ブレイクポイントハンドラの実行を確実に開始することができる。
【0049】
また、本実施の形態4に係るブレイクポイントの設定解除方法によると、ブレイクポイントハンドラの先頭アドレスへの分岐命令が、元の命令に書き換えられるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【0050】
実施の形態5.
本実施の形態5では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第2の例について説明する。
【0051】
図11は、本実施の形態5に係る割り込み制御装置の構成を模式的に示すブロック図である。マイクロプロセッサ1は、プログラムカウンタ3と、レジスタ41〜4nとを有している。記憶部2は、少なくとも読み出しが可能なメモリ(ROM,RAM)である。
【0052】
図12は、ブレイクポイントを設定するための第2の例を示すフローチャートである。ステップSP5500において、マイクロプロセッサ1は、ブレイクポイントを設定しようとしている特定アドレスを、レジスタ41〜4nに設定する。準備されているレジスタ41〜4nの個数だけ、異なる特定アドレスを設定することができる。
【0053】
図13は、タスク処理プログラムが実行されている場合にマイクロプロセッサ1によって行われる処理の流れを示すフローチャートである。ステップSP5700において、マイクロプロセッサ1は、プログラムカウンタ3に設定されているアドレスと、レジスタ41〜4nに設定されている特定アドレスとが一致するか否かを、逐次判定する。
【0054】
ステップSP5700における判定の結果が「NO」である場合は、ステップSP5710に進み、マイクロプロセッサ1は、プログラムカウンタ3に設定されているアドレスに格納されている命令を実行する。その命令の実行が完了すると、プログラムカウンタ3の設定値が更新される。プログラムカウンタ3に設定されているアドレスが、レジスタ41〜4nに設定されている特定アドレスのいずれかに一致するまで、ステップSP5700,SP5710の処理が繰り返される。即ち、タスク処理プログラムが実行される。
【0055】
ステップSP5700における判定の結果が「YES」である場合、即ち、プログラムカウンタ3に設定されているアドレスと、レジスタ41〜4nに設定されている特定アドレスのいずれかとが一致した場合は、ステップSP5720に進み、ブレイクポイントハンドラの先頭アドレスが、プログラムカウンタ3に設定される。これにより、ステップSP5720に続くステップSP5710において、ブレイクポイントハンドラの実行が開始される。
【0056】
図14は、ブレイクポイントの設定を解除するための第2の例を示すフローチャートである。ステップSP5600において、マイクロプロセッサ1は、全てのレジスタ41〜4nの値を−1に設定することにより、レジスタ41〜4nの設定をクリアする。
【0057】
このように本実施の形態5に係るブレイクポイントの設定方法によると、プログラムカウンタ3に設定されているアドレスと、レジスタ41〜4nに設定されている特定アドレスのいずれかとが一致すると、ブレイクポイントハンドラの先頭アドレスがプログラムカウンタ3に設定される。これにより、ブレイクポイントハンドラの実行を確実に開始することができる。
【0058】
しかも、記憶部2はROMで足りるため、上記実施の形態4と比較すると、記憶部2に関してコストの低減を図ることができる。
【0059】
また、本実施の形態5に係るブレイクポイントの設定解除方法によると、レジスタ41〜4nの設定がクリアされるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【0060】
実施の形態6.
本実施の形態6では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第3の例について説明する。本実施の形態6において、マイクロプロセッサ1は、シミュレータを実行する機能を有している。シミュレータは、シミュレーションを行うためのプログラムである。なお、シミュレーション機能を有するシステムでは、シミュレータを実行するマイクロプロセッサと、シミュレーションの対象となるマイクロプロセッサとが異なるのが一般的であるが、本実施の形態6では、両マイクロプロセッサはいずれもマイクロプロセッサ1である。
【0061】
図15は、タスク処理の流れを示すフローチャートである。上記実施の形態1と同様に、ステップSP6200において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要があるタスク処理を、タスク処理プログラムによって実行する。次に、ステップSP6210において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を、シミュレータによって実行する。
【0062】
図16は、ブレイクポイントを設定するための第3の例を示すフローチャートである。ステップSP6500において、マイクロプロセッサ1は、ブレイクポイントを設定しようとしている特定アドレスを、所定の変数C1〜Cnに設定する。変数C1〜Cnの個数だけ、異なる特定アドレスを設定することができる。
【0063】
図17は、図15のステップSP6210の処理内容を具体的に示すフローチャートである。ステップSP6700において、SPC(Simulation Program Counter)変数が、割り込み処理許可領域R2の先頭アドレスB1に設定される。SPC変数は、シミュレータで実行中の命令が格納されているアドレスを保持する変数である。次に、ステップSP6710において、マイクロプロセッサ1は、SPC変数に設定されているアドレスが、割り込み処理許可領域R2の最終アドレスBnに一致するか否かを判定する。
【0064】
ステップSP6710における判定の結果が「YES」である場合は、処理が終了される。一方、ステップSP6710における判定の結果が「NO」である場合は、ステップSP6720に進み、マイクロプロセッサ1は、SPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致するか否かを、逐次判定する。
【0065】
ステップSP6720における判定の結果が「NO」である場合は、ステップSP6730に進み、マイクロプロセッサ1は、SPC変数に設定されているアドレスに格納されている命令を実行する。その命令の実行が完了すると、SPC変数の設定値が更新される。その後、ステップSP6710における判定が再び実行される。
【0066】
ステップSP6720における判定の結果が「YES」である場合、即ち、SPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致する場合は、マイクロプロセッサ1は、シミュレータの実行を中断する。そして、図6に示した手順に従い、割り込み処理を実行し(ステップSP6740)、ブレイクポイントの設定を解除する(ステップSP6750)。その後、シミュレータの実行に戻り、ステップSP6710における判定が再び実行される。
【0067】
図18は、ブレイクポイントの設定を解除するための第3の例を示すフローチャートであり、図17のステップSP6750の処理内容を具体的に示したものに相当する。ステップSP6600において、マイクロプロセッサ1は、全ての変数C1〜Cnの値を−1に設定することにより、変数C1〜Cnの設定をクリアする。
【0068】
上記実施の形態5に係るブレイクポイントの設定方法では、設定できるブレイクポイントの個数の上限は、マイクロプロセッサ1が有するレジスタ41〜4nの個数に制限される。従って、多数のブレイクポイントを設定したい場合には、それに応じて多数のレジスタ41〜4nを準備する必要があり、コストが上昇する。これに対し、本実施の形態6に係るブレイクポイントの設定方法によると、変数C1〜Cnを保存しておくためのメモリ容量の範囲内で、ブレイクポイントを設定できる。そのため、多数のブレイクポイントを設定したい場合であっても、コストの上昇を抑制することができる。
【0069】
また、本実施の形態6に係るブレイクポイントの設定解除方法によると、変数C1〜Cnの設定がクリアされるため、ブレイクポイントの設定が解除された後にブレイクポイントハンドラの実行が開始されることを回避することができる。
【0070】
実施の形態7.
本実施の形態7では、ブレイクポイントを設定するための、及びブレイクポイントの設定を解除するための、第4の例について説明する。本実施の形態7において、マイクロプロセッサ1は、トランスレータを実行する機能を有している。トランスレータは、トランスレーション(変換)を行うためのプログラムである。トランスレーション実行では、ある命令が別の命令に変換され、変換後の命令が実行される。なお、トランスレーション機能を有するシステムでは、トランスレータを実行するマイクロプロセッサと、変換後の命令を実行するマイクロプロセッサとが異なるのが一般的であるが、本実施の形態7では、両マイクロプロセッサはいずれもマイクロプロセッサ1である。
【0071】
図19は、タスク処理の流れを示すフローチャートである。上記実施の形態1と同様に、ステップSP7200において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要があるタスク処理を、タスク処理プログラムによって実行する。次に、ステップSP7210において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を、トランスレータによって実行する。
【0072】
図20は、図19のステップSP7210の処理内容を具体的に示すフローチャートである。ステップSP7700において、TPC(Translation Program Counter)変数が、割り込み処理許可領域R2の先頭アドレスB1に設定される。TPC変数は、トランスレータで実行中のプログラムを構成する複数の命令のうち、そのとき変換しようとしている命令が格納されているアドレスを保持する変数である。次に、ステップSP7710において、マイクロプロセッサ1は、TPC変数に設定されているアドレスが、割り込み処理許可領域R2の最終アドレスBnに一致するまで、トランスレーション実行を継続する。
【0073】
本実施の形態7に係る、ブレイクポイントを設定するための第4の例では、上記実施の形態6と同様に、マイクロプロセッサ1は、ブレイクポイントを設定しようとしている特定アドレスを、所定の変数C1〜Cnに設定する。また、本実施の形態7に係る、ブレイクポイントの設定を解除するための第4の例では、上記実施の形態6と同様に、マイクロプロセッサ1は、全ての変数C1〜Cnの値を−1に設定することにより、変数C1〜Cnの設定をクリアする。
【0074】
図21,22は、図20のステップSP7710の処理内容を具体的に示すフローチャートである。ステップSP7800において、マイクロプロセッサ1は、TPC変数に設定されているアドレスが、割り込み処理許可領域R2の最終アドレスBnに一致しているか否かを判定する。
【0075】
ステップSP7800における判定の結果が「YES」である場合は、処理が終了される。一方、ステップSP7800における判定の結果が「NO」である場合は、ステップSP7810に進み、マイクロプロセッサ1は、変換後の命令を格納するためのバッファを空にする。次に、ステップSP7820において、マイクロプロセッサ1は、TPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致するか否かを、逐次判定する。
【0076】
ステップSP7820における判定の結果が「YES」である場合、即ち、TPC変数に設定されているアドレスと、変数C1〜Cnに設定されている特定アドレスのいずれかとが一致した場合は、マイクロプロセッサ1は、ブレイクポイントハンドラをサブルーチンとして実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファ中に追加する。
【0077】
ステップSP7830に引き続き、及び、ステップSP7820における判定の結果が「NO」である場合は、ステップSP7840において、マイクロプロセッサ1は、TPC変数に設定されているアドレスに格納されている命令が、無条件分岐命令であるか否かを判定する。
【0078】
ステップSP7840における判定の結果が「YES」である場合は、ステップSP7900に進み、マイクロプロセッサ1は、分岐先のアドレスからトランスレーション実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファの最後に追加する。このネイティブ命令は、トランスレーション処理の先頭へ分岐するようなネイティブ命令である。一方、ステップSP7840における判定の結果が「NO」である場合は、ステップSP7850に進み、マイクロプロセッサ1は、TPC変数に設定されているアドレスに格納されている命令が、条件付き分岐命令であるか否かを判定する。
【0079】
ステップSP7850における判定の結果が「YES」である場合は、ステップSP7880に進み、マイクロプロセッサ1は、その条件が満足されているときは分岐先のアドレスからトランスレーション実行し、その条件が満足されていないときはTPC変数に設定されているアドレスの次のアドレスからトランスレーション実行するようなネイティブ命令を生成し、そのネイティブ命令をバッファ中に追加する。
【0080】
ステップSP7900,SP7880に引き続き、ステップSP7890において、バッファの先頭へのジャンプが実行される。その結果、これまでにバッファ中に蓄積されたネイティブ命令が、トランスレーション実行されることになる。このとき、ステップSP7830で生成されたネイティブ命令(即ちブレイクポイントハンドラを実行するようなネイティブ命令)がバッファ中に存在していれば、そのネイティブ命令がトランスレーション実行されることにより、ブレイクポイントハンドラが実行される。即ち、割り込み処理が実行される。さらに、バッファの最後には、トランスレーション処理に戻る命令が格納されているので、バッファ中に蓄積されているネイティブ命令のトランスレーション実行が完了した後は、トランスレーション処理(図21の先頭)に戻り、以降、実行が継続されることになる。
【0081】
ステップSP7850における判定の結果が「NO」である場合は、ステップSP7860に進み、マイクロプロセッサ1は、TPC変数に設定されているアドレスに格納されている命令に対応するネイティブ命令を生成し、そのネイティブ命令をバッファの最後に追加する。次に、ステップSP7870において、次の命令が格納されているアドレスが、TPC変数に設定される。即ち、TPC変数が更新される。その後、ステップSP7820における判定が再び実行される。
【0082】
本実施の形態7に係るブレイクポイントの設定方法及びブレイクポイントの設定解除方法によっても、上記実施の形態6と同様の効果を得ることができる。
【0083】
実施の形態8.
図23,24は、上記実施の形態1を基礎として、本実施の形態8に係る割り込み制御方法における処理の流れを示すフローチャートである。本実施の形態8に係る割り込み制御装置は、図4に示したタスク処理プログラムの処理の代わりに、図23に示すタスク処理プログラムの処理を実行する。また、図5に示した割り込みハンドラの処理の代わりに、図24に示す割り込みハンドラの処理を実行する。
【0084】
図23を参照して、ます、ステップSP8200において、割り込み処理許可フラグが「許可」又は「不許可」に設定される。次に、ステップSP8210において、マイクロプロセッサ1は、割り込み処理に対する排他的実行が必要な場合があるタスク処理を実行する。次に、ステップSP8220において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。
【0085】
図24を参照して、ステップSP8300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP8310において、マイクロプロセッサ1は、割り込み処理許可フラグが「許可」に設定されているか否かを判定する。
【0086】
ステップSP8310における判定の結果が「YES」である場合、即ち割り込み処理許可フラグが「許可」に設定されている場合は、ステップSP8320に進み、マイクロプロセッサ1は、ブレイクポイントの設定処理を行うことなく、割り込み処理を直ちに実行する。
【0087】
一方、ステップSP8310における判定の結果が「NO」である場合、即ち割り込み処理許可フラグが「不許可」に設定されている場合は、ステップSP8330に進み、マイクロプロセッサ1は、図5のステップSP1310と同様に、割り込み処理許可領域R2内に複数のブレイクポイントを設定する。
【0088】
ステップSP8320,SP8330に引き続き、ステップSP8340において、マイクロプロセッサ1は、ステップSP8300で保存しておいたコンテキストを復元する。次に、ステップSP8350において、マイクロプロセッサ1は、割り込まれたアドレスへジャンプする。これにより、中断されていたタスク処理プログラムの実行が再開される。
【0089】
ステップSP8310における判定の結果が「NO」であった場合、再開されたタスク処理プログラムの実行は、ステップSP8330で設定された複数のブレイクポイントのいずれかに、やがて到達する。すると、上記実施の形態1と同様に、図6に示したブレイクポイントハンドラによって割り込み処理が実行される。
【0090】
なお、以上の説明では、上記実施の形態1を基礎として本実施の形態8に係る発明を適用する例について述べたが、上記実施の形態2〜7を基礎として、本実施の形態8に係る発明を適用することも可能である。
【0091】
このように本実施の形態8に係る割り込み制御方法及び割り込み制御装置によると、タスク処理と割り込み処理とを排他的に実行するか非排他的に実行するかを、割り込み処理許可フラグの設定によって切り換えることができる。
【0092】
実施の形態9.
タスク処理と割り込み処理とを排他的に実行しなければならない理由は、以下の通りである。即ち、タスク処理及び割り込み処理の両者が共通にアクセスする変数(グローバル変数)が存在し、一方がそれを変更し、他方がそれを参照するという状況において、一方によるグローバル変数の変更が完了する前に、他方によってグローバル変数を使用した処理が行われることを、回避しなければならないからである。
【0093】
例えば、タスク処理によって所定のグローバル変数Gが変更され、割り込み処理によってグローバル変数Gが参照される状況を考える。このとき、タスク処理においては、グローバル変数Gを所定のレジスタにロードする第1ステップと、レジスタの設定値を用いて所定の処理を実行した後、レジスタの設定値を変更する第2ステップと、グローバル変数Gを、変更後のレジスタの設定値に書き換える第3ステップとが、この順に実行される。ここで、第3ステップが完了する前にグローバル変数Gを用いて割り込み処理を実行してしまうと、変更前のグローバル変数Gが参照されることとなり、支障が発生する。
【0094】
本実施の形態9では、かかる支障の発生を適切に回避し得る、割り込み制御方法及び割り込み制御装置について説明する。なお、説明の簡略化のため、グローバル変数Gが1個のみ存在する場合を例にとり説明する。
【0095】
図25は、本実施の形態9に係る割り込み制御装置の構成を模式的に示すブロック図である。マイクロプロセッサ1は、所定のレジスタ6を有している。
【0096】
図26は、記憶部2の記憶空間の一部を抜き出して示す模式図である。記憶部2には、タスク処理プログラムを構成する複数の命令、即ちタスク処理を実行するための複数の命令が格納されている。アドレスA1には、グローバル変数Gをレジスタ6へロードすることを指示する命令が格納されている。アドレスA8には、グローバル変数Gをレジスタ6の設定値に書き換えることを指示する命令が格納されている。アドレスA2〜A7に格納された命令によって、レジスタ6の設定値を用いた処理が実行された後、レジスタ6の設定値が変更される。アドレスA9〜Anに格納された命令によっては、グローバル変数Gを用いたタスク処理が実行されない。即ち、アドレスA9〜Anに格納された命令を実行することによるタスク処理は、本来、割り込み処理に対して排他的に実行する必要がないタスク処理である。
【0097】
図27〜30は、本実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。以下、図25〜30を参照して、本実施の形態9に係る割り込み制御装置の動作について説明する。
【0098】
図27を参照して、まず、タスク処理プログラムの実行に先立って、開始時処理が一度だけ実行される。ステップSP9100において、マイクロプロセッサ1は、グローバル変数使用領域及びグローバル変数不使用領域を設定する。グローバル変数使用領域内に含めるべき命令及びグローバル変数不使用領域内に含めるべき命令は、例えば、タスク処理プログラムの設計者によって、プログラムの設計段階で適宜決定される。グローバル変数使用領域を特定する特定情報、及びグローバル変数不使用領域を特定する特定情報は、記憶部2のROM内に予め記憶されている。具体的に、ステップSP9100においてマイクロプロセッサ1は、ROM内に記憶されている上記2つの特定情報をロードして、記憶部2のRAM内に記憶する処理を行う。これによって、グローバル変数使用領域及びグローバル変数不使用領域が設定される。図28〜30に示すその後の処理において、タスク処理プログラムを構成する各命令がグローバル変数使用領域中にあるかグローバル変数不使用領域中にあるかを判断する際には、記憶部2のRAMに記憶されている上記特定情報が参照されることになる。
【0099】
例えば図26を参照して、グローバル変数使用領域R1aを特定する特定情報は、その領域に属する命令のアドレスA1〜A8で表現されており、グローバル変数不使用領域R1bを特定する特定情報は、その領域に属する命令のアドレスA9〜Anで表現されている。また、グローバル変数使用領域及びグローバル変数不使用領域の各々が、アドレスが連続する複数の命令で構成されている場合には、各特定情報は、グローバル変数使用領域及びグローバル変数不使用領域の各々の先頭アドレスと最終アドレスとによって表現してもよい。
【0100】
次に、ステップSP9110において、マイクロプロセッサ1は、図28に示す所定のルーチンを登録する。図28を参照して、ステップSP9400では、グローバル変数Gがレジスタ6の設定値に書き換えられる。ステップSP9410では、変更後のグローバル変数Gを用いて割り込み処理が実行される。ステップSP9420では、グローバル変数Gがレジスタ6にロードされる。
【0101】
図29を参照して、開始時処理が完了した後、タスク処理プログラムの実行が開始される。ステップSP9200において、マイクロプロセッサ1は、グローバル変数Gをレジスタ6にロードする。次に、ステップSP9210において、マイクロプロセッサ1は、レジスタ6の設定値を使用した所定のタスク処理を実行する。このタスク処理によって、レジスタ6の設定値が変更される。次に、ステップSP9220において、マイクロプロセッサ1は、グローバル変数Gを、変更後のレジスタ6の設定値に書き換える。次に、ステップSP9230において、マイクロプロセッサ1は、割り込み処理に対して排他的に実行する必要がないタスク処理を実行する。
【0102】
マイクロプロセッサ1がタスク処理プログラムを実行している最中に、割り込み要求が発生したものとする。すると、マイクロプロセッサ1は、タスク処理プログラムの実行を中断して、図30に示す割り込みハンドラの実行を開始する。
【0103】
図30を参照して、まず、ステップSP9300において、マイクロプロセッサ1は、割り込みハンドラに移行する直前のマイクロプロセッサ1のコンテキストを保存する。次に、ステップSP9310において、マイクロプロセッサ1は、割り込みハンドラが起動された時点(即ち、タスク処理プログラムが中断された時点)で実行中であった命令が格納されているアドレスを取得する。次に、ステップSP9320において、マイクロプロセッサ1は、ステップSP9310で取得されたアドレスが、図26のグローバル変数使用領域R1a中にあるか否かを判定する。
【0104】
ステップSP9320における判定の結果が「NO」である場合、即ち、ステップSP9310で取得されたアドレスがグローバル変数不使用領域R1b中にある場合は、ステップSP9330に進み、マイクロプロセッサ1は、割り込み処理を実行する。
【0105】
一方、ステップSP9320における判定の結果が「YES」である場合、即ち、ステップSP9310で取得されたアドレスがグローバル変数使用領域R1a中にある場合は、ステップSP9340に進み、マイクロプロセッサ1は、図28に示したルーチンを呼び出して実行する。
【0106】
ステップSP9330,SP9340に引き続き、図7に示したステップSP2350,SP2360の処理と同様に、ステップSP9350,SP9360の処理が実行される。
【0107】
このように本実施の形態9に係る割り込み制御方法及び割り込み制御装置によると、割り込み要求が発生していない通常動作中においては、本来のタスク処理に追加される処理(割り込みマスクの設定等)が全く行われない。従って、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【0108】
また、グローバル変数使用領域R1a中のいずれかの命令が実行されている最中に割り込み要求が発生すると、予め登録しておいた所定のルーチンが呼び出される。そして、そのルーチンにおいては、割り込み処理の実行が開始される前に、グローバル変数Gがレジスタ6の設定値に書き換えられる。従って、割り込み処理がグローバル変数Gを参照する時には、グローバル変数Gは、タスク処理の実行によって更新された最新の値にすでに書き換えられている。その結果、更新前のグローバル変数Gが割り込み処理において参照されてしまうことに起因する上記支障の発生を、適切に回避することができる。
【0109】
【発明の効果】
第1及び第2の発明によると、割り込み要求が発生しない限り、タスク処理には排他制御に起因するオーバーヘッドが無いため、タスク処理の実行速度が低下することを回避できる。
【図面の簡単な説明】
【図1】本発明の実施の形態1に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図2】記憶部の記憶空間の一部を抜き出して示す模式図である。
【図3】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図4】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図5】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図6】本発明の実施の形態1に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図7】本発明の実施の形態2に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図8】本発明の実施の形態3に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図9】ブレイクポイントを設定するための第1の例を示すフローチャートである。
【図10】ブレイクポイントの設定を解除するための第1の例を示すフローチャートである。
【図11】本発明の実施の形態5に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図12】ブレイクポイントを設定するための第2の例を示すフローチャートである。
【図13】タスク処理プログラムが実行されている場合にマイクロプロセッサによって行われる処理の流れを示すフローチャートである。
【図14】ブレイクポイントの設定を解除するための第2の例を示すフローチャートである。
【図15】タスク処理の流れを示すフローチャートである。
【図16】ブレイクポイントを設定するための第3の例を示すフローチャートである。
【図17】図15のステップSP6210の処理内容を具体的に示すフローチャートである。
【図18】ブレイクポイントの設定を解除するための第3の例を示すフローチャートである。
【図19】タスク処理の流れを示すフローチャートである。
【図20】図19のステップSP7210の処理内容を具体的に示すフローチャートである。
【図21】図20のステップSP7710の処理内容を具体的に示すフローチャートである。
【図22】図20のステップSP7710の処理内容を具体的に示すフローチャートである。
【図23】本発明の実施の形態8に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図24】本発明の実施の形態8に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図25】本発明の実施の形態9に係る割り込み制御装置の構成を模式的に示すブロック図である。
【図26】記憶部の記憶空間の一部を抜き出して示す模式図である。
【図27】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図28】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図29】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【図30】本発明の実施の形態9に係る割り込み制御方法における処理の流れを示すフローチャートである。
【符号の説明】
1 マイクロプロセッサ、2 記憶部、3 プログラムカウンタ、41〜4n,6 レジスタ。
Claims (15)
- (a)タスク処理を実行するための命令が記述された第1のプログラム中に、前記タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第1領域と、前記タスク処理を前記割り込み処理に対して排他的に実行することが必要でない第2領域とを規定するステップと、
(b)前記第1のプログラムの実行中に割り込み要求が発生した場合、前記第1のプログラムの実行を中断し、前記第2領域中に、少なくとも一つのブレイクポイントを設定するステップと、
(c)前記ステップ(b)で中断された前記第1のプログラムの実行を、前記ブレイクポイントの設定が完了した後に再開するステップと、
(d)前記ステップ(c)で再開された前記第1のプログラムの実行が前記ブレイクポイントに到達した場合、前記第1のプログラムの実行を中断し、前記割り込み処理を実行するステップと、
(e)前記割り込み処理の実行が完了した後に、前記ブレイクポイントの設定を解除するステップと
を備える、割り込み制御方法。 - 前記ブレイクポイントは複数であり、
前記第2領域内には、複数の分岐命令が含まれており、
前記ステップ(b)においては、前記第2領域の先頭番地、前記第2領域の最終番地、及び、前記複数の分岐命令が格納されている複数の番地に、前記ブレイクポイントがそれぞれ設定される、請求項1に記載の割り込み制御方法。 - 前記ブレイクポイントは複数であり、
前記第2領域内には、複数の分岐命令が含まれており、
前記ステップ(b)は、
(b−1)前記第1のプログラムが中断された時点で実行中であった命令が格納されている番地を取得するステップと、
(b−2)前記番地が前記第1領域に属する場合に実行され、前記第2領域の先頭番地のみに前記ブレイクポイントを設定するステップと、
(b−3)前記番地が前記第2領域に属する場合に実行され、前記第2領域の先頭番地、前記第2領域の最終番地、及び、前記複数の分岐命令が格納されている複数の番地に、前記ブレイクポイントをそれぞれ設定するステップと
を有する、請求項1に記載の割り込み制御方法。 - (f)割り込み処理許可フラグを設定するステップをさらに備え、
前記割り込み処理許可フラグが「許可」に設定されている場合において、前記第1のプログラムの実行中に前記割り込み要求が発生した場合には、前記第1のプログラムの実行を中断し、前記ステップ(b)〜(e)を実行することなく、前記割り込み処理が実行され、
前記ステップ(b)〜(e)は、前記割り込み処理許可フラグが「不許可」に設定されている場合に実行される、請求項1〜3のいずれか一つに記載の割り込み制御方法。 - (a)タスク処理を実行するための命令が記述された第1のプログラム中に、前記タスク処理を割り込み処理に対して排他的に実行することが必要な場合がある第1領域と、前記タスク処理を前記割り込み処理に対して排他的に実行することが必要でない第2領域とを規定するステップと、
(b)前記第1のプログラムの実行中に割り込み要求が発生した場合、前記第1のプログラムの実行を中断し、中断された時点で実行中であった命令が格納されている番地を取得するステップと、
(c)前記番地が前記第1領域に属する場合には、前記第2領域中にブレイクポイントを設定し、一方、前記番地が前記第2領域に属する場合には、前記割り込み処理を実行するステップと、
(d)前記ステップ(b)で中断された前記第1のプログラムの実行を、前記ステップ(c)の後に再開するステップと、
(e)前記ステップ(c)で前記番地が前記第1領域に属していた場合において、前記ステップ(d)で再開された前記第1のプログラムの実行が前記ブレイクポイントに到達した場合、前記第1のプログラムの実行を中断し、前記割り込み処理を実行するステップと、
(f)前記ステップ(e)における前記割り込み処理の実行が完了した後に、前記ブレイクポイントの設定を解除するステップと
を備える、割り込み制御方法。 - 前記ステップ(c)において、前記ブレイクポイントは、前記第2領域の先頭番地のみに設定される、請求項5に記載の割り込み制御方法。
- (g)割り込み処理許可フラグを設定するステップをさらに備え、
前記割り込み許可フラグが「許可」に設定されている場合において、前記第1のプログラムの実行中に前記割り込み要求が発生した場合には、前記第1のプログラムの実行を中断し、前記ステップ(b)〜(f)を実行することなく、前記割り込み処理が実行され、
前記ステップ(b)〜(f)は、前記割り込みフラグが「不許可」に設定されている場合に実行される、請求項5又は6に記載の割り込み制御方法。 - 前記ブレイクポイントを設定するための処理は、
(x−1)前記ブレイクポイントを設定しようとしている特定番地に格納されている第1の命令を保存するステップと、
(x−2)前記割り込み処理を実行するための第2のプログラムの先頭番地への分岐を指示する第2の命令を、前記特定番地に書き込むステップと
を有する、請求項1〜7のいずれか一つに記載の割り込み制御方法。 - 前記ブレイクポイントの設定を解除するための処理は、
(y)前記特定番地に格納されている前記第2の命令を、前記第1の命令に書き換えるステップ
を有する、請求項8に記載の割り込み制御方法。 - 前記ブレイクポイントを設定するための処理は、
(x−1)前記ブレイクポイントを設定しようとしている特定番地を、所定のレジスタに設定するステップと、
(x−2)前記第1のプログラムを実行する過程において、プログラムカウンタに設定されている番地と、前記所定のレジスタに設定されている前記特定番地とを、逐次比較するステップと、
(x−3)前記プログラムカウンタに設定されている前記番地と、前記所定のレジスタに設定されている前記特定番地とが一致した場合、前記割り込み処理を実行するための第2のプログラムの先頭番地を、前記プログラムカウンタに設定するステップと
を有する、請求項1〜7のいずれか一つに記載の割り込み制御方法。 - 前記ブレイクポイントの設定を解除するための処理は、
(y)前記所定のレジスタの設定をクリアするステップ
を有する、請求項10に記載の割り込み制御方法。 - 前記ブレイクポイントを設定するための処理は、
(x)シミュレータによって実行され、前記ブレイクポイントを設定しようとしている特定番地を、所定の変数に設定するステップ
を有する、請求項1〜7のいずれか一つに記載の割り込み制御方法。 - 前記ブレイクポイントを設定するための処理は、
(x)トランスレータによって実行され、前記ブレイクポイントを設定しようとしている特定番地を、所定の変数に設定するステップ
を有する、請求項1〜7のいずれか一つに記載の割り込み制御方法。 - 前記ブレイクポイントの設定を解除するための処理は、
(y)前記所定の変数の設定をクリアするステップ
を有する、請求項12又は13に記載の割り込み制御方法。 - (a)タスク処理を実行するための命令が記述された第1のプログラム中に、所定の変数をレジスタにロードして使用する処理が実行される第1領域と、前記所定の変数を使用した処理が実行されない第2領域とを規定するステップと、
(b)前記第1のプログラムの実行中に、前記所定の変数を使用した処理が実行される割り込み要求が発生した場合、前記第1のプログラムの実行を中断し、中断された時点で実行中であった命令が格納されている番地を取得するステップと、
(c)前記番地が前記第2領域に属する場合において、割り込み処理を実行するステップと、
(d)前記番地が前記第1領域に属する場合において、前記所定の変数を前記レジスタの内容に書き換え、書き換え後の前記所定の変数を用いて割り込み処理を実行するステップと
を備える、割り込み制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003066292A JP2004272844A (ja) | 2003-03-12 | 2003-03-12 | 割り込み制御方法 |
US10/674,529 US7143274B2 (en) | 2003-03-12 | 2003-10-01 | Setting breakpoint for postponed interrupt processing in subsequent area while executing interrupt-exclusive task area to avoid slow down |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003066292A JP2004272844A (ja) | 2003-03-12 | 2003-03-12 | 割り込み制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004272844A true JP2004272844A (ja) | 2004-09-30 |
Family
ID=32959240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003066292A Pending JP2004272844A (ja) | 2003-03-12 | 2003-03-12 | 割り込み制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7143274B2 (ja) |
JP (1) | JP2004272844A (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730350B2 (en) * | 2005-04-28 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Method and system of determining the execution point of programs executed in lock step |
US20080010536A1 (en) * | 2006-06-12 | 2008-01-10 | Cary Lee Bates | Breakpoints with Separate Conditions |
US8125243B1 (en) * | 2007-03-12 | 2012-02-28 | Cypress Semiconductor Corporation | Integrity checking of configurable data of programmable device |
JP2009025939A (ja) * | 2007-07-18 | 2009-02-05 | Renesas Technology Corp | タスク制御方法及び半導体集積回路 |
US20100287553A1 (en) * | 2009-05-05 | 2010-11-11 | Sap Ag | System, method, and software for controlled interruption of batch job processing |
US11163572B2 (en) * | 2014-02-04 | 2021-11-02 | Micron Technology, Inc. | Memory systems and memory control methods |
US10613897B1 (en) * | 2016-12-21 | 2020-04-07 | Ca, Inc. | Systems and methods for creating program-specific execution environments |
CN107203377B (zh) * | 2017-04-24 | 2021-03-02 | 维沃移动通信有限公司 | 一种移动终端的唤醒方法和移动终端 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182208B1 (en) * | 1998-08-14 | 2001-01-30 | Lucent Technologies, Inc. | System for debugging (N) break points by dividing a computer program to (n+1) regions each contains no break point and using two registers to define the start and end addresses of each region |
FR2795537B1 (fr) * | 1999-06-24 | 2001-09-21 | Cit Alcatel | Procede d'execution d'une tache en temps reel par un processeur de traitement numerique du signal |
JP4057769B2 (ja) | 2000-08-31 | 2008-03-05 | 松下電器産業株式会社 | 割り込み管理装置及び割り込み管理方法 |
US6832338B2 (en) * | 2001-04-12 | 2004-12-14 | International Business Machines Corporation | Apparatus, method and computer program product for stopping processors without using non-maskable interrupts |
US7003610B2 (en) * | 2002-09-20 | 2006-02-21 | Lsi Logic Corporation | System and method for handling shared resource writes arriving via non-maskable interrupts (NMI) in single thread non-mission critical systems with limited memory space |
-
2003
- 2003-03-12 JP JP2003066292A patent/JP2004272844A/ja active Pending
- 2003-10-01 US US10/674,529 patent/US7143274B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7143274B2 (en) | 2006-11-28 |
US20040181793A1 (en) | 2004-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5323828B2 (ja) | 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路 | |
JP6009529B2 (ja) | マルチスレッドシステムの中でイベントを設定するための技術 | |
GB2478733A (en) | Stack management with multiple levels of exception | |
WO2011104825A1 (ja) | 更新方法、更新装置、および更新プログラム | |
JP2011164971A (ja) | Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム | |
US7984432B2 (en) | Method for patching a read-only memory and a data processing system comprising a means of patching the read-only memory based on patch contexts | |
US20150160940A1 (en) | Method for changing the software in the memory of an electronic control unit | |
JP2004272844A (ja) | 割り込み制御方法 | |
JP2009093344A (ja) | マイクロコンピュータ、その使用方法、及び電子制御装置 | |
JP2008537248A (ja) | デジタルシグナルプロセッサ上でのマルチタスクの実施 | |
JP5870043B2 (ja) | 起動制御装置、情報機器および起動制御方法 | |
JP2011070290A (ja) | データプロセッサ | |
JP2007537498A (ja) | 1次オペレーティングシステムと並存して2次オペレーティングシステムを作動させる方法および装置 | |
JP2003216449A (ja) | パッチ処理システム | |
JP6252321B2 (ja) | メモリ制御方法及び情報処理装置 | |
JP3395727B2 (ja) | 演算装置および方法 | |
JP2011191843A (ja) | 割込干渉解析装置、割込干渉解析方法、及び割込干渉解析プログラム | |
TWI682323B (zh) | 伺服器及其設定方法 | |
KR102584039B1 (ko) | 콘텍스트 데이터 관리 | |
JP3617445B2 (ja) | 情報処理装置 | |
JP2005284925A (ja) | コンピュータシステムおよびプログラム更新方法 | |
JPH1021067A (ja) | プログラムの動的修正方法 | |
JP2022083141A (ja) | 制御装置および処理方法 | |
KR100631396B1 (ko) | 반도체장치 | |
JP2002132538A (ja) | ブレークポイント設定方法 |