(57)【要約】【課題】メモリに異常を生じたとしてもフェールセーフ処理に移行することなく通常制御を続行できるようにした電子制御装置を提供する。【解決手段】ＳＤＡ１７は、他の領域よりもアクセス速度が速く重要度の高いデータを保持するが、ＳＤＡ特定レジスタ１６は、このＳＤＡ１７に相対アドレス指定によりアクセスするための特定アドレスを記憶する。ＣＰＵ７は、ＳＤＡ１７に異常を生じたか否かを判定し、異常を生じたと判定されたときには、ＳＤＡ特定レジスタ１６のＳＤＡ特定アドレスを書き換える（Ｓ１〜Ｓ３、Ｓ１０）。【選択図】図２
2018063527.tif 000002
【特許請求の範囲】
【請求項１】
他の領域よりもアクセス速度が速く重要度の高いデータを保持するスモールデータ領域（以下、ＳＤＡと略す）に相対アドレス指定によりアクセスするための特定アドレスを記憶する特定アドレス記憶部（１６）と、
前記ＳＤＡに異常を生じたか否かを判定する判定部（Ｓ１〜Ｓ３）と、
前記判定部により前記ＳＤＡに異常を生じたと判定されたときに前記特定アドレス記憶部のＳＤＡ特定アドレスを書き換えることで新たな前記ＳＤＡを確保する書換部（Ｓ１０）と、
を備える電子制御装置。
【請求項２】
請求項１記載の電子制御装置において、
前記書換部によりＳＤＡ特定アドレスが書換えられ新たなＳＤＡを確保可能なことを条件として異常時に処理するフェールセーフ処理を実行指令することなく通常時に処理する通常制御を継続する通常制御継続部（Ｓ４）をさらに備える電子制御装置。
【請求項３】
請求項１または２記載の電子制御装置において、
前記判定部により前記ＳＤＡ（１７、１７ａ〜１７ｄ）に異常を生じたと判定された場合、
前記異常を生じた領域を記憶制御する異常領域記憶制御部（Ｓ５）をさらに備えることを特徴とする電子制御装置。
【請求項４】
請求項１から３の何れか一項に記載の電子制御装置において、
前記判定部により前記ＳＤＡ（１７、１７ａ〜１７ｄ）に異常を生じたと判定された場合、異常回数をカウントするカウント部（Ｓ６）と、
前記異常回数が所定回数を超えたことを条件として異常時に処理するフェールセーフ処理を実行指令するフェールセーフ指令部（Ｓ８）と、
を備える電子制御装置。
【請求項５】
請求項１から４の何れか一項に記載の電子制御装置において、
前記判定部により前記ＳＤＡ（１７ａ）に異常を生じたと判定された場合、
前記書換部は、新たなＳＤＡ（１７ｂ）の必要領域分の領域を空き領域（１９）に連続的に確保可能なことを条件として、前記ＳＤＡ特定アドレスを書換える（Ｓ１０）ことで前記空き領域に新たなＳＤＡを確保する電子制御装置。
【請求項６】
請求項１から４の何れか一項に記載の電子制御装置において、
前記判定部により前記ＳＤＡ（１７ｃ）に異常を生じたと判定された場合、
前記書換部は、新たなＳＤＡ（１７ｄ）の必要領域分の領域を、空き領域（１９）、又は／及び、現在又は過去のＳＤＡ（１７ｂ、１７ｃ）の正常判断領域を含めた領域に連続的に確保可能なことを条件として、前記ＳＤＡ特定アドレスを書換えることで当該領域に新たなＳＤＡ（１７ｄ）を確保する電子制御装置。
【請求項７】
請求項１から４の何れか一項に記載の電子制御装置において、
前記判定部により前記ＳＤＡ（１７ｄ）に異常を生じたと判定された場合、
新たなＳＤＡ（１７ｅ）の必要領域分の領域を、空き領域、又は／及び、現在又は過去のＳＤＡの正常判断領域を含めた領域に連続的に確保できないことを条件として、過去に異常判定された領域（RAM_C）の異常状態を再確認する再確認部（Ｓ１２）をさらに備え、
前記書換部は、前記再確認部により再確認された領域が正常となり且つ前記新たなＳＤＡの必要領域分の領域を連続的に確保可能となることを条件として、前記ＳＤＡ特定アドレスを書換えることで当該領域に前記新たなＳＤＡを確保する電子制御装置。
【請求項８】
請求項５から７の何れか一項に記載の電子制御装置において、
異常時に処理するフェールセーフ処理を実行指令するフェールセーフ指令部（Ｓ８）をさらに備え、
前記フェールセーフ指令部は、前記新たなＳＤＡの必要領域分の領域を確保できない場合には異常時に処理するフェールセーフ処理を実行指令する電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
一般に、システムは異常検出したとしても制御を継続して行うためこの異常状態から復旧する手段を備える。この種のシステムとして例えばＲＡＭにミラーチェック技術を採用しているものがある（例えば、特許文献１参照）。この特許文献１記載の技術によれば、データをＲＡＭに格納する際に同じデータを複数のアドレスに格納し、その格納された複数のデータを再度読出して比較し同一内容か否かを調査している。ＲＡＭのデータが一部壊れたとしても、このような処理を行うことに応じて突然制御不能に陥らないようにすることができる。
【０００３】
しかし、この種の従来技術では、ＲＡＭがハードウェア的な異常を生じたときには、データを復旧させることができず、システムは通常制御を停止してしまい、必要に応じてフェールセーフ処理に移行してしまうという問題を生じる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２９３６４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、メモリに異常を生じたとしてもフェールセーフ処理に移行することなく通常制御を続行できるようにした電子制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１記載の発明によれば、スモールデータ領域（以下、ＳＤＡと称す）は、他の領域よりもアクセス速度が速く重要度の高いデータを保持するが、特定アドレス記憶部は、このＳＤＡに相対アドレス指定によりアクセスするための特定アドレスを記憶する。判定部は、ＳＤＡに異常を生じたか否かを判定し、異常を生じたと判定されたときには、書換部が特定アドレス記憶部のＳＤＡ特定アドレスを書き換える。これにより、たとえＳＤＡに異常を生じたとしても、書換部がＳＤＡ特定アドレスを書き換えることでＳＤＡを動的に移動させることができる。これにより、他のメモリ空間のＳＤＡに重要度の高いデータを移動させることができ、メモリに異常を生じたとしても、システムがフェールセーフ処理に移行することなく通常制御を続行できる。
【図面の簡単な説明】
【０００７】
【図１】一実施形態における電子制御装置の電気的構成図
【図２】処理を概略的に示すフローチャート
【図３】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その１）
【図４】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その２）
【図５】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その３）
【図６】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その４）
【図７】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その５）
【図８】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その６）
【図９】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その７）
【図１０】メモリ空間と特定アドレスとの関係を概略的に示す説明図（その８）
【発明を実施するための形態】
【０００８】
以下、電子制御装置の一実施形態について図面を参照しながら説明する。図１は電子制御装置（ＥＣＵ：Electronic Control Unit）１の電気的構成をブロック図により概略的に示している。図１に示すように、電子制御装置１は、マイクロコンピュータ（以下、マイコンと略す）２を主として構成され、センサ信号入力部３、及び、アクチュエータ駆動部４を備える。センサ信号入力部３には、電子制御装置１の外部に各種のセンサ５が接続されており、センサ信号入力部３はこのセンサ５により出力されるセンサ信号を入力する。センサ５は、例えばアクセルセンサ、ノックセンサ、酸素（Ｏ２）センサなど各種車両関連情報を検出するためのセンサである。また、アクチュエータ駆動部４は、電子制御装置１の外部に接続されるアクチュエータ６を駆動する。アクチュエータ６は、例えば電子スロットルなどの車両負荷であり、例えばスロットルバルブを開閉するためのモータなど各種車両関連アクチュエータを挙げることができる。
【０００９】
マイコン２は、ＣＰＵ７、メモリ８、入力インタフェース９、及び、出力インタフェース１０を備える。メモリ８は、ＲＯＭ１１、ＲＡＭ１２、フラッシュメモリ等の不揮発性メモリ１３を備える。ＲＯＭ１１には動作用プログラムが格納されており、ＣＰＵ７はＲＯＭ１１に格納された動作用プログラムを実行することで、判定部、書換部、通常制御継続部、異常領域記憶制御部、カウント部、フェールセーフ指令部としての機能を実現する。これらの動作用プログラムを非遷移的実体的記録媒体に記憶するようにしても良い。また、ＣＰＵ７は、データの読み書きを高速に行うことが可能なレジスタ１４を備えている。
【００１０】
ＲＡＭ１２は、図示しないイグニッションスイッチがオンされ動作用のバッテリ電圧が通電された後に不揮発性メモリ１３からデータ転送されることで種々のデータを格納する。ＲＡＭ１２のメモリ空間は、スモールデータ領域（以下、ＳＤＡと称す：Small Data Area）１７と、非ＳＤＡ１８と、空き領域１９とに分けられている。
【００１１】
非ＳＤＡ１８は、ＣＰＵ７がＲＯＭ１１に格納されたプログラムを実行しデータ処理を行っている最中に各種定数又は変数を格納するワークエリア等の領域とされている。通常、ＣＰＵ７がプログラムを実行することで非ＳＤＡ１８にアクセスするときには絶対アドレス指定することでアクセスする。また通常、ＳＤＡ１７は、１ｋ、４ｋ、８ｋ、１６ｋ、３２ｋ、６４ｋなどの所定の単位領域のメモリ領域分だけ確保される。ＳＤＡ１７に格納されるデータは、例えば非ＳＤＡ１８に格納されるデータに比較して重要度が高く設定されるデータであり、例えばアクセルセンサ、ノックセンサや酸素濃度センサなど各種センサの学習値、電子スロットルのモータの制御値などのアクチュエータの学習値などが挙げられる。またＳＤＡ１７には、この重要度の高いデータのそれぞれについてミラーデータがミラー領域に保存されている。説明の簡略化のため、このミラーデータを保存するミラー領域は図示していない。
【００１２】
ＣＰＵ７は、各種データを保持するためにレジスタ１４を備える。このレジスタ１４は、汎用レジスタ１５の他、特定アドレス記憶部としてのＳＤＡ特定レジスタ１６を備える。このＳＤＡ特定レジスタ１６は、ＲＡＭ１２のＳＤＡ１７の内部のある特定アドレス（例えば、ＳＤＡの領域の中心を示す中央アドレス）を指定するために設けられている。
【００１３】
ＣＰＵ７が、ＳＤＡ１７の内部のメモリ領域にアクセスするときには、ＳＤＡ特定レジスタ１６に格納された特定アドレスを読出し、この特定アドレスから相対的にＳＤＡ１７の内部のアドレスを指定する。ＣＰＵ７が、この処理に応じてＳＤＡ１７の内部のあるアドレスにアクセスするときには、相対アドレス指定によりアクセスすることになるため前述の絶対アドレス指定処理よりステップ数を削減でき、これにより、ＳＤＡ１７は非ＳＤＡ１８よりもアクセス速度を高速にできるメモリ領域とされている。
【００１４】
またＣＰＵ７は、入力インタフェース９を通じてセンサ信号入力部３からセンサ信号を入力し、汎用レジスタ１５等に格納し、ＣＰＵ７は汎用レジスタ１５等に格納されたデータをプログラムに応じて演算部７ａにより演算し、出力インタフェース１０を通じてアクチュエータ駆動部４に出力し、アクチュエータ駆動部４はアクチュエータ６を駆動する。
【００１５】
前述した構成の意義と作用効果について説明する。
ＥＣＵ１が、例えば車両用のセンサ５からセンサ信号を取得しアクチュエータ６を通常駆動制御しているときには、様々な緊急事態を生じることが想定される。ＥＣＵ１は、緊急事態を生じたときには例えば安全に車両の運転を停止できるようにフェールセーフ処理する。ＥＣＵ１は、フェールセーフ処理に移行すると例えばセンサ５のセンサ信号に基づくアクチュエータ６の駆動処理を停止する。
【００１６】
このとき、例えばドライバがアクセルを踏み込んだときに、センサ５となるアクセルセンサ等がこのセンサ情報の変化を検知したとしても、例えばアクチュエータ６となる電子スロットルのモータの駆動を停止することでスロットルバルブの開状態を固定的に保持してしまうこともあり、この場合、復旧にはディーラー等による修理、点検を要することにもなる。
【００１７】
他方、ＲＡＭ１２がハードウェア的な異常を生じるときには、ＲＡＭ１２のメモリ空間全体が損傷することは稀であり、一部の記憶領域が損傷することで正常なデータの読み書きが不能となることがほとんどである。したがって、ＲＡＭ１２の異常が一部の記憶領域に発生し、データの読み書きを正常にできない場合においても、このデータを復旧できるようであれば、このデータを空き領域１９等の他の記憶領域に書換えることでフェールセーフ処理に移行することなく通常動作を継続することができる。
【００１８】
特に、ＳＤＡ１７に保持されるデータは、例えば非ＳＤＡ１８に保持されるデータに比較して重要度が高く設定されるデータであるため、このデータの正確性を保ちながら通常制御を継続できるようにすることが望ましい。このようなことを想定すると、ＣＰＵ７は、図２に示すように処理を行うことが望ましい。
【００１９】
図２は異常時に行われる処理を概略的に示している。まず図２に示すように、ＣＰＵ７は、Ｓ１〜Ｓ３においてＳＤＡ特定レジスタを参照し、ＳＤＡ特定アドレスを含むＳＤＡ１７の領域の異常の有無を判定する。
【００２０】
このステップＳ１〜Ｓ３の異常検出方法は、リードライト（Ｒ／Ｗ）チェックなどの方法を用いることができる。例えばＣＰＵ７が、リードライトチェックにより異常の有無を判定するときには、Ｓ１においてＳＤＡ１７として割当てられている領域RAM_Aの値を汎用レジスタ１５に転送し、Ｓ２において領域RAM_Aに所定値を書込んでその書き込み値を読み出した結果が所定値に一致するか否かを判定する。ＣＰＵ７は、リードライトチェックを実施した結果、Ｓ３において領域RAM_Aが正常であるか否かを判定できる。また、この図２のＳ１〜Ｓ３には図示していないが、ＲＡＭ１２のミラー領域に予め設けられたミラーデータを用いてミラーチェックを行い異常の有無を判定しても良い。
【００２１】
ＣＰＵ７は、これらのＳ１〜Ｓ３の処理を行った結果、異常なしと判断したときに、Ｓ４において通常制御を継続する。また、ＣＰＵ７は、Ｓ１〜Ｓ３の処理を行った結果、異常ありと判断したときにはＳ３でＮＯと判定し、Ｓ５においてＲＡＭ１２のリードライトチェックで異常を生じたＳＤＡ１７の内部のアドレスを例えば非ＳＤＡ１８のワークエリア内に記憶する。ＣＰＵ７は、この異常を生じたＳＤＡ１７の内部のアドレスを不揮発性メモリ１３に記憶させるようにしても良い。またＣＰＵ７は、Ｓ６においてＳＤＡ１７の異常回数をインクリメントすることでカウントする。カウントする値はインクリメント値１に限られない。そしてＣＰＵ７は、Ｓ７において異常を生じた回数が所定回数以下であるか否かを判定する。この所定回数は、ＲＡＭ１２の空き領域１９の記憶容量に応じて定められる回数である。
【００２２】
ＣＰＵ７は、Ｓ７において異常回数が所定回数を超えたと判定すると、Ｓ７でＮＯと判定し、Ｓ８においてフェールセーフ処理を実行指令する。ＣＰＵ７がフェールセーフ処理を実行指令すると、ＥＣＵ１はアクチュエータ駆動部４により例えばアクチュエータ６を駆動停止する。この場合、ＥＣＵ１はセンサ５を通じて取得されるドライバの要求（例えばアクセルの踏み込み度）に応じたアクチュエータ６の駆動制御が不能となる。例えば、アクチュエータ６が、電子スロットルのモータであるときには、アクチュエータ駆動部４はバルブの開度を所定の開度とするようにモータを駆動する。また、フェールセーフ処理に移行すると、ＣＰＵ７は、例えばこのことを外部ユーザに警告報知することで早期交換、修理を促す。
【００２３】
他方、ＣＰＵ７は、Ｓ７において異常回数が所定回数以下であると判定した場合には、他の現在のＳＤＡ１７、又は／及び、空き領域１９を含んだ領域にＳＤＡ１７を確保できる可能性があることから、下記のステップＳ９〜Ｓ１５の処理を実行する。ＣＰＵ７は、Ｓ９にて新たにＳＤＡ１７を確保可能か否かを判定する。このとき新たなＳＤＡ１７の探索領域は、非使用のＲＡＭ１２の空き領域１９と、使用中のＳＤＡ１７の正常判断領域と、を含んだ領域を示している。
【００２４】
ここでＣＰＵ７が、Ｓ９において新たにＳＤＡ１７を確保可能と判定した場合、Ｓ１０においてＳＤＡ特定レジスタを書換えることでＳＤＡ１７の指定アドレス範囲を動的に移動させる。そしてＣＰＵ７は、Ｓ１１において、汎用レジスタ１５に一時保管されている領域RAM_Aのデータについてのミラーデータを取得して更新し、このデータを含み使用中のＳＤＡ１７のデータを新たに確保したＳＤＡ１７に転送する。ＣＰＵ７は、Ｓ１１において使用中のＳＤＡ１７のデータを新たに確保したＳＤＡ１７に格納した後、Ｓ４に移行し通常制御を継続する。これにより、従来技術では正常復帰することができないようなＲＡＭ１２の異常を検出した場合であっても、ＳＤＡ１７を動的に再配置できることになり、フェールセーフ処理に移行することなく通常制御を継続できる。
【００２５】
またＣＰＵ７は、Ｓ９において新たなＳＤＡ１７を確保不可能と判定した場合には、Ｓ１２において過去に異常判定されたＲＡＭ１２の領域の異常状態を再確認する。この処理は、何らかの影響により前回の異常判定処理（Ｓ１〜Ｓ３）に間違いを生じている可能性を考慮して実施される処理であり、ＣＰＵ７はＲＡＭ１２にＳＤＡ１７を確保可能か再確認する。
【００２６】
そしてＣＰＵ７は、Ｓ１３において異常判定されていた領域に正常箇所が存在すると判定したときには、Ｓ１４においてＲＡＭ１２の異常領域を更新する。そしてＣＰＵ７は、Ｓ１５においてＲＡＭ１２の領域にＳＤＡ１７の必要領域分の存在を確認したときには、Ｓ１０へ移行しＳＤＡ特定アドレスを書換える。そしてＣＰＵ７は、Ｓ１１において汎用レジスタ１５に一時保管されたデータについてのミラーデータを取得して更新し、このデータを含み使用中のＳＤＡ１７のデータを新たに確保したＳＤＡ１７に転送する。そしてＣＰＵ７はＳ４において通常制御を継続する。ＣＰＵ７は、Ｓ１５においてＳＤＡ必要領域を確保できないと判定した場合には、Ｓ８においてフェールセーフ処理を実行指令する。
【００２７】
以下、具体例について図３〜図１０を参照しながら説明する。
＜具体例１：図３〜図５＞
例えば、まずＣＰＵ７が、図３に示すように、ＳＤＡ特定アドレスを０ｘ４０００８０００に設定し、図２のＳ１〜Ｓ３においてリードライト（Ｒ／Ｗ）チェックをした結果、領域RAM_Aは正常であると判断したものの、領域RAM_Bに異常があると判断する。
【００２８】
このとき図４に示すように、ＣＰＵ７は、領域RAM_Bに格納された値のミラーデータを汎用レジスタ１５に退避して更新する。そして、図５に示すように、ＣＰＵ７は、例えばＳＤＡ特定アドレスを０ｘ４０００８４００に書き換え、汎用レジスタ１５内に退避された領域RAM_Bの更新後のデータを含むと共に、領域RAM_A…を含む旧ＳＤＡ１７ａの内部の全データを新たなＳＤＡ１７ｂに書き込む。これにより、ＳＤＡ１７を動的に移動することで、領域RAM_A、RAM_B…のデータを再配置でき、通常制御を継続できる。
【００２９】
＜具体例２：図６＞
例えば、具体例１の後、図６に示すように、さらに新たな２回目のＳＤＡにおいても領域RAM_Cに異常が見つかったときには、ＣＰＵ７は、この領域RAM_Cのデータのミラーデータを汎用レジスタ１５に退避して更新する。そして、ＣＰＵ７は、例えばＳＤＡ特定アドレスを０ｘ４０００８８００に書換え、領域RAM_Cの更新後のデータを含むと共に、領域RAM_A、RAM_B…を含む１回目のＳＤＡ１７ａの内部の全データを新たな３回目のＳＤＡ１７ｃに書き込む。これにより、２回目のＳＤＡ１７ｂの内部データを動的に移動することで領域RAM_A、RAM_B、RAM_C…を再配置でき、通常制御を継続できる。
【００３０】
＜具体例３：図７〜図８＞
例えば、具体例２の後、図７に示すように、さらに新たな３回目のＳＤＡ１７ｃにおいても領域RAM_Dに異常が見つかったときには、ＣＰＵ７は、この領域RAM_Dのデータのミラーデータを汎用レジスタ１５に退避して更新する。そしてＣＰＵ７は、異常を生じていない領域のアドレスを含まないように新たなＳＤＡ１７を空き領域に確保できるか確認する。ＣＰＵ７は、アドレスが連続した空き領域１９だけで確保できないとき等には、ＳＤＡ１７（例えば１７ｃ）の中でも領域が正常であると判断されている領域を含んだ領域を新たな４回目のＳＤＡ１７ｄとして設定する。
【００３１】
この具体例３では、ＣＰＵ７は、図２のステップＳ９の具体的処理として空き領域１９だけでＳＤＡ１７ｄを確保できないと判断し、正常判断されている領域、すなわち現在のＳＤＡ１７ｃの一部を含む領域を新たなＳＤＡ１７ｄとして設定する例を示しているが、新たなＳＤＡ１７を確保可能な領域としては、正常判断されている領域であれば良く、例えば図８中ではＳＤＡ１７ａ、１７ｂ、１７ｃの中の正常判断領域を利用するようにしても良い。すなわち、ＳＤＡ１７の中でも、現在又は過去に正常判断された正常判断領域と空き領域１９とを組み合わせて新たなＳＤＡ１７の領域を確保しても良い。
【００３２】
そしてＣＰＵ７は、汎用レジスタ１５にて更新した領域RAM_Dの更新後のデータを含むと共に領域RAM_A、RAM_B、RAM_C…を含む３回目のＳＤＡ１７ｃ内の全データを新たな４回目のＳＤＡ１７ｄに書込む。このとき、例えば、ＳＤＡ１７ｄが、ＳＤＡ１７ｃに比較してよりアドレス値の大きなアドレス空間に確保できるのであれば、ＣＰＵ７は、３回目のＳＤＡ１７ｃの内部の最大アドレスから最小アドレスにかけて、４回目のＳＤＡ１７ｄの内部の最大アドレスから最小アドレスに向けて順に転送することで３回目のＳＤＡ１７ｃの内部データを全て４回目のＳＤＡ１７ｄに転送できる。ＳＤＡ１７ｄが、ＳＤＡ１７ｃに比較してよりアドレス値の小さなアドレス空間に確保できるのであれば、ＣＰＵ７は、３回目のＳＤＡ１７ｃの内部の最小アドレスから最大アドレスにかけて、４回目のＳＤＡ１７ｄの内部の最小アドレスから最大アドレスに向けて順に転送することで３回目のＳＤＡ１７ｃの内部データを全て４回目のＳＤＡ１７ｄに転送できる。これにより、ＳＤＡ１７ｃの内部データを動的に移動することで領域RAM_A、RAM_B、RAM_C、RAM_D…のデータを再配置でき、通常制御を継続できる。この場合、空き領域１９だけを使用するのではなく、現在又は過去に使用していたＳＤＡ１７ａ、１７ｂ、１７ｃの正常判断領域を含めた領域を再利用することができる。
【００３３】
＜具体例４：図９〜図１０＞
例えば、具体例３の後、図９に示すように、さらに新たな４回目のＳＤＡ１７ｄの内部においても領域RAM_Eに異常が見つかったときには、ＣＰＵ７は、この領域RAM_Dのデータのミラーデータを汎用レジスタ１５に退避して更新する。そして、ＣＰＵ７は異常を生じていないアドレスを含まないように新たな５回目のＳＤＡ１７ｅを確保可能であるか確認するが、全ての空き領域１９及びＳＤＡ１７の中でも正常判断されている領域を含んだ領域に新たなＳＤＡ１７を確保不能と判断することもある（図２のＳ９でＮＯ）。
【００３４】
このようなとき、ＣＰＵ７は、図２のＳ１２において過去に異常判定された領域の異常状態を再確認する。このとき、ＣＰＵ７はワークエリア又は不揮発性メモリ１３に記憶された異常判定された領域のアドレス値を参照し、そのアドレスの示す領域が正常に記憶可能であるか否かを判定する。この正常か否かの判定方法はリードライトチェックにより行われることが望ましい。
【００３５】
図９に示すように、以前領域RAM_Cが異常であると判定されていたものの、再度チェックした結果、正常と判定したときには、領域RAM_Cを正常箇所と判定し、図２のＳ１４においてＲＡＭ１２の異常領域を更新し、図２のＳ１５において新たなＳＤＡ１７ｅを確保可能か否かを判定する。
【００３６】
ここでＣＰＵ７は、新たなＳＤＡ１７ｅを確保可能なことを確認すると、図２のＳ１０においてＳＤＡ特定アドレスを０ｘ４０００８７００のように書換えることで、図１０に示すように、領域RAM_Cを含む領域を新たな５回目のＳＤＡ１７ｅとして設定できる。
【００３７】
＜具体例５＞
図２のＳ７において、判定する異常回数の閾値の所定回数が１回に設定されている場合、ＣＰＵ７は、図３に示すように領域RAM_Bを異常と判断したタイミングでＳＤＡ１７の異常回数を１回とカウントするが、その後、図６に示すように、２回目に領域RAM_Cの異常を生じると、ＳＤＡ１７の異常回数を２回とカウントする。この場合、たとえＲＡＭ１２に新たなＳＤＡ１７ｃを確保可能な空き領域１９が残存していたとしても、ＣＰＵ７は、図２のＳ８に移行しフェールセーフ処理を実行指令する。説明の簡単化のため、所定回数を１回として説明したが、例えばメモリ８が経年劣化などを生じ異常頻度が短期間に増加する場合には、この異常回数が短期間の間に大幅に増加することが想定される。このようなときには重大な故障につながる前にフェールセーフ処理に移行するように制御すると良い。またフェールセーフ処理に移行したことを外部ユーザに警告報知することで早期交換、修理を促すことができる。
【００３８】
このような具体例１〜５の他にも様々な具体例が考えられるが、その説明は省略する。
本実施形態の特徴を概念的にまとめる。
ＣＰＵ７は、ＳＤＡ１７の領域に異常を生じたか否かを判定し、異常を生じたと判定されたときには、ＳＤＡ特定レジスタ１６のＳＤＡ特定アドレスを書き換える。これにより、たとえＳＤＡ１７に異常を生じたとしても、ＣＰＵ７が、ＳＤＡ特定アドレスを書き換えることでＳＤＡ１７を動的に移動させることができる。これにより、他のメモリ空間に重要度の高いデータを移動させることができ、ＲＡＭ１２のある領域に異常を生じたとしても、フェールセーフ処理に移行することなく通常制御を続行できる。
【００３９】
ＣＰＵ７は、ＳＤＡ特定アドレスが書き換えられることを条件として異常時に処理するフェールセーフ処理を実行することなく通常時に処理する通常制御処理を継続するようにしている。このため、ＲＡＭ１２の領域に一部異常を生じたとしても通常制御を継続できる。
【００４０】
ＣＰＵ７は、ＳＤＡ１７ａ〜１７ｄに異常を生じたと判定された場合、異常を生じた領域をＲＡＭ１２の非ＳＤＡ１８の内部のワークメモリまたは不揮発性メモリ１３に記憶制御するようにしている。このため、異常を生じた領域を避けて、新たなＳＤＡ１７を確保できるようになる。
【００４１】
ＣＰＵ７は、ＳＤＡ１７、１７ａ〜１７ｄに異常を生じたと判定された場合、異常回数をカウントし、この異常回数が所定回数を超えたことを条件としてフェールセーフ処理に移行するように指令している。経年劣化などによりメモリ８の異常頻度が増加している場合にはフェールセーフ処理に移行することになる。このため、フェールセーフ処理に移行したことを外部ユーザに伝達することができ重大な事故につながる前に早期交換、修理を促すことができる。
【００４２】
ＣＰＵ７は、例えばＳＤＡ１７ａに異常を生じたと判定されたときには、空き領域１９に新たなＳＤＡ１７ｂの必要領域分の領域を連続的に確保できることを条件として、ＳＤＡ特定レジスタを書換えることで空き領域１９に新たなＳＤＡを確保するようにしている。このため、空き領域１９が存在する限り、何度でもＳＤＡ１７を動的に移動させることができる。
【００４３】
ＣＰＵ７は、例えばＳＤＡ１７ｃに異常を生じたと判定されたときには、新たなＳＤＡ１７ｄの必要領域分の領域を、空き領域１９及び現在又は過去のＳＤＡ１７ｂ、１７ｃの正常判断領域を含めた領域に連続的に確保可能なことを条件として、ＳＤＡ特定アドレスを書換えることで当該領域に新たなＳＤＡ１７ｄを確保するようにしている。これにより、空き領域１９だけを使用するのではなく、現在使用しているＳＤＡ１７ｃの正常判断領域を含めた領域を再利用することができる。
【００４４】
ＣＰＵ７は、新たなＳＤＡ１７ｅの必要領域分の領域を、空き領域１９、又は／及び、現在又は過去のＳＤＡの正常判断領域を含めた領域に連続的に確保できないことを条件として、過去に異常判定された領域RAM_Cの異常状態を再確認し、再確認された領域が正常となり且つ新たなＳＤＡ１７ｅの必要領域分を確保可能となることを条件として、ＳＤＡ特定アドレスを書換えることで当該領域に新たなＳＤＡ１７ｅを確保するようにしている。このため、再確認の結果、正常と判断された領域を含めて新たなＳＤＡ１７ｅの必要領域分を連続的に確保可能となればＳＤＡ特定アドレスを書換えることで新たなＳＤＡ１７ｅを確保できるようになる。このため、通常制御を継続できる可能性を高めることができる。
【００４５】
ＣＰＵ７は、新たなＳＤＡ（例えば１７ｅ）の必要領域分の領域を確保できない場合には、フェールセーフ処理を実行指令するようにしている。このため、メモリ８の異常を確実に検出し、フェールセーフ処理を実施できる。
【００４６】
（他の実施形態）
本発明は、前述した実施形態に限定されるものではなく、種々変形して実施することができ、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。例えば、以下に示す変形又は拡張が可能である。
【００４７】
例えば、特許文献１に示される技術を組み合わせて実行することもできる。特許文献１記載の技術によれば、例えば、制御用データ保存領域としての領域RAM_W、制御用ミラーデータ保存領域としての領域RAM_X、バックアップ用データ保存領域としての領域RAM_Y、バックアップ用ミラーデータ保存領域としての領域RAM_Z、に互いに一義的に導出可能な関係（例えば、互いに値が一致する関係となるミラーデータ、同一データ、またはビットデータを反転させた反転データ）があったときに、まず、ＣＰＵが領域RAM_W、RAM＿Xのリードライトチェックをし、異常なしと判定されたことを条件として、領域RAM_W、RAM_Xのミラーチェックを行いミラーチェックを正常と判定したことを条件として通常制御を継続するが、領域RAM_W、RAM_Xに異常があったときにも領域RAM_Y、RAM_Zに異常がなければ、領域RAM_Y、RAM_Zのミラーチェックを行い、ミラー正常であれば領域RAM_Y、RAM_Zで領域RAM_W、RAM_Xを復旧する。
【００４８】
すなわち、前述実施形態に示したミラーデータ以外にも、同一データ、または、ビットデータを反転させた反転データ、をＳＤＡ１７又は非ＳＤＡ１８等の他の領域に同様に記憶させていれば、これらのデータを、汎用レジスタ１５に退避したデータに代えて用いることで正確なデータを新たなＳＤＡ（例えば１７ｂ）に更新できる。
【００４９】
ＣＰＵ７が、判定部、書換部、通常制御継続部、異常領域記憶制御部、カウント部、フェールセーフ指令部、再確認部としての機能を実現する形態を示しているが、これらの機能を他の装置と共に分割して協調動作するようにしても良い。
【００５０】
前述実施形態では、ＳＤＡ１７のある領域（例えばRAM_A）に異常が生じたときに、汎用レジスタ１５にミラーデータを退避して更新するようにしたが、異常が確認された領域（例えばRAM_B）の値を汎用レジスタ１５に退避し、この退避した値をそのまま用いたり、その他例えばＥＣＣ等のエラー訂正技術を用いてエラー訂正処理により更新しても良い。
【００５１】
図２のフローチャートに示した各処理は、実用的であれば処理順序を入れ替えて行っても良いし、その他、処理を削除したり可能な限り変更しても良い。例えば、ＣＰＵ７がＳＤＡ１７ｃを確保した後、図７に示すように領域RAM_Dに異常が生じたと判定されたときに、空き領域１９が残存していないことを条件として新たなＳＤＡ１７ｄを確保できないと判断することで、Ｓ８においてフェールセーフ処理を実行指令するようにしても良い。
【００５２】
また、例えば、ＣＰＵ７がＳＤＡ１７ｄを確保した後、図９に示すように領域RAM_Eに異常が生じたと判定されたときに、図２のＳ１２〜Ｓ１５に示す正常箇所の再確認処理を省いて、Ｓ８においてフェールセーフ処理を実行指令するようにしても良い。
【００５３】
前述した実施形態の各要素を組み合わせて構成しても良い。また、特許請求の範囲に記載した括弧内の符号は、本発明の一つの態様として前述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。前述実施形態の一部を、課題を解決できる限りにおいて省略した態様も実施形態と見做すことが可能である。また、特許請求の範囲に記載した文言によって特定される発明の本質を逸脱しない限度において、考え得るあらゆる態様も実施形態と見做すことが可能である。
【００５４】
本開示は、前述した実施形態に準拠して記述したが、本開示は当該実施形態や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範畴や思想範囲に入るものである。
【符号の説明】
【００５５】
図面中、１は電子制御装置、７はＣＰＵ（判定部、書換部、通常制御継続部、異常領域記憶制御部、カウント部、フェールセーフ指令部、再確認部）、１６はＳＤＡ特定レジスタ（特定アドレス記憶部）、１２はＲＡＭ、１７、１７ａ〜１７ｅはＳＤＡ、１９は空き領域、を示す。
【図１】
2018063527.tif 000003
【図２】
2018063527.tif 000004
【図３】
2018063527.tif 000005
【図４】
2018063527.tif 000006
【図５】
2018063527.tif 000007
【図６】
2018063527.tif 000008
【図７】
2018063527.tif 000009
【図８】
2018063527.tif 000010
【図９】
2018063527.tif 000011
【図１０】
2018063527.tif 000012