JP5652198B2 - 電子制御装置、起動制御方法 - Google Patents

電子制御装置、起動制御方法 Download PDF

Info

Publication number
JP5652198B2
JP5652198B2 JP2010289655A JP2010289655A JP5652198B2 JP 5652198 B2 JP5652198 B2 JP 5652198B2 JP 2010289655 A JP2010289655 A JP 2010289655A JP 2010289655 A JP2010289655 A JP 2010289655A JP 5652198 B2 JP5652198 B2 JP 5652198B2
Authority
JP
Japan
Prior art keywords
application
abnormality
microcomputer
activation
priority
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.)
Active
Application number
JP2010289655A
Other languages
English (en)
Other versions
JP2012137920A (ja
Inventor
一美 山田
一美 山田
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 JP2010289655A priority Critical patent/JP5652198B2/ja
Publication of JP2012137920A publication Critical patent/JP2012137920A/ja
Application granted granted Critical
Publication of JP5652198B2 publication Critical patent/JP5652198B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、複数のアプリの実行する電子制御装置に関し、特に、各アプリの異常を検出することができる電子制御装置に関する。
1つのマイコンが複数のアプリケーションを実行した場合、各アプリケーションにはまれに異常が生じることがある。アプリケーションの異常は、WDT(Watch Dog Timer)などで検出されるが、異常を解消するにはマイコンをリセットすることが有効であることが知られている。
しかしながら、マイコンがリセットされると、異常を生じたアプリケーションが1つでも、リセットから再起動までの間、全てのアプリケーションが停止してしまう。ここで、アプリケーションには、例えば車載装置の制御に必要な優先度の高いもの以外にも、割込み待ちのようなアプリケーションなど優先度の低いものがあり、優先度の低いアプリケーションの異常に起因して優先度の高いアプリケーションが停止してしまうことは好ましくない。
障害発生時にアプリケーションの優先度の高低を考慮して、アプリケーションの実行を制御する技術が考案されている(例えば、特許文献1参照。)。特許文献1には、実行優先度の高いジョブの実行中に、ジョブを停止しなければならない障害が発生したことを検出してそのジョブを一時停止させると共に、その障害に影響を受けない実行優先度の低いジョブの実行を開始させる画像形成装置が開示されている。
特開平10−190897号公報
しかしながら、特許文献1に開示された考案には、優先度の低いジョブの異常が検出された場合の処理について開示されていない。このため、画像形成装置が優先度の低いジョブの異常を検出した場合、マイコンをリセットしたとすると、優先度の高いジョブまで実行できなくなるという上記の課題が解決できない。
また、組み込み機器では定期的にアプリケーションを起動させることが多いが、一度、異常が生じたアプリケーションは、起動されても再度異常を生じさせるおそれが高いので、定期的な起動を禁止すべきである。しかし、従来、優先度の低いアプリケーションの異常が検出された場合に、優先度の高いアプリケーションは起動しながら、優先度の低いアプリケーションの起動を選択的に停止することは考慮されてこなかった。
本発明は、上記課題に鑑み、異常が検出されたアプリケーションの優先度に応じてアプリケーション毎に起動管理が可能な電子制御装置を提供することを目的とする。
上記課題に鑑み、本発明は、複数のアプリケーションを実行するプロセッサを備えたマイコン及びマイコンをリセットするリセット手段を備えた監視回路を有する車両用の電子制御装置であって、前記監視回路は、アプリケーション毎に定められた起動タイミングで前記マイコンに繰り返し各アプリケーションの起動要求を出力する起動要求手段と、各アプリケーション毎に異常を検出する異常検出手段と、を有し、前記異常検出手段が異常を検出したアプリケーションの優先度が閾値以下の場合、前記起動要求手段は該アプリケーションの起動要求を停止し、前記異常検出手段が異常を検出したアプリケーションの優先度が前記閾値より大きい場合にのみ、前記リセット手段がマイコンをリセットし、前記異常検出手段が、優先度が前記閾値以下の複数のアプリケーションの異常を検出した場合、前記リセット手段がマイコンをリセットする、ことを特徴とする。
異常が検出されたアプリケーションの優先度に応じてアプリケーション毎に起動管理が可能な電子制御装置を提供することができる。
電子制御装置を説明する図の一例である。 電子制御装置の概略構成図の一例である。 電子制御装置の動作を模式的に説明する図の一例である。 起動・監視回路が動作する手順を示すフローチャート図の一例である。 電子制御装置の別の一例を説明する図である。 電子制御装置を説明する図の一例である(実施例2)。 電子制御装置の概略構成図の一例である。 電子制御装置の動作を模式的に説明する図の一例である。 スケジュール手段の動作を説明するフローチャート図の一例である。 マイコンと起動・監視回路の動作手順を示すシーケンス図の一例である。 電子制御装置の別の一例を説明する図である。
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施例の電子制御装置100を説明する図の一例である。電子制御装置100は、マイコンと起動・監視回路を有する。起動・監視回路はマイコンにアプリケーション(以下、単にアプリという)を実行させる起動制御という機能と、アプリの異常監視という機能を有する。従来、起動制御という機能はマイコン側が有していたが、マイコン外部の起動・監視回路が有することでアプリに異常が生じた場合に、異常が検出されたアプリの影響を受けずに他のアプリを起動制御することができる。
また、起動・監視回路はアプリAがクリアするWDT(Watch Dog Timer)1、アプリBがクリアするWDT2を有し、WDT1又はWDT2がオーバーフローすることで対応するアプリA又はアプリBの異常を監視している。起動・監視回路にとって、アプリA又はアプリBのうち優先度の高いアプリがクリアするWDT1又は2は既知になっている。
以上の構成に基づき、起動・監視回路とリセット回路21は以下のように動作する。
(1)起動・監視回路は定期的にアプリA、アプリBをそれぞれ起動する。
(2)優先度の低いアプリBがWDT2をオーバーフローさせた場合(図1左下)、起動回路はアプリBのみ起動を停止する。この場合、リセット回路はマイコンをリセットしない。
(3)優先度の高いアプリAがWDT1をオーバーフローさせた場合(図1右下)、リセット回路21はマイコンをリセットする。
このように、優先度の低いアプリBに異常が検出されても、リセット回路21はマイコンをリセットしないので優先度の低いアプリAが優先度の高いアプリBの異常により停止してしまうことを防止できる。また、優先度の低いアプリBに異常が検出された場合、起動回路がアプリBを起動させないので、アプリBに何度も異常が生じてアプリAに異常が伝達することを防止できる。
〔電子制御装置の構成例〕
図2は、電子制御装置100の概略構成図の一例を示す。電子制御装置(ECU:Electronic Control Unit)100は、例えばエンジン、駆動用モータ、ホイルシリンダ圧など、各種の車載装置を制御するために用いられる。
電子制御装置100は、マイコン80と起動・監視回路90とを有する。マイコン80は、システムバス10に接続されたCPU12、ROM14、RAM11、BRG16及びINTC(割込みコントローラ)15を有する。
ROM14には、電子制御装置100が制御のために実行するアプリ17(区別する場合、アプリA、Bという)が記憶されている。この他、OS(例えば、OSEK OS、ITRONなど)、ドライバ、CANプロトコルなどの通信ソフトが記憶されていてもよい。アプリA、Bは、アプリAの方が優先度が高いとし、例えばOSは各アプリの優先度を管理している。なお、マイコン80が3つ以上のアプリを実行する場合については後述する。
例えば、アプリAは、エンジンやモータ、ブレーキ油圧の制御量を演算するプログラムであり、アプリBは、レジスタチェック、フェールセーフ処理、又は、無限ループによる待ち状態等を提供するプログラムである。
CPU12はローカルRAM122を有し、これとRAM11を作業メモリとして、時分割方式で複数のアプリ17を実行する。CPU12は、複数のコア121を有するマルチコア型でもよいし、複数のCPU12を有していてもよい。この場合、コア毎にアプリA,Bを割り当てることもできる。
INTC15は、アプリ17の数と同じ数の制御線で起動回路24と接続されている。INTC15は、起動回路24や他の周辺機器(タイマ、センサ、他のECU等)からの割込み要因を調停して、CPU12に割込み要求する。例えば、INTC15は起動回路24からの割込みに対しアプリA又はアプリBをCPU12に実行させる。
BRG16は、I/Oバス9を介してI/O161と接続されている。BRG16は各種のI/O23との間で相互にバス周波数や電圧値などを変換する。I/O161は電子制御装置100と外部の機器を接続するインタフェースであり、例えば、各種のアクチュエータ、センサ、スイッチ等が接続される。
リセット端子13は、リセット端子13に入力する信号がLow→Highになるとマイコン80をリセットする端子である。
起動・監視回路90は、リセット回路21、WDT(以下区別する場合WDT1、WDT2という)22、及び、起動回路24を有する。まず、WDT1は、クロックジェネレータなど何らかのクロックソースに基づきカウントアップ又はカウントダウンするタイマーであり、ある一定値に到達した時又はカウンタがゼロになった時に(以下、いずれの場合も単に「オーバーフロー」という)、起動回路24及びリセット回路21に通知する。
CPU12とWDT1、2は制御線でそれぞれ接続されており、CPU12がアプリAを実行することでWDT1を、アプリBを実行することでWDT2をそれぞれオーバーフローする前にクリアするように設計されている。すなわち、アプリAが暴走した場合、WDT1がクリアされず、アプリBが暴走した場合、WDT2がクリアされないと仮定して、起動・監視回路90はWDT1がオーバーフローしないことでアプリAが正常であること、WDT2がオーバーフローしないことでアプリBが正常であることをそれぞれ検出している。
なお、WDT22は1つでもよい。この場合、WDT22は2つのタイマーを独立にカウントして、それぞれのカウント値のオーバーフローを監視する。
このように、起動回路24は、WDT1又は2からの通知により異常のあるアプリA又はアプリBを検出している。起動回路24は、WDT1、2がオーバーフローしない場合には、INTC15に、アプリA及びBの起動要求を定期的に出力している。アプリ17には、サイクル時間毎に繰り返す処理や、サイクル時間毎に制御量を演算する処理など、定期的に起動されるものが少なくない。起動回路24は、クロックソースに基づきアプリA又はアプリB毎に決まっている定期的な時間の経過をカウントし、起動要求を出力する。また、アプリ17には、ほぼ定期的に入力される外部からの信号を契機に実行されるものがある。例えば、エンジン回転数は、クランク角が15度変化する毎にNEセンサがマイコン80に割込みして実行させるアプリが演算する。このようなアプリに対し起動回路24は、外部からの定期的な割込みを検出して起動要求を出力する。
そして、起動回路24は、WDT2がオーバーフローするとアプリBの起動要求を停止する。これにより、マイコン80が、異常が検出されたアプリBを再度、起動することを防止できる。また、起動回路24は、WDT1がオーバーフローすると、マイコン80の再起動後にアプリAとアプリBの起動要求を再開する。こうすることでアプリAに対しては常に復帰と再開が優先される。
リセット回路21は、予め定められたWDT1又は2のいずれかがオーバーフローすると、リセット端子13にLow信号を出力する。予め定められたWDT22は優先度の高いアプリAがクリアするWDT22である。
なお、図2では、起動・監視回路90をハード的なIC(例えば、ASIC等)で実現しているが、CPUがプログラムを実行することでソフト的に実現することもできる。
〔動作手順〕
図3は、電子制御装置100の動作を模式的に説明する図の一例である。起動回路24は、アプリAの起動タイミングになると、アプリA起動要求(Highアクティブ)を起動手段31に出力し、アプリBの起動タイミングになると、アプリB起動要求(Highアクティブ)を起動手段31に出力する。
図3(b)に示すように、アプリA起動要求及びアプリB起動要求が定期的に起動・監視回路90からマイコン80に出力される。図ではアプリAとアプリBの起動間隔は同程度だが、異なっていてもよい。また、実行頻度が異なっていてもよい。
マイコン80の起動手段31は、例えばINTC15が起動要求に応じてCPU12に割り込むことで実現される。INTC15は起動要求を割り込みの一種として受け付け、アプリの優先順位を調停する。例えば、アプリAの実行中にアプリBの起動要求がINTC15に入力されても、INTC15はアプリAが終了するまでCPU12に割り込まない。逆に、アプリBの実行中にアプリAの起動要求が入力された場合、INTC15はCPU12に割り込むので、CPU12はアプリBの実行状態を退避してアプリAを起動する。なお、このようなコンテキストスイッチが発生するかどうかは、アプリA、Bの起動サイクル及び実行時間に依存するので、オーバーヘッドが抑制されるようにアプリA、Bの起動サイクルを最適化することもできる。また、CPU12がマルチコアで各コアにアプリA,Bが割り当てられている場合、アプリA、Bの実行時間が重複しても、優先度の高低に応じたコンテキストスイッチは発生しない。
CPU12は、ROM14又はRAM11に設定されているベクターテーブルからINTC15が通知する割り込み番号に対応した割り込みベクター(アドレス)の命令を実行する。本実施例では、割り込みベクターに対応した割り込みハンドラがアプリA又はアプリBを起動させる。
このようにして起動手段31は、起動回路24からのアプリA起動要求に対しアプリAを起動し、起動回路24からのアプリB起動要求に対しアプリBを起動する。アプリA及びアプリBはそれぞれ実行状態更新部32(区別する場合、実行状態更新部A,Bという)を有する。実行状態更新部AはアプリAの実行状態を起動・監視回路90に通知し、実行状態更新部BはアプリBの実行状態を起動・監視回路90に通知する。具体的には、図3(b)に示すように、実行状態更新部Aは、アプリAが起動すると終了までの間にWDT1に1回以上、実行履歴を通知する。実行状態更新部Bについても同様である。実行履歴の通知は、WDT1、2のリセットである。起動・監視回路90はアプリA,Bに異常が生じたことを実行状態更新部A,BがWDT1、2をリセットしないことで検出する。この場合、WDT1,2は、実行間隔(アプリA、Bの最後の起動から次の起動まで)の時間よりも長い時間(例えば、実行間隔のn(>1)倍)が経過すると、オーバーフローするように設定される。
また、起動・監視回路90のWDT1,2のカウントを、アプリA、Bが停止・再開できる場合、実行状態更新部A,Bは実行開始の通知でWDT1、2のカウントを開始し、実行終了の通知でリセットすることもできる。この場合、WDT1,2は、実行時間(アプリA、Bの起動から終了まで)の時間よりも長い時間(例えば、実行時間のn(>1)倍)が経過すると、オーバーフローするように設定される。なお、この場合、各アプリの実行時間を計測することができる。
図3(b)に示すように、時刻t4で起動したアプリBの実行状態更新部Bは、実行履歴又は実行終了をWDT2に通知できなかった。これはアプリBの異常を意味するので、WDT2は起動回路24とリセット回路21にアプリBの異常を通知する。これにより、起動回路24はアプリB起動要求を起動手段31に出力することを停止する。
次に、時刻t6で起動したアプリAの実行状態更新部Aは、実行履歴又は実行終了をWDT1に通知できなかった。これはアプリAの異常を意味するので、WDT1は起動回路24とリセット回路21にアプリAの異常を通知する。これにより、リセット回路21はリセット端子13にリセット信号を出力する(図では時刻t7)。また、マイコンの再起動までの間、起動回路24はアプリA起動要求を起動手段31に出力することを停止する。
マイコン80はリセットされるとROM14のリセットベクタをプログラムカウンタに設定するので起動用のプログラムが実行され、起動用のプログラムがマイコン80だけでなく起動・監視回路90を初期化して、起動回路24、WDT1,2も起動を開始する。これにより、時刻t8に示すように、起動回路24が異常の検出前と同様に、アプリアプリA起動要求及びアプリB起動要求の定期的な出力を再開する。よって、マイコン80はアプリA及びアプリBを再度、定期的に実行するようになる。
〔動作手順〕
図4は、本実施例の起動・監視回路90が動作する手順を示すフローチャート図の一例である。図4の手順は、アプリA又はアプリBの起動タイミングになると実行される。
まず、起動回路24は、タイマーを参照する(S10)。このタイマーは、アプリA又はアプリBの起動タイミングを検出する時計であり、起動回路24は、最後にアプリA起動要求及びアプリB起動要求を出力した時刻を記憶しておき、それからの経過時間を監視している。または、アプリA及びアプリBの起動タイミング毎に、タイマがーHigh信号を起動回路24に出力してもよい。
起動回路24はアプリAの起動タイミングか否かを判定する(S20)。アプリAの起動タイミングでない場合(S20のNo)、処理はステップS60に進む。
アプリAの起動タイミングである場合(S20のYes)、起動回路24は前回起動したアプリAが正常に終了したか否かを判定する(S30)。正常に終了したか否かはWDT1がオーバーフローしたか否かにより判定されるので、WDT1がオーバーフローしていなければステップS30の判定はNoになる。
前回起動したアプリAが正常に終了した場合(S30のYes)、起動回路24はアプリA起動要求をマイコン80に出力する(S40)。これにより、マイコン80はアプリAを起動することができる。
前回起動したアプリAが正常に終了していない場合(S30のNo)、WDT1がオーバーフローしたことになるので、リセット回路21はリセット信号をマイコン80に出力する(S50)。これにより、マイコン80はリセットされ、アプリA、アプリBが再度実行される。
次に、ステップS60において、起動回路24はアプリBの起動タイミングか否かを判定する(S60)。アプリBの起動タイミングでない場合(S20のNo)、図4の処理は終了する。
アプリBの起動タイミングである場合(S60のYes)、起動回路24は前回起動したアプリBが正常に終了したか否かを判定する(S70)。正常に終了したか否かはWDT2がオーバーフローしたか否かにより判定されるので、WDT2がオーバーフローしていなければステップS70の判定はNoになる。
前回起動したアプリBが正常に終了した場合(S70のYes)、起動回路24はアプリB起動要求をマイコン80に出力する(S80)。これにより、マイコン80はアプリBを起動することができる。
前回起動したアプリBが正常に終了していない場合(S70のNo)、WDT2がオーバーフローしたことになるので、アプリBを再度起動しないように、起動回路24はアプリB起動要求を出力しない。これにより、アプリBの再起動を防止できる。なお、WDT2から起動回路24へのオーバーフローの通知は、1度のオーバーフローにつき1回だけなので、起動回路24はWDT2がオーバーフローしたことをフラグなどで記憶しておく。これにより、次回の図4の手順が実行される際に、アプリBの起動タイミングが到来しても(S60のYes)、起動回路24がアプリB起動要求を出力することを防止できる。
〔3つ以上のアプリがある場合〕
マイコン80が3つ以上のアプリを実行する場合も同様に軌道制御できる。
図5(a)は3つ以上のアプリを有する電子制御装置100の一例を示す。図ではマイコン80はn個のアプリを実行し、起動・監視回路90はn個のWDT22を有している。マイコン80が3つ以上のアプリを実行する場合、1つのアプリに異常が生じた際に他のアプリを停止してでもマイコン80をリセットすべきかどうかの観点から、設計者が3つ以上のアプリをある優先度(閾値)を基準に、低優先度アプリと高優先度アプリに分類しておく。
分類結果は、起動回路24やリセット回路21に記憶される。例えば、起動回路24には、オーバーフローにより起動要求を停止すべきWDT22の識別情報が起動時にレジスタなどに設定され、リセット回路21には、オーバーフローによりリセットすべきWDT22の識別情報が起動時にレジスタなどに設定される。
したがって、アプリが3つ以上でも、起動・監視回路90はアプリが2つの場合と同様に、低優先度のアプリの異常に対しては該アプリの起動を停止して高優先度のアプリの実行を継続し、高優先度のアプリの異常に対してはマイコン80をリセットすることができる。
また、起動・監視回路90は、リセット対象外の低優先度のアプリでも2つ以上の異常が検出された場合、マイコン80をリセットすることもできる。この場合、リセット回路21は、オーバーフローしたWDT22に対応したアプリを記憶しておき、予め定められた数の低優先度のアプリの異常が検出されると、リセット回路21がマイコン80をリセットする。
低優先度のアプリでも2つ以上のアプリが異常を生じることは、高優先度のアプリに異常が生じる可能性が少なくないおそれがあるので、早期にマイコン80をリセットすることができる。
図5(b)は、マイコン80と起動・監視回路90を別のECU1,2に搭載したECUシステムの一例を示す図である。図5(b)ではマイコン80と起動・監視回路90がいずれもCAN通信部33を有し、CANバス34を介して通信することができる。なお、通信プロトコルはFlexRayなどどのようなものでもよい。
この場合、起動・監視回路90にも通信のためのプログラムを実行するCPUが搭載される。起動回路24に相当する所定のプログラムはCANバス34を介してアプリA起動要求及びアプリB起動要求をECU1に送信する。CAN通信部1の受信割り込みをINTC15が処理することで、起動手段31は上述と同様にアプリA及びアプリBを起動することができる。
アプリAの実行状態更新部AとアプリBの実行状態更新部BはCANバス34を介して実行履歴又は実行終了をECU2に通知する。ECU2の所定のプログラムは実行終了を受信するとWDT1、2をクリアする。よって、アプリA、Bに異常がなければWDT1、2がオーバーフローすることはない。
WDT2がオーバーフローした場合、起動回路24に相当するプログラムはアプリB起動要求の出力を停止する。また、WDT1がオーバーフローした場合、リセット回路21はリセット信号をリセット端子13に出力する。これにより、ECU1のマイコン80はリセットされる。
したがって、マイコン80と起動・監視回路90が別のECU1,2に搭載された場合でも、異常が検出されたアプリ17の優先度に応じて、マイコン80をリセットするかどうかを制御できる。図5(b)のような形態では、複数のマイコン80の起動・監視回路90を1つのECU2に集約可能な可能性があるので電子制御装置100の製造コストを低減することが期待できる。
以上説明したように、本実施例の電子制御装置100は、マイコン80の外部の起動・監視回路90がアプリの起動を制御することで、異常が検出されたアプリの影響を受けない外部からアプリ毎に起動するか否かを制御することができる。また、異常が検出されたアプリ17の優先度に応じてマイコン80をリセットするか否かを制御できる。
実施例1では、アプリ17の数が増えるとマイコン80と起動・監視回路90の結線が増えてしまうおそれがある。そこで、本実施例ではマイコン80と起動・監視回路90の結線数を低減できる電子制御装置100について説明する。
図6は、本実施例の電子制御装置100を説明する図の一例である。図6の電子制御装置100は、異常の生じたアプリ17を切り離す処理を起動・監視回路90からマイコン80に残した電子制御装置100である。
本実施例のマイコン80はスケジュール手段36及びAND回路20を有し、起動・監視回路90は起動回路24を有する。スケジュール手段36は、アプリA、アプリBの起動をスケジューリングする。AND回路20は、アプリA、アプリBの両方が実行終了通知をそれぞれフラグF19(区別する場合、フラグFa、Fbという)に出力することでオンとなる回路であり、WDT22をクリアしている。よって、アプリA又はアプリBのいずれかに異常が生じると、WDT22はクリアされない。
図6(b)に示すように、WDT22がオーバーフローすると、割り込み起動回路24は割り込み起動要求をスケジュール手段36に通知する。スケジュール手段36は、割り込み起動要求により、WDT22がオーバーフローしたこと(アプリA又はアプリBに異常が生じたこと)を検出する。なお、起動・監視回路90は割り込み起動要求したことを記憶しておく。
図6(c)に示すように、割り込み起動要求を取得したスケジュール手段36は、アプリA又はアプリBのうち異常が生じたアプリ(図ではアプリBになっている)を推定し、当該アプリをスケジュール対象から除外する。これにより、異常の生じたアプリBを切り離すことができる。また、スケジュール手段36はアプリBが起動しなくてもAND回路20をオンにするため、フラグFbに“1”を設定する。なお、異常が生じたと推定されたアプリがアプリAであり優先度が高い場合、スケジュール手段36はフラグFaに“1”を設定しない。
図6(d)に示すように、アプリAに異常がある場合、フラグFaに“1”が設定されないのでWDT22は再度、オーバーフローする。この場合、起動・監視回路90は、WDT22がオーバーフローした際にすでに割り込み起動要求を出力した記録があることを検出して、リセット回路21によりマイコン80をリセットする。
したがって、マイコン80は優先度の低いアプリBについてはスケジュール対象から除外してアプリAを実行できるので、優先度の高いアプリAがアプリBの異常により停止することを抑制できる。また、マイコン80と起動・監視回路90の間の結線は、アプリの数に拘わらず図示する3本に抑制することができる。
〔電子制御装置の構成例〕
図7は、電子制御装置100の概略構成図の一例を示す。図7において図2と同一部には同一の符号を付しその説明は省略する。
本実施例のマイコン80は、上記のフラグ19及びAND回路20を有する。フラグFaはアプリAが操作するフラグであり、フラグFbはアプリBが操作するフラグである。また、フラグFa、Fbはスケジュール手段36により定期的にリセットされる。このタイミングは、例えば、アプリA,Bの実行の直前であり、アプリA、BがフラグFa、Fbに“1”を設定することで、各アプリA,Bが正常であることが確認できる。
INTC15は、実施例1と異なり、起動回路24から割込みに対しアプリA又はアプリBをCPU12に実行させるのでなく、スケジュール手段36を実行させる。スケジュール手段36は主にOS18により提供されるが、OS18を利用することなくアプリの一種として実装することもできる。スケジュール手段36については次述する。
起動・監視回路90の構成は実施例1と同様であるが、本実施例ではWDT22を1つしか有さない。WDT22は、AND回路20がオンになるとクリアされ、AND回路20がオンにならずオーバーフローすると、起動回路24に通知する。なお、AND回路20による実装は一例であって、何らかのソフト的な手段により置き換えてもよい。例えば、ソフト的な手段は、CPU12がアプリA、Bの最後の命令まで実行終了したことを検出してWDT22をクリアする機能を有すればよい。
起動回路24は、WDT22がオーバーフローするとマイコン80がスケジュール手段36を起動するように、INTC15に割り込み起動要求を出力する。また、起動回路24は、割り込み起動要求したことをフラグなどで記憶しておく。こうすることで、次回、WDT22がオーバーフローした際に、2回目のオーバーフローであることを検出できる。2回目のオーバーフローに対し起動回路24はリセット回路21に対しリセットを要求する。リセット回路21はリセット端子13にLowを出力するので、マイコン80をリセットすることができる。
<スケジュール手段>
図8(a)は、電子制御装置100の動作を模式的に説明する図の一例である。上記のように、起動回路24が割り込み起動要求を起動手段31に出力することで、マイコン80はスケジュール手段36を起動させる。マイコン80の起動手段31については実施例1と同様に、例えばINTC15が割り込み起動要求に応じてCPU12に割り込むことで実現される。INTC15は割り込み起動要求を割り込みの一種として受け付け、CPU12はベクターテーブルから割り込み起動要求に対応した割り込みベクター(アドレス)の命令を実行する。本実施例では、割り込みベクターに対応した割り込みハンドラがスケジュール手段36を起動させる。
スケジュール手段36は、スケジュールテーブル37に従い、アプリA、Bを起動する(CPU12に割り当てる)。スケジュールテーブル37には、アプリA,Bの優先度が実行時間を考慮して、アプリA、Bの起動タイミングが登録されている。実施例1のようにアプリA、Bを定期的に起動する場合、スケジュール手段36はタイマーを監視しながら、それぞれの起動タイミングになるとアプリA又はアプリBを起動させる。
また、スケジュール手段36は、アプリA,Bの状態(実行可能、実行中、実行待ち等)に応じて、実行可能なアプリのうち優先度の高いものほど優先的にCPU12に割り当てることもできる。アプリA,Bが相互に関連している場合(例えばアプリBがアプリAの処理結果を利用する場合、またはその逆等)、アプリA、Bが実行待ち状態になるので、スケジュール手段36はアプリA,Bの状態遷移を監視して、優先度を考慮しながらCPU12に割り当てるアプリA,Bをスケジューリングしていく。なお、スケジュール手段36は、起動回路24が割り込み起動要求を送信した場合だけでなく、アプリA又はBが実行完了する毎や定期的に起動する。
図9はスケジュール手段36の動作を説明するフローチャート図の一例である。
ます、マイコン80が起動・監視回路90から割り込み起動要求を取得してスケジュール手段36が起動する(S110)。
スケジュール手段36は、異常を生じさせたアプリがアプリA又はアプリBのどちらなのかを推定する(S120)。推定方法はいくつかあるが、例えば、スケジュール手段36の実行により退避したプログラムカウンタのアドレスがアプリA又はBのどちらのアドレスに相当するかにより推定することができる。また、スケジュール手段36がプロセス間通信の機能を有する場合、アプリA及びBにメッセージを問い合わせその応答の有無から、異常のあるアプリを推定することもできる。また、スケジュール手段36はアプリA、Bをスケジューリングしているので、直前にCPU12に割り当てたアプリA又はBに異常があると推定することもできる。
スケジュール手段36は、異常が検出されたアプリを推定すると、そのアプリが停止してよい低い優先度が否かを判定する(S130)。各アプリA、Bの優先度はスケジュール手段36にとって既知であるので、スケジュール手段36は異常があると推定したアプリの優先度が閾値以下か否かに基づき停止可能か否かを判定する(アプリが2つの場合は高又は低のどちらであるかを判定する)。
アプリBが停止してよい低い優先度の場合(S130のYes)、スケジュール手段36は異常を生じさせたアプリBをスケジュールテーブル37から削除する(S140)。これにより、アプリBは強制的に終了され、アプリBが占有していたローカルRAM122やRAM11の領域が開放される。また、削除されたアプリBはスケジュール手段36に記録される。記録することで、再度アプリBが生成されても実行を禁止したり、スケジュール手段36がフラグFbの操作を替わって実行することができる。
そして、スケジュール手段36はアプリAの実行を再開する(S150)。こうすることで、優先度の低いアプリBだけを停止し、優先度の高いアプリAだけを継続することができる。なお、停止したアプリBに変わってスケジュール手段36はフラグFbを操作するがこの処理については後述する。
また、アプリAが停止してよい低い優先度でない場合(S130のNo)、スケジュール手段36は異常を生じさせたアプリAを停止することなく、アプリの実行を再開する(S150)。こうすることで、優先度の高いアプリAに異常が生じていれば、再度、WDT22がオーバーフローするので、リセット回路21がマイコン80をリセットすることができる。
図8(b)は、マイコン80と起動・監視回路90が出力する信号を模式的に説明する図の一例である。WDC(Watch Dog timer Clear)パルスは、AND回路20から出力されるパルスであり、1つのパルス毎にWDT22をクリアする。したがって、WDCパルスが停止すると、WDT22がクリアされないので起動回路24が割り込み起動要求をマイコン80に出力する。
これにより、スケジュール手段36が図9にて説明した処理を行うが、優先度の高いアプリAに異常が生じている場合、割り込み起動要求が出力されても、図示するようにWDCパルスは再開されないので、WDT22が再度オーバーフローする。これにより、リセット回路21がリセット信号を出力する。
不図示であるが、優先度の低いアプリBに異常が生じている場合、WDCパルスは割り込み起動要求の後、再開されるためリセット回路21はリセット信号を出力しない。
〔動作手順〕
図10は、マイコン80と起動・監視回路90の動作手順を示すシーケンス図の一例である。
アプリA、Bに異常が生じていなければ、スケジュール手段36は定期的に起動してスケジュールに従ってアプリA、Bをそれぞれ起動する。
起動・監視回路90から割り込み起動要求が出力されず、スケジュールが変更されていない場合(S210のNo)、スケジュール手段36は起動するアプリAに対応したフラグFaをクリアする(S220)。
次に、スケジュール手段36はアプリAを起動するので(S230)、実行状態更新部AがフラグFaに“1”を設定する(S310)。
同様に、スケジュール手段36はアプリBの起動タイミングになると、アプリBに対応したフラグFbをクリアし(S240)、アプリBを起動するので(S250)、実行状態更新部BがフラグFbに“1”を設定する(S320)。
これにより、AND回路20がWDCパルスをWDT22に出力することができる(S330)。
そして、ステップS210〜250において、アプリA又はアプリBに異常が生じると、AND回路20がWDCパルスを出力しないので、WDT22がオーバーフローする。 WDT22がオーバーフローした場合(S410のYes)、起動回路24がそれを検出し、すでに割り込み起動要求を出力したか否かを判定する(S420)。なお、WDT22がオーバーフローしていなければ(S410のNo)、起動・監視回路90は処理を行わない。
割り込み起動要求が出力されていない場合(S420のNo)、マイコン80のリセット後、最初のオーバーフローなので、起動回路24は割り込み起動要求をマイコン80に出力する(S430)。この際、起動回路24は割り込み起動要求を出力したことをフラグなどで記録する。
スケジュール手段36は割り込み起動要求を取得したことで図9の手順を実行し、優先度の低いアプリBに異常が検出された場合にはスケジュールを変更し、優先度の高いアプリAに異常が検出された場合にはスケジュールを変更しない。
例えば、スケジュールを変更した場合(S210のYes)、同様に、スケジュール手段36はアプリAの起動タイミングになると、アプリAに対応したフラグFaをクリアし(S260)、アプリBを起動するので(S270)、実行状態更新部AがフラグFaに“1”を設定する(S320)。
しかし、スケジュールを変更した場合(S210のYes)、スケジュール手段36は、アプリBの起動タイミングでアプリBを起動せず、フラグFbに“1”を設定する(S280)。これにより、アプリBが起動されなくても、AND回路20がWDCパルスをWDT22に出力することができる(S330)。
一方、優先度の高いアプリAに異常が検出された場合にはスケジュールが変更されないので(S210のNo)、アプリAが起動されるが、異常が検出されたアプリAはフラグFaに“1”を設定しないと考えられる。このため、WDT22が2回目のオーバーフローをする。
WDT22がオーバーフローした場合(S410のYes)、起動回路24がそれを検出し、すでに割り込み起動要求を出力したか否かを判定するが(S420)、起動回路24はすでに割り込み起動要求を出力しているので、割り込み起動要求を出力することなくリセット回路21にリセットを要求する(S440)。これにより、リセット回路21がマイコン80をリセットすることができる。なお、起動回路24は割り込み起動要求の出力回数をカウントしておき、所定回数に到達した場合にリセット回路21にリセットさせることもできる。
〔3つ以上のアプリがある場合〕
本実施例の電子制御装置100は、実施例1と同様にマイコン80が3つ以上のアプリを実行する場合も好適に適用できる。
図11(a)は3つ以上のアプリを有する電子制御装置100の一例を示す。マイコン80はn個のアプリA〜nに対応してn個のフラグFa〜Fnを有している。起動・監視回路90には変更がない。
設計者は、異常が生じた際に他のアプリを停止してもマイコン80をリセットすべきかどうかの観点から、3つ以上のアプリをある優先度(閾値)を基準に、低優先度アプリと高優先度アプリに分類してスケジュール手段36に登録しておく。または、スケジュール手段36に、閾値となる優先度を登録しておけば、異常があると推定したアプリ17が高優先度か低優先度かを判定できる。
これにより、スケジュール手段36は、異常があると推定したアプリ17が高優先度の場合はスケジュールを変更しないのでマイコン80をリセットすることができる。低優先度の場合は、スケジュールを変更してアプリ17に対応するフラグFに“1”を設定するので、高優先度のアプリ17を停止することなく低優先度のアプリ17のみ停止することができる。
また、スケジュール手段36は、リセット対象外の低優先度のアプリでも2つ以上の異常が検出された場合、スケジュールの変更を停止し、マイコン80をリセットするように誘導することができる。
図11(b)は、マイコン80と起動・監視回路90を別のECU1,2に搭載したECUシステムの一例を示す図である。図11(b)ではマイコン80と起動・監視回路90がいずれもCAN通信部33を有し、CANバス34を介して通信することができる。
この場合、AND回路20のオンを検出した通信用アプリがCANバス34を介してECU2に通知するので、ECU2も所定のプログラムによりWDT22をクリアする。WDT22がオーバーフローした場合、起動回路24に相当する所定のプログラムがCANバス34を介して割り込み起動要求をECU1に送信する。WDT22が再度オーバーフローした場合、リセット回路21はリセット信号をリセット端子13に出力する。これにより、ECU1のマイコン80はリセットされる。
したがって、マイコン80と起動・監視回路90が別のECUに搭載された場合でも、異常が検出されたアプリの優先度に応じて、マイコン80をリセットするかどうかを制御できる。
以上説明したように、本実施例の電子制御装置100は、実施例1と同様の効果に加え、マイコン80がアプリ17の起動制御をすることで、マイコン80と外部の起動・監視回路90の間の結線を少くすることができる。
11 RAM
12 CPU
13 リセット端子
14 ROM
15 INTC
21 リセット回路
22 WDT
23 I/O
24 起動回路
80 マイコン
90 起動・監視回路
100 電子制御装置

Claims (8)

  1. 複数のアプリケーションを実行するプロセッサを備えたマイコン及びマイコンをリセットするリセット手段を備えた監視回路を有する車両用の電子制御装置であって、
    前記監視回路は、アプリケーション毎に定められた起動タイミングで前記マイコンに繰り返し各アプリケーションの起動要求を出力する起動要求手段と、
    各アプリケーション毎に異常を検出する異常検出手段と、を有し、
    前記異常検出手段が異常を検出したアプリケーションの優先度が閾値以下の場合、前記起動要求手段は該アプリケーションの起動要求を停止し、
    前記異常検出手段が異常を検出したアプリケーションの優先度が前記閾値より大きい場合にのみ、前記リセット手段がマイコンをリセットし、
    前記異常検出手段が、優先度が前記閾値以下の複数のアプリケーションの異常を検出した場合、前記リセット手段がマイコンをリセットする、
    ことを特徴とする電子制御装置。
  2. 複数のアプリケーションを実行するプロセッサを備えたマイコン及びマイコンをリセットするリセット手段を備えた監視回路を有する電子制御装置であって、
    前記マイコンは、スケジュールにしたがって各アプリケーションを繰り返し起動させるスケジュール制御手段と、
    複数のアプリケーションのそれぞれに対応して設けられたフラグと、
    複数の前記フラグのそれぞれに接続され、各アプリケーションが正常に動作している場合に対応する前記フラグをONにして、全ての前記フラグがONになると前記監視回路に正常通知を出力する正常通知手段と、を有し、
    前記監視回路は、前記正常通知を送信するための線で前記正常通知手段と接続され、前記正常通知の有無によりいずれかのアプリケーションの異常を検出する1つの異常検出手段と、
    前記異常検出手段がアプリケーションの異常を検出したことを前記マイコンに通知する異常通知手段と、を有し、
    前記スケジュール制御手段は異常が生じたアプリケーションを、異常が検出された際に実行していたアプリケーションに基づき推定し、該アプリケーションの優先度が閾値以下の場合、該アプリケーションを起動対象から除外すると共に、該アプリケーションに対応した前記フラグをONにし、前記正常通知手段は、前記監視回路に正常通知を出力する、
    ことを特徴とする電子制御装置。
  3. 異常が生じたアプリケーションの優先度が閾値以下でない場合、前記スケジュール制御手段は該アプリケーションを起動対象から除外せず、
    前記リセット手段は、前記異常通知手段が前記マイコンにアプリケーションの異常を検出したことを通知した後、再度、前記異常検出手段がアプリケーションの異常を検出した場合、マイコンをリセットする、ことを特徴とする請求項2記載の電子制御装置。
  4. 前記スケジュール制御手段は異常が生じたと推定したアプリケーションの優先度が閾値以下の場合、該アプリケーションを強制的に終了する、
    ことを特徴とする請求項2又は3記載の電子制御装置。
  5. 前記スケジュール制御手段が、異常があると推定した優先度が閾値以下のアプリケーションの数が所定数以上になった場合、異常があると推定されたアプリケーションに対応する前記フラグをONにすることなく、前記正常通知手段は前記監視回路に正常通知を出力しない、ことを特徴とする請求項2記載の電子制御装置。
  6. 前記異常検出手段はウォッチドッグタイマである、ことを特徴とする請求項1又は2記載の電子制御装置。
  7. 複数のアプリケーションを実行するプロセッサを備えたマイコン及びマイコンをリセットするリセット手段を備えた監視回路を有する車両用の電子制御装置の起動制御方法であって、
    前記監視回路が、アプリケーション毎に定められた起動タイミングで前記マイコンに繰り返し各アプリケーションの起動要求を出力するステップと、
    異常検出手段が各アプリケーション毎に異常を検出するステップと、
    前記異常検出手段が異常を検出したアプリケーションの優先度が閾値以下の場合、起動要求手段は該アプリケーションの起動要求を停止するステップと、
    前記異常検出手段が異常を検出したアプリケーションの優先度が前記閾値より大きい場合にのみ、前記リセット手段がマイコンをリセットするステップと、
    前記異常検出手段が、優先度が前記閾値以下の複数のアプリケーションの異常を検出した場合、前記リセット手段がマイコンをリセットするステップと、
    を有することを特徴とする起動制御方法。
  8. 複数のアプリケーションを実行するプロセッサを備えたマイコン及びマイコンをリセットするリセット手段を備えた監視回路を有する電子制御装置の起動制御方法であって、
    前記マイコンのスケジュール制御手段が、スケジュールにしたがって各アプリケーションを繰り返し起動させるステップと、
    各アプリケーションが、正常に動作している場合にアプリケーションのそれぞれに対応して設けられたフラグをONにするステップと、
    アプリケーションの全てが正常に動作して前記フラグが全てONになると、正常通知手段が、接続された線を介して前記監視回路に正常通知を出力するステップと、
    前記監視回路の1つの異常検出手段が、前記正常通知の有無によりいずれかのアプリケーションの異常を検出するステップと、
    異常通知手段が、前記異常検出手段がアプリケーションの異常を検出したことを前記マイコンに通知するステップと、
    前記スケジュール制御手段が、異常が生じたアプリケーションを、異常が検出された際に実行してたアプリケーションに基づき推定するステップと、
    推定されたアプリケーションの優先度が閾値以下の場合、該アプリケーションを起動対象から除外すると共に、該アプリケーションに対応した前記フラグをONにするステップと、
    前記正常通知手段が、前記監視回路に正常通知を出力するステップと、
    を有することを特徴とする起動制御方法。
JP2010289655A 2010-12-27 2010-12-27 電子制御装置、起動制御方法 Active JP5652198B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010289655A JP5652198B2 (ja) 2010-12-27 2010-12-27 電子制御装置、起動制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010289655A JP5652198B2 (ja) 2010-12-27 2010-12-27 電子制御装置、起動制御方法

Publications (2)

Publication Number Publication Date
JP2012137920A JP2012137920A (ja) 2012-07-19
JP5652198B2 true JP5652198B2 (ja) 2015-01-14

Family

ID=46675287

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010289655A Active JP5652198B2 (ja) 2010-12-27 2010-12-27 電子制御装置、起動制御方法

Country Status (1)

Country Link
JP (1) JP5652198B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017037606A (ja) * 2015-08-14 2017-02-16 富士電機株式会社 駆動制御システムおよび異常監視装置
KR102488980B1 (ko) * 2018-01-29 2023-01-17 주식회사 에이치엘클레무브 프로그램 감시 장치 및 방법과 전자 제어 시스템
JP7419658B2 (ja) * 2019-02-25 2024-01-23 株式会社デンソー センター装置、データ配信システム、制限実施プログラム及び制限実施方法
CN109992388B (zh) * 2019-04-08 2021-04-13 中核控制***工程有限公司 一种用于核电厂安全级设备软件多任务管理***

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6129239A (ja) * 1984-07-19 1986-02-10 Nec Corp プロセツサ異常再開方式
JPH02309429A (ja) * 1989-05-25 1990-12-25 Japan Electron Control Syst Co Ltd Cpu暴走監視装置
JPH07134668A (ja) * 1993-11-11 1995-05-23 Mitsubishi Electric Corp 異常検出回路
JPH09120368A (ja) * 1995-10-25 1997-05-06 Unisia Jecs Corp Cpu監視装置
US7089450B2 (en) * 2003-04-24 2006-08-08 International Business Machines Corporation Apparatus and method for process recovery in an embedded processor system
JP4060322B2 (ja) * 2005-03-28 2008-03-12 三菱電機株式会社 アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体
JP2011008702A (ja) * 2009-06-29 2011-01-13 Toyota Motor Corp 故障処理装置

Also Published As

Publication number Publication date
JP2012137920A (ja) 2012-07-19

Similar Documents

Publication Publication Date Title
US8321065B2 (en) Method for controlling/regulating at least one task
JP5861718B2 (ja) 車両用電子制御装置、データ受信方法
JP4747307B2 (ja) ネットワーク処理制御装置,プログラムおよび方法
JP2010285001A (ja) 電子制御システム、機能代行方法
JP5652198B2 (ja) 電子制御装置、起動制御方法
JP2011022934A (ja) 電子制御ユニット、異常検出方法
US20220055637A1 (en) Electronic control unit and computer readable medium
JP5712783B2 (ja) 電子制御ユニット、車載ネットワーク、データ送信方法
JP5928358B2 (ja) 情報処理装置、監視装置、制御装置
JP2013143093A (ja) 情報処理装置、情報処理システム
JP2013152636A (ja) 情報処理装置、タスクスケジューリング方法
US20050160425A1 (en) Limitation of the response time of a software process
US8726099B2 (en) Data processing system
JP6049961B1 (ja) Cpu監視装置
JP2011002993A (ja) ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法
JP6861275B2 (ja) 車両制御装置
JP5533777B2 (ja) プログラム群
JP2009151440A (ja) プログラムハング検出方法及びそれを適用したコンピュータ装置
JP7435182B2 (ja) 電子制御装置
JP2006227962A (ja) アプリケーションタスク監視システムおよび方法
JP6762281B2 (ja) スタックオーバーフロー検知装置及び車両制御システム
JP2013084218A (ja) コア監視装置、情報処理装置
JP7333251B2 (ja) 電子制御装置
JP5299681B2 (ja) プログラム検査方法
JP7278205B2 (ja) 演算装置および演算装置の監視方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130618

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140507

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: 20141021

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141103

R151 Written notification of patent or utility model registration

Ref document number: 5652198

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151