JP2010157014A - 車両用電子制御ユニット、割込み制御方法 - Google Patents

車両用電子制御ユニット、割込み制御方法 Download PDF

Info

Publication number
JP2010157014A
JP2010157014A JP2008333457A JP2008333457A JP2010157014A JP 2010157014 A JP2010157014 A JP 2010157014A JP 2008333457 A JP2008333457 A JP 2008333457A JP 2008333457 A JP2008333457 A JP 2008333457A JP 2010157014 A JP2010157014 A JP 2010157014A
Authority
JP
Japan
Prior art keywords
task
interrupt request
interrupt
execution
electronic control
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
Application number
JP2008333457A
Other languages
English (en)
Inventor
Yasuhiro Tanaka
康弘 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2008333457A priority Critical patent/JP2010157014A/ja
Publication of JP2010157014A publication Critical patent/JP2010157014A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Combined Controls Of Internal Combustion Engines (AREA)

Abstract

【課題】コスト増を抑制して、割込み要因の発生した順番で対応する処理を実行可能な電子制御ユニット等を提供すること。
【解決手段】第1のタスクAを起床させた第1の割込み要求の他に登録されている第2の割込み要求を検出する第1の割込み要求検出手段25Aと、第2の割込み要求の発生時刻が、第1の割込み要求の発生時刻よりも前か否かを判定する第1の時刻判定手段24Aと、記第2の割込み要求の発生時刻が、第1の割込み要求の発生時刻よりも前の場合、第1のタスクAが実行する第1の処理Aに先立ち、第2の割込み要求により起床される第2のタスクBが提供する第2の処理Bと同等な第2の処理Aを実行する第2の処理実行手段27Aと、第2の処理Aの実行の終了後、第1の処理Aを実行する第1の処理実行手段26Aと、
を有することを特徴とする車両用電子制御ユニット。
【選択図】図1

Description

本発明は、車両用電子制御ユニット及び割込み制御方法に関し、特に、割込み要因の発生とハンドラの起動順を調整できる車両用電子制御ユニット及び割込み制御方法に関する。
車両には、パワートレーン系、ボディ系、マルチメディア系など、種々のシステムが搭載されており、各システムはセンサが検出する信号やシステム間のデータ通信等を利用して所望の制御を所望のタイミングで実行している。このような制御を実現するため、車両にはマイコンを搭載した種々の電子制御ユニット20が搭載されている。電子制御ユニット20には各種のセンサ、アクチュエータ及びスイッチ等が接続されており、電子制御ユニット20はセンサの検出した信号に演算を施し、演算結果に応じてアクチュエータやスイッチ等を制御している。
ここで、電子制御ユニット20が実行する演算は1つとは限らないので、例えばセンサが検出した信号によってマイコンに割込みを発生させ、マイコンが必要な演算を必要なタイミングで実行できるように設計されている。
しかしながら、割込みが短時間に複数発生することもあり、このような場合に割込みに対応した複数の演算が、時間的に前後することがあることが知られている。図1は、割込み要因の発生タイミングと、対応するハンドラの実行順の関係の一例を示す。An(n:1〜9)の割込み要因は、クランク角の所定の回転角度毎に発生する割込みで、同じハンドラAが起動する。同様に、Bn(n:1、2)の割込み要因は、クランク角のより大きな回転角度毎に発生する割込みで、同じハンドラBが起動する。図示するように、割込み要因A3に対しハンドラAが起動した後、割込み要因B1に対しハンドラBが起動し、ついで、割込み要因A4に対しハンドラAが起動する。このように、割込み要因の発生タイミングと、ハンドラの起動順が一致していれば制御ロジックの不整合が生じない。
しかし、図示するように電子制御ユニット20には割込み要因An、Bn以外の割込み要因が発生することがある。図1では、割込み要因B2とA8が、共に、他の割込み要因に起因したハンドラC(ハンドラCは同じものとは限らない)の実行中に発生している。割込み要因が発生すると、マイコンは割込みテーブルに割込み要求を登録するが、他の割込み要求が登録されていなければ、マイコンは割込みテーブルに登録された割込み要求に対応したハンドラをすぐに起動する。
これに対し、他の割込み要因に起因したハンドラCの実行中である等の理由により、複数の割込み要求が割込みテーブルに登録された場合、他の割込み要因に対応したハンドラCが終了した時点で、マイコンは割込みテーブルの例えばアドレス順に割込み要求を走査し次に起動するハンドラを決定する。すなわち、割込み要因が発生した順番にハンドラが起動するとは限らない。このため、図示するように、割込み要因B2、A8の順序で割込み要因が発生しているのに、ハンドラAが先に起動しハンドラBが後に起動することになり、割込み要因の発生とハンドラの起動順の整合性がとれない状況が生じてしまう。この場合、制御ロジックの不整合が生じることが懸念される。
割込み要因の発生順とハンドラの起動順を整合させるため、割込み要求が短時間に複数発生した場合、割込み要求の順に対応した演算の起動要求を記憶する電子制御ユニットが開示されている(例えば、特許文献1参照。)。これにより、起動要求が重なる場合でも、割込み要求が順番に全て実行されるので、処理抜けを防止できるとしている。
特開2000−34948号公報
しかしながら、特許文献1記載の電子制御ユニットでは、起動要求を割込み要求の順に記憶するという構成が必要となる。すなわち、起動要求を識別する識別情報をメモリやレジスタに割込みの要求順に記憶することが必要となるため、電子制御ユニットのマイコンに複雑な実装が必要となるという問題がある。このため、電子制御ユニットのハード的な改良が必要となりコスト増となったり、特定の電子制御ユニットでしか実現できないことになってしまう。
本発明は、上記課題に鑑み、コスト増を抑制して、割込み要因の発生した順番で対応する処理を実行可能な電子制御ユニット及び割込み制御方法を提供することを目的とする。
上記課題に鑑み、本発明は、発生した割込み要因毎に割込み要求及び発生時刻を登録しておき、割込み要求に対応したいずれかのタスクが実行可能になると、1以上の割込み要求を走査して第1のタスク(例えば、タスクA)を起床する電子制御ユニットであって、第1のタスクを起床させた第1の割込み要求(例えば、割込み要求フラグA)の他に登録されている第2の割込み要求(例えば、割込み要求フラグB)を検出する第1の割込み要求検出手段(例えば、フラグ判定部25A)と、第2の割込み要求の発生時刻が、第1の割込み要求の発生時刻よりも前か否かを判定する第1の時刻判定手段(例えば、キャプチャ時刻24A)と、第2の割込み要求の発生時刻が、第1の割込み要求の発生時刻よりも前の場合、第1のタスクが実行する第1の処理(例えば、処理A)に先立ち、第2の割込み要求により起床される第2のタスク(例えば、タスクB)が提供する処理(例えば、処理B)と同等な第2の処理(タスクAが実行する処理B)を実行する第2の処理実行手段A(例えば、処理B実行部27A)と、第2の処理の実行の終了後、第1の処理を実行する第1の処理実行手段A(例えば、処理A実行部26A)と、を有することを特徴とする。
コスト増を抑制して、割込み要因の発生した順番で対応する処理を実行可能な電子制御ユニット及び割込み制御方法を提供するができる。
以下、本発明を実施するための最良の形態について図面を参照しながら説明する。
〔本実施形態の電子制御ユニット20の概略〕
図2は、本実施形態の電子制御ユニット20が割込みを処理する手順を模式的に説明する図の一例である。電子制御ユニット20のマイコン(以下、CPU14という)は各種の割込み要因を受け付ける。CPU14は、割込み要因が発生すると発生時刻(以下、キャプチャ時刻という)をキャプチャ時刻レジスタ30に記憶すると共に、割込み要因に対応づけられている割込み要求フラグをオンにする。一連の割込み要求フラグの状態を記憶したテーブルを割込み定義テーブル40という。
ここで、割込み要因に優先順位が付与されている場合があるが、本実施形態では割込み要因の優先順位は同一であるものとする。そして、優先順位が同一の複数の割込み要因が発生した場合、CPU14は割込み定義テーブル40の割込みベクタ順やアドレス順に(以下、単に「アドレス順に」という)対応するハンドラを起動する。例えば、CPU14は、割込み要求フラグA、割込み要求フラグB、割込み要求フラグC、の順に割込み定義テーブル40を参照し、オンになっているフラグが見つかり次第、割込み要求フラグに対応するハンドラを起動するものとする。なお、割込み要求フラグAに対してはハンドラAが起動され、割込み要求フラグBに対してはハンドラBが起動され、割込み要求フラグCに対してはハンドラCが起動される。割込み要求フラグCは、割込み要因A、Bとは別の他の割込み要因に対応したフラグで、他の割込み要因は互いに同じ割込みとは限らないが、区別せずにハンドラCが起動されるものとする。
例えば、割込み要求フラグA、Bがオンになっている状態で、ハンドラCの実行が終了したとする。この場合、CPU14が割込み定義テーブル40をアドレス順に参照すると、割込み要求フラグAがオンなので、ハンドラAを起動する。ハンドラAは、割込み要因Aに対応した処理A(以下、「割込み要因Aに付随する」という)を実行するタスクAを起床する(ハンドラAがそのまま処理Aを実行してもよい)。
そして本実施形態の電子制御ユニット20は、タスクAが処理A以外の処理を実行可能な点が特徴の1つになっている。すなわち、本来、タスクAが実行する処理は、割込み要因Aに付随した処理Aだけであるが、本実施形態のタスクAは、割込み要因Bに付随する処理Bを実行することができる。タスクと処理を区別するため、タスクAと処理A、タスクBと処理B等、のようにタスクと処理を区別して表記する。
タスクAは、次の2つの条件がいずれも成立する場合、処理Aよりも処理Bを先に実行すべきであると判定する。
(a1)割込み要求フラグBがオン
(a2)割込み要因Bのキャプチャ時刻が割込み要因Aのキャプチャ時刻よりも前
すなわち、この2つの条件が共に成立する場合、割込み要因Bが割込み要因Aよりも先に発生したことになるので、処理Aが先に実行されると、後に発生した割込み要因Aに付随する処理Aを、先に発生した割込み要因Bに付随する処理Bよりも先に実行することになってしまう。そこで、2つの条件(a1)(a2)が共に成立する場合、タスクAは処理Aよりも先に処理Bを実行する。
こうすることで、割込み要因が発生したタイミングと割込み要因に付随する処理の実行順序の整合性を保つことができる。キャプチャ時刻の記憶と割込み要求フラグの操作は、従来から可能なCPU14が多いので、そのようなCPU14では構成を追加する必要がない。したがって、コスト増となることもない。
なお、タスクAが処理Bを実行するため、次にタスクBが起床されると処理Bが重複して実行されるおそれが生じる。このため、電子制御ユニット20は、フラグ(後述する処理A実行フラグ31と処理B実行フラグ32)を利用して重複実行を回避する。
〔ハードウェア構成の例〕
図3は、電子制御ユニット20のハードウェア構成図の一例を示す。電子制御ユニット20はコンピュータを実体とし、CPU14、EEPROM13、RAM15、入力インターフェイス12、出力インターフェイス16、及び、ASIC(Application Specific Integrated Circuit)17がバスを介して接続された構成を有する。車両には数多くの電子制御ユニット20が搭載されており、上記の割込み制御はどの電子制御ユニット20にも適用できる。しかし、割込み要因と付随する処理の順番に厳密なロジックが要求されるのは制御系であることが多いので、特にパワートレーン系、エンジン系、トランスミッション系、ブレーキ系等の制御系の電子制御ユニット20に好適に適用できる。
例えば、パワートレーン系の電子制御ユニット20の入力インターフェイス12に接続されるセンサA〜C(区別しない場合、センサ11という)は、例えば、クランク角センサ、エアフローセンサ、O2センサ、EGR(Exhaust Gas Recirculation)センサ等である。また、出力インターフェイス16はMOSFETやIGBT(Insulated Gate Bipolar Transistor)等を実体とし、出力インターフェイス16に接続されるアクチュエータA〜C(区別しない場合、アクチュエータ18という)は、例えば、イグニッションプラグ、インジェクタ、VVTソレノイド、各種のソレノイド、スロットルモータ等である。なお、ASIC17は、特定の演算や制御に対応して実装されており、ASIC17にアクチュエータやソレノイド等が接続されてもよい。
CPU14は、EEPROM13に記憶されたプログラムやパラメータデータを読み出し、RAM15を作業メモリにして各種のタスクを実行する。この電子制御ユニット20では1つのCPU(複数のコアを有していてもよい)14が複数のタスクを切り替えて実行することが前提になっているので、各処理はプリエンプティブに実行される。このため、電子制御ユニット20はリアルタイムOSを搭載していることが好ましい。リアルタイムOSはマルチタスク環境を提供し、各タスクの最大の実行待ち時間、最大割り当て時間等を制御して、タスク・スケジューリングする。一般にはタスクの優先度を考慮してスケジューリングするものである。
〔処理A、処理Bの例〕
タスクAが実行する処理A、タスクBが実行する処理Bについて図4に基づき説明する。処理Bは、例えばクランク角の240度毎に発生する割込みに付随した処理で、VVT(Variable Valve Timing)入力履歴を記憶する処理に相当する。すなわちタスクBは、VVT入力履歴の有無を示す例えばフラグをオンにする。
また、処理Aは、例えばクランク角の30度毎に発生する割込みに付随した処理で、エンジン回転数を算出する処理、及び、VVT入力角度を算出する処理に相当する。クランク角度が30度変化する毎に割込みが発生する場合、割込み要因A3が発生した時刻と割込み要因A4が発生した時刻からクランク角が30度変化するために必要な時間T0が計算される。割り込み発生要因A4により起床されたタスクAは、算出された時間T0を12倍した値からエンジンの1回転の時間を求め、例えば1分間当たりのエンジン回転数を算出する。
また、VVT入力角度の算出のため、タスクAは、割込み要因A3が発生した時刻から割込み要因A4が発生した時刻までの時間T0と、割込み要因A3が発生した時刻から割込み要因B1が発生した時刻までの時間T1の比を求める。すなわち、タスクAは、VVT入力履歴の有無を示すフラグがオンの場合、T1/T0(又はT2/T0でもよい)を算出する。割込み要因A、Bが発生したキャプチャ時刻は記憶されているので、T1/T0は容易に算出される。
そして、タスクAは、次式からVVT入力角度を算出する。
VVT入力角度=割込み要因A3が発生した時刻のクランク角度
+ T1×定数/T0
なお、定数は、割り込み要因A3が発生してから割り込み要因A4が発生するまでのクランク角度(例えば30度)である。
以上のような処理A、処理Bの内容によれば、図1を用いて説明したように、割込み要因B2に付随する処理Bが、割り込み要因A8に付随する処理A8の実行の終了後に実行されると、VVT入力履歴の有無を示すフラグがオンになっていないことになる。したがって、タスクAは、VVT入力角度の算出ができない。本実施形態の電子制御ユニット20は、このような不都合を防止することができる。
〔割込み要求フラグの設定、キャプチャ時刻の記憶〕
図5は、タスクAが起床される手順を模式的に示す図の一例である。センサA〜Cは、入力インターフェイス12を介してCPU14の割込みポート21に接続される。割込みポート21は、割込み要求が入力されると「1」になる。割込みポート21の出力はマスクレジスタ22に入力される。マスクレジスタ22は割込みポート21毎に受付の可否を決定するレジスタで、CPU14は割込み要因に応じてマスクレジスタ22の値を可変に設定する。割込み要求の受付が許可されると、割込み定義テーブル40に信号がラッチされる。これにより、割込み要求フラグA〜Cがオンになる。
また、CPU14は割込み要求フラグA〜Cがオンになった時にCPU14が有する時計の時刻情報をキャプチャ時刻としてキャプチャ時刻レジスタ30に記憶する。キャプチャ時刻レジスタ30は複数の記憶エリアを有し、割込み要因と予め対応づけられている。
〔タスク・スケジューリング〕
スケジューラ23はリアルタイムOSにより提供される機能で、CPU14に割り当てるタスクA〜Cをスケジューリングする。図6は、状態遷移図の一例を示す。よく知られているように、タスクは3つの状態を取り得る。実行状態は、CPU14によりそのタスクが実行されている状態を、実行可能状態は、タスクの実行に必要な条件は整っているが、当該タスクよりも優先順位が高いタスクや同一の優先順位だが先に実行可能となったタスクが実行状態であるため、CPU14が開放されるのを待っている状態である。実行待ち状態は、タスクを実行するための条件、例えば、ユーザの操作、他のタスクの演算結果の終了、時間の経過等の成立を待っている状態である。実行待ち状態のタスクは、CPU14が他のタスクを実行していなくても、実行状態にならない。
スケジューラ23により各タスクは、例えば次のような手順で状態間を遷移する。
I.実行状態のタスクは実行が終了すると消滅する。
II.CPU14が開放されると、スケジューラ23は実行可能状態のタスクを実行状態にディスパッチする。
III.実行状態のタスクより優先度の高いタスクが実行可能状態になると、スケジューラ23は実行中のタスクを実行可能状態に遷移させる。
VI.実行状態のタスクが、タスクを実行するための条件を待つようになると、スケジューラ23はそのタスクを実行待ち状態に遷移させる。
V.実行待ち状態のタスクが実行するための条件が成立すると、スケジューラ23は実行可能状態に遷移させる。
〔タスクAがタスクBより先に起床された場合の処理A、処理Bの実行順の調整〕
例えば、割込み要因が発生した直後(割込み要求フラグA〜Cがオンになった直後)は、タスクA〜Cはタスクを実行するための条件が成立していると見なせるのでタスクA〜Cは当初、実行可能状態となる。本実施形態ではタスクA〜Cの優先順位は同一なので、タスクA〜Cは実行可能状態になった順番に、CPU14にディスパッチされる。
図5の丸数字が示すように割込み要因C、B、Aの順番で、3つの割込みが発生した場合を例に具体的に説明する。割込み要因Cが最初に発生するので、スケジューラ23はタスクCを実行状態にする。タスクCの実行中に、割込み要因Bが発生した場合、スケジューラ23はタスクBは実行可能状態にする(図6(a))。この状態で、さらに割込み要因Aが発生した場合、タスクAはタスクBと同様に実行可能状態となる(図6(b))。
タスクCの実行が終了すると、スケジューラ23は、割込み定義テーブル40を参照し、オンになっている割込み要求フラグA〜Cをアドレス順に走査する。図6(b)では複数のタスクA、Bが実行可能状態となっているため、スケジューラ23は、割込み要因Aに対応したハンドラAを起動する。ハンドラAはタスクAを起床する(図6(c))。
したがって、先に発生した割込み要因BのタスクBよりもタスクAが先に起床されてしまう。本実施形態の電子制御ユニット20はこの不整合を調整するため、タスクAは処理Aと処理Bを実行する順番を調整する。
図5に戻り、具体的にタスクAは、割込み要求フラグBがオンか否かを判定するフラグ判定部25Aと、割込み要因Bのキャプチャ時刻が割込み要因Aのキャプチャ時刻よりも前か否かを判定するキャプチャ時刻判定部24Bと、を有する。また、タスクAは、処理Aを実行するための処理A実行部26A、処理Bを実行するための処理B実行部27Aを有する。
フラグ判定部25Aは割込み定義テーブル40を参照し上記(a1)の条件が成立するか否かを判定し、キャプチャ時刻判定部24Aはキャプチャ時刻レジスタ40から割込み要因Aと割込み要因Bのキャプチャ時刻を参照し、上記(a2)の条件が成立するか否かを判定する。条件(a1)(a2)が成立する場合、処理B実行部27Aが処理Aよりも先に処理Bを実行する。そして、処理Bの実行の終了後、処理A実行部26Aが処理Aを実行する。こうすることで、割込み要因が発生したタイミングと割込み要因に付随する処理の実行順序の整合性を保つことができる。
なお、処理B実行部27Aが処理Bを実行する態様は、処理Aの一部に処理Bのコードを記述しておく態様や、処理Aから処理Bのサブルーチンを呼び出す態様等がある。すなわち、処理B実行部27AはタスクBそのもの起床させるわけではないので、厳密にはタスクAが実行する処理Bと、タスクBが実行する処理Bは異なるが、得られる演算結果は同じである。
ところで、図6(d)に示すように、タスクAの実行が終了するとCPU14はタスクBを実行することになる。しかし、処理Bはすでに実行されているので、タスクBがそのまま処理Bを実行すると重複実行となってしまう。そこで、タスクBが処理Bの重複実行を回避できるよう、タスクAは処理A実行フラグ31及び処理B実行フラグ32を参照したり操作することができる。
処理A実行フラグ31は、処理AがタスクB内で実行された場合にオンとなるフラグであり、処理B実行フラグ32は、処理BがタスクA内で実行された場合にオンとなるフラグである。例えば、タスクAの処理B実行部27Aが処理Bを実行すると処理B実行フラグ32をオンにする。こうすることで、図6(d)に示すように、タスクBが実行状態になった際、処理Bの重複実行を防止する。すなわち、タスクBの処理B実行部26Bが処理Bを実行する際、処理B実行フラグ32を参照し、オンの場合は処理Bを実行しないようにすることで、重複実行を防止できる。
なお、タスクAの処理A実行部26Aは処理Aを実行すると処理A実行フラグ31をオフにする。これは、タスクAにおける処理Aの実行は、タスクB内の実行ではないからである。
重複実行を防止するため、処理A実行フラグ31や処理B実行フラグ32を利用するのでなく、割込み要求フラグA、Bをオフにしてもよい。例えば、タスクAが割込み要求フラグBをオフにすることで、スケジューラ23が実行可能状態のタスクBを消去することができれば、スケジューラ23がタスクBを起床することがなく、処理Bが重複実行されることもない。
〔タスクBがタスクAより先に起床された場合の処理A、処理Bの実行順の調整〕
タスクBもタスクAと同様に、処理Bだけでなく処理Aを実行することができ、処理Bと処理Aを実行するタイミングを調整することができる。
タスクBは、次の2つの条件がいずれも成立する場合、処理Bよりも処理Aを先に実行すべきであると判定する。
(b1)割込み要求フラグAがオン
(b2)割込み要因Aのキャプチャ時刻が割込み要因Bのキャプチャ時刻よりも前
図7は、タスクBが起床される手順を模式的に示す図の一例である。図7において図5と同一部の説明は省略する。タスクBは、割込み要求フラグAがオンか否かを判定するフラグ判定部25Bと、割込み要因Aのキャプチャ時刻が割込み要因Bのキャプチャ時刻よりも前か否かを判定するキャプチャ時刻判定部24Bと、を有する。また、タスクBも処理A実行部26Bと処理B実行部27Bを有し、処理Bだけでなく処理Aを実行することができる。
フラグ判定部25Bが上記(b1)の条件が成立するか否かを判定し、キャプチャ時刻判定部24Bが上記(2)の条件が成立するか否かを判定する。条件(1)(2)が成立する場合、タスクBは処理Bよりも先に処理Aを実行する。
図8は、タスクBが処理Aと処理Bの実行順を調整する際の状態遷移図の一例を示す。割込み要因C、A、Bの順番で,3つの割込みが発生した場合を例に説明する。タスクCの実行中に、割込み要因Aが発生した場合、タスクAは実行可能状態となる(図8(a))。この状態で、割込み要因Bが発生した場合、タスクBはタスクAと同様に実行可能状態となる(図8(b))。
スケジューラ23は割込み定義テーブル40を参照し、オンになっている割込み要求フラグA〜Cをアドレス順に参照する。スケジューラ23が、割込み要求フラグA〜Cのアドレスの影響で、例えば割込み要因Aに対応したハンドラAを起動する場合、タスクBが処理Aと処理Bの実行順を調整する状況にならない。しかしここでは、説明のため、スケジューラ23がハンドラBをディスパッチし、ハンドラBがタスクBを起床したものとする(図8(c))。
このため、タスクBは処理Bと処理Aを実行するタイミングを調整する。フラグ判定部25Bは上記(b1)の条件が成立するか否かを判定し、キャプチャ時刻判定部24Bは上記(b2)の条件が成立するか否かを判定する。条件(b1)(b2)が成立する場合、処理A実行部26Bが処理Bよりも先に処理Aを実行する。そして、処理Aの実行の終了後、処理B実行部27Bが処理Bを実行する。こうすることで、割込み要因が発生したタイミングと割込み要因に付随する処理の実行順序の整合性を保つことができる。
また、処理Aの重複実行を回避するため、タスクBの処理A実行部26Bが処理Aを実行すると処理A実行フラグ31をオンにする。こうすることで、図8(d)に示すように、タスクAが実行状態になった際、処理Aの重複実行を防止する。すなわち、タスクAの処理A実行部26Aが処理Aを実行する際、処理A実行フラグ31を参照し、オンの場合は処理Aを実行しないようにすることで、重複実行を防止できる。
また、タスクBの処理B実行部27Bは処理Bを実行すると処理B実行フラグ32をオフにする。これは、タスクBにおける処理Bの実行は、タスクA内の実行ではないからである。
〔動作手順〕
図9(a)は割込み要因Aの発生によるCPU14の動作手順を、図9(b)は割込み要因Bの発生によるCPU14の動作手順をそれぞれ示す。
例えば、CPU14はシステムクロックのサイクル毎にセンサA〜Cからの信号を検出しており、センサAから割込み要求があると割込み定義テーブル40の対応する割込み要求フラグAをオンにする(S10)。これにより、タスクAは実行可能状態となる。
また、CPU14は割込み要求フラグAをオンにした時の時刻情報をキャプチャ時刻として、キャプチャ時刻レジスタ30の割込み要因Aに対応した領域に記憶させる(S20)。
同様にして、CPU14はシステムクロックのサイクル毎にセンサA〜Cからの信号を検出しており、センサBから割込み要求があると割込み定義テーブル40の対応する割込み要求フラグBをオンにする(S10)。これにより、タスクBは実行可能状態となる。
また、CPU14は割込み要求フラグBをオンにした時の時刻情報をキャプチャ時刻として、キャプチャ時刻レジスタ30の割込み要因Bに対応した領域に記憶させる(S20)。
図10(a)はタスクAが処理Aと処理Bの実行順序を調整する手順の一例を、図10(b)はタスクBが処理Aと処理Bの実行順序を調整する手順の一例を、それぞれ示す。図10(a)、図10(b)のフローチャート図の処理は、スケジューラ23がハンドラA又はハンドラBをCPU14にディスパッチするとそれぞれどちらか一方がスタートする。
ハンドラAがディスパッチされた場合から説明する。ハンドラAはタスクAを起床する。まず、タスクAが起床されることで、割込み要求フラグAの役割は終了したので、ハンドラAは割込み要求フラグAオフにする(S110)。
そして、フラグ判定部25Aは、(a1)割込み要求フラグBがオンか否かを、キャプチャ時刻判定部24Aは(a2)割込み要因Bのキャプチャ時刻が割込み要因Aのキャプチャ時刻よりも前か否かを判定する(S120)。
(a1)(a2)の条件が成立した場合(S120のYes)、タスクAは先に割込み要因が発生したタスクBを追い越して起床されたと判定する(S130)。このため、処理B実行部27Aが処理Aよりも先に処理Bを実行する(S140)。また、重複実行を回避するため、処理B実行部27Aは処理B実行フラグ32をオンにする。
ついで、タスクAの処理A実行部26Aは、処理A実行フラグ31がオンかオフかを判定し、オフの場合にのみ処理Aを実行する(S150)。タスクAの処理A実行部26Aが処理Aを実行したので、処理A実行フラグ31をオフに設定する(S160)。
ハンドラBがディスパッチされた場合を説明する。ハンドラBはタスクBを起床する。まず、タスクBが起床されることで、割込み要求フラグBの役割は終了したので、ハンドラBは割込み要求フラグBオフにする(S110)。
そして、フラグ判定部25Bは、(b1)割込み要求フラグAがオンか否かを、キャプチャ時刻判定部24Aは(b2)割込み要因Aのキャプチャ時刻が割込み要因Bのキャプチャ時刻よりも前か否かを判定する(S120)。
(b1)(b2)の条件が成立した場合(S120のYes)、タスクBは先に割込み要因が発生したタスクAを追い越して起床されたと判定する(S130)。このため、処理B実行部27Bは処理Bよりも先に処理Aを実行する(S140)。また、重複実行を回避するため、処理A実行部26Bは処理A実行フラグ31をオンにする。
ついで、タスクBの処理B実行部27Bは、処理B実行フラグ32がオンかオフかを判定し、オフの場合にのみ処理Bを実行する(S150)。タスクBの処理B実行部27Bが処理Bを実行したので、処理B実行フラグ32をオフに設定する(S160)。
以上説明したように、各タスクが割込み要求フラグがオンになっている割込み要求のキャプチャ時刻を比較してタスクの追い越しを検出することで、割込み要因が発生したタイミングと割込み要因に付随する処理の実行順序の整合性を保つことができる。CPU14の構成を修正する必要もないので、コスト増を最小限に抑制できる。
なお、上記では、タスクAとタスクBという2つのタスクの間で、処理A、処理Bの実行順を調整したが、タスクAはタスクB以外のタスクD、E、F…の処理D、E、Fを追い越しているか否かを判定することもでき、タスクBはタスクA以外のタスクD、E、F…の処理D、E、Fを追い越しているか否かを判定することもできる。したがって、本実施形態の電子制御ユニット20は、3以上のタスクが実行する処理の順番を、割込み要因が発生した順番と一致させることができる。一般にはスケジューラ23が優先度の高いタスクを優先的にディスパッチするので、本実施形態の実行順序の調整方法は、特に優先度の同じタスクが含む処理の実行順序を調整する場合に有効である。
割込み要因の発生タイミングと、対応するハンドラの実行順の関係の一例を示す図である(従来図)。 電子制御ユニットが割込みを処理する手順を模式的に説明する図の一例である。 電子制御ユニットのハードウェア構成図の一例である。 処理A、処理Bを説明する図の一例である。 タスクAが起床される手順を模式的に示す図の一例である。 状態遷移図の一例である。 タスクBが起床される手順を模式的に示す図の一例である。 タスクBが処理Aと処理Bの実行順を調整する際の状態遷移図の一例である。 割込み要因Aの発生によるCPUの動作手順と、割込み要因Bの発生によるCPUの動作手順をそれぞれ示すフローチャート図の一例である。 タスクAが処理Aと処理Bの実行順序を調整する手順の一例と、タスクBが処理Aと処理Bの実行順序を調整する手順の一例を、それぞれ示すフローチャート図の一例である。
符号の説明
11 センサ
14 CPU
18 アクチュエータ
20 電子制御ユニット
24A、24B キャプチャ時刻判定部
25A、25B フラグ判定部
26A、26B 処理A実行部
27A、27B 処理B実行部
31 処理A実行フラグ
32 処理B実行フラグ
30 キャプチャ時刻レジスタ
40 割込み定義テーブル

Claims (10)

  1. 発生した割込み要因毎に割込み要求及び発生時刻を登録しておき、前記割込み要求に対応したいずれかのタスクが実行可能になると、1以上の前記割込み要求を走査して第1のタスクを起床する電子制御ユニットであって、
    前記第1のタスクを起床させた第1の割込み要求の他に登録されている第2の割込み要求を検出する第1の割込み要求検出手段と、
    前記第2の割込み要求の発生時刻が、前記第1の割込み要求の発生時刻よりも前か否かを判定する第1の時刻判定手段と、
    前記第2の割込み要求の発生時刻が、前記第1の割込み要求の発生時刻よりも前の場合、前記第1のタスクが実行する第1の処理に先立ち、前記第2の割込み要求により起床される第2のタスクが提供する処理と同等な第2の処理を実行する第2の処理実行手段Aと、
    前記第2の処理の実行の終了後、前記第1の処理を実行する第1の処理実行手段Aと、
    を有することを特徴とする車両用電子制御ユニット。
  2. 前記第2のタスク以外のタスクで前記第2の処理が実行された場合にオンとなる第2の実行フラグを有し、
    前記第2の処理実行手段Aは、前記第2の処理を実行した後、前記第2の実行フラグをオンに設定する、
    ことを特徴とする請求項1記載の車両用電子制御ユニット。
  3. 前記第1のタスク以外のタスクで前記第1処理が実行された場合にオンとなる第1の実行フラグを有し、
    前記第1の処理実行手段Aは、前記第1の処理の実行の終了後、前記第1の実行フラグをオフに設定する、
    ことを特徴とする請求項1記載の車両用電子制御ユニット。
  4. 前記第1の処理実行手段Aは、前記第1の実行フラグがオフの場合にのみ、前記第1の処理を実行する、
    ことを特徴とする請求項3記載の車両用電子制御ユニット。
  5. 前記第1のタスクの実行の終了後、前記割込み要求が走査され前記第2のタスクが起床された場合、
    前記第2の実行フラグがオフの場合にのみ、前記第2の処理を実行する第2の処理実行手段B、
    を有することを特徴とする請求項2記載の車両用電子制御ユニット。
  6. 前記第2のタスクを起床させた第2の割込み要求の他に登録されている前記第1の割込み要求を検出する第2の割込み要求検出手段と、
    前記第1の割込み要求の発生時刻が、前記第2の割込み要求の発生時刻よりも前か否かを判定する第2の時刻判定手段と、
    前記第1の割込み要求の発生時刻が、前記第2の割込み要求の発生時刻よりも前の場合、前記第2のタスクが実行する前記第2の処理に先立ち、前記第1の割込み要求により起床される第1のタスクが提供する処理と同等な前記第1の処理を実行する第1の処理実行手段Bと、
    前記第1の処理の実行の終了後、前記第2の処理を実行する第2の処理実行手段Bと、
    を有することを特徴とする請求項5記載の車両用電子制御ユニット。
  7. 前記第1のタスク以外のタスクで前記第1処理が実行された場合にオンとなる第1の実行フラグを有し、
    前記第1の処理実行手段Bは、
    前記第1の処理を実行した後、前記第1の実行フラグをオンに設定する、
    ことを特徴とする請求項6記載の車両用電子制御ユニット。
  8. 前記第2の処理実行手段Bは、前記第2の処理を実行した後、前記第2の実行フラグをオフに設定する、
    ことを特徴とする請求項6記載の車両用電子制御ユニット。
  9. 前記第1の割込み要求と、前記第2の割込み要求の優先順位は等しい、
    ことを特徴とする請求項1記載の車両用電子制御ユニット。
  10. CPUが、発生した割込み要因に対応した割込み要求及び発生時刻を登録するステップと、
    スケジューラが、割込み要求に対応したいずれかのタスクが実行可能になると、前記割込み要求を走査して第1のタスクを起床するステップと、
    割込み要求検出手段が、前記第1のタスクを起床させた第1の割込み要求の他に、登録されている第2の割込み要求を検出するステップと、
    時刻判定手段が、前記第2の割込み要求の発生時刻が、前記第1の割込み要求の発生時刻よりも前か否かを判定するステップと、
    第2の処理実行手段が、前記第2の割込み要求の発生時刻が、前記第1の割込み要求の発生時刻よりも前の場合、前記第1のタスクが実行する第1の処理に先立ち、前記第2の割込み要求により起床される第2のタスクが提供する処理と同等な第2の処理を実行するステップと、
    前記第2の処理の実行の終了後、第1の処理実行手段が前記第1の処理を実行するステップと、
    を有することを特徴とする車両用電子制御ユニットの割込み制御方法。
