(57)【要約】【課題】処理性能の劣化を抑制しつつ、例外処理を実行するための割り込みが繰り返されることを防止できる電子制御装置を提供すること。【解決手段】電子制御装置は、第１コアがプログラムの命令を実行することでリソースとしてのＲＡＭやＲＯＭへアクセスするものである。第１コアは、リソースへのアクセスエラーが発生した際に、エラー発生時の処理である例外処理を実行するための割り込みを発生させる。そして、第１コアは、割り込みが発生してから、中断されたプログラムの命令の実効に戻る前までに、戻り位置を設定する（Ｓ２５）。この戻り位置は、中断したプログラムの命令の実効に戻る際の位置であり、プログラムにおけるエラー発生時の命令よりも後に実行される命令の位置である。【選択図】図４
2019212124.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの命令を実行することでリソースへアクセスするものであり、
前記リソースへのアクセスエラーが発生した際に、エラー発生時の処理である例外処理を実行するための割り込みを発生させる割込発生部（Ｓ２０）と、
前記割り込みが発生してから、中断された前記プログラムの前記命令の実効に戻る前までに実行されるものであり、前記プログラムにおける前記エラー発生時の前記命令よりも後に実行される前記命令の位置を、中断した前記プログラムの前記命令の実効に戻る際の戻り位置として設定する位置設定部（Ｓ２１１、Ｓ２１１ａ、Ｓ２１１ｂ、Ｓ２５）と、を備えている電子制御装置。
【請求項２】
前記戻り位置を設定するために、前記プログラムを解析して前記アクセスエラーが発生した際の前記命令の命令長を読み出す解析部（Ｓ２４）を、さらに備え、
前記位置設定部は、前記アクセスエラーが発生した際の前記位置よりも前記命令長分の処理を進めた前記命令の前記位置を、前記戻り位置として設定する請求項１に記載の電子制御装置。
【請求項３】
前記リソースとして、メモリ保護領域とメモリ非保護領域とを含むメモリを備えており、
前記割込発生部は、前記メモリ非保護領域における前記プログラムの実行に伴って前記メモリ保護領域へアクセスがあった場合に、前記アクセスエラーが発生したとみなして、前記割り込みを発生させ、
前記位置設定部は、中断した前記プログラムの前記命令の実効に戻る際の前記戻り位置が前記メモリ非保護領域と判定した場合、前記プログラムにおける前記エラー発生時の前記命令よりも後に実行される前記命令の前記位置を、中断した前記プログラムの前記命令の実効に戻る際の前記戻り位置として設定する請求項１または２に記載の電子制御装置。
【請求項４】
前記アクセスエラーが発生したとみなして前記割り込みを発生させた場合、前記例外処理では、前記メモリ保護領域の値を保護するとともに、前記メモリ保護領域への前記アクセスエラーが発生したことを示す異常コードを保存する請求項３に記載の電子制御装置。
【請求項５】
前記リソースとしてのメモリと、前記メモリに誤り訂正符号を注入する注入部と、を備えており、
前記割込発生部は、前記誤り訂正符号が注入された前記メモリにアクセスすることで、前記リソースへのアクセスエラーが発生するとみなして、前記割り込みを発生させ、
前記位置設定部は、前記誤り訂正符号が注入された診断中であるか否かを判定し、前記診断中と判定した場合、前記プログラムにおける前記エラー発生時の前記命令よりも後に実行される前記命令の前記位置を、中断した前記プログラムの前記命令の実効に戻る際の前記戻り位置として設定する請求項１または２に記載の電子制御装置。
【請求項６】
前記リソースとして、不揮発性記憶部を備えており、
前記割込発生部は、前記不揮発性記憶部へのアクセスエラーが発生した際に、割り込みを発生させる請求項１または２に記載の電子制御装置。
【請求項７】
前記プログラムの前記命令を実行する処理部を含むマイコンを備えており、
前記マイコンは、
前記例外処理が必要な前記アクセスエラーの発生回数をカウントし、カウント値が閾値を超えたか否かを判定する回数判定部（Ｓ７０、Ｓ７１）と、
前記カウント値が前記閾値を超えたと判定された場合、前記例外処理を行なうことなく、前記マイコンをリセットするリセット部（Ｓ２６）と、をさらに備えている請求項１〜６のいずれか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子制御装置に関する。
【背景技術】
【０００２】
従来、特許文献１に開示された車両用制御装置は、電気的に消去及び書き込みが可能な不揮発性メモリを備え、起動時に、不揮発性メモリから読み出した更新データの誤り検出を行い、誤りを検出した場合に係るエラー情報を保存してからリセットを実施する。そして、車両用制御装置は、リセットによる再起動時に、異常が生じている更新データがあることをエラー情報に基づいて判断すると、誤り検出に先立って、更新データを固定値に上書きする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−３５７３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
車両用制御装置は、上記のようにすることで、異常が生じている更新データが存在する状態で誤り検出が実施され、リセットと誤り検出とが繰り返されることを抑制できる。つまり、車両用制御装置は、誤りを検出した際の例外処理を実行するための割り込みが繰り返されることを抑制できる。しかしながら、車両用制御装置は、不揮発性メモリにおける異常が生じている更新データを固定値に上書きする。このため、車両用制御装置は、不揮発性メモリに固定値を上書きするのに時間を要し処理性能が劣化するという問題がある。
【０００５】
本開示は、上記問題点に鑑みなされたものであり、処理性能の劣化を抑制しつつ、例外処理を実行するための割り込みが繰り返されることを防止できる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示は、
プログラムの命令を実行することでリソースへアクセスするものであり、
リソースへのアクセスエラーが発生した際に、エラー発生時の処理である例外処理を実行するための割り込みを発生させる割込発生部（Ｓ２０）と、
割り込みが発生してから、中断されたプログラムの命令の実効に戻る前までに実行されるものであり、プログラムにおけるエラー発生時の命令よりも後に実行される命令の位置を、中断したプログラムの命令の実効に戻る際の戻り位置として設定する位置設定部（Ｓ２１１、Ｓ２１１ａ、Ｓ２１１ｂ、Ｓ２５）と、を備えていることを特徴とする。
【０００７】
このように、本開示は、戻り位置として、プログラムにおけるエラー発生時の命令よりも後に実行される命令の位置を設定するため、例外処理を実行するための割り込みが繰り返されることを防止できる。つまり、本開示は、エラーが発生した際に不揮発性記憶部に固定値を上書きすることなく、例外処理を実行するための割り込みが繰り返されることを防止できる。このため、本開示は、上書きに時間を要することで処理性能が劣化することを抑制できる。
【０００８】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態における電子制御装置の概略構成を示すブロック図である。
【図２】第１実施形態におけるメモリの概略構成を示すイメージである。
【図３】第１実施形態における電子制御装置のメモリアクセス命令の実効処理を示すフローチャートである。
【図４】第１実施形態における電子制御装置の例外割込処理を示すフローチャートである。
【図５】第１実施形態における電子制御装置の要因判定処理を示すフローチャートである。
【図６】第１実施形態における電子制御装置の例外処理を示すフローチャートである。
【図７】第１実施形態における電子制御装置のバックアップの結果確認処理を示すフローチャートである。
【図８】第１実施形態における電子制御装置のバックアップのチェック処理を示すフローチャートである。
【図９】第１実施形態における電子制御装置のデータコピー及び比較チェック処理を示すフローチャートである。
【図１０】第１実施形態における電子制御装置の処理動作を示すタイミングチャートである。
【図１１】第２実施形態における電子制御装置の要因判定処理を示すフローチャートである。
【図１２】第２実施形態における電子制御装置の例外処理を示すフローチャートである。
【図１３】第３実施形態における電子制御装置の要因判定処理を示すフローチャートである。
【図１４】第３実施形態における電子制御装置の例外処理を示すフローチャートである。
【図１５】第４実施形態における電子制御装置の例外割込処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１１】
（第１実施形態）
本実施形態では、一例として、車両に搭載されて、車載機器を制御する車載制御装置に適用した電子制御装置１００を採用する。しかしながら、本開示は、これに限定されず、車載機器と異なる装置を制御する電子制御装置１００であってもよい。
【００１２】
電子制御装置１００は、少なくともひとつの演算処理装置（ＣＰＵ）と、プログラムとデータとを記憶する記憶媒体としての少なくともひとつのメモリ装置（ＭＭＲ）とを有する。電子制御装置１００は、コンピュータによって読み取り可能な記憶媒体を備えるマイクロコンピュータによって提供される。記憶媒体は、コンピュータによって読み取り可能なプログラムを非一時的に格納している。記憶媒体は、半導体メモリまたは磁気ディスクなどによって提供されうる。電子制御装置１００は、ひとつのコンピュータ、またはデータ通信装置によってリンクされた一組のコンピュータ資源によって提供されうる。プログラムは、電子制御装置１００によって実行されることによって、電子制御装置１００をこの明細書に記載される装置として機能させ、この明細書に記載される方法を実行するように電子制御装置１００を機能させる。電子制御装置１００は、多様な要素を提供する。それらの要素の少なくとも一部は、機能を実行するための手段と呼ぶことができ、別の観点では、それらの要素の少なくとも一部は、構成的なブロック、またはモジュールと呼ぶことができる。
【００１３】
具体的には、電子制御装置１００は、マイコン１０と入出力回路８０を含んでおり、入出力回路８０を介してクランク角センサ２１０及びインジェクタ２２０と電気的に接続されている。電子制御装置１００は、クランク角センサ２１０からのセンサ信号を、入出力回路８０を介して取得することができる。また、電子制御装置１００は、車載機器としてのインジェクタ２２０に対する制御信号と、入出力回路８０を介して出力することができる。よって、電子制御装置１００は、クランク角センサ２１０からのセンサ信号などに基づいて、インジェクタ２２０などを制御する。
【００１４】
電子制御装置１００は、図１０に示すように、例えば、イグニッションスイッチ（ＩＧＳＷ）がオフからオンに切り替わると、動作電源が供給されて動作する。電子制御装置１００の動作電源は、ＥＣＵ電源と称することもできる。
【００１５】
なお、図１０の例では、電子制御装置１００は、タイミングｔ１、ｔ４でＩＧＳＷがオフからオンに切り替わり、ＥＣＵ電源が供給される。また、電子制御装置１００は、タイミングｔ２でＩＧＳＷがオンからオフに切り替わると、所定時間経過したタイミングｔ３でＥＣＵ電源の供給が停止される。電子制御装置１００は、図１０のＡにおいて、バックアップ（ＢＵ）チェック結果確認処理を実行し、Ｂにおいて、ＢＵチェック処理を実行する。詳述すると、電子制御装置１００は、タイミングｔ４でのＢＵチェック結果確認処理では、タイミングｔ２〜ｔ３で実行されたＢＵチェック処理の結果を確認する。この点に関しては、後程詳しく説明する。
【００１６】
マイコン１０は、演算処理装置としての第１コア２１と第２コア２２、メモリ装置としてのＲＡＭ３０とＲＯＭ４０とを備えている。また、マイコン１０は、入出力回路８０とのインターフェイスであるＩ／Ｏ７０を備えている。
【００１７】
さらに、本実施形態では、メモリ保護ユニット５０とＥＣＣ異常注入ユニット６０を備えたマイコン１０を採用している。しかしながら、本開示は、メモリ保護ユニット５０とＥＣＣ異常注入ユニット６０とを備えていなくてもよい。なお、マイコン１０は、第１コア２１、第２コア２２、ＲＡＭ３０、ＲＯＭ４０、メモリ保護ユニット５０、ＥＣＣ異常注入ユニット６０、Ｉ／Ｏ７０がバスを介して接続されている。
【００１８】
第１コア２１と第２コア２２は、例えば、それぞれ異なる機能を有しており、ＲＡＭ３０を一時的な記憶部として用いつつ、ＲＯＭ４０に記憶されたプログラムに従って演算処理を実行する。また、各コア２１、２２は、プログラムの命令を実行すると、プログラムカウンタとインクリメントする。そして、電子制御装置１００は、例えば、各コア２１、２２のそれぞれが演算処理を実行して、Ｉ／Ｏ７０にアクセスして、Ｉ／Ｏ７０に接続されているインジェクタ２２０などを制御することでエンジン制御を行う。
【００１９】
このように、各コア２１、２２は、ＲＡＭ３０、ＲＯＭ４０、Ｉ／Ｏ７０のそれぞれにアクセス可能に構成されている。また、マイコン１０は、リソースとして、ＲＡＭ３０、ＲＯＭ４０、Ｉ／Ｏ７０を備えていると言える。さらに、各コア２１、２２は、プログラムの命令を実行することでリソースへアクセスするとも言える。
【００２０】
なお、本開示は、これに限定されず、第１コア２１と第２コア２２が同じ機能を有していてもよい。また、本実施形態では、コアがひとつのマイコンや、コアが三つ以上のマイコンであっても採用できる。
【００２１】
ＲＡＭ３０は、各コア２１、２２の演算結果などを一時的に記憶する揮発性記憶部である。ＲＡＭ３０は、例えば、非保護領域３０ａと保護領域３０ｂとを含んでいる。ＲＯＭ４０は、各コア２１、２２によって読み取り可能なプログラム及びデータを非一時的に格納する、フラッシュメモリやハードディスク等の非遷移的実体的記憶媒体である。ＲＯＭ４０は、不揮発性記憶部に相当する。ＲＯＭ４０は、ＤａｔａＦｌａｓｈと言い換えることもできる。
【００２２】
なお、ＲＡＭ３０とＲＯＭ４０は、メモリ装置における異なる領域とみなすこともできる。つまり、ＲＡＭ３０は、メモリ装置における揮発領域とみなすことができる。一方、ＲＯＭ４０は、メモリ装置における不揮発領域とみなすことができる。
【００２３】
図２に、ＲＡＭ３０とＲＯＭ４０の構成の一例を示す。ＲＡＭ３０は、ＲＡＭ３０のアドレスを記憶するＲａｄｄ、ＲＯＭ４０のアドレスを記憶するＦａｄｄ、動作ステータスを記憶するＳｔａｔｕｓ、未使用領域、Ｂｕｆｆｅｒ領域が構成されている。Ｂｕｆｆｅｒ領域は、ＢＵ用Ｂｕｆｆｅｒ領域を含んでいる。なお、以下の説明では、Ｂｕｆｆｅｒをバッファと記載することもある。
【００２４】
ＲＯＭ４０は、ＢＵチェック結果の記憶領域、ＢＵチェック終了フラグの記憶領域、チェック結果の記憶領域、未使用領域、ＢＵ領域が構成されている。チェック結果の記憶領域は、アドレスと異常タイプとが紐付けされて記憶されている。なお、ＲＡＭ３０とＲＯＭ４０は、一例として、未使用領域が設けられていが、未使用領域が設けられていなくてもよい。
【００２５】
メモリ保護ユニット５０は、ＲＡＭ３０におけるリードライト属性やリードオンリー属性などのアクセス属性の設定や、非保護領域３０ａと保護領域３０ｂの設定などを行う。また、メモリ保護ユニット５０は、各コア２１、２２からＲＡＭ３０、ＲＯＭ４０へのアクセスに対する管理を行うことでメモリを保護する。例えば、メモリ保護ユニット５０は、各コア２１、２２からＲＡＭ３０へのアクセスに対して、設定したアクセス属性に応じたアクセス管理を行う。
【００２６】
ＥＣＣ異常注入ユニット６０は、ＲＡＭ３０、ＲＯＭ４０に対して、冗長ｂｉｔによる誤り訂正と確認を行う。ＥＣＣ異常注入ユニット６０は、あえてＥＣＣエラーを起こし、ＥＣＣエラー判定できることを確認することで、ＥＣＣエラー判定の仕組みが正しく動作していることを確認する。ＥＣＣ異常注入ユニット６０は、ＲＡＭ３０、ＲＯＭ４０に誤り訂正符号を注入する注入部に相当する。ＥＣＣは、Error Correction Codeの略称である。誤り訂正符号を注入することを、ＥＣＣ異常注入と言い換えることもできる。なお、電子制御装置１００は、ＥＣＣ異常注入ユニット６０を備えていなくてもよい。
【００２７】
ここで、図３〜図１０を用いて、電子制御装置１００の処理動作に関して説明する。以下に説明する処理は、主に、電子制御装置１００における第１コア２１と第２コア２２の少なくとも一方が実行する。本実施形態では、一例として、第１コア２１が実行する例を採用する。
【００２８】
まず、図７〜図１０を用いて、ＲＯＭ４０へのデータのバックアップに関連する処理を説明する。
【００２９】
第１コア２１は、例えば、ＩＧＳＷがオフからオンに切り替わると図７のフローチャートに示す処理を実行する。本実施形態のコア２１、２２は、図１０のタイミングｔ１、ｔ４で図７のフローチャートに示す処理を実行する。
【００３０】
ステップＳ５０では、ＢＵチェック終了フラグ＝オンであるか否かを判定する。第１コア２１は、ＲＯＭ４０のＢＵチェック終了フラグの記憶領域を確認してオンであるか否かを判定し、オンであると判定した場合はステップＳ５１へ進み、オンであると判定しなかった場合はステップＳ５３へ進む。
【００３１】
ステップＳ５１では、ＢＵチェック結果記憶領域に値があるか否かを判定する。第１コア２１は、ＲＯＭ４０のＢＵチェック結果の記憶領域に値があるか否かを判定し、値があると判定した場合はステップＳ５２へ進み、値があると判定しなかった場合はステップＳ５３へ進む。
【００３２】
ステップＳ５２では、第１コア２１は、ＢＵチェック結果の記憶領域に異常をセットする。また、ステップＳ５３では、第１コア２１は、ＢＵチェック終了フラグをクリアする。
【００３３】
第１コア２１は、例えば、ＩＧＳＷがオンである場合に所定時間毎に図８のフローチャートに示す処理を実行する。
【００３４】
ステップＳ６０では、ＩＧＳＷ＝オフであるか否かを判定する。第１コア２１は、ＢＵチェック処理を実行するか否かを判定するために、ＩＧＳＷがオフであるか否かを判定する。そして、第１コア２１は、ＩＧＳＷがオフであると判定した場合、ＢＵチェック処理を実行するためにステップＳ６１へ進む。一方、第１コア２１は、ＩＧＳＷがオフであると判定しなかった場合、ＢＵチェック処理を実行するタイミングではないとみなして図８の処理を終了する。
【００３５】
ステップＳ６１では、第１コア２１は、データコピーと比較チェック処理を実行する。つまり、第１コア２１は、ＢＵチェック処理を実行する（タイミングｔ２〜ｔ３）。データコピーと比較チェック処理に関しては、後程、図９を用いて説明する。
【００３６】
ステップＳ６２では、第１コア２１は、ＥＣＵ電源をオフする。つまり、第１コア２１は、ＢＵチェック処理が終了すると、ＥＣＵ電源をオフする（タイミングｔ３）。
【００３７】
ここで、図９を用いて、ＢＵチェック処理に関して説明する。
【００３８】
ステップＳ６２１では、コピー先頭アドレスをセットする。第１コア２１は、Ｒａｄｄにバッファ領域の先頭アドレスをセットするとともに、ＦａｄｄにＢＵ領域の先頭アドレスをセットする。なお、ここでのバッファ領域は、ＢＵ用バッファ領域を示している。
【００３９】
ステップＳ６２２では、ＳｔａｔｕｓにＣＯＰＹをセットする。第１コア２１は、Ｓｔａｔｕｓに、動作ステータスとしてＣＯＰＹをセットする。
【００４０】
ステップＳ６２３では、データをコピーする（＊Ｆａｄｄ←＊Ｒａｄｄ）。第１コア２１は、ステップＳ６２１でセットされたアドレスに対応するデータをＲＯＭ４０にコピーする。つまり、第１コア２１は、ＢＵ用バッファ領域のデータを、ＲＯＭ４０のＢＵ領域にコピーする。このデータコピー時には、ＲＯＭ４０へのアクセス異常（ＥＣＣ異常）により例外割込が発生する可能性がある。例外割込は、プログラムカウンタに従った通常の処理とは異なり、エラーが発生した際の処理を実行するための割り込みである。
【００４１】
ステップＳ６２４では、ＳｔａｔｕｓにＲＥＡＤをセットする。第１コア２１は、Ｓｔａｔｕｓに、動作ステータスとしてＲＥＡＤをセットする。
【００４２】
ステップＳ６２５では、データを比較する（＊Ｆａｄｄ＝＊Ｒａｄｄ？）。第１コア２１は、ＲＡＭ３０とＲＯＭ４０における対応するアドレスのデータを比較する。第１コア２１は、＊Ｆａｄｄ＝＊Ｒａｄｄであると判定した場合はデータ異常がないとみなしてステップＳ６２６へ進み、＊Ｆａｄｄ＝＊Ｒａｄｄであると判定しなかった場合はデータ異常の可能性があるとみなしてステップＳ６２９へ進む。このデータ比較時には、データコピー時と同様、ＲＯＭ４０へのアクセス異常（ＥＣＣ異常）により例外割込が発生する可能性がある。
【００４３】
ステップＳ６２６では、Ｓｔａｔｕｓをクリアする。第１コア２１は、ＦａｄｄにＦａｄｄ＋１をセットし、ＲａｄｄにＲａｄｄ＋１をセットする。
【００４４】
ステップＳ６２７では、Ｒａｄｄ＞バッファ領域の最後であるか否かを判定する。第１コア２１は、全てのデータのコピーが完了したか否かを判定するために、Ｒａｄｄ＞バッファ領域の最後であるか否かを判定する。第１コア２１は、Ｒａｄｄ＞バッファ領域の最後であると判定した場合はコピーが完了したとみなしてステップＳ６２８へ進み、Ｒａｄｄ＞バッファ領域の最後であると判定しなかった場合はコピーが完了していないとみなしてステップＳ６２２へ戻る。
【００４５】
ステップＳ６２８では、第１コア２１は、ＢＵチェック終了フラグをセットする。
【００４６】
ステップＳ６２５でＮＯ判定した場合、第１コア２１は、ステップＳ６２９を実行する。ステップＳ６２９では、第１コア２１は、ＢＵチェック結果の記憶領域にアドレスとしてＦａｄｄと、異常タイプとしてＶＥＲＩＦＹを書き込む。
【００４７】
このように、第１コア２１は、ＢＵ用バッファ領域の先頭から終わりまでをＲＯＭ４０にコピーした後、ＲＯＭ４０が正しく書けたか読み出して確認（比較）を実施する。
【００４８】
次に、図３〜図６を用いて、メモリアクセス異常の判定に関連する処理を説明する。
【００４９】
第１コア２１は、メモリへのアクセスを示す命令を実行する毎に、図３のフローチャートに示す処理を実行する。本実施形態では、一例として、ＢＵチェック命令を実行する際に、図３のフローチャートに示す処理を実行する例を採用する。つまり、第１コア２１は、ＢＵチェック結果確認処理及びＢＵチェック処理を実行するたびに、図３のフローチャートに示す処理を実行する例を採用する。
【００５０】
ステップＳ１０では、メモリアクセスが異常であるか否かを判定する。第１コア２１、第２コア２２は、読み出したメモリの誤り訂正符号が正常かを判定する。
【００５１】
この判定結果に基づいて、第１コア２１は、ＲＯＭ４０に対するアクセスが異常であるか否かを判定する。そして、第１コア２１は、アクセスが異常であると判定した場合はステップＳ２０へ進み、アクセスが異常であると判定しなかった場合はステップＳ３０へ進む。
【００５２】
ステップＳ２０では、メモリアクセスの例外割込処理を実行する（割込発生部）。第１コア２１は、ＲＡＭ３０、ＲＯＭ４０へのアクセスエラーが発生した際に、エラー発生時の処理である例外処理を実行するための割り込みを発生させる。よって、本実施形態では、ＲＯＭ４０へのアクセスエラーが発生した際に、エラー発生時の処理である例外処理を実行するための割り込みを発生させることになる。
【００５３】
例外割込処理は、プログラムカウンタに従った通常の処理とは異なり、アクセスエラーが発生した際に実行する処理と言える。また、例外割込処理は、アクセスエラーが発生した際に、プログラムの実行を一時的に中断して実行する処理とも言える。さらに、例外割込処理は、エラー発生時の処理である例外処理またはマイコン１０のリセットを実行するための割込処理とも言える。なお、第１コア２１は、例外割込処理において、例外処理の実行が完了すると、中断したプログラムに戻って、プログラムの命令を実行する。
【００５４】
本実施形態では、一例として、ＲＯＭ４０へのアクセスエラーが発生した際に割り込みを発生させる、すなわち、例外割込処理を実行する（割込発生部）。この例外割込処理に関しては、後程、図４を用いて説明する。
【００５５】
なお、第１コア２１は、ステップＳ３０でメモリアクセス命令を実行し、ステップＳ４０でプログラムカウンタをインクリメントする。
【００５６】
第１コア２１は、例外割込処理として、図４のフローチャートに示す処理を実行する。
【００５７】
ステップＳ２１では、例外発生の要因を判定する処理を実行する。第１コア２１は、意図した例外発生か、意図いない例外発生かを判定するために、例外発生の要因を判定する。言い換えると、第１コア２１は、例外処理を実行するか、マイコン１０のリセットを実行するかを判定するために例外発生の要因を判定する。また、第１コア２１は、マイコン１０のリセットが必要ないエラーによる割込発生か、マイコン１０のリセットが必要なエラーによる割込発生かを判定する、とも言える。なお、例外発生の要因を判定する処理は、要因判定処理とも言える。
【００５８】
ここで、図５を用いて、要因判定処理に関して説明する。
【００５９】
ステップＳ２１１では、Ｓｔａｔｕｓ＝ＣＯＰＹあるいはＲＥＡＤであるか否かを判定する（位置設定部）。第１コア２１は、割り込みが発生したときのＳｔａｔｕｓを確認する。つまり、第１コア２１は、エラーが発生したときのＳｔａｔｕｓを確認するとも言える。
【００６０】
そして、第１コア２１は、ＳｔａｔｕｓがＣＯＰＹあるいはＲＥＡＤであると判定した場合はステップＳ２１２に進み、ＣＯＰＹあるいはＲＥＡＤであると判定しなかった場合はステップＳ２１３に進む。
【００６１】
ステップＳ２１２では、意図した例外発生と判定する。割り込みが発生したときのＳｔａｔｕｓがＣＯＰＹあるいはＲＥＡＤである場合、予め設定されたアクセス属性を満たしているが、マイコン１０をリセットするまでもない何らかの異常によって、ＲＯＭ４０へのアクセスに失敗したとみなすことができる。よって、第１コア２１は、意図した例外発生と判定する。
【００６２】
ステップＳ２１３では、意図しない例外発生と判定する。割り込みが発生したときのＳｔａｔｕｓがＣＯＰＹあるいはＲＥＡＤでない場合、ＲＯＭ４０以外へのアクセスとみなすことができる。これは、予め設定されたアクセス属性を満たしていないため、マイコン１０をリセットする必要があるとみなすことができる。よって、第１コア２１は、意図しない例外発生と判定する。
【００６３】
なお、本実施形態では、要因判定処理として、上記のような例を採用した。しかしながら、本開示は、これに限定されず、他の要因判定処理であっても採用できる。つまり、要因判定処理は、アクセスエラーの状況などによって内容が異なる。
【００６４】
ここで、図４の説明に戻る。ステップＳ２２では、意図した例外発生か否かを判定する。第１コア２１は、ステップＳ２１での判定結果で、意図した例外発生と判定した場合は、ステップＳ２３へ進み、意図した例外発生と判定しなかった場合は、ステップＳ２６へ進む。つまり、第１コア２１は、意図しない例外発生と判定した場合、マイコン１０のリセットが必要とみなして、ステップＳ２６へ進む。そして、第１コア２１は、ステップＳ２６でマイコン１０をリセットする。
【００６５】
一方、第１コア２１は、意図した例外と判定した場合は、マイコン１０をリセットする必要がないとみなして、ステップＳ２３へ進む。
【００６６】
ステップＳ２３では、例外処理を実行する。このとき、第１コア２１は、図６に示す例外処理を実行する。第１コア２１は、ＢＵチェック結果の記憶領域にアドレスとしてＲａｄｄを書き込むとともに、異常タイプにＳｔａｔｕｓの値を書き込む（ステップＳ２３１、位置設定部）。
【００６７】
なお、本実施形態では、例外処理として、上記のような例を採用した。しかしながら、本開示は、これに限定されず、他の例外処理であっても採用できる。つまり、例外処理は、アクセスエラーの状況などによって内容が異なる。
【００６８】
ステップＳ２４では、プログラムを解析する（解析部）。第１コア２１は、戻り位置を設定するために、プログラムを解析してアクセスエラーが発生した際の命令の命令長を読み出す。第１コア２１は、例えば、アクセスエラーが発生した際の命令の命令長が４バイト命令か２バイト命令かを判断する。これは、中断したプログラムに戻る際に、エラーが発生した際の位置よりも進んだ位置に戻るための戻り位置を設定するために行う。例えば、アクセスエラーが発生した際の命令の命令長が４バイトであった場合、アクセスエラーが発生した際の命令から４バイト進めた位置を戻り位置として設定するためである。このプログラムの解析は、ステップＳ２３の例外処理中に行なってもよい。
【００６９】
なお、戻り位置は、戻り番地、戻りアドレスと言い換えることができる。また、位置、番地、アドレスのそれぞれは、プログラムの位置、プログラムの番地、プログラムのアドレスを示している。
【００７０】
本開示は、これに限定されない。プログラム中の各命令長が同一の場合は、プログラムを解析することなく、エラーが発生した際の位置よりも進んだ位置に戻るための戻り位置を設定することができる。
【００７１】
ステップＳ２５では、プログラムカウンタをインクリメントする（位置設定部）。第１コア２１は、ステップＳ２４での解析で得た戻り位置にすすめるために、プログラムカウンタをインクリメントする。
【００７２】
このように、第１コア２１は、エラー発生時の命令よりも後に実行される命令の位置を、中断したプログラムの命令の実効に戻る際の戻り位置として設定する。また、本実施形態では、エラーが発生した際の位置よりも命令長分の処理を進めた命令の位置を、戻り位置として設定する。なお、第１コア２１は、割り込みが発生してから、中断されたプログラムの命令の実効に戻る前までに、ステップＳ２４、Ｓ２５を実行する。
【００７３】
これによって、第１コア２１は、ステップＳ６２３の実行時に例外割込が発生した場合、例外処理を実行して中断したプログラムの実行に戻った際に、Ｓ６２４から実行を再開できる。また、第１コア２１は、ステップＳ６２５の実行時に例外割込が発生した場合、例外処理を実行して中断したプログラムの実行に戻った際に、Ｓ６２６から実行を再開できる。
【００７４】
ここまでに説明したように、電子制御装置１００は、戻り位置として、プログラムにおけるエラー発生時の命令よりも後に実行される命令の位置を設定するため、例外処理を実行するための割り込みが繰り返されることを防止できる。つまり、電子制御装置１００は、エラーが発生した際にＲＯＭ４０に固定値を上書きすることなく、例外処理を実行するための割り込みが繰り返されることを防止できる。このため、電子制御装置１００は、上書きに時間を要することで処理性能が劣化することを抑制できる。
【００７５】
さらに、上記のように、エラーが発生した際にＲＯＭ４０に固定値で上書きされるデータは、本来、継続して使用できるデータである可能性もある。電子制御装置１００は、エラーが発生した際にＲＯＭ４０に固定値を上書きする必要がないため、継続して使用できるデータが使用できなくなることを抑制できる。
【００７６】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本開示のその他の形態として、第２〜第４実施形態に関して説明する。上記実施形態及び第２〜第４実施形態は、それぞれ単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本開示は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００７７】
（第２実施形態）
図１１、図１２を用いて、第２実施形態の電子制御装置１００に関して説明する。本実施形態では、上記実施形態と異なる点を中心に説明する。本実施形態の電子制御装置１００は、主に、例外発生の要因を判定する処理と例外処理が上記実施形態の電子制御装置１００と異なる。
【００７８】
なお、本実施形態の電子制御装置１００は、上記実施形態と同様の構成をなしている。よって、本実施形態では、上記実施形態と同じ符号を用いる。
【００７９】
電子制御装置１００は、高い安全度が設定されたＡＳＩＬ領域のプログラムと、低い安全度が設定されたＱＭ領域のプログラムとをＲＯＭ４０に有している。ＡＳＩＬ領域は、機能安全要求により、保護された領域であり、ＱＭ領域のプログラムを実行した処理（制御）時にアクセスされないようになっている。
【００８０】
そして、電子制御装置１００は、ＡＳＩＬ領域にＱＭ領域に設定された制御からメモリアクセスした際に、マイコン１０の設定によりメモリアクセスエラーによる例外割り込みが発生する仕組みを備えている。つまり、電子制御装置１００は、ＱＭ領域におけるプログラムの実行に伴ってＡＳＩＬ領域へアクセスがあった場合に、アクセスエラーが発生したとみなして、例外割り込みを発生させる（割込発生部）。このため、第１コア２１は、ＱＭ領域におけるプログラムの実行に伴ってＡＳＩＬ領域へアクセスがあった場合に、アクセスエラーが発生したとみなして、ステップＳ１０でＹＥＳ判定することになる。これは、ＲＡＭ２０やレジスタの値が化けたことなどによって発生する可能性がある。
【００８１】
なお、ＡＳＩＬは、Automotive Safety Integrity Levelの略称である。ＡＳＩＬ領域は、メモリ保護領域に相当する。一方、ＱＭは、Quality Managementの略称である。ＱＭ領域は、メモリ非保護領域に相当する。よって、ＲＯＭ４０は、メモリ保護領域とメモリ非保護領域を含むメモリに相当する。
【００８２】
第１コア２１は、要因判定処理として、図１１のフローチャートに示す処理を実行する。
【００８３】
ステップＳ２１１ａでは、戻り先アドレス＝ＱＭ領域であるか否かを判定する（位置設定部）。第１コア２１は、戻り先アドレス＝ＱＭ領域と判定した場合はアクセス元がＱＭ領域とみなしてステップＳ２１２へ進み、戻り先アドレス＝ＱＭ領域と判定しなかった場合はアクセス元がＱＭ領域でないとみなしてステップＳ２１３へ進む。つまり、第１コア２１は、中断したプログラムに戻る際のアドレスがＱＭ領域におけるアドレスの場合にステップＳ２１２へ進み、中断したプログラムに戻る際のアドレスがＱＭ領域におけるアドレスでない場合にステップＳ２１３へ進む。
【００８４】
ステップＳ２１２では、意図した例外発生と判定する。アクセス元がＱＭ領域の場合、ＱＭ領域のプログラムを実行した制御時にＡＳＩＬ領域へのアクセスが、ＲＡＭ２０やレジスタの値が化けなどマイコン１０をリセットするまでもない異常によってなされたとみなすことができる。よって、第１コア２１は、意図した例外発生と判定する。
【００８５】
ステップＳ２１３では、意図しない例外発生と判定する。アクセス元がＱＭ領域でない場合、ＱＭ領域におけるプログラムの実行に伴ってＡＳＩＬ領域へのアクセスが、ＲＡＭ２０やレジスタの値が化けなどによらないため、マイコン１０をリセットする必要があるとみなすことができる。よって、第１コア２１は、意図しない例外発生と判定する。このようにすることで、電子制御装置１００は、信頼できないソフトウェアによる誤ったメモリ書き換えを防ぐことができる。
【００８６】
また、第１コア２１は、例外処理として、図１２のフローチャートに示す処理を実行する。ステップＳ２３１ａでは、第１コア２１は、ＡＳＩＬ領域のＲＡＭ値を保護するとともに、異常コード等を保存する。つまり、第１コア２１は、ＡＳＩＬ領域の値を保護するとともに、ＡＳＩＬ領域へのアクセスエラーが発生したことを示す異常コードを少なくとも保存する。これによって、電子制御装置１００は、異常発生時に解析が容易になる。
【００８７】
本実施形態の電子制御装置１００は、上記実施形態と同様の効果を奏することができる。
【００８８】
（第３実施形態）
図１３、図１４を用いて、第３実施形態の電子制御装置１００に関して説明する。本実施形態では、上記実施形態と異なる点を中心に説明する。本実施形態の電子制御装置１００は、主に、例外発生の要因を判定する処理と例外処理が上記実施形態の電子制御装置１００と異なる。
【００８９】
なお、本実施形態の電子制御装置１００は、上記実施形態と同様の構成をなしている。よって、本実施形態では、上記実施形態と同じ符号を用いる。
【００９０】
電子制御装置１００は、上記のように、ＥＣＣ異常注入ユニット６０を備えている。ＥＣＣ異常注入ユニット６０は、ＲＡＭ３０、ＲＯＭ４０に対して、あえてＥＣＣエラーを起こす、すなわち、誤り訂正符号に異常を注入する。そして、第１コア２１は、メモリの誤り訂正符号が正常かを判定し、異常と判定した場合、ＲＡＭ３０、ＲＯＭ４０へのアクセスエラーが発生するため割り込みを発生させる（割込発生部）。つまり、第１コア２１は、誤り訂正符号が異常なメモリにアクセスすることで、メモリへのアクセスエラーが発生するとみなして、ステップＳ１０でＹＥＳ判定することになる。
【００９１】
第１コア２１は、要因判定処理として、図１３のフローチャートに示す処理を実行する。
【００９２】
ステップＳ２１１ｂでは、ＥＣＣ診断状態＝診断中であるか否かを判定する（位置設定部）。つまり、第１コア２１は、誤り訂正符号が注入された動作診断中であるか否かを判定する。そして、第１コア２１は、ＥＣＣ診断状態＝診断中であると判定した場合はステップＳ２１２へ進み、ＥＣＣ診断状態＝診断中であると判定しなかった場合はステップＳ２１３へ進む。
【００９３】
ステップＳ２１２では、意図した例外発生と判定する。ＥＣＣ診断中の場合、誤り訂正符号の異常注入によってアクセスエラーが発生したとみなすことができる。よって、第１コア２１は、意図した例外発生と判定する。
【００９４】
ステップＳ２１３では、意図しない例外発生と判定する。ＥＣＣ診断中でない場合、誤り訂正符号の異常注入によるアクセスエラーは発生しないため、何らかの異常でアクセスエラーが発生しており、マイコン１０をリセットする必要があるとみなすことができる。よって、第１コア２１は、意図しない例外発生と判定する。
【００９５】
また、第１コア２１は、例外処理として、図１４のフローチャートに示す処理を実行する。
【００９６】
ステップＳ２３１ｂでは、第１コア２１は、ＥＣＣ異常注入を解除する。ステップＳ２３２ｂでは、異常発生アドレスが一致するか否かを判定する。そして、第１コア２１は、異常発生アドレスが一致すると判定した場合はステップＳ２３３ｂに進み、異常発生アドレスが一致すると判定しなかった場合はステップＳ２３５ｂに進む。
【００９７】
ステップＳ２３３ｂでは、第１コア２１は、診断結果＝正常、ＥＣＣ診断状態＝終了とする。また、ステップＳ２３４ｂでは、第１コア２１は、ＥＣＣ診断結果をＯＫとする。一方、ステップＳ２３５ｂでは、第１コア２１は、ＥＣＣ診断結果をＮＧとする。
【００９８】
本実施形態の電子制御装置１００は、上記実施形態と同様の効果を奏することができる。さらに、本実施形態の電子装置１００は、ＥＣＣ機能が正常に働いているか検証することができ、ＥＣＣ機能の信頼性を向上させることができる。
【００９９】
（第４実施形態）
図１５を用いて、第４実施形態の電子制御装置１００に関して説明する。本実施形態では、上記実施形態と異なる点を中心に説明する。本実施形態の電子制御装置１００は、例外割込処理の一部が上記実施形態の電子制御装置１００と異なる。
【０１００】
なお、図１５のフローチャートでは、図４のフローチャートと同じ処理に関して、同じステップ番号を用いている。このステップ番号の処理は、図４の説明を適用できる。また、本実施形態の電子制御装置１００は、上記実施形態と同様の構成をなしている。よって、本実施形態では、上記実施形態と同じ符号を用いる。
【０１０１】
第１コア２１は、ステップＳ２２でＹＥＳ判定するとステップＳ７０へ進む。ステップＳ７０では、第１コア２１は、例外処理カウンタをインクリメントする（回数判定部）。つまり、第１コア２１は、意図した例外発生の回数をカウントする。ステップＳ７１では、例外処理カウント値＞閾値であるか否かを判定する（回数判定部）。第１コア２１は、例外処理カウント＞閾値であると判定した場合はステップＳ２６へ進み、例外処理カウント値＞閾値であると判定しなかった場合はステップＳ２３へ進む。このように、第１コア２１は、例外処理カウント値が閾値を超えたと判定した場合、例外処理を行なうことなく、マイコン１０をリセットする（リセット部）。なお、第１コア２１は、例外処理カウント≧閾値と判定した場合にステップＳ２６に進んでもよい。
【０１０２】
本実施形態の電子制御装置１００は、上記実施形態と同様の効果を奏することができる。さらに、電子制御装置１００は、意図した例外発生と判定した場合であっても、その回数が数回（閾値）行われると、マイコン１０をリセットする。このため、電子制御装置１００は、意図した例外発生が継続する場合に、マイコン１０をリセットすることができる。
【０１０３】
なお、上記実施形態では、リソースとしてメモリを採用した。しかしながら、本開示は、これに限定されず、リソースとしてＩ／Ｏ７０を採用することもできる。この場合であっても、上記と同様の効果を奏することができる。
【符号の説明】
【０１０４】
１０…マイコン、２１…第１コア、２２…第２コア、３０…ＲＡＭ、３０ａ…非保護領域、３０ｂ…保護領域、４０…ＲＯＭ、５０…メモリ保護ユニット、６０…ＥＣＣ異常注入ユニット、７０…Ｉ／Ｏ、８０…入出力回路、１００…電子制御装置２１０…クランク角センサ、２２０…インジェクタ
【図１】
2019212124.tif 000003
【図２】
2019212124.tif 000004
【図３】
2019212124.tif 000005
【図４】
2019212124.tif 000006
【図５】
2019212124.tif 000007
【図６】
2019212124.tif 000008
【図７】
2019212124.tif 000009
【図８】
2019212124.tif 000010
【図９】
2019212124.tif 000011
【図１０】
2019212124.tif 000012
【図１１】
2019212124.tif 000013
【図１２】
2019212124.tif 000014
【図１３】
2019212124.tif 000015
【図１４】
2019212124.tif 000016
【図１５】
2019212124.tif 000017