JP3617445B2 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP3617445B2 JP3617445B2 JP2000352796A JP2000352796A JP3617445B2 JP 3617445 B2 JP3617445 B2 JP 3617445B2 JP 2000352796 A JP2000352796 A JP 2000352796A JP 2000352796 A JP2000352796 A JP 2000352796A JP 3617445 B2 JP3617445 B2 JP 3617445B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- processing
- priority
- global variable
- interrupt
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、割込処理が実行される複数の処理プログラム間で割り込みの禁止/許可を実行する技術に関する。
【0002】
【従来の技術】
例えば車両に搭載される電子制御装置(以下「ECU」という。)に用いられる制御プログラムでは、制御応答性や安全性の確保等から所定の処理をリアルタイムに実行する必要性がある。そのため、このようなリアルタイム性を必要とする処理(リアルタイム処理)は、メインルーチンとは別の割込ルーチンとして用意されるのが一般的である。割り込みルーチンは、例えばイベントの発生等をトリガとしてメインルーチンの実行中に優先して実行される。優先して実行されるとは、割込ルーチンの実行により一時的にメインルーチンの実行が中断され、割込ルーチン終了後に、再びその中断位置からメインルーチンが実行されることをいう。
【0003】
近年では、上述したECUの制御プログラムもOS(オペレーティング・システム)上で動作するようになっており、メインルーチンや割込ルーチン等の実行単位がタスクと呼ばれ、OSにより管理されている。
このタスクには実行の優先度を示すレベル(タスクレベル)が設定されており、このタスクレベルに基づいて上述したような割込処理を実現している。つまり、OSの管理の下、相対的にレベルの高いタスクである上位タスクは、相対的にレベルの低いタスクである下位タスクに優先する(割り込む)。上述した例で言えば、メインルーチンによる処理が下位タスクに相当し、割込ルーチンによる処理が上位タスクに相当する。
【0004】
このようなタスク概念の導入は、実行の優先度であるタスクレベルを設定するという極めて簡単な情報記述だけで何等プログラム間の実行タイミング等を記述する必要をなくし、割込処理の設計を容易にした。
一方、イベント発生というような、下位タスクの処理タイミングに関係しないタイミングで、上位タスクが割り込む。そのため、下位タスクに不具合が生じる可能性がある。その一つのケースは、上位タスクと下位タスクとで共通の変数を更新又は参照(以下「操作」という。)する場合である。この共通の変数は、例えばプログラム全体が複数の関数にて構成されているとき、これら関数間で共通にアクセスできる記憶領域に記憶されるものであり、グローバル変数(大域変数)と呼ばれる。
【0005】
例えば、下位タスクにて2つのグローバル変数a,bを参照し、上位タスクにて同一のグローバル変数a,bを更新する場合を考える。このとき、下位タスクにて変数aが参照された後、変数bが参照される前に上位タスクが割り込むと、グローバル変数a,bが共に更新されてしまい、その後、下位タスクで参照されるグローバル変数bは上位タスクによる更新後のものになってしまう。つまり、一方のグローバル変数aについては時間的に古いものが参照され、他方のグローバル変数bについては時間的に新しいものが参照されるのである。このような状態は、グローバル変数の同時性(一貫性、無矛盾性などと呼ばれることもある)が失われた状態と表現され、この同時性が必要とされる場合、例えば時間的な相関関係が変数間に存在するような場合には、制御上の問題を招く事態となる。
【0006】
また例えば、下位タスクにて2つのグローバル変数a,bを更新し上位タスクにて同一のグローバル変数a,bを参照する場合も、同時性が失われるという同様の不具合が発生する。
なお、上述した例では2つのグローバル変数を処理対象としていたが、同時性を必要とする3つ以上のグローバル変数を処理対象とする場合も同様である。また、1つのグローバル変数を処理対象とする場合であっても同様である。例えば下位タスクで2回連続して同一のグローバル変数を読み出す場合を考えると、このときは、下位タスクによる1回目の変数の参照後に上位タスクでその変数が更新されると、2回目に読み出された変数は、1回目に読み出された変数と異なるものとなってしまい、同時性が失われることになる。
【0007】
また、同時性が失われるという不具合以外にも、例えば、下位タスク及び上位タスクで同一のグローバル変数を更新する場合、上位タスクが割り込んで更新したグローバル変数を下位タスクが書き戻してしまういわゆるリードモディファイライトが生じる可能性がある。
【0008】
従来、このような不具合を回避するため、下位タスクのプログラム中には、必要に応じて割込禁止/許可命令を記述していた。割込禁止命令は、上位タスクの割り込みを禁止するものであり、割込許可命令は上位タスクの割り込みを許可するものである。つまり、割込禁止命令と割込許可命令で挟まれた処理ステップの途中では、上位タスクは割り込めない。したがって、同時性を必要とするグローバル変数に係る処理の前後にそれぞれ割込禁止命令、割込許可命令を記述しておけば、上位タスクによる変数操作がなされないため、グローバル変数の同時性が確保できる。また、リードモディファイライトが生じる可能性があるグローバル変数に係る処理の前後にそれぞれ割込禁止命令、割込許可命令を記述しておけば、グローバル変数のリードモディファイライトを防止することができる。
【0009】
【発明が解決しようとする課題】
上述したような割込禁止/許可命令は、上位タスクの割り込みを禁止/許可するものであるため、下位タスクのプログラム中に記述すべきものである。そのため、次に示すような問題があった。
【0010】
▲1▼プログラムの作成時に、作業者が各タスクのタスクレベルを考慮して割込禁止/許可命令を記述しなければならないため、プログラム作成時間がその分増加する。
▲2▼また、設定されたタスクレベルが実行途中で変動するプログラムを作成する場合は、このような実行途中のタスクレベルの変動までも考慮して、割込禁止/許可命令を記述する必要がある。これは上記▲1▼に示すプログラム作成時間をさらに増加させる要因となる。
【0011】
▲3▼さらに、実行単位の処理プログラムを再利用して新たなプログラムを作成しようとしたとき、タスクレベルが変わってくることがある。その場合、割込禁止/許可命令をプログラム中に新たに挿入したり、プログラム中から削除したりする必要が生じる。これは各処理プログラムの再利用性を低下させることになる。
【0012】
このような問題を解決する手法としては、下位タスクだけでなく、本来割り込み禁止を必要としない上位タスクのプログラム中にも、グローバル変数に係る処理の前後に割込禁止/許可命令を記述しておくことが考えられる。
ところが、本来割り込み禁止を必要としないタスクのプログラム中に割込禁止/許可命令を記述すると、そのタスクに対して上位のタスクは、たとえグローバル変数の操作を行わないものであっても、割込禁止/許可命令で挟まれた処理ステップの途中では、割り込めないという事態となる。これは、リアルタイム性の高い上位タスクの処理の遅延を招く。割込禁止/許可命令で挟まれた処理ステップでは、実質的に優先度が逆転することになるからである。
【0013】
すなわち、本来割り込み禁止を必要としないタスクのプログラム中に割込禁止/許可命令を記述すると、無駄な割込禁止期間が増加することによって、リアルタイム性の高いタスクの実行が遅延することになり、制御応答性や安全性の確保等の実現が困難になるなど、制御性能に影響を及ぼす結果を招いてしまう。
【0014】
本発明は、上述した問題を解決するためになされたものであり、実行単位となる処理プログラムの優先度を考慮して作業者が割込禁止/許可命令を記述する必要をなくし、しかも、無駄な割込禁止期間が発生することを極力抑えることを目的とする。
【0015】
【課題を解決するための手段及び発明の効果】
上述した目的を達成するためになされた請求項1に記載の情報処理装置は、実行単位となる複数の処理プログラムを当該処理プログラム毎に設定される優先度に基づき実行することによって、一連の機能を実現する。例えばOS上でタスク管理されるプログラムであれば、この処理プログラム毎にタスクが生成されることになり、タスク毎に設定されるタスクレベルがここでいう優先度に相当する。なお、以下では各機能の実現において処理プログラムを主体とした表現を便宜上用いることがあるが、実際には情報処理装置の備えるいわゆるCPUが主体となって処理プログラムを実行することによって各機能が実現されることは言うまでもない。
【0016】
本発明は、上述したように、優先度の相対的に低い下位プログラムと優先度の相対的に高い上位プログラムとの間で共通に使用されるグローバル変数が、下位プログラムによる操作の途中で上位プログラムの割り込みによって操作される可能性を考慮してなされたものであり、これに対して、次に示すような構成を採用した。
【0017】
すなわち、各処理プログラムでは、グローバル変数の操作に先立って、判断処理を実行し、上位プログラムの割り込みによってグローバル変数が操作される可能性を判断する。そして次に、判断処理によってグローバル変数が操作される可能性があると判断された場合にだけ、禁止処理を実行することによって割り込みを禁止する。
【0018】
本発明は、上述した従来の問題は割込禁止/許可命令が処理プログラム中に固定的に記述されることで発生することに着目したものであり、各処理プログラムにおいて、上位プログラムによってグローバル変数が操作される可能性がある場合には割り込みを禁止し、一方、グローバル変数が操作される可能性がなければ割り込みを禁止しない。つまり、各処理プログラムにおいて、必要に応じて動的に割り込みを禁止するのである。
【0019】
これによって、各処理プログラムに設定される優先度を考慮して作業者が割込禁止/許可命令を記述する必要がなくなる。また、上位プログラムの割り込みによってグローバル変数が操作される可能性がない場合には割り込みが禁止されないため、本来割り込みの禁止を必要としない上位プログラムにおいて割り込みが禁止されることはなく、無駄な割込禁止期間の発生を抑えられる。
【0020】
なお、禁止処理による割り込みの禁止は、マイクロコンピュータ(以下「マイコン」という。)に対するいわゆる割込禁止命令を実行することで実現することが考えられる。マイコンは、例えば入力装置からの割込信号によって、割込ハンドラと呼ばれるプログラムを起動し、OSに管理されるタスクの切り換え(タスクディスパッチ)や、OSに管理されない所定の割込プログラムを起動する。したがって、割込禁止命令を実行すれば、タスクディスパッチを含む全ての割込処理を禁止することができる。
【0021】
一方、グローバル変数に係る処理が各タスクにおいて実行されることを前提とすれば、OSにおけるタスクディスパッチを禁止してもよい。このようにすれば、OSに管理されない所定の割込プログラムは起動されることになり、グローバル変数の操作に関係しないリアルタイム性の高い処理の実行が遅れることを防止できる。すなわち、無駄な割込禁止期間がより削減される。なお、タスクディスパッチの禁止は、OSに対する割込禁止命令を実行すること、また、タスクに設定されるタスクレベルを操作することで実現すればよい。
【0022】
さらに、上述した判断処理では、実行中の処理プログラムに設定された優先度が他の処理プログラムの優先度を下回っている場合に、上位プログラムによってグローバル変数が操作される可能性があると判断することが考えられる。このようにすれば、判断処理が簡単になるという点で有利である。
【0023】
しかし、グローバル変数の操作を行わない、すなわち不具合が生じる可能性のない上位プログラムの割り込みも禁止されてしまうことになり、結果的に、無駄な割込禁止期間を増大させる可能性がある。そこで請求項2に示すように、判断処理では、実行中の処理プログラムにグローバル変数が下位プログラムによる操作途中で上位プログラムの割り込みによって操作される可能性を考慮して設定された優先度が、グローバル変数を操作する他の処理プログラムの優先度を下回っている場合に、上位プログラムによって操作される可能性があると判断するようにしてもよい。具体的には、例えば請求項3に示すように、グローバル変数を操作する処理プログラムに設定された優先度の中で最も高い優先度を優先度記憶手段に記憶しておき、この記憶された優先度と、実行中の処理プログラムに設定された優先度とを比較することによって、判断することが考えられる。
【0024】
このようにすれば、実行中の処理プログラムに上位プログラムが割り込む可能性があっても、その上位プログラムにてグローバル変数が操作される可能性がなければ、割り込みは禁止されない。これによって、さらに無駄な割込禁止期間の発生を抑えることができる。
【0025】
無駄な割込禁止期間を削減するという観点からは、請求項4に示す構成を採用するとさらによい。このとき判断処理では、実行中の処理プログラムにグローバル変数が下位プログラムによる操作途中で上位プログラムの割り込みによって操作される可能性を考慮して設定された優先度が、当該実行中の処理プログラムの操作対象となるグローバル変数を操作する他の処理プログラムの優先度を下回っている場合に、上位プログラムによって操作される可能性があると判断する。具体的には、例えば請求項5に示すように、グローバル変数毎に、当該グローバル変数を操作する処理プログラムの優先度の中で最も高い優先度を優先度記憶手段に記憶しておき、操作対象となるグローバル変数に対応する優先度と、実行中の処理プログラムに設定された優先度とを比較することによって、判断することが考えられる。
【0026】
つまり、グローバル変数の操作を行う上位プログラムがあっても、そのグローバル変数が下位プログラムによる操作対象でなければ不具合は生じない。上述した構成を採用すれば、上位プログラムがグローバル変数を操作するものであっても、そのグローバル変数が下位プログラムの操作対象でなければ、割り込みは禁止されない。これによって、無駄な割込禁止期間のさらなる削減に寄与できる。
【0027】
ところで、割り込みを禁止した後、該当するグローバル変数の操作が完了すると、下位プログラムでは割り込みを許可する。この割り込みの許可は、グローバル変数の操作完了後に無条件に行うことも考えられるが、割り込み禁止の実現手法によっては、不適切なタイミングで割り込みが許可されてしまう可能性も考えられる。
【0028】
そこで請求項6に示す構成を採用することが望ましい。すなわち、各処理プログラムでは、グローバル変数の操作が完了すると、許可判断処理を実行することによって、上述した禁止処理によって割込禁止状態となっているか否かを判断し、さらに、当該許可判断処理にて割込禁止状態であると判断された場合にだけ、許可処理を実行して、割り込みを許可することが考えられる。このようにすれば、禁止処理の実行に応じて許可処理が実行されるため、不適切なタイミングで割り込みが許可されることがなくなり、適切な期間で割り込み禁止が実現される。
【0029】
【発明の実施の形態】
以下、本発明を具体化した実施例を図面を参照して説明する。
図1は、本発明の「情報処理装置」を具体化したエンジン制御装置(以下「ECU」という。)1の構成を表すブロック図である。ECU1は、車両に搭載された内燃機関型エンジンの制御を行う。
【0030】
ECU1は、エンジンのクランク軸が所定角度回転する毎にパルス状の信号を出力する回転角センサ、エンジンの特定の気筒のピストンが所定位置(例えば上死点:TDC)にくる度にパルス状の信号を出力する基準位置センサ、エンジンの冷却水の温度を検出する水温センサ、及び酸素濃度を計測する酸素濃度センサ等、エンジンの運転状態を検出する様々なセンサ30からの信号を入力して波形整形やA/D変換を行う入力回路21と、入力回路21からのセンサ信号に基づき、エンジンを制御するための様々な処理を実行するマイコン10と、マイコン10からの制御データに応じて、エンジンに取付けられたインジェクタ(燃料噴射装置)及びイグナイタ(点火装置)等のアクチュエータ40を駆動する出力回路22とを、備えている。
【0031】
そして、マイコン10には、プログラムを実行する周知のCPU11と、CPU11によって実行されるプログラムを記憶するROM12と、CPU11による演算結果等を記憶するためのRAM13と、入力回路21及び出力回路22との間で信号をやり取りするためのI/O14と、各種レジスタやフリーランカウンタ等(図示省略)とが備えられている。
【0032】
このように構成されたECU1は、各種センサ30から入力回路21を介して入力される信号に基づき、出力回路22に接続されたアクチュエータ40を駆動する、エンジン制御処理を行う。
このエンジン制御を実現するためのエンジン制御プログラムは、上述したようにマイコン10の備えるROM12に記憶されている。そして、このエンジン制御プログラムは実行単位毎に細分化されて記述されている。実行単位となる各処理プログラムは、設定される優先度に基づき実行される。具体的には、優先度の相対的に高い処理プログラムである上位プログラムは、相対的に低い処理プログラムである下位プログラムに優先して実行される。各処理プログラムの実行単位がタスクと呼ばれ、OSによって管理されている。
【0033】
このようなエンジン制御プログラムでは、制御データを算出してRAM13に格納したり、RAM13に格納された制御データを参照して、新たな制御データを算出するといった処理を行う。このとき、同一の制御データを複数のタスクで処理するために、グローバル変数が用いられる。グローバル変数は、例えばプログラム全体が複数の関数にて構成されているとき、これら関数間で共通にアクセスできるRAM13の所定の記憶領域に記憶される。
【0034】
このような上位タスク及び下位タスクによるグローバル変数としての制御データの操作を考えた場合、上述した割込処理によって制御データの同時性が失われてしまうといった不具合や、上位タスクが更新したグローバル変数を下位タスクが書き戻してしまういわゆるリードモディファイライトが生じることがある。
【0035】
従来は、このような不具合を回避するために、割込禁止/許可命令を下位タスクのプログラム中に記述することによって、下位タスクによる制御データの操作の途中で、上位タスクが割り込んで制御データを操作できないようにしていた。ところが、このような割込禁止/許可命令は処理プログラム毎に設定される優先度を考慮して作業者が記述しなければならなかったため、プログラム作成時間を増大させる結果となっていた。また、処理プログラムの実行途中で優先度が変動することもあり、このような実行途中の優先度の変動をも考慮して記述する必要があった。さらに、実行単位となる処理プログラムの再利用を考えた場合、他の処理プログラムとの関係で優先度が変わってくると、プログラム中に割込禁止/許可命令を追加したり削除したりする必要があり、処理プログラムの再利用性を低下させていた。
【0036】
もちろん、全ての処理プログラムに割込禁止/許可命令を記述することも考えられるが、本来割り込み禁止を必要としないタスクでも割り込みが禁止されるという無駄な割込禁止期間が発生するため、リアルタイム性の高いタスクの実行が遅延し、制御性能に問題が生じる。
【0037】
そこで本実施例では、図2のフローチャートに示すようなタスク処理を各タスクが実行するようにした。つまり、同時性を必要とする制御データの操作を行うステップ(以下、ステップを単に記号Sで示す)110,S120,S130の前後で、禁止判定処理(S100)、及び許可判定処理(S140)を実行するようにした。図2はS110〜S130にて3つの制御データi,j,kの更新を行うものであるが、もちろん、同時性を必要とする制御データを参照する場合も同様に、その前後で禁止判定処理及び許可判定処理を実行するようにする。
【0038】
本実施例は、この禁止判定処理及び許可判定処理に特徴を有するものであるため、次に図3のフローチャートを用いて、これら処理を説明する。
図3(a)は、禁止判定処理を示すフローチャートである。この禁止判定処理は、図2中のS100など、タスク処理からコールされるサブルーチンとして用意されている。
【0039】
まず最初のS200において、実行中のタスクに設定された優先度Pを取得する。設定された優先度Pは、OS機能として用意されたサブルーチンコールによって取得することが考えられる。
続くS210では、操作対象の制御データに対応する優先度を取得する。図2に例示したタスク処理では、3つの制御データi,j,kが操作対象となっているため、制御データi,j,kに対応する優先度を取得する。
【0040】
この処理は、図1中に示すRAM13の記憶領域13aを参照することによって実現される。記憶領域13aには、図4に示すように、制御データ1,2,・・・,N毎に、制御データ1〜Nの操作を行うタスクの優先度の中で最も高い優先度P1,P2,・・・,PNが記憶されている。
【0041】
なお、3つの制御データi,j,kに対応する優先度をPi,Pj,Pkとすれば、ここでは、優先度Pi,Pj,Pkの中で最も高いものを取得することが考えられる。また、3つの優先度Pi,Pj,Pkの全てを取得するようにしてもよい。
【0042】
そして次のS220では、S200及びS210にて取得した優先度を比較して、優先度Pが他の優先度よりも下回っているか否かを判断する。3つの優先度Pi,Pj,Pkの中で1つでも優先度Pを上回るものがあれば、ここで肯定判断される。優先度Pが下回っていると判断された場合(S220:YES)、S230にて割り込みを禁止し、その後、本禁止判定処理を終了する。S230における割り込み禁止は、割込禁止状態を示すフラグXDIをオンにすることによって実現される。一方、優先度Pが下回っていないと判断された場合(S220:NO)、S230の処理を実行せず、すなわち、割り込みの禁止を実行せずに、本禁止判定処理を終了する。
【0043】
続いて、許可判定処理を説明する。図3(b)は、許可判定処理を示すフローチャートである。この許可判定処理も、禁止判定処理と同様、図2中のS140など、タスク処理からコールされるサブルーチンとして用意されている。
まずS300において、割込禁止状態であるか否かを判断する。この処理は、上述した禁止判定処理において割り込みが禁止されたか否かを判断するものであり、具体的には、割込禁止状態を示すフラグXDIがオンになっているか否かを判断するものである。ここで割込禁止状態であると判断された場合(S300:YES)、S310にて割り込みを許可し、その後、本許可判定処理を終了する。S310における割り込み許可は、割込禁止状態を示すフラグXDIをオフにすることによって実現される。一方、割込禁止状態でないと判断された場合(S300:NO)、S310の処理を実行せず、すなわち割り込みの許可を実行せずに、本許可判定処理を終了する。
【0044】
このように本実施例では、各タスクにおいて禁止判定処理を実行することによって(図2中のS100)、操作対象の制御データi,j,kが上位タスクにて操作される可能性がある場合には割り込みを禁止し(図3(a)中のS220:YES,S230)、一方、制御データi,j,kが操作される可能性がなければ割り込みを禁止しない(S220:NO)。つまり、各処理プログラムにおいて、必要に応じて動的に割り込みを禁止するのである。
【0045】
これによって、各処理プログラムに設定される優先度を考慮して作業者が割込禁止/許可命令を記述する必要がなくなる。
また、上位タスクの割り込みによって制御データが操作される可能性がない場合には割り込みが禁止されないため、本来割り込みの禁止を必要としない上位タスクにおいて割り込みが禁止されることはなく、無駄な割込禁止期間の発生を抑えられる。
【0046】
特に本実施例では、グローバル変数としての制御データ1〜N毎に、当該制御データ1〜Nを操作するタスクの優先度の中でもっとも高い優先度P1〜PNをRAM13の記憶領域13aに記憶しておき(図4参照)、操作対象の制御データi,j,kに対応して記憶された優先度Pi,Pj,Pkを取得し(図3(a)中のS210)、実行中のタスクの優先度Pと比較して(S220)、上位タスクによる制御データの操作がなされる可能性を判断している。
【0047】
これは、たとえ制御データの操作を行う上位タスクの割り込みがあっても、その制御データが下位タスクの操作対象の制御データi,j,kでなければ、不具合は生じないためである。本実施例によれば、上位タスクが制御データを操作するものであっても、その制御データが下位タスクの操作対象でなければ、割り込みは禁止されない。これによって、無駄な割込禁止期間の発生を極力抑えることができる。
【0048】
また、本実施例では、制御データの操作が完了すると(図2中のS130の終了後)、許可判定処理を実行することによって(S140)、割込禁止状態であるか否かを判断し(図3(b)中のS300)、割込禁止状態であると判断された場合にだけ、割り込みを許可する(S310)。これによって、割り込みの禁止に対応して割り込み許可がなされ、不適切なタイミングで割り込みが許可されることがないため、適切な期間で割り込みを禁止することができる。
【0049】
なお、本実施例におけるRAM13(詳しくは、その記憶領域13a)が「優先度記憶手段」に相当する。また、図3(a)中のS200〜S220の処理が「判断処理」に相当し、S230の処理が「禁止処理」に相当する。さらに、図3(b)中のS300の処理が「許可判断処理」に相当し、S310の処理が「許可処理」に相当する。
【0050】
以上、本発明はこのような実施例に何等限定されるものではなく、本発明の主旨を逸脱しない範囲において種々なる形態で実施し得る。
(イ)上記実施例では、図3(a)中のS230における割り込みの禁止は、マイコン10に対するいわゆる割込禁止命令を実行することで、すなわち割込禁止状態を示すフラグXDIをオンにすることで実現していた。
【0051】
ただし、OSによって管理されない割込プログラムが存在することも考えられる。例えば図5に示す如くである。図5では、エンジン制御プログラムが、OS52に管理されるタスク54と、割込ハンドラ51から直接的に起動される割込プログラム53とからなる。この場合、マイコン10では、CPU11が、入力回路21からの割込信号に基づき割込ハンドラ51を起動し、直接的に割込プログラム53を起動したり、OS52を介してタスク54のディスパッチを行ったりして割込処理を実現する。
【0052】
このとき、グローバル変数としての制御データの操作がタスク54だけで実行されることを前提とした場合、上記実施例のように割込禁止状態を示すフラグXDIをオンにすると、割込ハンドラ51による全ての割込処理が禁止されてしまい、制御データ操作に関与しない割込プログラム53の実行も遅延する結果となる。
【0053】
そこでこの場合、上述した図3中のS230における割り込み禁止は、OS52におけるタスクディスパッチを禁止することで実現してもよい。このようにすれば、OS52に管理されない割込プログラム53はイベント発生などのタイミングで実行され、制御データの操作に関与しない割込プログラム53の実行が遅延することを防止できる。すなわち、無駄な割込禁止期間がより削減される。なお、タスクディスパッチの禁止は、OS52に対する所定の割込禁止命令を実行すること、また、タスク54にそれぞれ設定されるタスクレベルを一時的に書き換えることで実現すればよい。
【0054】
(ロ)また、上記実施例では、優先度に関する情報を、グローバル変数としての制御データ1〜N毎に記憶した。これに対して、制御データといったグローバル変数全体を一まとめにし、グローバル変数を操作する可能性のあるタスクに設定された優先度の中で最も高いものを一つだけ記憶するようにしてもよい。このようにしても、上位タスクによって制御データが操作される可能性を判断することはできる。ただし、このときはグローバル変数全体に対して記憶された優先度と実行中のタスクに設定された優先度Pとの比較を行うことになり、下位タスクの操作対象となる制御データが上位タスクに操作されない場合であっても、割り込みが禁止される。結果として、上記実施例と比べて、無駄な割り込み禁止期間が幾分増える。
【0055】
(ハ)ところで、上記実施例ではエンジン制御処理を行うECU1として本発明を具体化したが、このような車両のエンジン制御に限られず、割込処理を行うような情報処理装置全般に本発明が適用できることは言うまでもない。
【図面の簡単な説明】
【図1】実施例のECUの構成を表すブロック図である。
【図2】タスク処理を示すフローチャートである。
【図3】(a)は禁止判定処理を示すフローチャートであり、(b)は許可判定処理を示すフローチャートである。
【図4】優先度の記録領域を示す説明図である。
【図5】プログラム構成を例示する模式図である。
【符号の説明】
1…ECU 10…マイコン
11…CPU 12…ROM
13…RAM 13a…記憶領域
14…I/O 21…入力回路
22…出力回路 30…センサ
40…アクチュエータ 51…割込ハンドラ
52…OS 53…割込プログラム
54…タスク
Claims (6)
- 実行単位となる複数の処理プログラムを当該処理プログラム毎に設定される優先度に基づき処理装置にて実行することによって、一連の機能を実現する情報処理装置において、
前記処理装置は、前記各処理プログラムを実行する際、前記優先度の相対的に低い下位プログラムと前記優先度の相対的に高い上位プログラムとの間で共通に使用されるグローバル変数の操作に先立って、前記上位プログラムの割り込みによって前記グローバル変数が操作される可能性を判断する判断処理を実行し、当該判断処理にて前記グローバル変数が操作される可能性があると判断された場合にだけ、割り込みを禁止する禁止処理を実行するものであり、
さらに、前記処理装置による判断処理では、実行中の処理プログラムに前記グローバル変数が前記下位プログラムによる操作途中で前記上位プログラムの割り込みによって操作される可能性を考慮して設定された優先度が他の処理プログラムの優先度を下回っている場合に、前記上位プログラムによって前記グローバル変数が操作される可能性があると判断することを特徴とする情報処理装置。 - 実行単位となる複数の処理プログラムを当該処理プログラム毎に設定される優先度に基づき処理装置にて実行することによって、一連の機能を実現する情報処理装置において、
前記処理装置は、前記各処理プログラムを実行する際、前記優先度の相対的に低い下位プログラムと前記優先度の相対的に高い上位プログラムとの間で共通に使用されるグローバル変数の操作に先立って、前記上位プログラムの割り込みによって前記グローバル変数が操作される可能性を判断する判断処理を実行し、当該判断処理にて前記グローバル変数が操作される可能性があると判断された場合にだけ、割り込みを禁止する禁止処理を実行するものであり、
さらに、前記処理装置による判断処理では、実行中の処理プログラムに前記グローバル変数が前記下位プログラムによる操作途中で前記上位プログラムの割り込みによって操作される可能性を考慮して設定された優先度が前記グローバル変数を操作する他の処理プログラムの優先度を下回っている場合に、前記上位プログラムによって前記グローバル変数が操作される可能性があると判断することを特徴とする情報処理装置。 - 請求項2に記載の情報処理装置において、
前記グローバル変数を操作する処理プログラムに設定された優先度の中で最も高い優先度を記憶するための優先度記憶手段を備え、
前記処理装置による判断処理は、前記優先度記憶手段に記憶された優先度と、実行中の処理プログラムに設定された優先度とを比較することによって判断するものであることを特徴とする情報処理装置。 - 実行単位となる複数の処理プログラムを当該処理プログラム毎に設定される優先度に基づき処理装置にて実行することによって、一連の機能を実現する情報処理装置において、
前記処理装置は、前記各処理プログラムを実行する際、前記優先度の相対的に低い下位プログラムと前記優先度の相対的に高い上位プログラムとの間で共通に使用されるグローバル変数の操作に先立って、前記上位プログラムの割り込みによって前記グローバル変数が操作される可能性を判断する判断処理を実行し、当該判断処理にて前記グローバル変数が操作される可能性があると判断された場合にだけ、割り込みを禁止する禁止処理を実行するものであり、
さらに、前記処理装置による判断処理では、実行中の処理プログラムに前記グローバル変数が前記下位プログラムによる操作途中で前記上位プログラムの割り込みによって操作される可能性を考慮して設定された優先度が当該実行中の処理プログラムの操作対象となるグローバル変数を操作する他の処理プログラムの優先度を下回っている場合に、前記上位プログラムによって前記グローバル変数が操作される可能性があると判断することを特徴とする情報処理装置。 - 請求項4に記載の情報処理装置において、
前記グローバル変数毎に、当該グローバル変数を操作する処理プログラムの優先度の中で最も高い優先度を記憶するための優先度記憶手段を備え、
前記判断処理は、前記操作対象となるグローバル変数に対応する前記優先度記憶手段に記憶された優先度と、実行中の処理プログラムに設定された優先度とを比較することによって判断するものであることを特徴とする情報処理装置。 - 請求項1〜5のいずれかに記載の情報処理装置において、
前記各処理プログラムでは、前記グローバル変数の操作が完了すると、前記禁止処理によって割込禁止状態となっているか否かを判断する許可判断処理を実行し、さらに、当該許可判断処理にて割込禁止状態であると判断された場合にだけ、割り込みを許可する許可処理を実行するようにしたことを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000352796A JP3617445B2 (ja) | 2000-11-20 | 2000-11-20 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000352796A JP3617445B2 (ja) | 2000-11-20 | 2000-11-20 | 情報処理装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002157131A JP2002157131A (ja) | 2002-05-31 |
JP3617445B2 true JP3617445B2 (ja) | 2005-02-02 |
JP2002157131A5 JP2002157131A5 (ja) | 2005-06-23 |
Family
ID=18825637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000352796A Expired - Fee Related JP3617445B2 (ja) | 2000-11-20 | 2000-11-20 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3617445B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5406072B2 (ja) | 2010-02-18 | 2014-02-05 | 株式会社日立製作所 | 組込み制御装置 |
JP5798314B2 (ja) * | 2010-11-15 | 2015-10-21 | 株式会社デンソー | 情報処理装置 |
-
2000
- 2000-11-20 JP JP2000352796A patent/JP3617445B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002157131A (ja) | 2002-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3610915B2 (ja) | 処理実行装置及びプログラム | |
US8381283B2 (en) | Information processing apparatus and method of controlling program execution of same | |
US20080046701A1 (en) | Data processing apparatus and method for controlling access to registers | |
US8234476B2 (en) | Information processing apparatus and method of updating stack pointer | |
JP4241462B2 (ja) | 制御ユニットおよびマイクロコンピュータ | |
JP5533789B2 (ja) | 車載電子制御装置 | |
JP3617445B2 (ja) | 情報処理装置 | |
US7930523B2 (en) | Inter-CPU data transfer device | |
JP3879514B2 (ja) | 電子制御装置及びプログラム | |
KR102235142B1 (ko) | 시간 집약적 명령의 처리 | |
US8909835B2 (en) | Computer system and method of controlling computer system | |
JP3783553B2 (ja) | 情報処理装置 | |
JP3755415B2 (ja) | 処理実行装置、当該処理実行装置に搭載される処理プログラム、及び記録媒体 | |
WO2019237865A1 (zh) | 一种数据保护方法及计算装置 | |
JP2019049928A (ja) | 電子制御装置及び電子制御装置の制御方法 | |
JP2009093344A (ja) | マイクロコンピュータ、その使用方法、及び電子制御装置 | |
JP5842833B2 (ja) | 情報処理装置、プログラム | |
JP2017204083A (ja) | メモリ保護システム | |
JP2017107394A (ja) | 車両用制御装置 | |
WO2017002939A1 (ja) | 電子制御装置及びスタック使用方法 | |
CN109947673B (zh) | 一种内存保护方法、保护装置及单片机 | |
JP2019135656A (ja) | 電子制御装置及びスタック使用方法 | |
JP2017016410A (ja) | 電子制御装置及びスタック領域の使用監視方法 | |
JP2018072921A (ja) | 車載電子制御装置 | |
JPH086805A (ja) | マルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041001 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041019 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041101 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111119 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111119 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121119 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131119 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |