(57)【要約】      （修正有）【課題】安全水準が異なるソフトウェア間で、不正メモリアクセスが発生した際に、システムの安全状態を維持するための技術を提供する。【解決手段】メモリ領域に異なるソフトウェアの安全水準が割り当てられ、各安全水準についてプログラムとデータが割り当てられたシステムで、安全状態に制御するフェールセーフ処理のプログラムが各安全水準に分散して配された車両用制御装置１は、異なる安全水準のメモリ領域間での不正なメモリアクセスを検知して、不正なメモリアクセスを行ったエラー元のプログラムの安全水準を特定する安全水準ベース不正アクセス検知部１０３２４と、エラー元となった安全水準に配されたフェールセーフ処理のプログラムの実行を指示し、このフェールセーフ処理により影響を受ける影響先のフェールセーフ処理のプログラムの実行を指示する全体エラー対策指示部１０３２５と、を備えることを特徴とする。【選択図】図１
2014193690.tif 000002
【特許請求の範囲】
【請求項１】
２つ以上の異なるソフトウェアの安全水準が割り当てられたメモリ上の領域に対し、各領域で動作するプログラムとデータが割り当てられたシステムで、安全状態に制御するフェールセーフ処理のプログラムが各安全水準の領域に分散して配された車両用制御装置において、
安全水準に対して割り当てられたメモリ領域のアドレスが記録された安全水準管理情報と、
前記安全水準管理情報に記録されたアドレスに基づいて、異なる安全水準のメモリ領域間での不正なメモリアクセスを検知して、当該不正なメモリアクセスを行ったエラー元のプログラムの安全水準を特定する安全水準ベース不正アクセス検知部と、
エラー元となった安全水準に配されたフェールセーフ処理のプログラムの実行を指示し、当該フェールセーフ処理により影響を受ける影響先のフェールセーフ処理のプログラムの実行を指示する全体エラー対策指示部と、
を備え、
前記全体エラー対策指示部は、異なる安全水準のメモリ領域の間で不正なメモリアクセスが発生したときに、異なる安全水準の領域に配されたフェールセーフ処理のプログラムを同時に実行すること
を特徴とする車両用制御装置。
【請求項２】
請求項１に記載の車両用制御装置において、
エラー元のプログラムの安全水準に応じてエラー処理を行うプログラムを指定したエラー元対策情報と、
前記エラー処理を行うプログラムの実行により影響を受ける影響先の安全水準の領域と、前記影響先の領域で実行されるエラー処理のプログラムの指定が格納されたエラー影響先対策情報を備え、
前記全体エラー対策指示部は、前記エラー対策情報と前記エラー影響先対策情報に基づいて、エラー元となった安全水準に配されたフェールセーフ処理のプログラムの実行を指示し、当該フェールセーフ処理により影響を受ける影響先のフェールセーフ処理のプログラムの実行を指示する
ことを特徴とする車両用制御装置。
【請求項３】
請求項２に記載の車両用制御装置において、
異なる安全水準のメモリ領域に対する不正なメモリアクセスの回数を記録するエラー回数保持バッファを備え、
前記全体エラー対策指示部は、異なる安全水準のメモリ領域の間で不正なメモリアクセスを検知した場合には、前記エラー回数保持バッファにおける不正なメモリアクセスの回数を更新し、このエラー回数に基づいて、実行するエラー元のフェールセーフ処理を選択する
ことを特徴とする。
【請求項４】
前記安全水準ベース不正メモリアクセス検知部は、同じ安全水準のメモリ領域間では不正なメモリアクセスを検知しない
ことを特徴とする請求項１記載の車両用制御装置。
【請求項５】
請求項１に記載の車両制御装置を複数有し、
不正なメモリアクセスの発生が検知されたときに、エラー元のプログラムの安全水準を識別可能な情報と、実行したエラー元の安全水準におけるフェールセーフ処理を識別可能な情報と、影響先の安全水準を識別可能な情報と、影響先の安全水準で実施したフェールセーフ処理を識別可能な情報をネットワークに送信する
ことを特徴とする車両制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両制御装置の安定動作を維持する技術に関するものである。
【背景技術】
【０００２】
近年の多くの車両制御システムは、電子化された車両制御機器を操作する電子制御装置（ＥＣＵ：Electronic Control Unit）と、複数のＥＣＵ間の通信を可能にする車載ＬＡＮ（Local Area Network）から構成され、センサやアクチュエータを制御するＥＣＵが車載ＬＡＮを経由して協調動作することにより、車両を制御している。このシステムは、機能安全に関する国際標準規格であるＩＳＯ２６２６２に準拠して開発される。
【０００３】
ＩＳＯ２６２６２では、本規格で制定した算出式によって決定したＡＳＩＬ（Automotive Safety Integrity Level）に基づいて、定められた水準の開発手法・プロセスで車両制御システムのソフトウェアを開発する必要がある。
【０００４】
ＡＳＩＬは守るべき安全性の度合いを示した安全水準である。これは割り当てる機能が正常に動作しないときの被害の大きさ等によって決定される。例えば、ＡＳＩＬは最も低い安全水準であるＱＭ（Quality Management）から最も高い安全水準であるＡＳＩＬ  Ｄの５段階で定義され、機能が正確に動作しない時の被害が大きいほど、その機能には高い安全水準が機能に割り当てられる。安全水準が高い、即ちＡＳＩＬが高いほど、機能が正確に動作していないことを検知して、システムを安全状態に遷移させる安全機能が多く必要となり、またその安全機能の開発手法にも高度なものが求められる。基本的には高いＡＳＩＬのソフトウェアほど開発工数がかかるために、各ソフトウェアを最適なＡＳＩＬで開発することが求められる。
【０００５】
１つのＥＣＵに複数のＡＳＩＬのソフトウェアを搭載するための技術の一つとして、メモリ保護技術がある。メモリ保護技術は、特定のソフトウェア間のアクセス許可、あるいはアクセス禁止を設定し、その設定情報に基づいてＥＣＵの実行時に不正なメモリアクセスを検出する技術である。不正なメモリアクセスを検知する単位をパーティションと呼ぶ。車両制御システムのＥＣＵに搭載されるマイコンではＭＰＵ（Memory Protection Unit）等を活用することによって上記を実現可能である。
【０００６】
特許文献１に記載されている技術では、タスクなどの処理単位でグループ化し、そのグループ間における不正メモリアクセスを検知する。不正メモリアクセス検知時にはグループ単位のソフトウェアの中断やシステム全体のシャットダウンを行う。これにより、不正メモリアクセスを起こしたソフトウェアの中断や、システム全体の停止が可能になり、一定の安全が確保できる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−１１３４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
車両制御システムのＥＣＵのソフトウェアは複雑に連携して動作しているため、パーティション間の連携が必須となる。例えば、エンジン制御のソフトウェアとインジェクタ制御のソフトウェアに対してそれぞれパーティションを設定し、エンジン制御ソフトウェアが原因となる不正なメモリアクセスが発生するとき、エンジン制御のソフトウェアの初期化と、インジェクタ制御の縮退処理を同時に行う必要がある。初期化や縮退処理は不正メモリアクセス発生時への対策処理であり、フェールセーフ処理と呼ばれる。
【０００９】
上記特許文献１と上記非特許文献１に記載されている技術では、一方のパーティションを中断することしかできないため、システムの安全性を確保できず、安全水準を満たせない課題がある。例えば、エンジン制御のソフトウェアのみを中断しても、インジェクタ制御のソフトウェアが中断できず、システムが安全に動作しない。また、システム全体をシャットダウンしても、システムを安全に終了することが難しい場合が多い。さらに安全に終了できたとしても、システムの可用性が著しく低下する。
【００１０】
本発明は、上記のような課題を解決するためになされたものであり、要求される安全水準が異なるソフトウェア間に不正メモリアクセスが発生したときに、安全水準を満たしつつ、処理を実行するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る車両制御装置は、メモリ領域に異なるソフトウェアの安全水準が割り当てられ、各安全水準についてプログラムとデータが割り当てられ、安全状態に制御するフェールセーフ処理のプログラムが各安全水準に分散して配されており、異なる安全水準のメモリ領域間での不正なメモリアクセスを検知して、不正なメモリアクセスを行ったエラー元のプログラムの安全水準を特定する安全水準ベース不正アクセス検知部と、エラー元となった安全水準に配されたフェールセーフ処理のプログラムの実行を指示し、このフェールセーフ処理により影響を受ける影響先のフェールセーフ処理のプログラムの実行を指示する全体エラー対策指示部とを備え、全体エラー対策指示部は、異なる安全水準のメモリ領域の間で不正なメモリアクセスが発生したときに、異なる安全水準の領域に配されたフェールセーフ処理のプログラムを同時に実行する。
【発明の効果】
【００１２】
本発明に係る車両制御装置は、不正メモリアクセスを引き起こしたエラー元へのフェールセーフ処理の内容に応じて、前記フェールセーフ処理から影響を受けるソフトウェアのフェールセーフ処理を選択するため、安全水準ごとにパーティションが行われたソフトウェアで構成されるシステムの安全を確保することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係るエンジンＥＣＵの構成図である。
【図２】車両制御システムの構成図である。
【図３】エンジンＥＣＵのメモリのメモリマップである。
【図４】安全水準管理テーブルの例を示す図である。
【図５】エラー元対策テーブルの例を示す図である。
【図６】エラー影響先対策テーブルの例を示す図である。
【図７】エラー回数保持テーブルの例を示す図である。
【図８】エラーログバッファの例を示す図である。
【図９】エンジン制御部の処理フローを示す図である。
【図１０】エンジン初期化処理部の処理フローを示す図である。
【図１１】エンジン縮退制御部の処理フローを示す図である。
【図１２】クランク角センサ制御部の処理フローを示す図である。
【図１３】インジェクタ制御部の処理フローを示す図である。
【図１４】インジェクタ縮退制御部の処理フローを示す図である。
【図１５】安全水準ベース不正メモリアクセス検知部の処理フローを示す図である。
【図１６】全体エラー対策指示部の処理フローを示す図である。
【図１７】通信制御部の処理フローを示す図である。
【発明を実施するための形態】
【００１４】
図２に、本発明の実施形態に係る車両制御システム１０００の全体構成図を示す。車両制御システム１０００は、車載ネットワークのＣＡＮ（Controller Area Network）２に接続されたエンジン制御ＥＣＵ１と、その他のＥＣＵで構成されている。
【００１５】
エンジン制御ＥＣＵ１は、クランク角センサ１１によってクランク角の状態を把握し、インジェクタ１２によって燃料を噴射することでエンジンを制御する。
【００１６】
図１は、エンジン制御ＥＣＵ１の構成図である。エンジン制御ＥＣＵ１は、演算装置１０１、メモリ１０２、入出力回路１０５、メモリ保護ユニット（ＭＰＵ）１０６を備える。
【００１７】
演算装置１０１は、メモリ１０２に格納された各プログラムを実行するプロセッサ（ＣＰＵ：Central Processing Unit）である。演算装置１０１と同等の機能は、回路デバイスなどのハードウェアを用いて構成することもできる。
【００１８】
メモリ１０２には、プログラム領域１０３とデータ記憶領域１０４が設けられている。プログラム領域１０３は、ＭＰＵ１０６を活用して安全水準がＱＭのパーティション１０３１と、安全水準がＡＳＩＬ  Ｄのパーティション１０３２に分かれている状態を表している。ＱＭのパーティション１０３１は、エンジン制御部１０３１１、エンジン初期化処理部１０３１２、エンジン縮退制御部１０３１３を備え、ＡＳＩＬ  Ｄのパーティション１０３２は、クランク角センサ制御部１０３２１、インジェクタ制御部１０３２２、インジェクタ縮退制御部１０３２３、安全水準ベース不正メモリアクセス検知部１０３２４、全体エラー対策指示部１０３２５、通信制御部１０３２６を備える。データ記憶領域１０４は、ＭＰＵ１０６を活用して安全水準がＱＭのパーティション１０４１と、ＡＳＩＬ  Ｄのパーティション１０４２に分かれている。ＱＭのパーティション１０４１は、クランク角センサ値バッファ１０４１１と、燃料噴射量バッファ１０４１２を備え、ＡＳＩＬ  Ｄのパーティション１０４２は、燃料噴射量前回値バッファ１０４２１と、安全水準管理テーブル１０４２２、エラー元対策テーブル１０４２３、エラー影響先対策テーブル１０４２４、エラー回数保持テーブル１０４２５、エラーログバッファ１０４２６を備える。
【００１９】
クランク角センサ値バッファ１０４１１は、クランク角センサ値を保存するバッファである。燃料噴射量バッファ１０４１２は、燃料噴射量を保存するバッファである。燃料噴射量前回値バッファ１０４２１は、燃料噴射量の前回値を保存するバッファである。
【００２０】
入出力回路１０５は、クランク角センサ１１のアナログ値をデジタル変換するなどの必要な処理を適宜実行する。またインジェクタ１２を電流で制御するなどの必要な処理を適宜実行する。またＣＡＮ２への送信、ＣＡＮ２からの受信などの必要な処理を適宜実行する。ＭＰＵ１０６は、設定されたメモリアドレスの範囲間のメモリアクセスを監視し、前記メモリアドレスの範囲間にメモリアクセスが起きた場合には不正メモリアクセスを検知し、エラー用割り込み処理の実行といった規定の処理を行う。また、メモリアドレスの範囲間であっても所定の手続きを踏めばアクセスを許可する仕組みを容易している。例えば、一時的にメモリ保護機能をオフにすることによって不正メモリアクセスを検知しないように方法や、一時的に特権モードを利用することによって不正メモリアクセスでない、つまり許可されたメモリアクセスで行う方法がある。
【００２１】
図３は、エンジン制御ＥＣＵ１が備えるメモリ１０２のメモリマップの例を示す図である。ＱＭのパーティション１０３１、１０４１とＡＳＩＬ  Ｄのパーティション１０３２、１０４２は完全に分離されてメモリに配置される。このメモリマップの例では、ＱＭのパーティション１０３１、１０４１はアドレスａからアドレスｂの間に配置され、ＡＳＩＬ  Ｄのパーティション１０３２、１０４２はアドレスｃからアドレスｄの間に配置されている。
【００２２】
図４は、エンジン制御ＥＣＵ１が備える安全水準管理テーブル１０４２２の構成を示す図である。安全水準管理テーブル１０４２２は、パーティションが設定されているメモリアドレス範囲とその安全水準を管理するテーブルであり、ｉｎｄｅｘフィールド１０４２２１、メモリアドレス始点１０４２２２、メモリアドレス終点１０４２２３、安全水準１０４２２４を有する。
【００２３】
ｉｎｄｅｘフィールド１０４２２１は、各パーティションを識別する番号を保持する。メモリアドレス始点１０４２２２は、パーティションの開始のメモリアドレスを保持する。メモリアドレス終点１０４２２３は、パーティションの終了のメモリアドレスを保持する。安全水準１０４２２４は、パーティションの安全水準を保持する欄である。
【００２４】
図５は、エンジン制御ＥＣＵ１が備えるエラー元対策テーブル１０４２３の構成を示す図である。エラー元対策テーブル１０４２３は、不正メモリアクセスを起こした安全水準のパーティション（エラー元）が、エラー対策としてフェールセーフ処理を実行するために用いるテーブルであり、ｉｎｄｅｘフィールド１０４２３１、エラー元１０４２３２、エラー回数閾値１０４２３３、フェールセーフ処理アドレス１０４２３４、フェールセーフ処理ＩＤ１０４２３５を有する。
【００２５】
ｉｎｄｅｘフィールド１０４２３１は、各エラー元におけるフェールセーフ処理に対応して設けられたレコードを識別する番号を保持する。エラー元１０４２３２は、エラー元の安全水準を保持する。エラー回数閾値１０４２３３は、このｉｎｄｅｘの選択基準となるエラー回数の閾値を保持する。フェールセーフ処理アドレス１０４２３４は、不正メモリアクセスへの対策処理を行うフェールセーフ処理部のアドレス（図５の例では、フェールセーフ処理を実行する関数のアドレス）を保持する。フェールセーフ処理ＩＤ１０４３５は、フェールセーフ処理を区別するための識別子を保持する。
【００２６】
図６は、エンジン制御ＥＣＵ１が備えるエラー影響先対策テーブル１０４２４の構成を示す図である。エラー影響先対策テーブル１０４２４は、エラー元が行ったフェールセーフ処理に応じて、影響先のフェールセーフ処理を選択、実行するために用いるテーブルであり、ｉｎｄｅｘフィールド１０４２４１、エラー元のフェールセーフ処理ＩＤ１０４２４２、影響先１０４２４３、影響先のフェールセーフ処理アドレス１０４２４４を有する。
【００２７】
ｉｎｄｅｘフィールド１０４２４１は、それぞれのエラー元が行ったフェールセーフ処理に対応する各影響先のフェールセーフ処理に対応して設けられたレコードを識別する番号を保持する。エラー元のフェールセーフ処理ＩＤ１０４２４２は、エラー元が実行したフェールセーフ処理を区別可能な識別子を保持する。影響先１０４２４３は、エラー元が実行したフェールセーフ処理によって影響を受ける安全水準のパーティションの情報を有する。影響先のフェールセーフ処理アドレス１０４２４４は、エラー元が実行したフェールセーフ処理に基づいて、影響先が実行するフェールセーフ処理部のアドレスを保持する。
【００２８】
図７は、エンジン制御ＥＣＵ１が備えるエラー回数保持テーブル１０４２５の構成を示す図である。エラー回数保持テーブル１０４２５は、不正メモリアクセスが発生した回数を安全水準毎に保持するために用いるテーブルであり、ｉｎｄｅｘフィールド１０４２５１、安全水準１０４２５２、エラー回数１０４２５３を有する。ｉｎｄｅｘフィールド１０４２５１は、各安全水準を識別する番号を保持する。安全水準１０４２５２は、不正メモリアクセスを起こしたエラー元の安全水準を示す情報を保持する。エラー回数１０４２５３は、不正メモリアクセスが発生した回数を保持する。
【００２９】
図８は、エンジン制御ＥＣＵ１が備えるエラーログバッファ１０４２６の構成を示す図である。エラーログバッファ１０４２６は、指示した安全水準とエラー対策処理のログを記録するために用いるバッファであり、エラー元１０４２６１、エラー元実行フェールセーフ処理ＩＤ１０４２６２、影響先１０４２６３、影響先実行フェールセーフ処理アドレス１０４２６４を有する。
【００３０】
エラー元１０４２６１は、指示したエラー元の安全水準を識別可能な情報を保持する。エラー元実行フェールセーフ処理ＩＤ１０４２６２は、エラー元が行ったフェールセーフ処理のフェールセーフ処理ＩＤを示す情報を保持する。影響先１０４２６３は、指示した影響先の安全水準を識別可能な情報を保持する。影響先実行フェールセーフ処理アドレス１０４２６４は、影響先が行うフェールセーフ処理部のアドレスを示す情報を保持する。
【００３１】
以上、車両制御システム１０００が備えるエンジン制御ＥＣＵ１の各構成要素について説明した。以下では、エンジン制御ＥＣＵ１がクランク角センサ１１とインジェクタ１２を用いてエンジン制御を行う場合に、不正メモリアクセスが発生したときに異なる安全水準のパーティション間で連携してフェールセーフ処理を行う場合を例とした処理フローを説明する。
【００３２】
図９は、エンジン制御ＥＣＵ１が備えるエンジン制御部１０３１１の処理フローを示す図である。エンジン制御部１０３１１は、クランク角センサ値バッファ１０４１１からクランク角センサ値を取得する（Ｓ１０３１１０）。そして、取得したクランク角センサ値やその他の情報から燃料噴射量を算出し（Ｓ１０３１１１）、燃料噴射量バッファ１０４１２に算出した燃料噴射量を書き込む（Ｓ１０３１１２）。そしてエンジン制御部１０３１１は、インジェクタ制御部１０３２２を起動して一連の処理フローを終了する。なお、インジェクタ制御部１０３２２の起動方法は、関数呼出しでも良いし、タスクの起動でも良いし、ソフトウェア割り込みでも良いし、その他の方法でも良い。他の各処理部の起動についても同様である。
【００３３】
図１０は、エンジン制御ＥＣＵ１が備えるエンジン初期化処理部１０３１２の処理フローを示す図である。エンジン制御部１０３１１は、クランク角センサ値バッファ１０４１１や燃料噴射量バッファ１０４１２などを初期化する（Ｓ１０３１２０）。この初期化は実施例で示したようなソフトウェアの変数を初期値に戻す処理だけでなく、マイコンデバイスの初期化処理なども含んでよい。
【００３４】
図１１は、エンジン制御ＥＣＵ１が備えるエンジン縮退制御部１０３１３の処理フローを示す図である。エンジン制御部１０３１１は、クランク角センサ値バッファ１０４１１からクランク角センサ値を取得する（Ｓ１０３１３０）。次に、取得したクランク角センサ値やその他の情報から縮退制御用の燃料噴射量を算出する（Ｓ１０３１３１）。そして、燃料噴射量バッファ１０４１２に燃料噴射量を書き込む（Ｓ１０３１３２）。その後、インジェクタ制御部１０３２２を起動して（Ｓ１０３１３３）、縮退制御での燃料噴射を行い、本処理フローを終了する。このインジェクタ制御部１０３２２の起動方法は、前述の様に、関数呼出しでも良いし、タスクの起動でも良いし、ソフトウェア割り込みでも良いし、その他の方法でも良い。
【００３５】
図１２は、エンジン制御ＥＣＵ１が備えるクランク角センサ制御部１０３２１の処理フローを示す図である。エンジン制御部１０３１１は、入出力回路１０５からクランク角センサ値を取得する（Ｓ１０３２１０）。そして、取得したクランク角センサ値が規定値と等しいか否かを判定する（Ｓ１０３２１１）。等しい場合にはステップＳ１０３２１２に進み、等しくない場合には本処理フローを終了する。
【００３６】
クランク角センサ値が規定値と等しい場合には、ＭＰＵ１０６を制御してクランク角センサ値バッファ１０４１１へのアクセス許可を得る（Ｓ１０３２１２）。ＭＰＵ１０６からアクセス許可を得ると、クランク角センサ値バッファ１０４１１に取得したクランク角センサ値を書き込む（Ｓ１０３２１３）。そして、クランク角センサ値の書き込みが終了すると、ＭＰＵ１０６を制御してクランク角センサ値バッファ１０４１１へのアクセスを終了する（Ｓ１０３２１４）。その後、エンジン制御部１０３１１は、エンジン制御部１０３１１を起動し（Ｓ１０３２１５）、本処理フローを終了する。
【００３７】
図１３は、エンジン制御ＥＣＵ１が備えるインジェクタ制御部１０３２２の処理フローを示す図である。エンジン制御部１０３１１は、ＭＰＵ１０６を制御して燃料噴射量バッファ１０４１２へのアクセス許可を得る（Ｓ１０３２２０）。アクセス許可を得ると、燃料噴射量バッファ１０４１２から燃料噴射量を取得する（Ｓ１０３２２１）。その後、エンジン制御部１０３１１は、ＭＰＵ１０６を制御して燃料噴射量バッファ１０４１２へのアクセスを終了する（Ｓ１０３２２２）。そして、取得した燃料噴射量に基づいてインジェクタ１２を制御する（Ｓ１０３２２３）。また、取得した燃料噴射量を燃料噴射量前回値バッファ１０４２１に書き込み（Ｓ１０３２２４）、処理フローを終了する。
【００３８】
図１４は、エンジン制御ＥＣＵ１が備えるインジェクタ縮退制御部１０３２３の処理フローを示す図である。インジェクタの縮退制御では、前回の燃料噴射料を維持する動作を行うものとする。このためエンジン制御部１０３１１は、燃料噴射量前回値バッファ１０４２１から燃料噴射量を取得する（Ｓ１０３２３０）。そして、取得した燃料噴射量に基づいてインジェクタ１２を制御する（Ｓ１０３２３１）。
【００３９】
図１５は、エンジン制御ＥＣＵ１が備える安全水準ベース不正メモリアクセス検知部１０３２４の処理フローを示す図である。エンジン制御部１０３１１は、ＭＰＵを活用してエラーが発生したメモリアドレスを特定し、安全水準管理テーブルからエラー元の安全水準を特定する（Ｓ１０３２４０）。そして、エラー元の安全水準を引数として全体エラー対策指示部１０３２５を呼び出す（Ｓ１０３２４１）。
【００４０】
図１６に、エンジン制御ＥＣＵ１が備える全体エラー対策指示部１０３２５の処理フローを示す。エンジン制御部１０３１１は、引数のエラー元の安全水準に対応したエラー回数保持テーブル１０４２５のエラー回数１０４２５３をインクリメントする（Ｓ１０３２５０）。そして引数で与えられたエラー元の安全水準と、エラー回数保持テーブル１０４２５の該当する安全水準で生じたエラー回数１０４２５３を用いて、エラー元対策テーブル１０４２３から、このエラー回数がエラー元の安全水準におけるエラー回数閾値以内の場合に行うフェールセーフ処理のフェールセーフ処理アドレス１０４２３４を特定し、実行する（Ｓ１０３２５１）。
【００４１】
例えば、引数のエラー元の安全水準が“ＱＭ”、エラー回数１０４２５３が‘１’であるとき、図５に示したエラー元対策テーブル１０４２３の例では、エラー回数１０４２５３が、エラー元安全水準“ＱＭ”に対応したｉｎｄｅｘ１０４２３１が‘０’のレコードにおけるエラー回数閾値１０４２３３の０より大きく、またｉｎｄｅｘ１０４２３１が‘１’のレコードにおけるエラー回数閾値１０４２３３の‘３’以下であるため、フェールセーフ処理アドレスとしてエンジン初期化処理部のアドレスが特定され、実行される。
【００４２】
プログラムの不具合が原因による不正メモリアクセスである場合には、初期化を行っても根本的な問題が解決せず、何度も不正メモリアクセスが発生する。しかし、本発明のようにエラー回数を記録し、エラー回数に基づいてフェールセーフ処理を切り替える仕組みを用意することでこのような不正メモリアクセスの発生を防ぐことができる。
【００４３】
エンジン制御部１０３１１は、Ｓ１０３２５１で実行したフェールセーフ処理のフェールセーフ処理アドレス１０４２３４と同じｉｎｄｅｘ１０４２３１のフェールセーフ処理ＩＤ１０４２３５を用いて、エラー影響先対策テーブル１０４２４から影響先１０４２４３の安全水準と影響先のフェールセーフ処理アドレス１０４２４４を特定し、実行する（Ｓ１０３２５２）。そして、引数のエラー元の安全水準と、エラー元が実行したフェールセーフ処理のフェールセーフ処理ＩＤと、影響先の安全水準と、影響先のフェールセーフ処理アドレスをそれぞれ、エラーログバッファ１０４２６のエラー元１０４２６１、エラー元実行フェールセーフ処理ＩＤ１０４２６２、影響先１０４２６３、影響先実行フェールセーフ処理アドレス１０４２６４に保存する（Ｓ１０３２５３）。
また、このエラー元の安全水準と、エラー元が実行したフェールセーフ処理のフェースセーフ処理ＩＤと、影響先の安全水準と、影響先のフェールセーフ処理アドレスを引数として、通信制御部１０３２６を呼び出して（Ｓ１０３２５４）、本処理フローを終了する。
【００４４】
図１７は、エンジン制御ＥＣＵ１が備える通信制御部１０３２６の処理フローを示す図である。通信制御部１０３２６は、引数として受け取ったデータをＣＡＮ２に送信する（Ｓ１０３２５０）。
【００４５】
本実施形態では、メモリにパーティションを実現するためにメモリ保護ユニット（ＭＰＵ）を用いることを想定しているが、これに限るものではない。例えば、ＭＭＵ（Memory Management Unit）を用いてもよいし、その他の方法でも良い。また本実施形態ではパーティションの数が２つである場合について説明しているが、これに限るものではない。例えば、パーティションの数が３つでも良いし、４つでも良い、それ以上でも良い。
【００４６】
更に、本実施形態では、安全水準ベース不正メモリアクセス検知部と全体エラー対策指示部を安全水準がＡＳＩＬ  Ｄのパーティションに割り当てられていることを想定しているが、これに限るものではない。なく、例えば、ＡＳＩＬ  Ｃのパーティションに割り当てられても良い。しかし、基本的にはＥＣＵ内で最も高い安全水準のパーティションに割り当てられることが望ましい。
【００４７】
本実施形態では、ＱＭのパーティションが不正メモリアクセスを行うことを想定した場合について処理を説明しているが、これに限るものではない。例えば、ＡＳＩＬ  ＤのパーティションがＱＭのパーティションに対して不正メモリアクセスを行うことに対しても検知することもできる。
【００４８】
本実施形態では、ネットワークにＣＡＮを用いることを想定しているが、これに限るものではない。例えば、ＦｌｅｘＲａｙを用いてもよいし、Ｅｔｈｅｒｎｅｔを用いてもよい。また、その他のネットワークでも良い。
【００４９】
本実施形態では、エラーログバッファに一組のデータしか保存していないが、これに限るものではない。同様に、一組のデータしかネットワーク送信していないが、これに限るものではなく、例えば、複数のデータでも良い。
【００５０】
本実施形態では、エラーログバッファにエラー元の安全水準を識別可能な情報と、エラー元が実行したフェールセーフ処理を識別可能な情報と、影響先の安全水準を識別可能な情報と、影響先が実行したフェールセーフ処理のアドレスを保存しているが、これに限るものではない。例えば、エラーが発生した時刻情報も同時に保存しても良い。同様に、送信するデータも本実施形態に限らない。
【００５１】
以上のように、本実施形態によれば、エンジン制御ＥＣＵ１は、異なる安全水準間で不正なメモリアクセスが発生したときに、安全水準に基づいて、エラー元に対し不正を検知した回数に応じたフェールセーフ処理を指示し、このフェールセーフ処理の実行により影響を受ける影響先を特定し、エラー下で行われたフェールセーフ処理に応じて影響先のフェールセーフ処理を選択、指示することができる。これにより、安全水準に基づいてパーティショニングを行いつつ、パーティション間で連携してフェールセーフ処理を行うことが可能になるため、ＥＣＵの安全性を確保することができる。
【符号の説明】
【００５２】
１：エンジン制御ＥＣＵ
１０１：演算装置
１０２：メモリ
１０５：入出力回路
１０６：メモリ保護ユニット
１１：クランク角センサ
１２：インジェクタ
２：ＣＡＮ
【図１】
2014193690.tif 000003
【図２】
2014193690.tif 000004
【図３】
2014193690.tif 000005
【図４】
2014193690.tif 000006
【図５】
2014193690.tif 000007
【図６】
2014193690.tif 000008
【図７】
2014193690.tif 000009
【図８】
2014193690.tif 000010
【図９】
2014193690.tif 000011
【図１０】
2014193690.tif 000012
【図１１】
2014193690.tif 000013
【図１２】
2014193690.tif 000014
【図１３】
2014193690.tif 000015
【図１４】
2014193690.tif 000016
【図１５】
2014193690.tif 000017
【図１６】
2014193690.tif 000018
【図１７】
2014193690.tif 000019