JP2011022934A - 電子制御ユニット、異常検出方法 - Google Patents

電子制御ユニット、異常検出方法 Download PDF

Info

Publication number
JP2011022934A
JP2011022934A JP2009169373A JP2009169373A JP2011022934A JP 2011022934 A JP2011022934 A JP 2011022934A JP 2009169373 A JP2009169373 A JP 2009169373A JP 2009169373 A JP2009169373 A JP 2009169373A JP 2011022934 A JP2011022934 A JP 2011022934A
Authority
JP
Japan
Prior art keywords
vcpu
virtual cpu
virtual
cpu
ecu
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
JP2009169373A
Other languages
English (en)
Inventor
Tetsuaki Wakabayashi
哲明 若林
Kotaro Sato
浩太郎 佐藤
Soichiro Arai
総一郎 荒井
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.)
Denso Corp
Toyota Motor Corp
Renesas Electronics Corp
Original Assignee
Denso Corp
Toyota Motor Corp
Renesas Electronics 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 Denso Corp, Toyota Motor Corp, Renesas Electronics Corp filed Critical Denso Corp
Priority to JP2009169373A priority Critical patent/JP2011022934A/ja
Publication of JP2011022934A publication Critical patent/JP2011022934A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】コストや車載スペースの増大をもたらすことなく監視マイコンを搭載可能にし、また、マイコンと監視マイコン間の通信時間を低減可能な電子制御ユニット及び異常検出方法を提供すること。
【解決手段】
車載装置に演算結果を提供する電子制御ユニット100において、実在するCPU11と、実在するCPU11から仮想的なCPUを構築する仮想CPU構築手段12、14と、仮想的に構築された、第1の仮想CPU(A)1及び第2の仮想CPU(A)2と、を有し、演算結果を提供する前記第1の仮想CPU(A)1を、前記第2の仮想CPU(A)2が監視する、ことを特徴とする。
【選択図】図3

Description

本発明は、車両に搭載される車載装置に演算結果を提供する電子制御ユニット等に関し、特に、電子制御ユニットの異常を検出する電子制御ユニット及び異常検出方法に関する。
車両にはマイコンを実体とする種々の電子制御ユニットが搭載されているが、マイコン上で動作するアプリケーションはソフトウェアであるため、リソース不足、無限ループ、ノイズ等、特殊な状況の発生等により、マイコンが正常に動作することが困難になる場合がある。そこで、マイコンが異常検出プログラムを実行してマイコンが正常に動作していないことを検出する技術が考えられている(例えば、特許文献1参照。)。特許文献1には、オペレーティングシステムから取得したアプリケーションの動作情報(プロセスの動作状況、状態継続時間、コンテキストスイッチ回数)からアプリケーションの異常を検出する異常検出方法が開示されている。しかしながら、このような異常検出プログラムを用いた方法は、レジスタ操作等の具体的なタスクが実行されているか否かの確認が困難である。また、マイコンがアプリケーションと別に異常検出プログラムを実行するので、マイコンの負荷が大きいという問題がある。
また、マイコンを監視するための監視用の監視マイコンを設けることで、マイコンが正常に動作していないことを検出する技術が利用されている。
図1は、従来のマイコン監視システムの一例を示す図である。電子制御ユニット上にマイコンに接続された監視マイコンが配置されている。この監視マイコンはいわゆるウォッチドッグタイマと同様の態様でマイコンを監視する。マイコンは、定期的に監視マイコンのレジスタにフラグを立て、監視マイコンはフラグが立ってからの経過時間を計測する。監視マイコンは、経過時間が閾値を超えるとマイコンが正常に動作していないことを検出して、例えばマイコンをリセットする。
特開2006−277115号公報
しかしながら、図1のように監視マイコンを設けると、適切なタイミングでマイコンをリセットすることが困難な場合があった。これは、マイコンと監視マイコンとが比較的低速なシリアル通信等を用いて通信していたため、監視マイコンがリセットしようとする際にある程度の時間がかかってしまっていたためである。
また、監視マイコンをマイコンとは別に搭載することは、コストや車載スペースの増大をもたらし、さらに監視マイコン用に搭載するソフトウェア開発に工数が発生するという問題があった。これは、マイコンと監視マイコンは設計が異なるため、マイコンとは別に監視マイコンのための開発環境を整備する必要があるためである。
本発明は、上記課題に鑑み、コストや車載スペースの増大をもたらすことなく監視マイコンを搭載可能にし、また、マイコンと監視マイコン間の通信時間を低減可能な電子制御ユニット及び異常検出方法を提供することを目的とする。
上記課題に鑑み、本発明は、車載装置に演算結果を提供する電子制御ユニットにおいて、実在するCPUと、実在するCPUから仮想的なCPUを構築する仮想CPU構築手段と、仮想的に構築された、第1の仮想CPU及び第2の仮想CPUと、を有し、演算結果を提供する第1の仮想CPUを、第2の仮想CPUが監視する、ことを特徴とする。
コストや車載スペースの増大をもたらすことなく監視マイコンを搭載可能にし、また、マイコンと監視マイコン間の通信時間を低減可能な電子制御ユニット及び異常検出方法を提供することができる。
従来のマイコン監視システムの一例を示す図である。 電子制御ユニットの構造を概念的に説明する図の一例である。 ECUの概略構成図の一例である(実施例1)。 ECUが異常を検出する手順を示すフローチャート図の一例である(実施例1)。 異常検出システムの概略構成図の一例である(実施例2)。 ECUの機能ブロック図の一例である。 一方のECUが他方のECUの異常を検出する手順を示すフローチャート図の一例である。 3つの仮想CPUを有するECUの概略構成図の一例である(実施例3)。 ECUが論理積をロジックにして異常を検出する手順を示すフローチャート図の一例である(実施例3)。 ECUが論理和をロジックにして異常を検出する手順を示すフローチャート図の一例である(実施例4)。 多数決により異常を検出するECUの概略構成図の一例である(実施例4)。 WDTユニットにより異常を検出するECUを示す図の一例である(実施例5)。 、WDTユニットによりVCPU(A)1の異常を検出する手順を示すフローチャート図の一例を示す(実施例5)。 VCPU(A)1を監視する仮想CPUを周期的に切り替えるECUの概略構成図の一例である(実施例6)。 ECUが監視する仮想CPUを周期的に切り替える手順を示すフローチャート図の一例である(実施例6)。 ECUが監視する仮想CPUの役割を周期的に切り替える手順を示すフローチャート図の一例である(実施例6)。 VCPU(A)1を監視する仮想CPUを非周期的に切り替えるECU100の概略構成図の一例である(実施例7)。 ECUが監視する仮想CPUを非周期的に切り替える手順を示すフローチャート図の一例である(実施例7)。 ECUが監視する仮想CPUの役割を非周期的に切り替える手順を示すフローチャート図の一例である(実施例7)。 多数決により異常を検出するECUの概略構成図の一例である(実施例8)。 3以上の仮想CPUの監視結果の多数決により異常を検出するECUの概略構成図の一例である(実施例8)。 異常検出システムの概略構成図の一例である(実施例9)。 異常検出システムの概略構成図の一例である(実施例10)。 監視用の仮想CPUを更に監視する仮想CPUを搭載したECUの概略構成図の一例である(実施例11)。 ECUが異常を検出する手順を示すフローチャート図の一例を示す(実施例11)。 実在する監視マイコンによりVCPU(A)1及びVCPU(A)2の異常を検出するECU100の概略構成図の一例である(実施例12)。
以下、本発明を実施する最良の形態について図面を参照しながら実施例を挙げて説明する。
図2は、本実施形態の電子制御ユニットの構造を概念的に説明する図の一例である。電子制御ユニット(以下、ECU(Electronic Control Unit)という)は、下層から順にハードウェアリソース11、OS(Operating System)15、アプリケーション16という階層構造になっている。
ハードウェアリソース11は、例えば、CPU、I/O、RAM、ROM、ASIC((Application Specific Integrated Circuit)、スイッチ素子、CAN通信ユニット(COM1)等である。CPUはマルチコア型でもシングルコア型でもよい。
本実施形態では、ハードウェアリソースが仮想CPUモニタ12を有する。仮想CPUモニタ12は、複数のOS15に対して仮想的なハードウェアリソース11を提供することで、ハードウェアリソース11の競合が生じないようOS15からの使用要求を調停する。OS15は仮想的なハードウェアリソース11を物理的なハードウェアであると認識して動作する。
このような仮想CPUの実装方法としては、ハードウェア・マルチスレッド型の実行環境が知られている。ハードウェア・マルチスレッドとは、命令バッファ、レジスタファイルをそれぞれ複数備え、これらとALU(Arithmetic Logic Unit)等との接続を切り変えて命令を実行する構造をいう。したがって、「仮想」CPUと称されても、物理的に存在する回路により演算結果を提供する。
一般的なOS15は、ハードウェアリソース(特にCPU)11に自分のコードを最も高い特権モードで実行するよう要求し、また、アプリケーション16は低い特権モードでコードを実行するよう要求する。仮想CPUモニタ12は、ハードウェアリソース11上で、OS15が普段実行される最も高い特権モードよりも更に高い特権モードで実行される。仮想CPUモニタ12がこのような特殊な特権モードで実行されると、仮想CPUモニタ12はOS15に、OS15を最も高い特権モードで実行していることを示す情報を送る。これにより、OS15にとってはOS15が最も高い特権モードで実行されているように見える。
こうすることで、OS15が実行要求した、ハードウェアリソース11を直接制御するような特権命令を仮想CPUモニタ12が受け取り、OS間の競合を回避できるようになる。したがって、OS15にはハードウェアリソース11を独占しているように見え、各OS15にはそれぞれ仮想的なCPU(以下、仮想CPU13という)が存在していることと同等になる。仮想CPU13を、以下の実施例ではVCPU(Virtual CPU)と表記した。
このように複数の仮想CPU13はハードウェアリソース11を共有できるので、複数のOS15を同時に実行することができる。図では2つしかOS15がないが、図2と同様の構造で3以上のOS15を実行することができる。
また、仮想CPUモニタ12は、OS15を適宜切り替えてハードウェアリソース11で実行している。これは、ハードウェアリソース11に制約がある場合(例えば、CPUが1つしかないような場合)、ある瞬間に動作しているOS15は1つのみとなるためである。
仮想CPUモニタ12は、例えば、時間毎又はOS15からの要求により一方のOS(A)1から他方のOS(A)2に、実行するOS15を切り替える場合、切り替える直前のCPUのすべてのレジスタ値(プログラムカウンタ、命令ンレジスタ、汎用レジスタ等)を待避する(使用するレジスタファイルを切り替える)。保存するデータ構造が、仮想CPU制御構造14であり、ここにはOS15実行時のレジスタ値、仮想CPUモニタ12実行時のレジスタ値、の記憶エリアがある。OS15を切り替える際、仮想CPUモニタ12は、一方のOS(A)1のレジスタ値を仮想CPU制御構造14へ退避し、他方のOS(A)2の仮想CPU制御構造14の内容のレジスタへの復帰する、一連の処理を実行する。
このレジスタの退避・復帰の処理はハード的に行われるので、1〜数クロックで終了する。したがって、従来、例えばOS15がコンテキストの切り替えを行うような場合と比べて極めて短時間で一方の仮想CPU(A)1から他方の仮想CPU(A)2へ切り替えが終了する。このため、外部からは複数の(仮想)CPU又はOS15が同時に動作しているように見える。
OS15は例えば、OSEK(Open system together with interfaces for automotive electronics)、μITRON、LINUX等、汎用的なOSでもよいし、独自に設計されたOSでもよい。また、OS15上では各種のアプリケーション16が稼働する。本実施形態では、アプリケーション16が正常に動作していないことを検出するため、少なくとも1つのアプリケーション16は監視プログラム(A)2になる。監視されるアプリケーション(A)1は例えば、エンジン制御、ブレーキ制御、トランスミッション制御、走行用モータ制御、ナビゲーション用のプログラムである。以下では両者を区別して、実処理を行うプログラムを単にアプリケーション(A)1といい、正常に動作していないことを検出するプログラムを監視プログラム(A)2という。また、正常に動作していないことを検出することを、単に「異常を検出する」という。
図3(a)は、ECU100の概略構成図の一例を示す。ECU100は、基板上に実装されたマイコンを実体とし、マイコンはCPU(A)及びCOM1を有する。CPU(A)及びCOM1はハードウェアリソース11を実体とする。RAM、I/O等のハードウェアリソース11は省略した。COM1は、CAN(Controller Area Network)、FlexRay又はLIN(Local Interconnect Network)等の車載LAN17に接続され、他のECU100と通信する通信ユニットである。
CPU(A)上に記載されたVCPU(A)1とVCPU(A)2が仮想CPU13である。すなわち、VCPU(A)1とVCPU(A)2は、例えばOS15、アプリケーション(A)1又は監視プログラム(A)2から存在するように見える仮想的なCPUである。図3(a)では、VCPU(A)1上でアプリケーション(A)1が、VCPU(A)2上で監視プログラム(A)2が実行されるものとする。
監視プログラム(A)2は、VCPU(A)1上で実行されているアプリケーション(A)1が、リソース不足や無限ループ、デッドロック等の何らかの要因で、正常な動作をしていない場合に、VCPU(A)1にリセット要求を出力する。リセット要求は、例えばVCPU(A)1のハードウェアリセット端子をアクティブにすることをいう。すなわち、ハード的にVCPU(A)1のみをリセットできる。正常に動作しているか否かは、VCPU(A)1が一定周期でVCPU(A)2のレジスタ(VCPU(A)2_checkreg21)にアクセスしている否かにより、VCPU(A)2が判定する。VCPU(A)1が一定周期でVCPU(A)2_checkreg21にアクセスしていない場合、VCPU(A)2はVCPU(A)1をリセットする。
図3(b)は、ECU100の機能ブロック図の一例を示す。図3(b)の機能ブロック図は、VCPU(A)1がアプリケーション(A)1を、VCPU(A)2が監視プログラム(A)2をそれぞれ実行することで実現される。
実処理部61Aはアプリケーション(A)1の本来の処理を実行するブロックである。書き込み部62Aは、VCPU(A)2のVCPU(A)2_checkreg21に所定値「FFh」(h:16進数)を書き込む。書き込みは一定周期内に行われなければ異常が検出されてしまうので、書き込み部62Aは、一定周期毎に繰り返し、実処理部61Aから呼び出されて実行される。呼び出された書き込み部62Aは、VCPU(A)2_checkreg21に所定値「FFh」を書き込むと、実処理部61Aに処理を戻す。したがって、実処理部61Aが正常に動作していれば、書き込み部62AがVCPU(A)2_checkreg21に所定値「FFh」を書き込むことができる。一方、実処理部61Aが正常に動作していない場合、書き込み部62Aが呼び出されないので、一定周期内にVCPU(A)2_checkreg21に所定値「FFh」を書き込むことができない。
レジスタ値検出部64Aは、書き込み部62AがVCPU(A)2_checkreg21に所定値「FFh」を書き込んだ直後にVCPU(A)2_checkreg21の値を検出して、「FFh」が書き込まれているか否かを判定する。書き込み部62Aが書き込んだ直後に、レジスタ値検出部64AがVCPU(A)2_checkreg21の値を検出するため、レジスタ値検出部64Aは書き込み部62Aと同期をとる。そして、レジスタ値検出部64Aは書き込みのタイミングから少しだけ遅らせて、書き込みと同じ一定周期でVCPU(A)2_checkreg21の値を検出する。
VCPU(A)2_checkreg21に「FFh」が書き込まれている場合、レジスタ値検出部64Aはレジスタ値初期化部66AにVCPU(A)2_checkreg21の初期化を要求する。レジスタ値初期化部66AはVCPU(A)2_checkreg21に「00h」を書き込む。
また、レジスタ値検出部64AがVCPU(A)2_checkreg21に「00h」が書き込まれていることを検出した場合、レジスタ値検出部64Aはリセット部65AにVCPU(A)1のリセットを要求する。リセット部65AはVCPU(A)1にリセットをかける。リセットをかける方法は、上記のようにハードウェア的にリセットしてもよいし、ソフトウェアによるリセット(ソフトウェアリセットレジスタに値を書き込むことでVCPU(A)1のみリセットする)を用いてもよい。
図4は、本実施例のECU100が異常を検出する手順を示すフローチャート図の一例である。図4の手順は、例えばイグニッションがオンになるか又は電気自動車やハイブリッド車の場合はメインシステムがオンになると一定周期毎に繰り返しスタートされる。スタートのタイミングは以下の実施例に共通である。
まず、VCPU(A)1の書き込み部62Aは、一定周期毎にVCPU(A)2のVCPU(A)2_checkreg21に「FFh」を書き込む(S10)。
VCPU(A)2のレジスタ値検出部64Aは、VCPU(A)2_checkreg21に「FFh」が書き込まれているか否かを判定する(S20)。
VCPU(A)2_checkreg21に「FFh」が書き込まれている場合(S20のYes)、一定周期毎にVCPU(A)1がVCPU(A)2_checkreg21にアクセスしていることになるので、VCPU(A)2のレジスタ値初期化部66AはVCPU(A)2_checkreg21に「00h」を書き込む(S30)。その後、VCPU(A)2は一定周期の間、待機している(S40)。
VCPU(A)2_checkreg21に「FFh」が書き込まれていない場合(S20のN0)、一定周期毎にVCPU(A)1がVCPU(A)2_checkreg21にアクセスしていないことになるので、VCPU(A)2のリセット部65AがVCPU(A)1をリセットする(S50)。これにより、VCPU(A)1が再起動する。以降は、図4の処理を繰り返す(S60)。なお、一定周期が経過しても再起動中は、VCPU(A)2はVCPU(A)1をリセットしない。こうすることで、リセットが繰り返されることを防止する。
以上説明したように、本実施例のECU100は、物理的な監視マイコンを用いることなく、アプリケーション(A)1が正常に実行されているか否かを監視することができる。VCPU(A)1とVCPU(A)2は同じハードウェアリソース11を実体とするので、機能上は複数のCPUであっても、車載スペースの増大をもたらすことがない。また、監視側のみ仮想CPU13を用いてもよいが、VCPU(A)1とVCPU(A)2とは同じハードウェアリソース11を実体とするので、監視される側と監視する側のCPUをいずれも仮想CPU13とすることで、監視される側の物理的なCPUを搭載する必要が無く車載スペースをより効率的に利用できる。
また、VCPU(A)1とVCPU(A)2は同じハードウェアリソース11を共有するので、VCPU(A)2とVCPU(A)1の通信速度は高速になる。したがって、異常が検出されてから短い時間で、VCPU(A)2がVCPU(A)1をリセットすることができる。
図5は、本実施例の異常検出システム200の概略構成図の一例を示す。図5において図3(a)と同一部には同一の符号を付しその説明は省略する。図5では、ECU100AとECU100BがLAN1を介して接続されている。このうち、ECU100Aの構成は図3(a)と同様である。
ECU100Bは、基板上に実装されたマイコン2を実体とし、マイコン2はCPU(B)及びCOM2を有する。CPU(B)上にあるVCPU(B)1とVCPU(B)2が仮想CPU13である。したがって、VCPU(B)1とVCPU(B)2は、例えばOS15、アプリケーション(A)1又は監視プログラム(A)2から存在するように見える仮想的なCPUである。図5(a)と図5(b)では、VCPU(B)1上でアプリケーション(A)1が、VCPU(B)2上で監視プログラム(A)2が実行されるものとする。
かかる構成において、本実施例では、ECU100BがECU100Aの異常を検出し、ECU100AがECU100Bの異常を検出する。
図6は、ECU100の機能ブロック図の一例を示す。なお、図6において図3(b)と同一部には同一の符号を付しその説明は省略する。
VCPU(A)1の書き込み部62Aは、VCPU(B)2のVCPU(B)2_checkreg22に所定値「FFh」を書き込む。書き込み部62Aの実装は実施例1と同じであるが、書き込み部62AはLAN1経由で書き込むので、書き込み部62Aは書き込むための情報を格納したフレームをCOM1からECU100に送信する。実処理部61Aが正常に動作していれば、書き込み部62AがVCPU(B)2_checkreg22に所定値「FFh」を一定周期毎に書き込むことができる。実処理部61Aが正常に動作していない場合、書き込み部62Aは一定周期内にVCPU(B)2_checkreg22に所定値「FFh」を書き込むことができない。
VCPU(B)2のレジスタ値検出部64Bは、書き込み部62AがVCPU(B)2_checkreg22に所定値「FFh」を書き込んだ直後にVCPU(B)2_checkreg22の値を検出して、「FFh」が書き込まれているか否かを判定する。レジスタ値検出部64Bは、書き込みの直後にVCPU(B)2_checkreg22の値を検出するため、書き込み部62Aとの間で書き込みのタイミングを定めている。そして、レジスタ値検出部64Bは、LAN1を介した通信の時間に起因した遅延時間を想定し、定めたタイミングから少し遅れて一定周期でVCPU(B)2_checkreg22の値を検出する。
VCPU(B)2_checkreg22に「FFh」が書き込まれている場合、レジスタ値検出部64Bはレジスタ値初期化部66BにVCPU(B)2_checkreg22の初期化を要求する。レジスタ値初期化部66BはVCPU(B)2_checkreg22に「00h」を書き込む。
レジスタ値検出部64BがVCPU(B)2_checkreg22に「00h」が書き込まれていることを検出した場合、レジスタ値検出部64Bはリセット部65BにVCPU(A)1のリセットを要求する。リセット部65BはVCPU(A)1にリセットをかける。リセットをかける方法は、ハードウェア的なリセットでもよいが、LAN1を経由しているので、ソフトウェアによるリセットを用いることが好適となる。
また、VCPU(B)1の書き込み部62Bは一定周期毎に、VCPU(A)2のVCPU(A)2_checkreg21に所定値「FFh」を書き込む。実処理部61Bが正常に動作していれば、書き込み部62BがVCPU(A)2_checkreg21に所定値「FFh」を書き込むことができる。実処理部61Bが正常に動作していない場合、書き込み部62Bは一定周期内にVCPU(A)2_checkreg21に所定値「FFh」を書き込むことができない。
レジスタ値検出部64Aは、書き込み部62BがVCPU(A)2_checkreg21に所定値「FFh」を書き込んだ直後にVCPU(A)2_checkreg21の値を検出して、「FFh」が書き込まれているか否かを判定する。「書き込みの直後」のタイミングを決定する方法は、VCPU(B)2のレジスタ値検出部64Bと同じである。
VCPU(A)2_checkreg21に「FFh」が書き込まれている場合、レジスタ値検出部64Aはレジスタ値初期化部66AにVCPU(A)2_checkreg21の初期化を要求する。レジスタ値初期化部66AはVCPU(A)2_checkreg21に「00h」を書き込む。レジスタ値検出部64AがVCPU(A)2_checkreg21に「00h」が書き込まれていることを検出した場合、レジスタ値検出部64Aはリセット部65AにVCPU(B)1のリセットを要求する。リセット部65AはVCPU(B)1にリセットをかける。リセットをかける方法は、ハードウェア的なリセットでもよいが、LAN1を経由しているので、ソフトウェアによるリセットを用いることが好適となる。
このように、アプリケーション(A)1や監視プログラム(A)2が増大しても、仮想CPU13の場所や数が変わるだけで、アプリケーション(A)1や監視プログラム(A)2の構成は同じにすることができる。
図7(a)はECU100BがECU100Aの異常を検出する手順を示すフローチャート図の一例である。まず、VCPU(A)1の書き込み部62AはVCPU(B)2のVCPU(B)2_checkreg22に一定周期毎に「FFh」を書き込む(S10)。VCPU(B)2のレジスタ値検出部64Bは一定周期毎にVCPU(B)2_checkreg22の値を検出して、「FFh」が書き込まれているか否かを判定する(S20)。
VCPU(B)2_checkreg22に「FFh」が書き込まれている場合(S20のYes)、VCPU(B)2のレジスタ値初期化部66BはVCPU(B)2_checkreg22に「00h」を書き込む(S30)。その後、VCPU(B)2は一定周期の間、待機している(S40)。その後、VCPU(B)2は元の状態に戻る(リターン)。
VCPU(B)2_checkreg22に「FFh」が書き込まれていない場合(S20のNo)、VCPU(B)2のリセット部65BはVCPU(A)1にリセットをかける(S50)。VCPU(A)1が再起動するので、VCPU(A)1は元の状態に戻る(リターン)。以降は、図7(a)の処理を繰り返す(S60)。
図7(b)はECU100AがECU10Bの異常を検出する際の手順を示すフローチャート図の一例である。同様に、VCPU(B)1の書き込み部62BはVCPU(A)2のVCPU(A)2_checkreg21に一定周期毎に「FFh」を書き込む(S10)。VCPU(A)2のレジスタ値検出部64Aは一定周期毎にVCPU(A)2_checkreg21の値を検出して、「FFh」が書き込まれているか否かを判定する(S20)。
VCPU(A)2_checkreg21に「FFh」が書き込まれている場合(S20のYes)、VCPU(A)2のレジスタ値初期化部66AはVCPU(A)2_checkreg21に「00h」を書き込む(S30)。その後、VCPU(A)2は一定周期の間、待機している(S40)。その後、VCPU(A)2は元の状態に戻る(リターン)。
VCPU(A)2_checkreg21に「FFh」が書き込まれていない場合(S20のNo)、VCPU(A)2のリセット部65AはVCPU(B)1にリセットをかける(S50)。VCPU(B)1が再起動するので、VCPU(B)1は元の状態に戻る(リターン)。以降は、図7(b)の処理を繰り返す(S60)。
本実施例によれば、実施例1の効果に加え、LAN1を介して接続された2つのECU100AとECU100A間で異常を検出することができる。ノイズにより一方のECU100Aに異常が生じ、アプリケーション(A)1だけでなく監視プログラム(A)2にも異常が生じても、他方のECU100Bの監視プログラム(A)2によりアプリケーション(A)1の異常を検出できるので、信頼性を向上できる。
本実施例では、2つの仮想CPU13により1つの仮想CPU13の異常を検出するECU100について説明する。
図8(a)、図8(b)は、3つの仮想CPU13を有するECU100の概略構成図の一例を示す。図8では、VCPU(A)1がアプリケーション(A)1を実行し、VCPU(A)2とVCPU(A)3とがそれぞれ監視プログラム(A)2を実行する。そして、ECU100は以下のいずれかのロジックで、異常を検出する。
(1)論理積
(2)論理和
〔論理積〕
図8(a)は論理積により異常を検出するECU100を示す図である。VCPU(A)2はAND回路23と接続されており、VCPU(A)3もAND回路23と接続されている。そして、AND回路23とVCPU(A)1が接続されている。
まず、VCPU(A)1はVCPU(A)2のVCPU(A)2_checkreg21に一定周期毎に「FFh」を書き込む。また、VCPU(A)1はVCPU(A)3のVCPU(A)3_checkreg24に一定周期毎に「FFh」を書き込む。
VCPU(A)2は一定周期毎にVCPU(A)2_checkreg21の値を検出して、「FFh」が書き込まれているか否かを判定する。「FFh」が書き込まれていない場合、VCPU(A)2はリセット要求(A)2をAND回路23に入力する。同様に、VCPU(A)3は一定周期毎にVCPU(A)3_checkreg24の値を検出して、「FFh」が書き込まれているか否かを判定する。「FFh」が書き込まれていない場合、VCPU(A)3はリセット要求(A)3をAND回路23に入力する。
AND回路23は、リセット要求(A)2とリセット要求(A)3の両方が入力されるとリセット要求をVCPU(A)1に出力する。したがって、図8(a)のECU100Aは、論理積を異常の検出ロジックにすることができる。
AND回路23はハードウェアリソース11に含まれている。また、AND回路23を、VCPU(A)2又はVCPU(A)3がソフトウェア的に実装してもよい。この場合、VCPU(A)2又はVCPU(A)3の監視プログラム(A)2が例えば2つのフラグを監視して、両方ともオンになるとリセット要求をVCPU(A)1に出力する。
図9は、ECU100Aが論理積をロジックにして異常を検出する手順を示すフローチャート図の一例である。
まず、VCPU(A)1がVCPU(A)2のVCPU(A)2_checkreg21に一定周期毎に「FFh」を書き込む(S10A)。VCPU(A)1がVCPU(A)2のVCPU(A)2_checkreg21に「FFh」を書き込んだ直後、VCPU(A)2がVCPU(A)2_checkreg21に「FFh」が書き込まれているか否か判定する(S20A)。
「FFh」がVCPU(A)2_checkreg21に書き込まれている場合(S20AのYes)、VCPU(A)2がVCPU(A)2_checkreg21に「00h」を書き込む(S30A)。「FFh」がVCPU(A)2_checkreg21に書き込まれていない場合(S20AのNo)、VCPU(A)2がリセット要求(A)2をAND回路23に出力する(S40A)。
また、VCPU(A)1はVCPU(A)3のVCPU(A)3_checkreg24に一定周期毎に「FFh」を書き込む(S10B)。VCPU(A)1がVCPU(A)2_checkre21 とVCPU(A)3_checkreg24に「FFh」を書き込むタイミングは、好ましくは同時であるが、少なくとも一定周期以上ずれないように調整されている。VCPU(A)2はVCPU(A)2_checkreg21の値が「FFh」でなければ一定周期毎にリセット要求(A)2を、VCPU(A)3はVCPU(A)3_checkreg24の値が「FFh」でなければ一定周期毎にリセット要求(A)3を、出力するので、論理積をロジックに採用しても一定周期内に異常を検出できる。
VCPU(A)1がVCPU(A)3のVCPU(A)3_checkreg24に「FFh」を書き込んだ直後、VCPU(A)3がVCPU(A)3_checkreg24に「FFh」が書き込まれているか否か判定する(S20B)。
「FFh」がVCPU(A)3_checkreg24に書き込まれている場合(S20BのYes)、VCPU(A)3がVCPU(A)3_checkreg24に「00h」を書き込む(S30B)。「FFh」がVCPU(A)3_checkreg24に書き込まれていない場合(S20BのNo)、VCPU(A)3がリセット要求(A)3をAND回路23に出力する(S40B)。
これらの結果、AND回路23がオンになると(S50のYes)、AND回路はVCPU(A)1にリセット要求を出力するので、VCPU(A)1は再起動する(S60)。AND回路23がオンにならなければ(S50のNo)、VCPU(A)1にリセット要求が出力されない。この場合、VCPU(A)1,VCPU(A)2及びVCPU(A)3は一定周期の間、待機している(S70)。VCPU(A)1が再起動することで(S60)、VCPU(A)1は元の状態に戻る(リターン)。また、一定周期の間、待機した後(S70)、VCPU(A)1,VCPU(A)2及びVCPU(A)3は元の状態に戻る(リターン)。
このように、論理積を異常検出のロジックに採用することで、異常が生じている可能性が高い場合にのみVCPU(A)1をリセットすることができる。例えば、急な再起動が好ましくない制御を実行するECU100Aをリセットするロジックに好適となる。すなわち、明らかに異常がある場合のみECU100Aを再起動するので、ECU100の可用性を向上できる。
〔論理和〕
図8(b)は論理和により異常を検出するECU100を示す図である。なお、図8(b)において図8(a)と同一部には同一の符号を付しその説明は省略する。VCPU(A)2はOR回路25と接続されており、VCPU(A)3もOR回路25と接続されている。そして、OR回路25とVCPU(A)1が接続されている。
まず、VCPU(A)1はVCPU(A)2のVCPU(A)2_checkreg21に一定周期毎に「FFh」を書き込む。また、VCPU(A)1はVCPU(A)3のVCPU(A)3_checkreg24に一定周期毎に「FFh」を書き込む。
OR回路25は、リセット要求(A)2とリセット要求(A)3のいずれか又は両方が入力されるとリセット要求をVCPU(A)1に出力する。したがって、図8(b)のECU100Aは、論理和を異常の検出ロジックにすることができる。
なお、OR回路25は、ハードウェアリソース11に含まれている。また、OR回路25を、VCPU(A)2又はVCPU(A)3がソフトウェア的に実装してもよい。この場合、VCPU(A)2又はVCPU(A)3の監視プログラム(A)2が例えば2つのフラグを監視して、いずれか又は両方がオンになるとリセット要求をVCPU(A)1に出力する。
図10は、ECU100が論理和をロジックにして異常を検出する手順を示すフローチャート図の一例である。なお、図10において図9と同じステップの説明は省略する。ステップS10A、S10B〜S40A、S40Bまでの処理は図10と同じである。
S40までの処理の結果、OR回路25がオンになると(S50のYes)、VCPU(A)1にリセット要求が出力され、VCPU(A)1が再起動する(S60)。なお、VCPU(A)1が再起動している間は、VCPU(A)2がリセット要求(A)2を出力することはなく、VCPU(A)3がリセット要求(A)3を出力することはない。
OR回路25がオンにならなければ(S50のNo)、VCPU(A)1にリセット要求が出力されない。この場合、VCPU(A)1,VCPU(A)2及びVCPU(A)3は一定周期の間、待機している(S70)。VCPU(A)1が再起動することで(S60)、VCPU(A)1は元の状態に戻る(リターン)。また、一定周期の間、待機した後(S70)、VCPU(A)1,VCPU(A)2及びVCPU(A)3は元の状態に戻る(リターン)。
このように、論理和を異常検出のロジックに採用することで、例えば、急に再起動してもよい制御を実行するECU100のVCPU(A)1を早期にリセットできる。すなわち、異常の可能性がある場合にはECU100を再起動するので、ECU100の信頼性を向上できる。
実施例3では、2つのVCPU(A)2とVCPU(A)3の出力の論理積又は論理和で異常を検出したが、3以上の仮想CPU(VCPU(A)2、VCPU(A)3、…、VCPU(A)n)13の出力に、論理積又は論理和のロジックを適用して、VCPU(A)1の異常を検出し、以上が検出された場合にはVCPU(A)1をリセットしてもよい。この場合は、AND回路23又はOR回路25と各仮想CPU13を接続するだけでよい。
また、ECU100は、VCPU(A)2〜VCPU(A)nのように多数の仮想CPU13がVCPU(A)1を関している場合、VCPU(A)2〜VCPU(A)nの出力の多数決から、異常を検出することができる。
図11は、多数決により異常を検出するECU100を示す図の一例である。なお、図11において図8(a)と同一部には同一の符号を付しその説明は省略する。VCPU(A)2、VCPU(A)3、…、VCPU(A)nは多数決回路27と接続されている。
多数決回路27は、一定周期内に入力されたリセット要求(A)2、リセット要求A(3)、…リセット要求(A)nの数(以下、リセット要求数という)をカウントする。リセット要求数が所定値(例えば、VCPU(A)2等の数の半分)以上の場合、多数決回路27は、リセット要求をVCPU(A)1に出力する。所定値は多数決回路27に予め記憶されている。多数決回路27は、一定周期内に入力されるリセット要求数をカウントして所定値との比較結果を出力し、所定値未満の場合は、カウントしたリセット要求数をクリアする処理を繰り返す。こうすることで、多数決回路27は、一定周期毎に、多数決によりVCPU(A)1をリセットするか否かを決定できる。なお、多数決回路27も、ハードウェアリソース11に含まれている。多数決回路27をソフトウェア的に実装してもよい。
なお、フローチャート図は図9又は図10において、ステップS50の処理が「多数決が成立した?」となるだけなので省略した。
本実施例のECU100によれば、n個のVCPU(A)の出力による多数決により異常を検出するので、異常があるか否かを正確に判定することができる。また、所定値を変えることで、VCPU(A)1をリセットしやすくして信頼性を向上したり、リセットしにくくして可用性を向上させるなどを調整できる。
これまで説明した異常の検出方法はウォッチドッグタイマ(WDT)と親和性がある。そこで、本実施例ではWDTユニット18がVCPU(A)1をリセットするように構成することで、WDTを実現するECU100について説明する。
図12は、WDTユニット18により異常を検出するECU100を示す図の一例である。図12のWDTユニット18は、WDT_reg28とリセット要求をVCPU(A)1に出力するリセット回路(不図示)を有する。WDTユニット18にはこれまでの実施例で説明した一定周期に対応するタイマ値が記憶されている。WDTユニット18は、時間の計測を常に継続しているが、WDT_reg28に「FFh」が書き込まれると、計測した時間をいったんゼロにして時間の計測を再開する。WDT_reg28に「FFh」が書き込まれる前に、計測した時間がタイマ値を超えると、WDTユニット18はVCPU(A)1にリセット信号を出力する。
図12では、VCPU(A)2にWDTユニット18を配置した。WDTユニット18はICなど独立したハードウェアなので、実体はハードウェアリソース11に含まれる。また、一般的なECU100では、WDTユニット18はマイコン内になく、複数のICを統合した統合ICに実装されていることが多い。
図13は、WDTユニット18によりVCPU(A)1の異常を検出する手順を示すフローチャート図の一例を示す。
VCPU(A)1は、一定周期毎にWDTユニット18のWDT_reg28に「FFh」を書き込む(S10)。WDTユニット18は、に「FFh」が書き込まれているか否かを判定する(S20)。
WDT_reg28に「FFh」が書き込まれている場合(S20のYes)、WDTユニット18はそれまで計測した時間をゼロに戻す(S30)。
ついで、WDTユニット18は計測時間がタイマ値(一定周期)以上か否かを判定する(S40)。計測時間がタイマ値以上の場合(S40のYes)、WDTユニット18がVCPU(A)1をリセットする(S50)。これにより、VCPU(A)1が再起動する(S60)。VCPU(A)1が再起動することで(S60)、VCPU(A)1は元の状態に戻る(リターン)。
計測時間がタイマ値以上でない場合(S40のNo)、VCPU(B)2はステップS20からの処理を繰り返す(リターン)。
本実施例によれば、広く利用されているWDTユニット18を仮想CPU13により実現することができる。
本実施例では、周期的にVCPU(A)1を監視する仮想CPU13を切り替えるECU100について説明する。一般に、同じCPUに同じ処理を固定することは特定の回路に負荷が集中するため監視上好ましくないとされている。そこで、監視する仮想CPU13を切り替えることで、負荷が集中することを防止する。
図14(a)は、VCPU(A)1を監視する仮想CPU13を切り替えるECU100の概略構成図の一例を示す。なお、図14(a)において図8(b)と同一部には同一の符号を付しその説明は省略する。ECU100は、監視用にVCPU(A)2とVCPU(A)3を有しているが、どちらか一方のみがアクティブで、他方が非アクティブになっている。アクティブとは、その仮想CPU13が、VCPU(A)2_checkreg21の監視、「00h」の書き込み、リセット要求の出力、の一連の処理を実行していることをいう。
VCPU(A)2とVCPU(A)3を切り替えるにはいくつか方法があるが、例えばタイマ割込みを利用する。タイマは、切り替え時間毎に、タイマ割り込みをVCPU(A)1、VCPU(A)2及びVCPU(A)3それぞれに発生させる。VCPU(A)2がアクティブだった場合、タイマ割込みを検出したVCPU(A)1は「FFh」の書き込み先をVCPU(A)2からVCPU(A)3に切り替える。また、タイマ割込みを検出したVCPU(A)2は監視プログラム(A)2の実行を中断する。また、タイマ割込みを検出したVCPU(A)3は監視プログラム(A)2の実行を開始する。すなわち、VCPU(A)2の監視プログラム(A)2とVCPU(A)3の監視プログラム(A)2を、例えばタスクスケジューリングにおける待機状態と実行状態に遷移させることで、VCPU(A)2とVCPU(A)3の一方のみをアクティブにすることができる。このような切り替えは、一般には仮想CPUモニタ12のスケジューラの機能を利用することで実現できる。
図15は、ECU100が監視する仮想CPU13を切り替える手順を示すフローチャート図の一例を示す。タイマ割込みが発生するまで、VCPU(A)1はアプリケーション(A)1を、VCPU(A)2は監視プログラム(A)2を実行している。
タイマがタイマ割込みを発生させると(S10)、VCPU(A)1は「FFh」の書き込み先をVCPU(A)2からVCPU(A)3に切り替える(S20)。その後、VCPU(A)1はこの処理を繰り返し、「FFh」の書き込み先をVCPU(A)3からVCPU(A)2に切り替える(リターン→S20)。
また、タイマがタイマ割込みを発生させると(S10)、VCPU(A)2は監視プログラム(A)2の実行を中断する(S30)。その後、VCPU(A)2は監視プログラム(A)2の実行を再開する(リターン→S30)。
また、VCPU(A)3は監視プログラム(A)2の実行を再開する(S40)。その後、VCPU(A)3は監視プログラム(A)2の実行を再開する(リターン→S40)。
こうすることで、周期的にVCPU(A)1を監視する仮想CPUを切り替え、負荷を分散させることができる。
図14(b)は、ECU100の概略構成図の一例を示す。図14(b)のECU100は、VCPU(A)2とVCPU(A)3の役割を入れ替えながら、VCPU(A)1を監視している。
例えば、図14(b)の左図では、VCPU(A)1はVCPU(A)2のVCPU(A)2_checkreg21及びVCPU(A)3のVCPU(A)3_checkreg24に「FFh」を書き込む。VCPU(A)2は、VCPU(A)2_checkreg21の値を読み出し「FFh」が書き込まれているか否かを判定する。そして、VCPU(A)3も、VCPU(A)3_checkreg24の値を読み出し「FFh」が書き込まれているか否かを判定する。
実施例1と同様に、VCPU(A)2_checkreg21に「FFh」が書き込まれていない場合、VCPU(A)2はVCPU(A)1をリセットする。これに対し、VCPU(A)3は、VCPU(A)3_checkreg24に「FFh」が書き込まれていない場合、VCPU(A)2にイベントの発生に伴う処理を要求する(以下、単にイベント要求という)。このイベント要求は、VCPU(A)1のリセットを要求するものである。このため、イベント要求を受信したVCPU(A)2はVCPU(A)1をリセットする。すなわち、VCPU(A)2とVCPU(A)3が多重にVCPU(A)1を監視していることになる。
図14(b)のECU100はこの役割分担を時間毎に切り替る。図14(b)の右図は役割を切り替えた後のECU100の一例を示している。すなわち、VCPU(A)1はVCPU(A)2のVCPU(A)2_checkreg21及びVCPU(A)3のVCPU(A)3_checkreg24にそれぞれ「FFh」を書き込む。VCPU(A)3は、VCPU(A)3_checkreg24の値を読み出し「FFh」が書き込まれているか否かを判定する。そして、VCPU(A)3_checkreg24に「FFh」が書き込まれていない場合、VCPU(A)3はVCPU(A)1をリセットする。また、VCPU(A)2は、VCPU(A)2_checkreg21の値を読み出し「FFh」が書き込まれているか否かを判定する。そして、VCPU(A)2_checkreg21に「FFh」が書き込まれていない場合、VCPU(A)2はVCPU(A)3にイベントを要求する。イベント要求を受信したVCPU(A)3はVCPU(A)1をリセットする。なお、イベント要求は例えば割り込みの一種である。
このような役割の切り替えも、例えばタイマ割り込みを利用することで実現できる。タイマ割込みを検出したVCPU(A)1の処理に変化はない。これに対し、タイマ割込みを検出したVCPU(A)2はVCPU(A)2_checkreg21に「FFh」が書き込まれていない場合の処理を、VCPU(A)1をリセットする処理から、イベント要求をVCPU(A)3に出力する処理に切り替える。
また、タイマ割込みを検出したVCPU(A)3は、VCPU(A)3_checkreg24に「FFh」が書き込まれていない場合の処理を、VCPU(A)2にイベント要求を出力する処理から、VCPU(A)1をリセットする処理に切り替える。このような役割の切り替えは、例えばスケジューラが、タイマ割込みによりVCPU(A)2とVCPU(A)3が実行する監視プログラム(A)2の処理(タスク)を切り替えることで実現できる。
図16は、ECU100が監視する仮想CPU13の役割を周期的に切り替える手順を示すフローチャート図の一例を示す。なお、図16において図15と同一ステップの説明は省略する。
タイマがタイマ割込みを発生させると(S10)、VCPU(A)2はVCPU(A)2_checkreg21に「FFh」が書き込まれていない場合の処理を、VCPU(A)1をリセットする処理から、イベント要求をVCPU(A)3に出力する処理に切り替える(S30)。その後、VCPU(A)1はタイマからの割り込みをVCPU(A)3とVCPU(A)2に通知する(リターン)。VCPU(A)2は、VCPU(A)1から通知の度に、イベント要求をVCPU(A)3に出力する処理からVCPU(A)1をリセットする処理に切り替える(リターン→S30)。
また、VCPU(A)3は、VCPU(A)3_checkreg24に「FFh」が書き込まれていない場合の処理を、VCPU(A)2にイベント要求を出力する処理から、VCPU(A)1をリセットする処理に切り替える(S40)。VCPU(A)2は、VCPU(A)1から通知の度に、VCPU(A)1をリセットする処理からVCPU(A)2にイベント要求を出力する処理に切り替える(リターン→S40)。
こうすることで、周期的に、多重的な監視の手順を切り替え、負荷を分散させることができる。
本実施例のECU100によれば、VCPU(A)1を監視する仮想CPU13又は役割を周期的に切り替えることで、負荷を分散させることができる。また、VCPU(A)1を多重に監視していることになるので信頼性が向上する。
本実施例では、実施例6と同様の切り替えを、非周期的に実行するECU100について説明する。
図17(a)は、VCPU(A)1を監視する仮想CPUを非周期的に切り替えるECU100の概略構成図の一例を示す。なお、図17(a)において図14(a)と同一部には同一の符号を付しその説明は省略する。構成上の違いはないが、図17(a)では、アクティブな仮想CPU13を切り替えるトリガが図16(a)と異なる。すなわち、実施例6では周期的に(例えばタイマ割り込みで)アクティブな仮想CPU13を切り替えたが、本実施例では何らかのイベントにより、アクティブな仮想CPU13を切り替える。
イベントには種々あるが、例えば、ハードウェア割り込み、例外の発生、フックの検出(ソフトウェアが指定した特定の事象が検出されること)等である。
このようなイベントを検出した、仮想CPU13、OS15、又は、アプリケーション16は、VCPU(A)1、VCPU(A)2及びVCPU(A)3にそれぞれに割り込みを発生させる。イベントが発生した後の処理は実施例6と同様である。
図18は、ECU100が監視する仮想CPU13を非周期的に切り替える手順を示すフローチャート図の一例を示す。イベントが発生するまで、VCPU(A)1はアプリケーション(A)1を、VCPU(A)2及びVCPU(A)3は監視プログラム(A)2を実行している。
ハードウェアリソース11、アプリケーション(A)1又はOS15はイベントの発生を検出し、VCPU(A)1、VCPU(A)2及びVCPU(A)3にそれぞれ割り込みを発生させる(S10)。これにより、VCPU(A)1は「FFh」の書き込み先をVCPU(A)2からVCPU(A)3に切り替える(S20)。その後、VCPU(A)1はこの処理を繰り返し、「FFh」の書き込み先をVCPU(A)3からVCPU(A)2に切り替える(リターン→S20)。
また、VCPU(A)2は監視プログラム(A)2の実行を中断する(S30)。その後、VCPU(A)2は監視プログラム(A)2の実行を再開する(リターン→S30)。
また、VCPU(A)3は監視プログラム(A)2の実行を再開する(S40)。その後、VCPU(A)3は監視プログラム(A)2の実行を再開する(リターン→S40)。こうすることで、非周期的にVCPU(A)1を監視する仮想CPUを切り替え、負荷を分散させることができる。
図17(b)は、監視する仮想CPUの役割を非周期的に切り替えるECU100の概略構成図の一例を示す。なお、図17(b)において図14(b)と同一部には同一の符号を付しその説明は省略する。図17(b)のECU100は、図17(a)のECU100と同様にイベントの発生により、VCPU(A)2とVCPU(A)3の役割を切り替える。イベント発生後の処理は実施例6と同様である。
図19は、ECU100が監視する仮想CPU13の役割を非周期的に切り替える手順を示すフローチャート図の一例を示す。
ハードウェアリソース11、アプリケーション(A)1又はOS15はイベントの発生を検出し、VCPU(A)1、VCPU(A)2及びVCPU(A)3にそれぞれ割り込みを発生させる(S10)。
VCPU(A)2はVCPU(A)2_checkreg21に「FFh」が書き込まれていない場合の処理を、VCPU(A)1をリセットする処理から、イベント要求をVCPU(A)3に出力する処理に切り替える(S30)。その後、VCPU(A)1はタイマからの割り込みをVCPU(A)3とVCPU(A)2に通知する(リターン)。VCPU(A)2は、VCPU(A)1から通知の度に、イベント要求をVCPU(A)3に出力する処理からVCPU(A)1をリセットする処理に切り替える(リターン→S30)。
また、VCPU(A)3は、VCPU(A)3_checkreg24に「FFh」が書き込まれていない場合の処理を、VCPU(A)2にイベント要求を出力する処理から、VCPU(A)1をリセットする処理に切り替える(S40)。VCPU(A)2は、VCPU(A)1から通知の度に、VCPU(A)1をリセットする処理からVCPU(A)2にイベント要求を出力する処理に切り替える(リターン→S40)。
こうすることで、非周期的に、多重的な監視の手順を切り替え、負荷を分散させることができる。
本実施例のECU100によれば、イベントの発生毎にVCPU(A)1を監視する仮想CPU13又は役割を切り替えることで、負荷を分散させることができる。また、VCPU(A)1を多重に監視していることになるので信頼性が向上する。なお、実施例6と本実施例を組み合わせ、周期的かつ非周期的にVCPU(A)1を監視する仮想CPU13を切り替えてもよいし、又は、多重的な監視の手順を切り替えてもよい。
実施例6又は7のように、仮想CPU13を切り替える構成を、3以上の仮想CPU13に対し適用することもできる。
図20(a)は、多数決により異常を検出するECU100の概略構成図の一例である。なお、図20(a)において図11と同一部には同一の符号を付しその説明は省略する。図示するVCPU(A)2、VCPU(A)3、…、VCPU(A)nのうち、必ず1以上の仮想CPU13がアクティブであるが、必ず1以上の仮想CPU13はアクティブでない。例えば、図ではVCPU(A)n以外をアクティブな仮想CPU13とした。
そして、このECU100は、周期的又は非周期的にアクティブな仮想CPU13を繰り替える。例えば、切り替え時間が経過すると、図20(b)に示すように、ECU100はVCPU(A)nをアクティブにして、VCPU(A)2を非アクティブにする。こうすることで、負荷を分散しながら、常に一定数の仮想CPU13によりVCPU(A)1を監視することができる。
なお、周期的又は非周期的にアクティブとなるか非アクティブとなるかは、例えば次のように各仮想CPU13が決定する。タイマ割込みやイベントの発生による割り込みの回数を各仮想CPU13がカウントしておき、各仮想CPU13は、回数に応じてアクティブとなるか非アクティブを決定する。例えば、回数を仮想CPU13の数nで割って、その余りが0ならVCPU(A)1が、1ならVCPU(A)2が、…という規則に仮想CPU13が従うことで、仮想CPU13はアクティブとなるか非アクティブとなるかを決定できる。
また、図20(a)の多数決定回路27を用いずに、多数決でVCPU(A)1をリセットするか否かを決定することもできる。
図21(a)は、3以上の仮想CPU13の監視結果の多数決により異常を検出するECU100の概略構成図の一例である。図21(a)のECU100では、VCPU(A)1が、一定周期毎にVCPU(A)2、VCPU(A)3、…、VCPU(A)nにそれぞれ「FFh」を書き込む。VCPU(A)2はVCPU(A)2_checkreg21に「FFh」が書き込まれているか否かを判定し、書き込まれていなければイベント要求を記憶する。一方、VCPU(A)3はVCPU(A)3_checkreg24に「FFh」が書き込まれているか否かを判定し、書き込まれていなければイベント要求をVCPU(A)2に出力する。VCPU(A)nはVCPU(A)n_checkreg26に「FFh」が書き込まれているか否かを判定し、書き込まれていなければイベント要求をVCPU(A)2に出力する。
そして、VCPU(A)2は、一定周期内に入力されたリセット要求数をカウントする。リセット要求数が所定値以上の場合、VCPU(A)2は、リセット要求をVCPU(A)1に出力する。すなわち、VCPU(A)2はマスタVCPUとして多数決の判定処理を実行する。このように、多重的に各仮想CPU13がVCPU(A)1を監視して、多数決によりマスタVCPUとなるVCPU(A)2が、リセットするか否かを決定できる。マスタVCPUとなった仮想CPU13の処理は監視プログラム(A)2に記述されている。
そして、ECU100は、マスタVCPUのVCPU(A)2を別の仮想CPU13に切り替えることができる。切り替え方は図20にて説明したECU100の切り替え方法と同様に、予め決定しておくことができる。各仮想CPU13は、タイマ割込みやイベントの発生による割り込みの回数を仮想CPU13の数nで割った、その余りに基づき、マスターとなるかならないかを決定する。
図21(b)は、マスタVCPUをVCPU(A)2からVCPU(A)3に切り替えたECU100の一例を示す図である。図示するように、マスタVCPUがVCPU(A)2からVCPU(A)3に変わっている。こうすることで、特定の仮想CPU13が多数決したり、VCPU(A)1をリセットするという同じ処理負荷が集中することを、分散させることができる。また、各CPU13が多重的にVCPU(A)1を監視するので、ECU100の信頼性を向上させることができる。
以上のように、本実施例のECU100は、実施例6又は実施例7の効果に加え、さらにECU100の信頼性を向上できる。
実施例2では、LAN1に接続されたECU100AがECU100Bを、ECU100BがECU100Aを、それぞれ監視する異常検出システム200を説明した。
本実施例では、更に、階層的に形成されたLAN1とLAN2を介して、ECU100AがECU100Bを、ECU100BがECU100Aを、それぞれ監視する異常検出システム200について説明する。
図22は、本実施例の異常検出システム200の概略構成図の一例を示す。図22において図5と同一部には同一の符号を付しその説明は省略する。図22では、ECU100AはLAN1に、ECU100BはLAN2に、それぞれ接続されている。そして、LAN1とLAN2は、G/W(GateWay)装置19を介して接続されている。
G/W装置19は、LAN1とLAN2のプロトコルが異なる場合に、一方のLAN1(LAN2)のプロトコルに従ったフォーマットの通信データを他方のLAN2(LAN1)のプロトコルに従ったフォーマットの通信データに変換する。車載LAN17には、例えば、CAN、FlexRay、LIN等の種々のものがあるが、これらはフォーマットに互換性があるとは限らない。G/W装置19は、異なるプロトコルのLAN1のECU100AがLAN2のECU100Bを監視すること(又はその逆)を可能にする。
また、同じプロトコルであっても、両者で通信速度がことなる場合がある。この場合にもG/W装置19は速度の違いを吸収して、LAN1のECU100AがLAN2のECU100Bを監視すること(又はその逆)を可能にする。具体的には、G/W装置19にバッファを設け、LAN1から送信された通信データをいったん記憶してから他方のLAN2に送信することで、通信速度の違いを吸収する。
なお、図22のようにLAN1とLAN2を階層的に接続する場合だけでなく、G/W装置19を中心にECU100A、100Bを複数接続したスター型、複数のECU100A、100Bを同じLANに接続したスター型においても、ECU100AがECU100Bを監視すること(又はその逆)ができる。LAN1が複数のケーブルで多重化されていてもよい。
また、特殊な例としてFlexRayでは、通信データを送信した時刻情報が通信データに含まれる。これにより、例えばECU100AがECU100BのVCPU(B)2_checkreg22に「FFh」を書き込む際に、時刻情報を一緒に書き込むことができる。したがって、この時刻情報を参照すれば、最後にECU100AがVCPU(B)2_checkreg22に「FFh」を書き込んでから経過した時間を、ECU100Bが検出することができる。ECU100Bが「FFh」だけでなく時刻情報を参照してVCPU(A)1をリセットすれこととすれば、より的確なタイミングでVCPU(A)1をリセットすることができる。ECU100Aの信頼性や可用性を向上させることができる。
本実施例のECU100によれば、階層的に構築されたネットワークを介して、ECU100AがECU100Bの異常を、ECU100BがECU100Aの異常を、それぞれ検出できる。
実施例9のように種々のプロトコルや通信速度のLAN1、2が混在した車載LAN17を介して、一方のECU100Aが他方のECU100Bを監視できることで、特に車両では仮想CPU13を用いた異常の検出の有効性が向上する。
図23は、本実施例の異常検出システム200の概略構成図の一例を示す。車両ではLAN1とLAN2に故障耐性要求レベルの異なるECU100A、100Bが接続されることが多い。例えば、パワートレーン系のECU100は同じ1つのLAN1に接続され、ブレーキ系のECU100は同じ1つのLAN1に接続され、ボディ系のECU100は同じ1つのLAN2に接続され、マルチメディア系のECU100は同じ1つのLAN2に接続される。そして、各LAN1,2はG/W装置19を介して接続されている。
マルチメディア系のECU100は、例え故障しても走行に影響を与えることは少ないが、パワートレーン系のECU100が故障すると最悪の場合、走行できなくおそれがある。ECU100は要求される、故障に対する耐性の高さに応じて設計されている。すなわち、マルチメディア系のECU100は故障耐性要求レベルが低く、パワートレーン系のECU100は故障耐性要求レベルが高い。
従来の物理的なCPUを有する監視マイコンでは、柔軟に構成を変えることができなかったので、ECUの異常を検出する場合、監視マイコンはLAN毎に配置する必要があった。
しかしながら、本実施例の仮想CPU13を有するECU100はどのLAN1,2に配置されても、複数の仮想CPU13が異常を検出する基準(例えば、論理積、論理和、多数決、一定周期等)を適宜設定することができる。また、上記のように、ECU100は、種々のプロトコルや通信速度のLANが混在した車載LAN17を介して通信することができる。
このため、1つの監視用のECU100が異なる故障耐性要求レベルのECU100の異常を検出できる。また、本実施例の異常検出システム200は、故障耐性要求レベルの異なるECU100A、100Bを種々の車載LAN17を介して監視することができるので、故障耐性要求レベルの異なるECU100A、100Bを同じLAN内で監視する必要がない。この結果、異常を検出するECU100を配置するLAN1又はLAN2を柔軟に決定することができる。
本実施例では、監視用の仮想CPU13を更に監視する仮想CPU13を搭載したECU100について説明する。
図24は、監視用の仮想CPU13を更に監視する仮想CPU13を搭載したECU100の概略構成図の一例を示す。VCPU(A)2がVCPU(A)1を監視しているのはこれまでの実施例と同じである。これに対し、VCPU(A)3はVCPU(A)2及びVCPU(A)1を監視している。
VCPU(A)1は、一定周期毎に、VCPU(B)2のVCPU(B)2_checkreg22に所定値「FFh」を書き込む。実施例1等と同様に、VCPU(A)2はVCPU(B)2_checkreg22に「FFh」が記載されているか否かを監視する。
また、VCPU(A)1は、一定周期毎にVCPU(A)3のVCPU(A)3_checkreg24に所定値「F0h」を書き込む。VCPU(A)2は、一定周期毎に、VCPU(A)3のVCPU(A)3_checkreg24に所定値「Fh」を書き込む(「0Fh」でなく「Fh」)。すなわち、VCPU(A)3_checkreg24の下位1バイトのみを全て「1」にする。このような書き込みの結果、VCPU(A)3_checkreg24は次のような状態を取る。
・VCPU(A)1とVCPU(A)2が共に正常に動作している場合
VCPU(A)3_checkreg=「FFh」
・VCPU(A)1だけが正常に動作している場合
VCPU(A)3_checkreg=「F0h」
・VCPU(A)2だけが正常に動作している場合
VCPU(A)3_checkreg=「0Fh」
VCPU(A)3は、VCPU(A)3_checkreg24に所定値「FFh」「F0h」「0Fh」のいずれが書き込まれているか否かを判定し、「FFh」が書き込まれている場合は、VCPU(A)3_checkreg24に所定値「00h」を書き込む。
そして、VCPU(A)3は以下のようにリセット要求をリセット判定回路30に出力する。
(1)VCPU(A)3_checkreg24が「0Fh」だった場合
VCPU(A)1に異常が生じているおそれがあるので、VCPU(A)3はVCPU(A)1に対するリセット要求(3→1)をリセット判定回路30に出力する。したがって、VCPU(A)3はVCPU(A)2とは別にVCPU(A)1の故障を検出することができる。
(2)VCPU(A)3_checkreg24が「F0h」だった場合
VCPU(A)2に異常が生じているおそれがあるので、VCPU(A)3はVCPU(A)2に対するリセット要求(3→2)をリセット判定回路30に出力する。すなわち、VCPU(A)2の異常を検出して、VCPU(A)2に異常が生じても検出することができる。
(3)VCPU(B)2_checkreg22が「00h」だった場合
VCPU(A)1に異常が生じているおそれがあるので、VCPU(B)2はVCPU(A)1に対するリセット要求(2→1)をリセット判定回路30に出力する。
すなわち、VCPU(A)3は、VCPU(A)1とVCPU(A)2のいずれの異常も検出することができる。リセット判定回路30は、これらのリセット要求からリセットすべきVCPU(A)1及びVCPU(A)2を決定する。なお、リセット要求(3→1)とリセット要求(3→2)をVCPU(A)1が区別できれば、リセット要求(3→1)とリセット要求(3→2)のいずれを受信したかでリセット対象を変えるなどが可能となる。しかし、本実施例では、リセット要求(3→1)とリセット要求(3→2)を単にVCPU(A)3からのリセット要求として扱う。
・リセット要求(3→1)又はリセット要求(3→2)を受信した場合、リセット判定回路30はVCPU(B)1及びVCPU(B)2をリセットする。
・リセット要求(2→1)を受信した場合、リセット判定回路30はVCPU(A)1及びVCPU(B)2をリセットする。
・リセット要求(3→1)とリセット要求(2→1)、又は、リセット要求(3→2)とリセット要求(2→1)を一定周期内に受信した場合、リセット判定回路30はVCPU(A)3をリセットする。なお、VCPU(A)3をリセットするのは、リセットの優先順位をVCPU(A)3>VCPU(A)2としているためである。
このようにリセット要求(2→1)、(3→1)、(3→2)のいずれかがリセット判定回路30に入力されると、仮想的に構築されたVCPU(A)1、VCPU(B)2及びVCPU(A)3を維持したまま、ECU全体をリセットすることができる。また、リセット判定回路30は、リセット要求(2→1)、(3→1)、(3→2)を調停して、VCPU(A)1、VCPU(B)2又はVCPU(A)3からリセットする対象を決定できる。
図25は、ECU100が異常を検出する手順を示すフローチャート図の一例を示す。
VCPU(A)2は、一定周期毎に、VCPU(B)2_checkreg22に所定値「FFh」を書き込む(S10)。また、VCPU(A)2は、一定周期毎にVCPU(A)3_checkreg24に所定値「F0h」を書き込む(S20)。
また、VCPU(A)2は、一定周期毎に、VCPU(A)3_checkreg24に所定値「Fh」を書き込む(S30)。そして、VCPU(A)2は、VCPU(B)2_checkreg22に「FFh」が書き込まれているか否かを判定する(S40)。VCPU(B)2_checkreg22に「FFh」が書き込まれていない場合(S40のNo)、VCPU(A)2はリセット要求(2→1)をリセット回路に送信する(S50)。VCPU(B)2_checkreg22に「FFh」が書き込まれている場合(S40のYes)、VCPU(A)2はVCPU(B)2_checkreg22に「00h」を書き込む(S60)。
また、VCPU(A)3は、VCPU(B)3_checkregに「FFh」が書き込まれているか否か判定する(S70)。VCPU(B)3_checkregに「FFh」が書き込まれている場合(S70のYes)、VCPU(A)3はVCPU(B)3_checkregに「00h」を書き込む(S80)。
また、VCPU(B)3_checkregに「FFh」でなく「0Fh」が書き込まれている場合、VCPU(A)3はリセット要求(3→1)をリセット判定回路30に送信する(S90)。また、VCPU(B)3_checkregに「FFh」でなく「F0h」が書き込まれている場合、VCPU(A)3はリセット要求(3→2)をリセット判定回路30に送信する(S100)。
そして、リセット判定回路30は、リセット要求に応じてリセットする仮想CPU13を決定する(S110)。
本実施例のECU100によれば、VCPU(A)1の異常をVCPU(A)2とVCPU(A)3で検出でき、さらにVCPU(A)2の異常をVCPU(A)3で検出できるので、VCPU(A)1の異常を多重に異常を検出できECU100の信頼性を向上させることができる。
実施例11では、仮想CPU13であるVCPU(A)3により、VCPU(A)1及びVCPU(A)2の異常を検出したが、本実施例では、実在する監視マイコン40によりVCPU(A)1及びVCPU(A)2の異常を検出するECU100について説明する。
図26は、実在する監視マイコン40によりVCPU(A)1及びVCPU(A)2の異常を検出するECU100の概略構成図の一例を示す。図26において図24と同一部には同一の符号を付しその説明は省略する。図26では、VCPU(A)3の代わりに物理的に実在する監視マイコン40を有する。
VCPU(A)2がVCPU(A)1を監視している。監視マイコン40はVCPU(A)2及びVCPU(A)1を監視している。
VCPU(A)1は、一定周期毎に、VCPU(B)2のVCPU(B)2_checkreg22に所定値「FFh」を書き込む。実施例1等と同様に、VCPU(A)2はVCPU(B)2_checkreg22に「FFh」が記載されているか否かを監視する。
また、VCPU(A)1は、一定周期毎に監視マイコン40のCPU(B)_checkreg41に所定値「F0h」を書き込む。VCPU(A)2は、一定周期毎に、監視マイコン40のCPU(B)_checkreg41に所定値「Fh」を書き込む(「0Fh」でなく「Fh」)。また、監視マイコン40はCPU(B)_checkreg41に所定値「FFh」が書き込まれているか否かを判定し、書き込まれている場合は、CPU(B)_checkreg41に所定値「00h」を書き込む。
したがって、監視マイコン40は実施例11のVCPU(A)3と同様に、VCPU(A)2及びVCPU(A)1の異常を検出することができる。
本実施例のECU100によれば、実施例11の効果に加え、VCPU(A)3を監視マイコン40で構成することで、マイコン自体に何らかの不具合が生じ仮想CPU13に異常が生じた際でも、VCPU(A)1の異常を確実に検出することができる。
以上説明したように、本実施形態のECU100は、コストや車載スペースの増大をもたらすことなくECU100の異常を検出することができる。異常が検出されてから短い時間で、VCPU(A)2がVCPU(A)1をリセットすることができる。VCPU(A)1を監視する仮想CPU13を切り替えることで、処理負荷を分散できる。ECU100Aが車載LAN17を経由してECU100Bの異常を検出することができるので、ECU100A又はECU100Bの配置を柔軟に設計できる。また、監視用に複数の仮想CPU13を構築することで、VCPU(A)1を多重に監視することができる。また、監視用の仮想CPU13を監視する仮想CPU13を配置できるので、信頼性を向上させることができる。
11 ハードウェアリソース
13 仮想CPU
15 OS
16(A)1 アプリケーション
16(A)2 監視プログラム
17 車載LAN
18 WDTユニット
19 G/W装置
23 AND回路
25 OR回路
27 多数決回路
30 リセット判定回路
40 監視マイコン
100 ECU(電子制御ユニット)
200 異常検出システム

Claims (13)

  1. 車載装置に演算結果を提供する電子制御ユニットにおいて、
    実在するCPUと、
    実在するCPUから仮想的なCPUを構築する仮想CPU構築手段と、
    仮想的に構築された、第1の仮想CPU及び第2の仮想CPUと、を有し、
    前記演算結果を提供する前記第1の仮想CPUを、前記第2の仮想CPUが監視する、
    ことを特徴とする電子制御ユニット。
  2. 前記第2の仮想CPUは、車載ネットワークを介して前記第1の仮想CPUを監視する、
    ことを特徴とする請求項1記載の電子制御ユニット。
  3. 前記第2の仮想CPUは、ゲートウェイを介して接続された第1の車載ネットワークと第2の車載ネットワークを介して、前記第1の仮想CPUを監視する、
    ことを特徴とする請求項1記載の電子制御ユニット。
  4. 前記第1の仮想CPUは、前記第2の仮想CPUのレジスタに周期的に所定値を書き込む書き込み手段を有し、
    前記第2の仮想CPUは、前記レジスタに前記所定値が記憶されているか否かを判定する判定手段と、
    前記レジスタに前記所定値が記憶されていない場合に前記第1の仮想CPUをリセットするリセット手段と、を有する、
    ことを特徴とする請求項1〜3いずれか1項記載の電子制御ユニット。
  5. 構築された複数の前記第2の仮想CPUと、
    複数の前記第2の仮想CPUが出力した監視結果が入力される論理演算手段と、を有し、
    前記論理演算手段による論理演算の結果に応じて前記第1の仮想CPUをリセットする、
    ことを特徴とする請求項1〜4いずれか1項記載の電子制御ユニット。
  6. 前記第2の仮想CPUは、ウォッチドッグタイマである、
    ことを特徴とする請求項1〜5いずれか1項記載の電子制御ユニット。
  7. 2つの前記第2の仮想CPU1及び前記第2の仮想CPU2が構築された場合、
    前記第1の仮想CPUを監視する前記第2の仮想CPUを、前記第2の仮想CPU1から前記第2の仮想CPU2に切り替える、
    ことを特徴とする請求項1〜6いずれか1項記載の電子制御ユニット。
  8. タイマ割り込み又は所定のイベントの発生に伴う割り込みが発生する毎に、
    前記第2の仮想CPU1は前記第1の仮想CPUの監視を中断し、前記第2の仮想CPU2は前記第1の仮想CPUの監視を再開する、
    ことを特徴とする請求項7記載の電子制御ユニット。
  9. 構築された2つの前記第2の仮想CPUのうち、一方は前記第1の仮想CPUの監視結果を他方の前記第2の仮想CPUに出力し、
    他方の前記第2の仮想CPUは、前記第1の仮想CPUの監視結果又は一方の前記第2の仮想CPUによる監視結果に基づき、前記第1の仮想CPUを監視する場合、
    タイマ割り込み又は所定のイベントの発生に伴う割り込みが発生する毎に、
    一方の前記第2の仮想CPUと他方の前記第2の仮想CPUの役割を切り替える、
    ことを特徴とする請求項7項記載の電子制御ユニット。
  10. 前記論理演算手段は、
    複数の前記第2の仮想CPUが出力した否定的又は肯定的な監視結果の数と、所定値とを比較した比較結果に応じて前記第1の仮想CPUをリセットする、
    ことを特徴とする請求項5項記載の電子制御ユニット。
  11. 前記第1の仮想CPU及び前記第2の仮想CPUを監視する第3の仮想CPUと、
    前記第2の仮想CPUの監視結果と前記第3の仮想CPUの監視結果が入力される監視判定手段と、を有し、
    前記監視判定手段は、前記第2の仮想CPUの監視結果と前記第3の仮想CPUの監視結果のいずれか一方が入力されると、前記第1の仮想CPUをリセットする、
    ことを特徴とする請求項1記載の電子制御ユニット。
  12. 前記第3の仮想CPUは、
    仮想的に構築されたCPUでなく、実在するCPUである、
    ことを特徴とする請求項11記載の電子制御ユニット。
  13. 車載装置に演算結果を提供する電子制御ユニットの異常検出方法において、
    仮想CPU構築手段が、実在するCPUから仮想的な第1の仮想CPU及び第2の仮想CPUを構築するステップと、
    前記演算結果を提供する前記第1の仮想CPUを、前記第2の仮想CPUが監視するステップと、
    を有することを特徴とする異常検出方法。
JP2009169373A 2009-07-17 2009-07-17 電子制御ユニット、異常検出方法 Pending JP2011022934A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009169373A JP2011022934A (ja) 2009-07-17 2009-07-17 電子制御ユニット、異常検出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009169373A JP2011022934A (ja) 2009-07-17 2009-07-17 電子制御ユニット、異常検出方法

Publications (1)

Publication Number Publication Date
JP2011022934A true JP2011022934A (ja) 2011-02-03

Family

ID=43632933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009169373A Pending JP2011022934A (ja) 2009-07-17 2009-07-17 電子制御ユニット、異常検出方法

Country Status (1)

Country Link
JP (1) JP2011022934A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012247850A (ja) * 2011-05-25 2012-12-13 Denso Corp マイクロコンピュータ
JP2013025570A (ja) * 2011-07-21 2013-02-04 Denso Corp 電子制御ユニット
JP2013257695A (ja) * 2012-06-12 2013-12-26 Renesas Electronics Corp コンピュータシステム
JP2014203181A (ja) * 2013-04-03 2014-10-27 三菱電機株式会社 障害診断装置およびプログラム
JP2015525915A (ja) * 2012-06-26 2015-09-07 ノルディック セミコンダクタ アーエスアーNordic Semiconductor ASA マイクロプロセッサの制御
US9753808B2 (en) 2012-12-06 2017-09-05 Denso Corporation Data processing device having resetting feature without interfering with user interface unit
US9958846B2 (en) 2013-03-08 2018-05-01 Denso Corporation Data processing device
JP2019016340A (ja) * 2017-07-03 2019-01-31 北京▲東▼土科技股▲分▼有限公司 インダストリアル・インターネットオペレーティングシステムに基づくマルチオペレーティングシステム運行方法および装置
JP2020190986A (ja) * 2019-05-23 2020-11-26 株式会社デンソー 車両用装置
US11884283B2 (en) 2019-05-31 2024-01-30 Denso Corporation Vehicle device

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012247850A (ja) * 2011-05-25 2012-12-13 Denso Corp マイクロコンピュータ
JP2013025570A (ja) * 2011-07-21 2013-02-04 Denso Corp 電子制御ユニット
US10379931B2 (en) 2012-06-12 2019-08-13 Renesas Electronics Corporation Computer system
JP2013257695A (ja) * 2012-06-12 2013-12-26 Renesas Electronics Corp コンピュータシステム
US9612909B2 (en) 2012-06-12 2017-04-04 Renesas Electronics Corporation Computer system
JP2015525915A (ja) * 2012-06-26 2015-09-07 ノルディック セミコンダクタ アーエスアーNordic Semiconductor ASA マイクロプロセッサの制御
US10191793B2 (en) 2012-06-26 2019-01-29 Nordic Semiconductor Asa Microprocessor device with reset timer
US9753808B2 (en) 2012-12-06 2017-09-05 Denso Corporation Data processing device having resetting feature without interfering with user interface unit
US9958846B2 (en) 2013-03-08 2018-05-01 Denso Corporation Data processing device
JP2014203181A (ja) * 2013-04-03 2014-10-27 三菱電機株式会社 障害診断装置およびプログラム
JP2019016340A (ja) * 2017-07-03 2019-01-31 北京▲東▼土科技股▲分▼有限公司 インダストリアル・インターネットオペレーティングシステムに基づくマルチオペレーティングシステム運行方法および装置
JP2020190986A (ja) * 2019-05-23 2020-11-26 株式会社デンソー 車両用装置
JP7449650B2 (ja) 2019-05-23 2024-03-14 株式会社デンソー 車両用装置
US11884283B2 (en) 2019-05-31 2024-01-30 Denso Corporation Vehicle device

Similar Documents

Publication Publication Date Title
JP2011022934A (ja) 電子制御ユニット、異常検出方法
US7925817B2 (en) Computer system and method for monitoring an access path
US9430266B2 (en) Activating a subphysical driver on failure of hypervisor for operating an I/O device shared by hypervisor and guest OS and virtual computer system
US11283864B2 (en) Cluster system with fail-safe fallback mechanism
JP2010285001A (ja) 電子制御システム、機能代行方法
US9690719B2 (en) Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof
EP2518627B1 (en) Partial fault processing method in computer system
WO2020239060A1 (zh) 错误恢复的方法和装置
US8943360B2 (en) DMI redundancy in multiple processor computer systems
EP2816480A1 (en) Processor system
JP2012128788A (ja) 車両制御装置、データ通信方法
JPH11250029A (ja) 少なくとも2つのプロセッサからなるコンピュータ装置のモニタ方法および装置
JP2008262419A (ja) 情報処理装置、オペレーティングシステム選択方法、プログラム。
US20170177431A1 (en) Computer system
JP5712783B2 (ja) 電子制御ユニット、車載ネットワーク、データ送信方法
US20240192977A1 (en) Power management on a vehicle
JP2011002993A (ja) ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法
JP5887952B2 (ja) 車載端末、及び、アプリケーション実行環境プログラム
US8312126B2 (en) Managing at least one computer node
US20240192978A1 (en) Power management on a vehicle
Sukumaran Nair et al. TaskMUSTER: a comprehensive analysis of task parameters for mixed criticality automotive systems
CN115248724A (zh) 异构多核***的实时调度
US12034802B2 (en) Cluster system with fail-safe fallback mechanism
US20040078649A1 (en) Computer system
US20240078128A1 (en) Control device, control system, and control method