(57)【要約】【課題】  スタック領域に退避する記憶対象領域の異常を、その退避する際に判定可能な電子制御装置を提供する。【解決手段】  不揮発性メモリのＲＯＭ２０２と、揮発性メモリのＲＡＭ２０３を有し、ＲＯＭ２０２は、演算を実行するプログラムが記憶され、ＣＰＵ２０１は、プログラムに従い演算を実行し、演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、ＲＡＭ２０３は、割り込み処理、又はプログラムによるサブルーチンコールが発生した場合に演算レジスタを一時的に記憶するスタック領域を有し、ＣＰＵ２０１は、スタック領域の参照先アドレスを記憶するスタックポインタと、複数のコアと、を有し、複数のコア毎にＲＯＭ２０２とＲＡＭ２０３が接続されてタスクを実行する。【選択図】図５
2019164579.tif 000002
【特許請求の範囲】
【請求項１】
メモリ及びＣＰＵを備えた電子制御装置において、
前記メモリは、不揮発性メモリのＲＯＭと、揮発性メモリのＲＡＭを有し、
前記ＲＯＭは、演算を実行するプログラムが記憶され、
前記ＣＰＵは、前記プログラムに従い演算を実行し、前記演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、
前記ＲＡＭは、割り込み処理、又は前記プログラムによるサブルーチンコールが発生した場合に前記演算レジスタを一時的に記憶するスタック領域を有し、
前記ＣＰＵは、
前記スタック領域の参照先アドレスを記憶するスタックポインタと、
複数のコアと、を有し、
該複数のコア毎に前記メモリが接続されてタスクを実行する
ことを特徴とする電子制御装置。
【請求項２】
前記ＣＰＵは、
前記演算レジスタに保持している前記演算データを前記スタック領域に退避するスタック退避手段と、
前記スタック領域に退避した前記演算データを前記演算レジスタに復帰するスタック復帰手段と
を有することを特徴とする、請求項１に記載の電子制御装置。
【請求項３】
前記ＣＰＵは、
前記タスクが実行される前に前記スタック領域の初期化を行うスタック領域初期化手段と、
前記スタック領域が正常か異常かを診断するスタック領域診断手段と
を有することを特徴とする、請求項１〜２のいずれか１項に記載の電子制御装置。
【請求項４】
前記スタック領域診断手段は、
前記割り込み処理と、前記サブルーチンコールと、のいずれか一方又は両方が発生した場合に、
前記スタック退避手段が前記演算レジスタに保持している前記演算データを前記スタック領域に退避して、
前記スタック領域に退避されている前記演算データと前記演算レジスタに格納されている前記演算データを比較する
ことを特徴とする請求項２に記載の電子制御装置。
【請求項５】
前記ＣＰＵは、前記スタック領域の故障領域を回避する故障領域回避手段を有し、
該故障領域回避手段は、
前記スタック領域診断手段により、前記スタック領域に退避されている前記演算データと、前記演算レジスタに格納されている前記演算データとが違うと判断した場合に、
前記スタックポインタが記憶している前記参照先アドレスを故障と判断して、
前記スタックポインタを次のアドレスに変更して、
前記演算レジスタに格納されている前記演算データを前記スタック退避手段によって前記スタック領域に退避する
ことを特徴とする請求項４に記載の電子制御装置。
【請求項６】
前記ＣＰＵは、前記スタック領域診断手段および前記故障領域回避手段により、前記スタック領域の故障を検知するとともに前記演算データを前記スタック領域に退避する
ことを特徴とする請求項５に記載の電子制御装置。
【請求項７】
前記スタック領域診断手段は、前記故障領域回避手段が前記スタック領域の故障領域の回避を複数回繰り返した場合に、前記スタック領域が全て異常であると診断し、初期化処理を実行する
ことを特徴とする請求項５に記載の電子制御装置。
【請求項８】
前記ＲＡＭは、故障アドレス保持領域を有し、
該故障アドレス保持領域は、前記スタック領域診断手段により、前記スタック領域が故障と診断された場合、故障と判断された前記スタック領域の前記参照先アドレスを格納して、
前記ＣＰＵは、前記故障と判断された前記スタック領域の前記参照先アドレスを前記故障アドレス保持領域に格納する
ことを特徴とする請求項７に記載の電子制御装置。
【請求項９】
前記ＣＰＵは、前記割り込み処理又は前記サブルーチンコールの処理後に、前記スタック復帰手段によって、前記スタック領域に退避した前記演算データを前記演算レジスタに復帰する場合に、前記故障アドレス保持領域に格納されている前記故障と判断された前記スタック領域の前記参照先アドレスと、前記スタックポインタを比較することで、前記故障と判断された前記スタック領域から故障した前記演算データを復帰させないことを特徴とする、請求項８に記載の電子制御装置。
【請求項１０】
前記ＣＰＵは、前記故障アドレス保持領域が正常に動作するか否かを監視するＲＡＭ診断手段を有することを特徴とする、請求項８に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
電子制御装置は、ＣＰＵ（Central Processing Unit）にて演算した結果を格納するＲＡＭ（Random Access Memory）を使用する。また、ＲＡＭの一部はスタック領域として使用され、このスタック領域は、電子制御装置におけるＣＰＵが処理中の演算データなどを一時的に退避させる場合に使用される。このＣＰＵによる演算データの一時退避は、電子制御装置におけるプログラムのサブルーチンや、割り込みによって引き起こる。その際にスタック領域において退避した演算データが故障すると、復帰した先の処理で不整合が起こる。
【０００３】
上記のような不整合を防ぐ技術が、例えば特許文献１に開示されている。特許文献１では、スタック領域の退避先である参照アドレスを保存するスタックポインタの異常判定のために、そのスタックポインタに記憶された参照アドレスを複数のバックアップ領域に保存することにより、スタックポインタに記憶された参照アドレス、および複数のバックアップ領域それぞれに記憶された参照アドレスそれぞれを比較することで、スタックポインタに記憶された参照アドレスの異常判定を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１２３１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上記特許文献１の技術は、スタックポインタの異常判定のために、ＲＡＭに複数のバックアップ領域を持っている。また、スタックポインタの異常判定の他にスタック領域に保存される演算データに対しても複数のバックアップ領域を持たせているが、複数のバックアップ領域やスタック領域に共に故障した演算データが保存された場合、比較した結果故障した演算データが採用となり、その故障した演算データを処理に使用することが懸念される。
【０００６】
本発明は、こうした点に鑑みなされたもので、現在使用しているスタック領域が故障した場合に、そのスタック領域の故障箇所を特定すると共に、スタック領域に一時退避すべき演算データを確実に退避および復帰することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の電子制御装置は、メモリ及びＣＰＵを備えた電子制御装置において、前記メモリは、不揮発性メモリのＲＯＭと、揮発性メモリのＲＡＭを有し、前記ＲＯＭは、演算を実行するプログラムが記憶され、前記ＣＰＵは、前記プログラムに従い演算を実行し、前記演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、前記ＲＡＭは、割り込み処理、又は前記プログラムによるサブルーチンコールが発生した場合に前記演算レジスタを一時的に記憶するスタック領域を有し、前記ＣＰＵは、前記スタック領域の参照先アドレスを記憶するスタックポインタと、複数のコアと、を有し、該複数のコア毎に前記メモリが接続されてタスクを実行する。
【発明の効果】
【０００８】
本発明によれば、現在使用しているスタック領域が故障した場合に、そのスタック領域の故障箇所を特定すると共に、スタック領域に一時退避すべき演算データを確実に退避および復帰することができる。
【０００９】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例における火花点火内燃機関と制御装置の模式図。
【図２】本発明の実施例におけるコントロールユニットの内部構成図。
【図３】本発明の実施例におけるＣＰＵとＲＡＭの割り当てを説明する構成図。
【図４】本発明の実施例における汎用レジスタとスタック領域で行われる退避および復帰操作を示した模式図。
【図５】本発明の実施例におけるスタック領域診断処理手順を示すフローチャート。
【発明を実施するための形態】
【００１１】
本実施例は、次のように表現することができる。
メモリ及びＣＰＵを備えた電子制御装置において、前記メモリは、不揮発性メモリのＲＯＭと、揮発性メモリのＲＡＭを有し、前記ＲＯＭは、演算を実行するプログラムが記憶され、前記ＣＰＵは、前記プログラムに従い演算を実行し、前記演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、前記ＲＡＭは、割り込み処理、又は前記プログラムによるサブルーチンコールが発生した場合に前記演算レジスタを一時的に記憶するスタック領域を有し、前記ＣＰＵは、前記スタック領域の参照先アドレスを記憶するスタックポインタと、複数のコアと、を有し、該複数のコア毎に前記メモリが接続されてタスクを実行する。
【００１２】
また、前記ＣＰＵは、前記演算レジスタに保持している前記演算データを前記スタック領域に退避するスタック退避手段と、前記スタック領域に退避した前記演算データを前記演算レジスタに復帰するスタック復帰手段とを有する。
【００１３】
また、前記ＣＰＵは、前記タスクが実行される前に前記スタック領域の初期化を行うスタック領域初期化手段と、前記スタック領域が正常か異常かを診断するスタック領域診断手段とを有する。
【００１４】
タスクには、電子制御装置の制御目的を達成する通常タスクと、所定の優先度により通常タスクから独立した高優先度タスクをそれぞれに複数備える。例えば通常タスクが正常に動作するか否かを判断し、その制御目的が達成できない様な状態に陥らないことを目的とする安全性確保のタスク等である。
【００１５】
また、ＣＰＵはそのタスクが実行される前の初期化状態を備え、スタック領域初期化手段は初期化状態におけるスタック領域の初期化を行う。その初期化診断によって、電子制御装置の動作前に正常起動できるか否かを判断することで安全性を向上させている。
【００１６】
また、前記スタック領域診断手段は、前記割り込み処理と、前記サブルーチンコールと、のいずれか一方又は両方が発生した場合に、前記スタック退避手段が前記演算レジスタに保持している前記演算データを前記スタック領域に退避して、前記スタック領域に退避されている前記演算データと前記演算レジスタに格納されている前記演算データを比較する。
【００１７】
また、前記ＣＰＵは、前記スタック領域の故障領域を回避する故障領域回避手段を有し、該故障領域回避手段は、前記スタック領域診断手段により、前記スタック領域に退避されている前記演算データと、前記演算レジスタに格納されている前記演算データとが違うと判断した場合に、前記スタックポインタが記憶している前記参照先アドレスを故障と判断して、前記スタックポインタを次のアドレスに変更して、前記演算レジスタに格納されている前記演算データを前記スタック退避手段によって前記スタック領域に退避する。
【００１８】
また、前記ＣＰＵは、前記スタック領域診断手段および前記故障領域回避手段により、前記スタック領域の故障を検知するとともに前記演算データを前記スタック領域に退避する。
例えば、故障領域を判定しない場合、スタック領域に故障演算データが記憶され、割り込み処理または、サブルーチンコールの処理を終えて、元の処理に復帰した場合に、故障演算データを元の処理で使用することになる。例えばその故障演算データがアドレスだった場合は電子制御装置の所定制御が実現不可能な状態に陥る。
この点、この構成の電子制御装置では、スタック領域の故障領域を判別回避することで、安全に演算データをスタック領域に退避することを可能とする。
【００１９】
また、前記スタック領域診断手段は、前記故障領域回避手段が前記スタック領域の故障領域の回避を複数回繰り返した場合に、前記スタック領域が全て異常であると診断し、初期化処理を実行する。
これにより、所定の回数スタック領域が連続して故障している場合を判定することで、スタック領域の信頼性が低いと判定し、そのまま処理を続けた場合、電子制御装置の所定制御が実現不可能となる前に、電子制御装置を所定の初期化処理などの安全動作状態へ移行させることが可能となる。
【００２０】
また、前記ＲＡＭは、故障アドレス保持領域を有し、該故障アドレス保持領域は、前記スタック領域診断手段により、前記スタック領域が故障と診断された場合、故障と判断された前記スタック領域の前記参照先アドレスを格納して、前記ＣＰＵは、前記故障と判断された前記スタック領域の前記参照先アドレスを前記故障アドレス保持領域に格納する。
【００２１】
また、前記ＣＰＵは、前記割り込み処理又は前記サブルーチンコールの処理後に、前記スタック復帰手段によって、前記スタック領域に退避した前記演算データを前記演算レジスタに復帰する場合に、前記故障アドレス保持領域に格納されている前記故障と判断された前記スタック領域の前記参照先アドレスと、前記スタックポインタを比較することで、前記故障と判断された前記スタック領域から故障した前記演算データを復帰させない。
【００２２】
また、前記ＣＰＵは、前記故障アドレス保持領域が正常に動作するか否かを監視するＲＡＭ診断手段を有する。
これにより、より安全に演算データをスタック領域に退避することを可能とする。
【００２３】
以下、実施例について図面を用いて説明する。
【００２４】
図１は、実施例に係る火花点火内燃機関とその制御装置の基本構成図である。本説明では以下、筒内噴射式火花点火内燃機関を用いて説明を進めていくが、ポート噴射式火花点火内燃機関や、筒内噴射とポート噴射の両方を備えたデュアル噴射式火花点火内燃機関においても適用可能である。
【００２５】
図において、エンジン１には、ピストン２、吸気バルブ３、排気バルブ４が備えられ、吸気は、空気流量計（ＡＦＭ）１８を通過して絞り弁１７に入り、分岐部であるコレクタ１４より吸気管１０、吸気バルブ３を介してエンジン１の燃焼室１９に供給される。燃料は、燃料噴射弁５から、エンジン１の燃焼室１９に噴射供給され、点火コイル７、点火プラグ６で点火される。燃焼後の排気ガスは排気バルブ４を介して排気管１１に排出され、排気管１１には排気ガス浄化のための三元触媒１２が備えられている。エンジンコントロールユニット９には、エンジン１のクランク角度センサ１５の信号、ＡＦＭ１８の空気量信号、排気ガス中の空燃比を検出する空燃比センサ１３の信号、アクセル開度センサ２０のアクセル開度等の信号が入力される。エンジンコントロールユニット９はアクセル開度センサ２０の信号からエンジンへの要求トルクの算出、アイドル状態の判定等を行ない、エンジン１に必要な吸入空気量を算出し、それに見合った開度信号を絞り弁１７に出力する。また燃料噴射弁５へは燃料噴射信号が、点火プラグ６へは点火信号が出力される。
【００２６】
さらにエンジン１に取り付けられたノックセンサ８が、エンジン１の異常燃焼時に発生する異音（ノッキング）を検出し、点火信号をフィードバック制御している。
【００２７】
図２はエンジンコントロールユニット９の構成を示したものである。
【００２８】
センサ類２１１及びアクチュエータ類２１２に接続される入出力インタフェース（Ｉ／Ｆ）２０５と、外部の通信バス２１５に接続されエンジンコントロールユニット９との信号送受信を行う外部通信インタフェース（Ｉ／Ｆ）２０６と、一時的情報を記憶する揮発性メモリであるＲＡＭ（Random Access Memory）２０３と、制御プログラム及び各種制御設定を記憶する不揮発性メモリであるＲＯＭ（Read Only Memory）２０２と、制御用学習値や故障コードを記憶する内部不揮発性メモリ２０４と、外部不揮発性メモリに接続される内部通信インタフェース（Ｉ／Ｆ）２０７と、それらを統括して制御を司るＣＰＵ（Central Processing Unit）２０１とを有し、これらの要素がバス２０８を介して互いに接続されているマイクロコンピュータ２１０により構成されている。
【００２９】
不揮発性メモリとしては、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）２０９が例示され、内部通信インタフェース２０７に接続されている。
【００３０】
また、複数の外部装置２１３〜２１４は外部の通信バス２１５に接続され外部通信Ｉ／Ｆ２０６を通じてエンジンコントロールユニット９と所定の通信を行う。
【００３１】
ＣＰＵ２０１は入出力Ｉ／Ｆ２０５を通じてセンサ類２１１から入力情報を取り込み、ＲＯＭ２０２に保存された制御プログラムに従って、各制御および診断等を実行する機能を備えている。演算結果および入力情報はＲＡＭ２０３に一時保管されるとともに、演算結果により、入出力Ｉ／Ｆ２０５を通じてアクチュエータ類２１２の制御に用いられる。
【００３２】
また、ＣＰＵ２０１はＲＯＭ２０２に保存された診断プログラムに従って、各種制御の診断を行うとともに、診断の結果の故障コードをＲＡＭ２０３と外部ＥＥＰＲＯＭ２０９に保存する。さらにＣＰＵ２０１はＲＯＭ２０２に保存された学習プログラムに従って、各種制御の学習値を演算し、その学習値もＲＡＭ２０３と外部ＥＥＰＲＯＭ２０９に保存する。加えてＣＰＵ２０１は外部ＥＥＰＲＯＭ２０９と同様に内部ＥＥＰＲＯＭ２０４にも故障コードや学習値を保存する。
【００３３】
図３に示すように、ＣＰＵ２０１は、演算するデータを一時的に保存する汎用レジスタ３０１と、ＲＡＭ２０３領域の一部に割り当てられたスタック領域を示すスタックポインタ３０２と、現在実行中のプログラムアドレスを指すプログラムカウンタ３０３を備えている。また、ＲＡＭ２０３は、車両制御データを保存する車両制御ＲＡＭ領域３０４と、スタック領域の故障診断した結果、故障と判断されたスタック領域のアドレスを保存する故障アドレス保持領域３０５と、割り込みまたはサブルーチンコールが発生した場合に汎用レジスタで使用している演算データを一時的に退避するスタック領域３０６を備えている。
【００３４】
図４に示すようにスタック領域３０６に故障領域がある場合、（ａ）スタック退避では、スタック領域診断を実施後の状態を示している。スタックポインタ３０２は故障領域の次の領域を指し、汎用レジスタ３０１のデータＤを退避しており、故障領域を回避している。（ｂ）スタック復帰では、スタックポインタ３０２はスタック領域３０６のデータＤが退避された領域を指し、汎用レジスタ３０１にデータＤを復帰する。
【００３５】
図５に動作方法についてフローチャートを用いて説明する。
【００３６】
割り込みまたはサブルーチンコールが発生した時、ステップ５０１で汎用レジスタの演算データをスタック領域に退避させる。
【００３７】
次にステップ５０２でスタックに退避した演算データ（以降スタックデータと呼ぶ）と汎用レジスタに保存されている演算データが一致するか否かを比較する。
【００３８】
比較結果が一致と判断された場合、ステップ５０３に進み、今回スタック領域に退避したアドレスの記憶領域は正常と判断し、ステップ５０８へ進む。
【００３９】
前述のステップ５０２の比較結果が不一致と判断された場合、ステップ５０４へ進み、前述のステップ５０１で退避した汎用レジスタと同じデータをスタック領域の次アドレスの領域へ退避させる。
【００４０】
次にステップ５０５では、新たにスタック領域に退避した演算データと、汎用レジスタに保存されている演算データが一致するか否かを比較する。
【００４１】
比較結果が一致と判断された場合、ステップ５０６へ進み、前回領域、即ち前述の５０１でスタック領域に退避した領域は故障と判断し、ステップ５０７へ進み、ステップ５０６で診断した故障領域のアドレスを故障アドレス保持領域３０５へ格納する。
【００４２】
その後ステップ５０８へ進む。前述のステップ５０５の比較結果が不一致と判断された場合、ステップ５０９へ進み、不一致が所定の回数以上となったか判定する。
【００４３】
判定結果が成立した場合、ステップ５１０へ進み、スタック領域が正常に機能しないと判断し診断異常を確定とし、自動車に搭載のインジケータであるＭＩＬ（Malfunction Indicator Lamp）等の警告するための通知を行う。
【００４４】
次にステップ５１１へ進み、システムを安全に動作させるための初期化処理へとジャンプする。
【００４５】
前述のステップ５０９の判定結果が不成立となった場合、ステップ５０４へ戻る。
【００４６】
前述のステップ５０３またはステップ５０７の次にステップ５０８へ進み、割り込み時またはサブルーチンコール時の目的処理を実施する。
【００４７】
次にステップ５１２へ進み、スタックポインタの参照アドレスと故障アドレス保持領域３０５へ格納された故障アドレスが一致するか否かを比較する。
【００４８】
比較結果が一致と判断された場合、ステップ５１３へ進み、スタックポインタを次の領域のアドレスに変更して、ステップ５１２へ戻る。
【００４９】
前述のステップ５１２の比較結果が不一致と判断された場合、ステップ５１４へ進み、スタック領域に退避されている演算データと汎用レジスタに復帰させ本処理を終了する。
【００５０】
以上より、スタック領域に記憶された演算データとスタック領域に記憶する対象のレジスタを比較することで、スタック領域に退避する記憶対象領域の異常を、その退避する際に判定し、故障領域を回避することにより、スタック領域に一時退避すべき演算データを確実に退避および復帰することが可能な電子制御装置を提供することができる。
【符号の説明】
【００５１】
１  エンジン、２  ピストン、３  吸気バルブ、４  排気バルブ、５  燃料噴射弁、６  点火プラグ、７  点火コイル、８  ノックセンサ、９  ＥＣＵ（エンジンコントロールユニット）、１０  吸気管、１１  排気管、１２  三元触媒、１３  空燃比センサ、１４  コレクタ、１５  クランク角度センサ、１６  シグナルプレート、１７  絞り弁、１８  ＡＦＭ、１９  燃焼室、２０  アクセル開度センサ
【図１】
2019164579.tif 000003
【図２】
2019164579.tif 000004
【図３】
2019164579.tif 000005
【図４】
2019164579.tif 000006
【図５】
2019164579.tif 000007