JP2008333457A 2008-12-26 2008-12-26 車両用電子制御ユニット、割込み制御方法 Pending JP2010157014A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008333457A JP2010157014A (ja) 2008-12-26 2008-12-26 車両用電子制御ユニット、割込み制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008333457A JP2010157014A (ja) 2008-12-26 2008-12-26 車両用電子制御ユニット、割込み制御方法

Publications (1)

Publication Number Publication Date
JP2010157014A true JP2010157014A (ja) 2010-07-15

Family

ID=42574926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008333457A Pending JP2010157014A (ja) 2008-12-26 2008-12-26 車両用電子制御ユニット、割込み制御方法

Country Status (1)

Country Link
JP (1) JP2010157014A (ja)

Similar Documents

Publication Publication Date Title
US8086883B2 (en) Hardware driven processor state storage prior to entering a low power
JP5195913B2 (ja) マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
US7130934B2 (en) Methods and apparatus for providing data transfer control
US7529956B2 (en) Granular reduction in power consumption
JP2011153596A (ja) 内燃機関制御装置
JP2005276097A (ja) 割り込み依頼プログラムおよびマイクロコンピュータ
JP2000047883A (ja) タスク制御方法および記録媒体
US10571993B2 (en) Micro controller unit
US7480812B2 (en) Microprocessor
JP2005050208A (ja) マルチタスクシステムにおけるメモリ管理方式およびタスク制御装置
US9785538B2 (en) Arbitrary instruction execution from context memory
CN109062624A (zh) 一种用于汽车电子控制单元中断唤醒的处理方法
JP6519515B2 (ja) マイクロコンピュータ
JP2006146758A (ja) コンピュータシステム
JP2010157014A (ja) 車両用電子制御ユニット、割込み制御方法
US7769511B2 (en) Vehicle control apparatus having event management unit
WO2005013130A1 (ja) リアルタイム制御システム
US7904703B1 (en) Method and apparatus for idling and waking threads by a multithread processor
JP2010102567A (ja) 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
JP6447442B2 (ja) 電子制御装置
JP2010196619A (ja) 内燃機関の制御装置
WO2010109609A1 (ja) 処理装置及び車両用エンジン制御装置
JP2019212032A (ja) マルチコアマイコンを備える電子制御装置
JP2006185198A (ja) メモリアクセス制御回路
Moisuc et al. Hardware event handling in the hardware real-time operating systems