JP3879514B2 - 電子制御装置及びプログラム - Google Patents
電子制御装置及びプログラム Download PDFInfo
- Publication number
- JP3879514B2 JP3879514B2 JP2002004755A JP2002004755A JP3879514B2 JP 3879514 B2 JP3879514 B2 JP 3879514B2 JP 2002004755 A JP2002004755 A JP 2002004755A JP 2002004755 A JP2002004755 A JP 2002004755A JP 3879514 B2 JP3879514 B2 JP 3879514B2
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- task
- level
- mask
- request
- 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
- 238000000034 method Methods 0.000 claims description 115
- 238000010586 diagram Methods 0.000 description 6
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 2
- 229910052760 oxygen Inorganic materials 0.000 description 2
- 239000001301 oxygen Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 239000000498 cooling water Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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)
- Combined Controls Of Internal Combustion Engines (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
- Programmable Controllers (AREA)
Description
【発明の属する技術分野】
本発明は、リアルタイムオペレーティングシステム(以下「RTOS」という。)を用いたタスク切り換え技術に関する。
【0002】
【従来の技術】
例えば車両に搭載される電子制御装置(以下「ECU」という。)に用いられる制御プログラムでは、制御応答性や安全性の確保等から所定の処理をリアルタイムに実行する必要性がある。そのため、実行優先度の設定されたタスクの単位で制御プログラムを記述し、RTOSによるタスクの切り換えによって、また、タスクよりも実行優先度の高い割込処理を優先的に実行して、リアルタイム性を確保している。
【0003】
最初に、上述した割込処理とタスクとの関係を説明する。
図2には、ECUに搭載される制御プログラムの構成を概念的に示した。割込処理51は、例えばセンサ信号やECUに搭載されたマイコンのタイマなどに基づく割込要求に従って実行される。一方、タスク53は、RTOS52へのタスク起床要求に基づいて実行される。このタスク起床要求は、主として割込処理51の中で、あるいは、タスク53からなされる。
【0004】
図2に例示した制御プログラムは、A〜Dの4つの割込処理51と、a〜cの3つのタスク53を有している。
この場合を例として、次に実行優先度について説明する。
図3(a)は、A〜Dの割込処理51の実行優先度である割込レベルと、a〜cのタスク53の実行優先度であるタスクレベルとの関係を示したものである。各レベルは、数値の大きいものほど、実行優先度が高いことを示す。
【0005】
したがって、A〜Dの割込処理51について言えば、割込レベル「4」であるA割込処理51の実行優先度が最も高く、逆に、割込レベル「1」であるD割込処理51の実行優先度が最も低い。
そして、a〜cのタスク53について言えば、A〜Dの割込処理51との関係では、割込レベルは「0」と考えられる。そのため、各割込処理51は、タスク53に優先して実行される。優先して実行されるとは、例えばcタスク53の実行途中でB割込処理51の要求があれば、cタスク53の実行を中断してB割込処理51が実行され、B割込処理51の終了後に、中断していたcタスク53が再び実行されることをいう。
【0006】
また、a〜cのタスク53間でも実行優先度が設定されている。これが、タスクレベルである。したがって、A〜Dの割込処理51との関係では最も優先度の低いa〜cのタスク53の間にも、図3(a)に示すように、タスクレベル「3」のaタスク53の実行優先度が最も高く、タスクレベル「1」のcタスク53の実行優先度が最も低い、といった優先関係がある。
【0007】
次に、RTOS52によるタスクの切り換えについて説明する。RTOS52に対するタスク起床要求が割込処理51やタスク53によってなされることは、既に述べた。
例えば、cタスク53の実行時にB割込処理51の割込要求がなされた場合、cタスク53の途中でB割込処理51が実行されることになり、cタスク53→B割込処理51→cタスク53というように、通常は、B割込処理51の終了後、中断していたcタスク53が実行される。
【0008】
ところが、B割込処理51の中で、例えばbタスク53の起床要求がなされることが考えられる。この場合、B割込処理51の終了後、cタスク53に優先してbタスク53を実行する必要がある。なぜなら、bタスク53のタスクレベルが「2」であるのに対して、cタスクのタスクレベルは「1」だからである(図3(a)参照)。
【0009】
そのため、割込処理の終了時には、RTOSがタスクスケジューリング処理を実行する。
具体的には、図3(b)に示すように、B割込処理51の中でbタスク53の起床要求がなされると、bタスク53を示す情報が、RTOS52に用意されたキューに格納される。RTOS52には、タスクレベル毎にキューが用意されており、該当するタスクレベル2のキューに、bタスク53を示す情報が格納される。
【0010】
したがって、タスクスケジューリング処理では、優先度の高いタスクレベル3のキューから順に、タスクレベル2のキュー、タスクレベル1のキューをサーチする。そして、実行途中のタスク53よりも優先度の高いタスク53の起床要求があれば、当該優先度の高いタスク53への切り換えを行う。つまり、上述した例では、B割込処理51の終了後に、タスクスケジューリング処理が実行されると、cタスク53に優先してbタスク53が実行され、bタスク53の終了後に、中断されていたcタスク53が実行されるのである。
【0011】
このようなタスクスケジューリング処理は、上述したような割込処理の終了時だけでなく、タスクの終了時にも実行される。
また、タスク内に割込禁止区間が設定される場合があるが、この割込禁止区間の終了時にも実行される。そして本発明は、この割込禁止区間の終了時におけるタスクスケジューリング処理に関するものである。
【0012】
そこで次に、割込禁止区間について説明する。
タスクの実行途中に実行優先度の高い割込処理が割り込むことは、既に述べた。しかし、タスクと割込処理でリソースを共有している場合など、割り込みのタイミングによっては、リソースの干渉が生じることがある。
【0013】
この干渉を防止するために行われるのが、いわゆる割込禁止である。割込禁止は、マスクレベルを指定することによって行われる。具体的には、図3(a)に示すような割込レベルをマスクレベルとして指定する。例えば、マスクレベル「2」が指定されると、割込レベル「2」以下の割込処理やタスクは、たとえ実行中のタスクよりも実行優先度が高いものであっても実行されない。したがって、マスクレベル「2」が指定されると、図2中のA又はBの割込処理51だけが割り込むことになる。
【0014】
これに対し、この割込禁止を解除するのが割込許可である。割込許可は、マスクレベルを「0」に戻すことに相当する。そして、マスクレベルが「0」になると、割込処理はもちろん、タスクの実行が可能になる。したがって、この時点で、タスクの起床要求をチェックする必要が生じるのである。例えば、マスクレベルが「2」であった場合には、AやBの割込処理51によってタスクの起床要求がなされている可能性があるからである。そこで、マスクレベルが「0」になった場合、すなわち割込禁止区間の終了時にも、上述したタスクスケジューリング処理を実行する。
【0015】
【発明が解決しようとする課題】
しかしながら、上述した割込禁止区間の終了時には、タスクスケジューリング処理が無駄になる場合が存在する。
例えば、上述した図3(a)のように割込レベルが設定されているとき、マスクレベル「4」が指定された割込禁止区間においては、A〜Dのいずれの割込処理51も割り込めないため、タスクの起床要求がなされる可能性は「0」であり、割込禁止区間の終了時のタスクの切り換えはなされない。
【0016】
ところが、従来は、割込禁止区間の終了時に一律にタスクスケジューリング処理を行っていたため、無駄なタスクスケジューリング処理が発生していた。これは、制御プログラムの実行速度の低下を招来し、リアルタイム性の確保という観点から望ましくない。
【0017】
本発明は、上述した問題を解決するためになされたものであり、割込禁止区間の終了時における無駄なタスクスケジューリング処理を省き、実行速度の向上を図ることを目的とし、リアルタイム性の確保に寄与する。
【0018】
【課題を解決するための手段及び発明の効果】
本発明のECUでは、タスクの起床要求、及び、タスクに設定された実行優先度を示すタスクレベルに基づいて、タスクの切り換えを行うことが可能な構成にされたRTOSにより運営され、CPUが、各タスクを切り替えて実行すると共に、割込要求が発生した場合には、実行中のタスクに割り込んで、割込要求に対応する割込処理を、各割込処理に設定された実行優先度を示す割込レベルに応じた順序で、実行する。
【0019】
このECUは、実行禁止対象の割込処理を定めるマスクレベルを指定して、割込禁止区間、を設定するタスクを有し、このタスクをCPUにて実行する。尚、この割込禁止区間は、割込レベルがマスクレベル以下の割込処理の実行、及び、タスクの切り換えを禁止する区間である。
【0020】
このような前提の下、本発明では特に、CPUが、タスクにより設定される割込禁止区間の終了時に、タスクスケジューリング処理を実行するが、終了した割込禁止区間がタスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル以上のマスクレベルが設定された割込禁止区間である場合に限っては、タスクスケジューリング処理を実行しないように動作する。
【0021】
つまり、本発明では、従来一律に実行されていたタスクスケジューリング処理のコールを限定的にし、割込禁止区間の終了時にタスクの切り換えがなされる可能性が無い場合には、無駄なタスクスケジューリング処理を省くようにしたのである。
【0022】
割込禁止区間の終了時にタスクの切り換えがなされる可能性が無い場合は、割込禁止区間にて、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル以上の割込レベルを、マスクレベルとして指定する場合である。
【0023】
従って、このECUによれば、割込禁止区間の終了時における無駄なタスクスケジューリング処理が省かれ、実行速度の向上を図ることができる。その結果、リアルタイム性の確保に寄与する。
【0024】
尚、上記の発明は、割込禁止区間を設定するタスクを、具体的に次のように構成することで実現することができる。
即ち、割込禁止区間を設定するタスクの内、設定する割込禁止区間のマスクレベルが、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル未満のマスクレベルであるタスクを、この割込禁止区間の終了時に、CPUにタスクスケジューリング処理を実行させる構成にすると共に、割込禁止区間を設定するタスクの内、設定する割込禁止区間のマスクレベルが、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル以上のマスクレベルであるタスクを、この割込禁止区間の終了時に、CPUにタスクスケジューリング処理を実行させない構成にすることで実現することができる。
【0025】
これによって、割込禁止区間の終了時における無駄なタスクスケジューリング処理が省かれ、実行速度の向上を図ることができる。
【0026】
【発明の実施の形態】
以下、本発明を具体化した一実施例を図面を参照して説明する。
図1は、本発明の「電子制御装置」を具体化したエンジン制御装置(以下「エンジンECU」という。)1の構成を表すブロック図である。エンジンECU1は、車両に搭載された内燃機関型エンジンの制御を行う。
【0027】
エンジンECU1は、エンジンのクランク軸が所定角度回転する毎にパルス状の信号を出力する回転角センサ、エンジンの特定の気筒のピストンが所定位置(例えば上死点:TDC)にくる度にパルス状の信号を出力する基準位置センサ、エンジンの冷却水の温度を検出する水温センサ、及び酸素濃度を計測する酸素濃度センサ等、エンジンの運転状態を検出する様々なセンサ30からの信号を入力して波形整形やA/D変換を行う入力回路21と、入力回路21からのセンサ信号に基づき、エンジンを制御するための様々な処理を実行するマイコン10と、マイコン10からの制御データに応じて、エンジンに取付けられたインジェクタ(燃料噴射装置)及びイグナイタ(点火装置)等のアクチュエータ40を駆動する出力回路22とを、備えている。
【0028】
そして、マイコン10には、プログラムを実行する周知のCPU11と、CPU11によって実行されるプログラムを記憶するROM12と、CPU11による演算結果等を記憶するためのRAM13と、入力回路21及び出力回路22との間で信号をやり取りするためのI/O14と、各種レジスタやフリーランカウンタ等(図示省略)とが備えられている。
【0029】
このように構成されたエンジンECU1は、各種センサ30から入力回路21を介して入力される信号に基づき、出力回路22に接続されたアクチュエータ40を駆動する、エンジン制御処理を行う。
次に図2に基づき、ROM12に記憶される「制御プログラム」としてのエンジン制御プログラムの構成を説明する。エンジン制御プログラムは、少なくとも、割込処理51、RTOS52、及び、タスク53で構成されている。
【0030】
A〜Dの割込処理51は、割込要求に基づいて実行される。A〜Dの割込処理51の実行優先度は、A→B→C→Dの順になっている。これら割込処理51の実行優先度を「割込レベル」と以下記述する。割込処理51に対する割込要求は、上述したセンサ群30からの信号に基づいてなされることが考えられる。また、マイコン10内部のフリーランカウンタによって所定時間間隔でなされることが考えられる。さらに、車内LAN等のネットワーク情報によってなされることが考えられる。
【0031】
a〜cのタスク53は、タスク起床要求に基づいて実行される。a〜cのタスク53の実行優先度は、a→b→cの順になっている。これらタスク53の実行優先度を「タスクレベル」と以下記述する。タスク53に対するタスク起床要求は、上述した割込処理51やタスク53によってなされる。
【0032】
タスク53の起床要求があると、RTOS52に用意されたキューへ、起床要求のあったタスク53の情報が格納される。このキューは、タスク53のタスクレベル毎に用意されている。したがって、RTOS52は、このキューをタスクレベル順にサーチするタスクスケジューリング処理を行うことにより、タスクレベルに基づくタスク53の切り換えを行い、タスクレベルのより高いタスク53を優先的に実行する。
【0033】
次に、割込処理51に設定された割込レベルと、タスク53に設定されたタスクレベルとの関係を説明する。図3(a)は、A〜Dの割込処理51の割込レベルと、a〜cのタスク53のタスクレベルとの関係を示したものである。各レベルは、数値の大きいものほど、実行優先度が高いことを示す。
【0034】
図3(a)から分かるように、A〜Dの割込処理51について言えば、割込レベル「4」であるA割込処理の優先度が最も高く、逆に、割込レベル「1」であるD割込処理の優先度が最も低い。
a〜cのタスク53には、図3(a)に示すように、タスクレベル「3」のaタスク53の実行優先度が最も高く、タスクレベル「1」のcタスク53の実行優先度が最も低い、といった優先関係がある。そして、A〜Dの割込処理51との関係では、割込レベルは「0」と考えられる。そのため、各割込処理51は、タスク53に優先して実行される。
【0035】
ただし、タスク53よりも実行優先度の高い割込処理51が常に割り込むと、共有しているリソースに干渉が生じる可能性がある。そこで、タスク53の中で割込禁止処理を行い、共有リソースを操作するような割込処理51の実行を禁止することがなされる。
【0036】
この割込禁止処理では、上述した割込レベルを「マスクレベル」として指定する。これによって、マスクレベル以下の割込レベルを有する割込処理51の割り込みが禁止される。
したがって、割込禁止といっても、一律に全ての割込処理51を禁止するものではない。そのため、割込禁止処理がなされてから割込許可がなされるまでの区間(以下「割込禁止区間」という。)で、指定されたマスクレベルよりも高い割込レベルの割込処理51は、実行される可能性がある。
【0037】
そしてこの割込処理51が、タスク53の起床要求を行う可能性があるため、従来より、割込禁止区間の終了時には、上述したタスクスケジューリング処理を実行するようにしている。
そこで次に、このような割込禁止区間の終了時におけるタスクスケジューリング処理について、具体的に例を挙げて説明する。
【0038】
図4(a)は、cタスク53の処理を例示するフローチャートである。
cタスク53の処理は、S110の処理▲1▼とS130の処理▲2▼が実質的なものとなっている。そして、処理▲1▼では、いくつかの割込処理51とのリソースの干渉が問題となるため、処理▲1▼の前後で、割込禁止処理(S100)及びマスク復帰処理(S120)を実行するようになっている。割込禁止処理の詳細を図5のフローチャートに、マスク復帰処理の詳細を図6(a)のフローチャートに示した。
【0039】
割込禁止処理は、図5に示すように、まず最初にマスクレベルの退避を行う(S101)。割込許可時のマスクレベルは「0」である。したがって、特に割込が禁止されていない場合には、ここでマスクレベル「0」が退避されることになる。マスクレベルを退避するのは、マスクレベル「1」といった割込禁止区間において、例えばマスクレベル「2」といった、よりマスクレベルの高い区間が設定されることがあるからである。
【0040】
そのため次に、現在のマスクレベルより高いマスクレベルが指定されたか否かを判断する(S102)。マスクレベル「1」といった割込禁止区間において、マスクレベル「2」が指定されたような場合、ここで肯定判断される。より高いマスクレベルが指定された場合(S102:YES)、指定のマスクレベルへ変更し(S103)、その後、本割込禁止処理を終了する。一方、指定されたマスクレベルが現在のものよりも小さい場合には(S102:NO)、S103の処理を実行せず、本割込禁止処理を終了する。
【0041】
一方、マスク復帰処理では、図6(a)に示すように、もとのマスクレベルへの変更を行い(S121)、マスクレベルが「0」か否かを判断し(S122)、マスクレベルが「0」であれば(S122:YES)、タスクスケジューリング処理を行う(S123)。
【0042】
ここで「もとのマスクレベル」とは、直前の割込禁止処理(図5参照)のS101にて退避されたマスクレベルである。上述したように、ある割込禁止区間の中にさらに高いマスクレベルの区間が設定されることがある。したがって、S121の処理に続き、マスクレベルが「0」となったか否かを判断し(S122)、マスクレベルが「0」となった場合に(S122:YES)、タスクスケジューリング処理を行う(S123)。マスクレベルが「0」となるまでは、タスク53の実行が禁止されており、タスクスケジューリング処理を実行する必要がないためである。
【0043】
図4(b)は、B割込処理を例示するフローチャートである。B割込処理では、S200における処理▲3▼に続いて、S210にて、タスクbの起床要求がなされる。
ところで、B割込処理の割込レベルは、図3(a)に示したように「3」である。したがって、cタスク処理中の割込禁止処理におけるマスクレベルが「3」以上であれば、cタスクの割込禁止区間で、B割込処理51が割り込む可能性はない。一方、マスクレベルが「2」以下であれば、cタスクの割込禁止区間で、B割込処理が割り込む可能性がある。
【0044】
これを図7のタイミングチャートに基づいて詳細に説明する。
図7(a)では、cタスク53の処理が開始され、時刻t1で割込禁止処理(図4(a)中のS100)が実行されて、マスクレベルが「2」となっている。この場合、時刻t2にて、B割込処理51の割込要求が発生すると、B割込処理51がcタスク53に割り込むことになる。B割込処理51の割込レベルは「3」であり、マスクレベル「2」よりも高いからである。
【0045】
そして、時刻t3で、B割込処理にてbタスク53の起床要求がなされる(図4(b)中のS210)。このタスク起床要求は、図3(b)に示すRTOS52のキューに格納される。bタスク53はタスクレベルが「2」であるため、タスクレベル2のキューに、bタスク53を示す情報が格納される。
【0046】
そして、時刻t4でB割込処理51が終了し、中断していたcタスク53が再び実行される。
次に、時刻t5で、マスク復帰処理が実行され(図4(a)中のS120)、マスクレベルが「0」となる。したがって、タスクスケジューリング処理(図6(a)中のS123)が実行される。このとき、RTOS52のキューにbタスク53を示す情報が格納されているため、RTOS52は、cタスク53からbタスク53への切り換えを行い、cタスク53に優先してbタスクが実行されることになる。そして、時刻t6で、bタスク53が終了すると、中断していたcタスク53が再び実行されることになる。
【0047】
一方、図7(b)では、cタスク53の処理が開始され、時刻u1で割込禁止処理(S100)が実行されて、マスクレベルが「4」となっている。
そのため、時刻u2にて、B割込処理51の割込要求が発生しても、B割込処理51がcタスク53に割り込むことはない。B割込処理51の割込レベルは「3」であり、マスクレベル「4」よりも低いからである。
【0048】
そのため、時刻u3で、マスク復帰処理が実行され(図4(a)中のS120)、マスクレベルが「0」になってはじめて、B割込処理51が実行される。
そして、時刻u4で、B割込処理にてbタスク53の起床要求がなされる(図4(b)中のS210)。このタスク起床要求に基づく情報が、図3(b)に示すRTOS52のキューに格納されることは既に述べた通りである。
【0049】
時刻u5でB割込処理51が終了するとbタスク53が実行され、さらに、時刻u6でbタスク53が終了すると、中断していたcタスク53が再び実行される。このようなタスク53の切り換えは、割込処理51の終了時及びタスク53の終了時におけるタスクスケジューリング処理によって実現される。
【0050】
ところで、図7(b)では、時刻u1からu3で示されるマスクレベル「4」の割込禁止区間において、B割込処理51が実行されることはない。したがって、割込禁止区間において、bタスク53の起床要求がなされる可能性はない。
しかしながら、従来は、図6(a)に示すような、マスク復帰処理を一律に実行していたため、図7(b)中の時刻u3にて、必ずタスクスケジューリング処理が実行されていた。つまり、タスク起床要求がなされる可能性がない場合であっても、割込禁止区間の終了時には、タスクスケジューリング処理が実行されており、タスクスケジューリング処理に要する時間が無駄になっていたのである。
【0051】
そこで、本実施例では、図4(a)中のS120のマスク復帰処理を2種類用意するようにした。一つが既に説明した図6(a)に示すものであり、もう一つが、図6(b)に示すものである。図6(b)に示すマスク復帰処理は、もとのマスクレベルへの変更(S124)のみを行うものである。
【0052】
そして、プログラミング担当者は、上述した割込禁止区間の終了時に、タスク53の切り換えがなされる可能性の有無を判断し、その可能性が無い場合には、図6(b)に示すマスク復帰処理が実行されるように、タスク53をコーディングする。具体的に言えば、図7(a)で示すようにマスクレベル「2」で割り込みを禁止する場合には、図4(a)中のS120にて、図6(a)で示すマスク復帰処理が実行されるようにコーディングする。一方、図7(b)で示すようにマスクレベル「4」で割り込みを禁止する場合には、図4(a)中のS120にて、図6(b)で示すマスク復帰処理が実行されるようにコーディングする。
【0053】
タスク53の切り換えがなされる可能性が無い場合をまとめると、次の(1)又は(2)の2通りの場合が考えられる。
(1)タスク53の起床要求を行う割込処理51に設定された割込レベルの中で、最も高い割込レベル以上の割込レベルを、マスクレベルとする場合
上述の例では、B割込処理51にて、bタスク53の起床要求がなされるものとしていた(図4中のS210)。このとき、A割込処理51では、タスク起床要求がなされないとすると、割込レベル「3」以上、すなわち、マスクレベル「3」又は「4」が指定された割込禁止区間では、タスク起床要求がなされることはない。
【0054】
(2)最も高いタスクレベルの設定されたタスク53に、割込禁止区間が設定される場合
上述の例では、cタスク53の割込禁止区間を問題にしていたが、aタスク53の割込禁止区間の終了時には、タスクスケジューリング処理は不要となる。なぜなら、たとえタスク53の起床要求があっても、aタスク53のタスクレベルが「3」であり、タスク53の中でタスクレベルが最高であるため、タスク53の切り換えがなされる可能性がないからである。
【0055】
したがって、プログラミング担当者は、上記(1)及び(2)の場合には、図6(b)に示すマスク復帰処理が実行されるように、タスク53を作成し、エンジン制御プログラムをコーディングする。
以上のようなエンジン制御プログラムが搭載された実施例のエンジンECU1によれば、割込禁止区間の終了時における無駄なタスクスケジューリング処理が省かれ、実行速度の向上を図ることができる。その結果、リアルタイム性の確保に寄与する。
【0056】
以上、本発明はこのような実施例に何等限定されるものではなく、本発明の主旨を逸脱しない範囲において種々なる形態で実施し得る。
上記実施例のエンジン制御プログラムでは、A〜Dの割込処理51の実行には、RTOS52が介在しない構成となっていたが、図8に示すように、A〜Dの割込処理の実行にRTOSが介在するようなプログラム構成を採用してもよい。
【図面の簡単な説明】
【図1】実施例のエンジンECUの概略構成を示すブロック図である。
【図2】エンジン制御プログラムの構成を示す説明図である。
【図3】(a)は割込レベルとタスクレベルとの関係を示す説明図であり、(b)はタスクスケジューリング処理を示すための説明図である。
【図4】(a)はcタスク処理を例示するフローチャートであり、(b)はB割込処理を例示するフローチャートである。
【図5】割込禁止処理を示すフローチャートである。
【図6】マスク復帰処理を示すフローチャートである。
【図7】マスクレベルによる割り込みやタスク切り換えを示すタイミングチャートである。
【図8】エンジン制御プログラムの別構成を示す説明図である。
【符号の説明】
1…エンジン 10…マイコン
11…CPU 12…ROM
13…RAM 14…I/O
21…入力回路 22…出力回路
30…センサ 40…アクチュエータ
51…割込処理 52…RTOS
53…タスク
Claims (4)
- タスクの起床要求、及び、タスクに設定された実行優先度を示すタスクレベルに基づいて、タスクの切り換えを行うことが可能な構成にされたリアルタイムオペレーティングシステムにより運営され、CPUが、各タスクを切り替えて実行すると共に、割込要求が発生した場合には、実行中のタスクに割り込んで、割込要求に対応する割込処理を、各割込処理に設定された実行優先度を示す割込レベルに応じた順序で、実行する電子制御装置であって、
実行禁止対象の割込処理を定めるマスクレベルを指定して、割込レベルがマスクレベル以下の割込処理の実行、及び、タスクの切り換えを禁止する割込禁止区間、を設定するタスクを有し、
CPUは、前記タスクにより設定される割込禁止区間の終了時に、タスクスケジューリング処理を実行するが、終了した割込禁止区間がタスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル以上のマスクレベルが設定された割込禁止区間である場合に限っては、タスクスケジューリング処理を実行しないこと
を特徴とする電子制御装置。 - タスクの起床要求、及び、タスクに設定された実行優先度を示すタスクレベルに基づいて、タスクの切り換えを行うことが可能な構成にされたリアルタイムオペレーティングシステムにより運営され、CPUが、各タスクを切り替えて実行すると共に、割込要求が発生した場合には、実行中のタスクに割り込んで、割込要求に対応する割込処理を、各割込処理に設定された実行優先度を示す割込レベルに応じた順序で、実行する電子制御装置であって、
実行禁止対象の割込処理を定めるマスクレベルを指定して、割込レベルがマスクレベル以下の割込処理の実行、及び、タスクの切り換えを禁止する割込禁止区間、を設定するタスクを有し、
前記割込禁止区間を設定するタスクの内、設定する割込禁止区間のマスクレベルが、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル未満のマスクレベルであるタスクは、この割込禁止区間の終了時に、CPUにタスクスケジューリング処理を実行させる構成にされ、
前記割込禁止区間を設定するタスクの内、設定する割込禁止区間のマスクレベルが、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル以上のマスクレベルであるタスクは、この割込禁止区間の終了時に、CPUにタスクスケジューリング処理を実行させない構成にされていること
を特徴とする電子制御装置。 - タスクの起床要求、及び、タスクに設定された実行優先度を示すタスクレベルに基づいて、タスクの切り換えを行うことが可能な構成にされたリアルタイムオペレーティングシステムにより運営され、各タスクを切り替えて実行すると共に、割込要求が発生した場合には、実行中のタスクに割り込んで、割込要求に対応する割込処理を、各割込処理に設定された実行優先度を示す割込レベルに応じた順序で、実行するコンピュータに、
実行禁止対象の割込処理を定めるマスクレベルを指定して、割込レベルがマスクレベル以下の割込処理の実行、及び、タスクの切り換えを禁止する割込禁止区間、を設定する機能と、
マスクレベルが、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル以上に設定された割込禁止区間の終了時には、タスクスケジューリング処理を実行せず、マスクレベルが、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル未満に設定された割込禁止区間の終了時には、タスクスケジューリング処理を実行する機能と
を実現させるためのプログラム。 - タスクの起床要求、及び、タスクに設定された実行優先度を示すタスクレベルに基づいて、タスクの切り換えを行うことが可能な構成にされたリアルタイムオペレーティングシステムにより運営され、各タスクを切り替えて実行すると共に、割込要求が発生した場合には、実行中のタスクに割り込んで、割込要求に対応する割込処理を、各割込処理に設定された実行優先度を示す割込レベルに応じた順序で、実行するコンピュータに、
実行禁止対象の割込処理を定めるマスクレベルを指定して、割込レベルがマスクレベル以下の割込処理の実行、及び、タスクの切り換えを禁止する割込禁止区間、を設定するタスクであって、前記マスクレベルとして、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル未満のマスクレベルを指定し、この割込禁止区間の終了時に、タスクスケジューリング処理をコンピュータに実行させる構成のタスクと、
実行禁止対象の割込処理を定めるマスクレベルを指定して、割込レベルがマスクレベル以下の割込処理の実行、及び、タスクの切り換えを禁止する割込禁止区間、を設定するタスクであって、前記マスクレベルとして、タスクの起床要求を行う割込処理に設定された割込レベルの中で最も高い割込レベル以上のマスクレベルを指定し、この割込禁止区間の終了時に、タスクスケジューリング処理をコンピュータに実行させない構成のタスクと
を実行させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002004755A JP3879514B2 (ja) | 2002-01-11 | 2002-01-11 | 電子制御装置及びプログラム |
US10/331,906 US6754576B2 (en) | 2002-01-11 | 2002-12-31 | Electronic control unit having different mask return processes |
EP03000336A EP1327935B1 (en) | 2002-01-11 | 2003-01-09 | Electronic control unit with task return processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002004755A JP3879514B2 (ja) | 2002-01-11 | 2002-01-11 | 電子制御装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003208320A JP2003208320A (ja) | 2003-07-25 |
JP3879514B2 true JP3879514B2 (ja) | 2007-02-14 |
Family
ID=19191029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002004755A Expired - Fee Related JP3879514B2 (ja) | 2002-01-11 | 2002-01-11 | 電子制御装置及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6754576B2 (ja) |
EP (1) | EP1327935B1 (ja) |
JP (1) | JP3879514B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3578082B2 (ja) * | 2000-12-20 | 2004-10-20 | 株式会社デンソー | 処理実行装置及び記録媒体 |
DE10228064B4 (de) * | 2002-06-17 | 2005-08-11 | Robert Bosch Gmbh | Verfahren, Echtzeit-Rechengerät und Initialisierungs-Programm zur Teilinitialisierung eines auf dem Rechengerät ablauffähigen Computerprogramms |
JP3953449B2 (ja) * | 2003-08-26 | 2007-08-08 | 富士通株式会社 | タスク管理プログラムおよびタスク制御装置 |
JP4033215B2 (ja) * | 2006-01-31 | 2008-01-16 | セイコーエプソン株式会社 | マルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム |
US7912623B2 (en) | 2007-09-25 | 2011-03-22 | Denso Corporation | Engine control system designed to manage schedule of engine control tasks |
JP5053109B2 (ja) | 2008-01-23 | 2012-10-17 | 株式会社日立製作所 | 制御装置 |
EP2495656B1 (en) * | 2011-03-02 | 2013-10-09 | BlackBerry Limited | Enhanced prioritising and unifying interrupt controller |
US10552774B2 (en) | 2013-02-11 | 2020-02-04 | Amazon Technologies, Inc. | Cost-minimizing task scheduler |
RU2758418C1 (ru) * | 2019-12-30 | 2021-10-28 | федеральное государственное бюджетное образовательное учреждение высшего образования "Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)" (МГТУ им. Н.Э. Баумана) | Стенд для исследования цифровой системы управления комбинированной энергетической установки |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56138438A (en) * | 1980-03-28 | 1981-10-29 | Nippon Denso Co Ltd | Control method of air-fuel ratio |
JPH064320A (ja) | 1992-06-24 | 1994-01-14 | Nec Corp | タイマ管理方式 |
JPH08328615A (ja) | 1995-05-31 | 1996-12-13 | Hitachi Ltd | 自動車用制御装置 |
JP2968739B2 (ja) | 1996-11-26 | 1999-11-02 | 米沢日本電気株式会社 | 時間待ち行列管理方法 |
JP4241953B2 (ja) * | 1998-01-19 | 2009-03-18 | 株式会社デンソー | 車両用診断装置 |
JP2001229036A (ja) | 2000-02-18 | 2001-08-24 | Toshiba Corp | 機構制御方法 |
JP3578082B2 (ja) | 2000-12-20 | 2004-10-20 | 株式会社デンソー | 処理実行装置及び記録媒体 |
-
2002
- 2002-01-11 JP JP2002004755A patent/JP3879514B2/ja not_active Expired - Fee Related
- 2002-12-31 US US10/331,906 patent/US6754576B2/en not_active Expired - Lifetime
-
2003
- 2003-01-09 EP EP03000336A patent/EP1327935B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003208320A (ja) | 2003-07-25 |
US20030135319A1 (en) | 2003-07-17 |
EP1327935A2 (en) | 2003-07-16 |
EP1327935B1 (en) | 2012-02-22 |
US6754576B2 (en) | 2004-06-22 |
EP1327935A3 (en) | 2006-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3610915B2 (ja) | 処理実行装置及びプログラム | |
JP5195913B2 (ja) | マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法 | |
JP3578082B2 (ja) | 処理実行装置及び記録媒体 | |
JP3879514B2 (ja) | 電子制御装置及びプログラム | |
JP4241462B2 (ja) | 制御ユニットおよびマイクロコンピュータ | |
JP5533789B2 (ja) | 車載電子制御装置 | |
US20100281485A1 (en) | Method For Changing Over A System Having Multiple Execution Units | |
JP4419943B2 (ja) | Cpu間データ転送装置 | |
JP2013152636A (ja) | 情報処理装置、タスクスケジューリング方法 | |
CN110737616B (zh) | 处理中断优先级的电路*** | |
JP3783553B2 (ja) | 情報処理装置 | |
JP2013084219A (ja) | 情報処理装置、異常判定方法 | |
JP7476638B2 (ja) | マルチプロセッサシステム | |
WO2005013130A1 (ja) | リアルタイム制御システム | |
JP3617445B2 (ja) | 情報処理装置 | |
EP1248192A2 (en) | Processing execution apparatus having data reference limiting function | |
JP2001256063A (ja) | 制御装置及びエンジン制御装置 | |
JP7070108B2 (ja) | マルチコアマイコンを備える電子制御装置 | |
US20180173559A1 (en) | Electronic Control Device and Stack Usage Method | |
JP6466269B2 (ja) | 電子制御装置及びスタック領域の使用監視方法 | |
JP2019135656A (ja) | 電子制御装置及びスタック使用方法 | |
JP2005240631A (ja) | 内燃機関制御系の異常監視システム | |
JP2022098090A (ja) | 車両制御装置 | |
JPH04295162A (ja) | 機器の制御装置 | |
JP2019215804A (ja) | マルチコアマイコン及び並列化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040428 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060419 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060425 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060621 |
|
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: 20061017 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061030 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3879514 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101117 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121117 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131117 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |