(57)【要約】【課題】停止異常を検出すること。【解決手段】実施形態に係る記憶装置は、転送部と、更新部と、検出部とを備える。転送部は、起動時に不揮発性メモリから揮発性メモリへ読み出しデータを転送し、正常停止時に揮発性メモリから不揮発性メモリへ書き込みデータを転送する。更新部は、転送部によって読み出しデータが転送される場合に、不揮発性メモリ内の所定のデータ領域の値を更新し、書き込みデータが転送される場合に、不揮発性メモリ内の他のデータ領域の値を更新する。検出部は、所定のデータ領域の値と他のデータ領域の値とを比較することで、前回の停止時における揮発性メモリの停止異常を検出する。【選択図】図１
2019160080.tif 000002
【特許請求の範囲】
【請求項１】
起動時に不揮発性メモリから揮発性メモリへ読み出しデータを転送し、正常停止時に前記揮発性メモリから前記不揮発性メモリへ書き込みデータを転送する転送部と、
前記転送部によって前記読み出しデータが転送される場合に、前記不揮発性メモリ内の所定のデータ領域の値を更新し、前記書き込みデータが転送される場合に、前記不揮発性メモリ内の他のデータ領域の値を更新する更新部と、
前記起動時に前記所定のデータ領域の値と前記他のデータ領域の値とを比較することで、前回の停止時における前記揮発性メモリの停止異常を検出する検出部と
を備えることを特徴とする制御装置。
【請求項２】
前記転送部は、
前記停止異常が検出された場合に、一旦、転送した前記読み出しデータを代替値で上書きすること
を特徴とする請求項１に記載の制御装置。
【請求項３】
前記不揮発性メモリは、
前記起動時に前記読み出しデータが転送され、前記正常停止時に前記書き込みデータが転送される更新データ領域と、前記更新データ領域に対応付けられた識別領域と、要求に応じて前記読み出しデータと前記書き込みデータが転送される要求データ領域と、を有し、
前記更新部は、
前記起動時に前記更新データ領域から前記読み出しデータが転送された転送回数の累計値を前記要求データ領域に書き込み、前記正常停止時に前記書き込みデータが前記更新データ領域へ転送された転送回数の累計値を前記識別領域に書き込むこと
を特徴とする請求項１または２に記載の制御装置。
【請求項４】
前記起動時に前記揮発性メモリ内に記憶されたデータの総容量に基づき、前記データの破損の有無を判定する判定部
をさらに備え、
前記転送部は、
前記判定部によって前記データの破損がないと判定された場合に、前記読み出しデータの転送を行わないこと
を特徴とする請求項１、２または３に記載の制御装置。
【請求項５】
起動時に不揮発性メモリから揮発性メモリへ読み出しデータを転送し、正常停止時に前記揮発性メモリから前記不揮発性メモリへ書き込みデータを転送する転送工程と、
前記転送工程によって前記読み出しデータが転送される場合に、前記不揮発性メモリ内の所定のデータ領域の値を更新し、前記書き込みデータが転送される場合に、前記不揮発性メモリ内の他のデータ領域の値を更新する更新工程と、
前記起動時に前記所定のデータ領域の値と前記他のデータ領域の値とを比較することで、前回の停止時における前記揮発性メモリの停止異常を検出する検出工程と
を含むことを特徴とする異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置および異常検出方法に関する。
【背景技術】
【０００２】
従来、不揮発性メモリは書き込み回数に制限があるため、不揮発性メモリから揮発性メモリにデータを一旦転送し、揮発性メモリ上でデータの更新を行う制御装置がある（例えば、特許文献１参照）。
【０００３】
かかる制御装置では、電源が正常に遮断される場合、揮発性メモリから不揮発性メモリにデータを転送することで、不揮発性メモリに遮断直前の最新のデータを格納させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】２０１４−１８２４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、電源瞬断等の停止異常を検出することができなかった。かかる停止異常では、前回正常に停止したときのデータを不揮発性メモリから揮発性メモリに転送するおそれがあり、停止異常前のデータを引き継ぐことができない。
【０００６】
本発明は、上記に鑑みてなされたものであって、停止異常を検出することができる制御装置および異常検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、実施形態に係る制御装置は、転送部と、更新部と、検出部とを備える。前記転送部は、起動時に不揮発性メモリから揮発性メモリへ読み出しデータを転送し、正常停止時に前記揮発性メモリから前記不揮発性メモリへ書き込みデータを転送する。前記更新部は、前記転送部によって前記読み出しデータが転送される場合に、前記不揮発性メモリ内の所定のデータ領域の値を更新し、前記書き込みデータが転送される場合に、前記不揮発性メモリ内の他のデータ領域の値を更新する。前記検出部は、前記起動時に前記所定のデータ領域の値と前記他のデータ領域の値とを比較することで、前回の停止時における前記揮発性メモリの停止異常を検出する。
【発明の効果】
【０００８】
本発明によれば、停止異常を検出することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、異常検出方法の概要を示す図である。
【図２】図２は、制御装置のブロック図である。
【図３】図３は、不揮発性メモリの構成例を示す模式図である。
【図４】図４は、正常時におけるメモリ制御部の処理の具体例を示す図である。
【図５Ａ】図５Ａは、異常対応処理の具体例を示す図である。
【図５Ｂ】図５Ｂは、代替値の具体例を示す図である。
【図６】図６は、制御装置が実行する処理手順を示すフローチャート（その１）である。
【図７】図７は、制御装置が実行する処理手順を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して、実施形態に係る制御装置および異常検出方法について説明する。なお、以下に示す実施形態によりこの発明が限定されるものではない。
【００１１】
まず、図１を用いて実施形態に係る異常検出方法の概要について説明する。図１は、異常検出方法の概要を示す図である。本実施形態に係る異常検出方法は、後述する制御装置によって実行される。また、以下では、制御装置が車両の制御に用いられる各種データを記憶する場合について説明する。
【００１２】
図１に示すように、実施形態に係る異常検出方法は、起動時（例えば、ＩＧ−ＯＮ）に書き換え可能な不揮発性メモリＭ１から揮発性メモリＭ２へ読み出しデータを転送する。そして、実施形態に係る異常検出方法は、正常停止時（例えば、ＩＧ−ＯＦＦ）に揮発性メモリＭ２から不揮発性メモリＭ１へ書き込みデータを転送する。
【００１３】
これは、不揮発性メモリＭ１には、書き込み回数に上限があり、揮発性メモリＭ２よりも読み出し・書き込み処理に時間がかかるためである。すなわち、実施形態に係る制御装置１（図２参照）は、起動時に不揮発性メモリＭ１から揮発性メモリＭ２にデータを一旦転送し、揮発性メモリＭ２内で読み出し・書き込みを行う。
【００１４】
そして、実施形態に係る制御装置１は、正常停止時に揮発性メモリＭ２に格納されたデータを不揮発性メモリＭ１へ転送する。このように、実施形態に係る制御装置１は、不揮発性メモリＭ１の書き込み・読み出し回数を最小限にとどめることで、不揮発性メモリＭ１の書き込み回数を削減しつつ、読み出し・書き込み処理の高速化を図ることができる。
【００１５】
しかしながら、例えば、電源瞬断等の停止異常が発生した場合、揮発性メモリＭ２に格納されたデータを不揮発性メモリＭ１へ格納することができない場合がある。
【００１６】
具体的には、実施形態に係る制御装置１は、ＩＧスイッチに連動してバッテリから電源が供給され、ＩＧスイッチＯＦＦを検出すると、揮発性メモリＭ２に格納されたデータを不揮発性メモリＭ１へ格納する処理を行った後、電源を遮断する。例えば、バッテリ電圧が低下した場合、制御装置１に対する電源の供給が遮断され、電源瞬断が発生する。
【００１７】
かかる電源瞬断の時間が所定時間以上続くと、揮発性メモリＭ２の書き込みデータを不揮発性メモリＭ１へ転送することなく、制御装置１が再起動する場合がある。
【００１８】
かかる場合に、電源の回復に伴い制御装置１が、再起動すると、不揮発性メモリＭ１から揮発性メモリＭ２へ読み出しデータを転送するが、この読み出しデータは前回の起動時に読み出されたデータであって、瞬断直前に揮発性メモリＭ２に格納されていたデータと異なっている。
【００１９】
したがって、再起動前の揮発性メモリＭ２に格納されていた最新のデータと異なるデータが揮発性メモリＭ２に書き込まれる。つまり、停止異常時において、揮発性メモリＭ２は停止異常前のデータを引き継ぐことができない場合がある。
【００２０】
そこで、実施形態に係る異常検出方法では、電源瞬断等の停止異常を検出することとした。つまり、実施形態に係る異常検出方法では、読み出しデータの転送時および書き込みデータの転送時で異なるデータ領域の値を更新し、かかる値を比較することで停止異常を検出することとした。
【００２１】
具体的には、図１に示すように、実施形態に係る異常検出方法では、起動時において不揮発性メモリＭ１内のデータ領域Ｒａ１の値とデータ領域Ｒａｎの値とを比較する（ステップＳ１１）。
【００２２】
後述するように、例えば、データ領域Ｒａ１の値は、起動時に更新される値であり、データ領域Ｒａｎの値は、正常終了時に更新される値である。
【００２３】
図１に示す例では、データ領域Ｒａ１の値とデータ領域Ｒａｎの値とが共に「Ａ」である場合について示している。例えば、実施形態に係る異常検出方法では、データ領域Ｒａ１の値とデータ領域Ｒａｎの値とが一致する場合に、前回の停止が正常停止であることを識別することができる。
【００２４】
続いて、実施形態に係る異常検出方法では、前回の停止が正常停止であった場合に、データ領域Ｒａ１の値を更新する（ステップＳ１２）。同図に示す例では、データ領域Ｒａ１の値を「Ａ→Ａ＋１」へ更新する場合について示している。
【００２５】
そして、実施形態に係る異常検出方法では、不揮発性メモリＭ１のデータ領域Ｒａｎに格納されたデータを揮発性メモリＭ２へ転送する（ステップＳ１３）。
【００２６】
その後、実施形態に係る異常検出方法では、揮発性メモリＭ２内でデータの読み出し・書き込みを行う。そして、実施形態に係る異常検出方法では、ＩＧスイッチＯＦＦを検出すると、終了動作へ移行する。
【００２７】
具体的には、実施形態に係る異常検出方法では、揮発性メモリＭ２に格納されたデータを不揮発性メモリＭ１のデータ領域Ｒａｎへ転送する（ステップＳ２１）。実施形態に係る異常検出方法では、かかる転送が正常に完了した場合に、データ領域Ｒａｎの値を更新する（ステップＳ２２）。
【００２８】
同図に示す例では、データ領域Ｒａｎを「Ａ→Ａ＋１」へ更新し、更新後のデータ領域Ｒａｎの値とデータ領域Ｒａ１の値とが一致する場合について示している。
【００２９】
一方、上述のように、異常終了時においては、揮発性メモリＭ２から不揮発性メモリＭ１へデータが転送されず、データ領域Ｒａｎの値は更新されない。
【００３０】
このため、次回の起動時においてデータ領域Ｒａ１の値とデータ領域Ｒａｎの値とを比較すると、データ領域Ｒａ１の値はＡ＋１であり、データ領域Ｒａｎの値はＡとなっており、両者は異なる値となる。
【００３１】
したがって、実施形態に係る異常検出方法では、データ領域Ｒａ１の値とデータ領域Ｒａｎとの値を比較することで、停止異常を検出することが可能となる。
【００３２】
なお、ここでは、起動時にデータ領域Ｒａ１の値を更新し、正常終了時にデータ領域Ｒａｎの値を更新する場合について説明したが、これに限定されず、起動時にデータ領域Ｒａｎの値を更新し、正常終了時にデータ領域Ｒａ１の値を更新することにしてもよい。
【００３３】
次に、図２を用いて実施形態に係る制御装置１の構成例について説明する。図２は、制御装置１のブロック図である。図２に示すように、制御装置１は、メモリ制御部２と、アプリ制御部３と、不揮発性メモリＭ１と、揮発性メモリＭ２とを備える。
【００３４】
アプリ制御部３は、例えば、車両全体を制御する機能を備え、メモリ制御部２を介して揮発性メモリＭ２から各種制御に必要なデータを読み出す。また、アプリ制御部３は、各種制御の制御結果を揮発性メモリＭ２に書き込むことでかかる制御結果を揮発性メモリＭ２に記憶させる。
【００３５】
メモリ制御部２は、判定部２１、転送部２２と、更新部２３と、検出部２４とを備える。メモリ制御部２およびアプリ制御部３は、例えば、ＣＰＵ（Central  Processing  Unit）、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）、データフラッシュ、入出力ポートなどを有するコンピュータや各種の回路を含む。
【００３６】
コンピュータのＣＰＵは、例えば、ＲＯＭに記憶されたプログラムを読み出して実行することによって、メモリ制御部２の判定部２１、転送部２２、更新部２３、検出部２４およびアプリ制御部３として機能する。
【００３７】
また、メモリ制御部２の判定部２１、転送部２２、更新部２３、検出部２４およびアプリ制御部３の少なくともいずれか一つまたは全部をＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等のハードウェアで構成することもできる。なお、制御装置１は、有線や無線のネットワークで接続された他のコンピュータや可搬型記録媒体を介して上記したプログラムや各種情報を取得することとしてもよい。
【００３８】
メモリ制御部２の判定部２１は、起動時に揮発性メモリＭ２に記憶されたデータの総容量に基づき、データの破損の有無を判定し、判定結果に基づいて転送部２２に対してデータの転送を指示する。
【００３９】
具体的には、まず、判定部２１は、起動している期間に、揮発性メモリＭ２内に記憶されているデータのビット数の合計値（以下、ＳＵＭ値という）を計算し、揮発性メモリＭ２内の所定領域に書き込む。
【００４０】
その後、電源のオフ期間を介して、再度、起動したタイミングで、判定部２１は、ＳＵＭ値を計算し、かかるＳＵＭ値と所定領域に書き込んだＳＵＭ値とを比較する。
【００４１】
このとき、電源のオフ期間が所定期間よりも長ければ、揮発性メモリＭ２に記憶されたデータは消失するので、揮発性メモリＭ２に書き込んだＳＵＭ値も消失する。
【００４２】
一方、電源のオフ期間が所定期間よりも短ければ、揮発性メモリＭ２に記憶されたデータは保持される。このため、再度算出したＳＵＭ値と揮発性メモリＭ２に書き込んだＳＵＭ値とが一致していれば、揮発性メモリＭ２に記憶されたデータは破損していないことを意味する。
【００４３】
すなわち、かかる場合に、揮発性メモリＭ２に記憶されたデータは、前回停止直前のデータがそのまま保持されていることになる。このため、かかる場合に、判定部２１は、転送部２２に対して不揮発性メモリＭ１から揮発性メモリＭ２へのデータの転送を指示しない。
【００４４】
一方、再度算出したＳＵＭ値が揮発性メモリＭ２に書き込んだＳＵＭ値よりも小さい値である場合や、かかるＳＵＭ値が「０」である場合、一部または全てのデータが消失したことを意味する。かかる場合に、判定部２１は、転送部２２に対して不揮発性メモリＭ１から揮発性メモリＭ２へのデータの転送を指示する。
【００４５】
つまり、判定部２１は、揮発性メモリＭ２内に記憶されたデータの少なくとも一部が消失している場合のみ、転送部２２に対して不揮発性メモリＭ１から揮発性メモリＭ２へのデータの転送を指示する。
【００４６】
これにより、上述のように停止異常が発生した場合であっても、瞬断発生前の揮発性メモリＭ２の内容が保持されている限り不揮発性メモリＭ１から揮発性メモリＭ２へ転送を行わないので、瞬断発生前に揮発性メモリＭ２に記憶されたデータが上書きされることを抑制することが可能となる。
【００４７】
なお、判定部２１は、例えば、揮発性メモリＭ２に記憶されたデータに対応付けられたパリティービットに基づいてデータの破損の有無を検出することにしてもよい。
【００４８】
転送部２２は、起動時に不揮発性メモリＭ１から揮発性メモリＭ２へ読み出しデータを転送し、揮発性メモリＭ２の正常停止時に揮発性メモリＭ２から不揮発性メモリＭ１へ書き込みデータを転送する。
【００４９】
転送部２２は、例えば、車両のＩＧ−ＯＮを契機として不揮発性メモリＭ１から揮発性メモリＭ２へ読み出しデータを転送し、車両のＩＧ−ＯＦＦを契機として揮発性メモリＭ２から不揮発性メモリＭ１へ書き込みデータを転送する。
【００５０】
また、転送部２２は、検出部２４によって停止異常が検出された場合、不揮発性メモリＭ１から揮発性メモリＭ２へ転送した読み出しデータを図示せぬＲＯＭに予め格納されている代替値で上書きする。かかる点の詳細については、図５Ａおよび図５Ｂを用いて後述する。
【００５１】
次に、メモリ制御部２の更新部２３および検出部２４の説明に先立って不揮発性メモリＭ１および揮発性メモリＭ２について説明しておく。
【００５２】
不揮発性メモリＭ１は、例えば、データフラッシュ（Data  Flash）である。不揮発性メモリＭ１は、書き込み・消去が可能であり、電源が遮断されても記憶内容が保持される。
【００５３】
ここで、図３を用いて実施形態に係る不揮発性メモリＭ１の構成例について説明する。図３は、不揮発性メモリＭ１の構成例を示す模式図である。図３に示すように、不揮発性メモリＭ１は、複数のデータ領域Ｒａ１〜Ｒａｎを備える。
【００５４】
例えば、データ領域Ｒａ１〜Ｒａ３は、同一種類のデータが格納される。また、図２に示したアプリ制御部３の要求に応じてデータ領域Ｒａ１〜Ｒａ３のうち、いずれかのデータ領域のデータが更新される。
【００５５】
すなわち、データ領域Ｒａ１〜Ｒａ３は、要求に応じてデータが揮発性メモリＭ２へ転送されるとともに、揮発性メモリＭ２からデータが転送される。このため、以下では、データ領域Ｒａ１〜Ｒａ３について、要求データ領域Ｒｒと記載する。
【００５６】
また、データ領域Ｒａ１〜Ｒａ３は、制御に使用するデータ等を記憶するデータ記憶領域Ｒｄ１〜Ｒｄ３と、それぞれ対応する識別領域Ｒｓ１〜Ｒｓ３からなる。識別領域Ｒｓ１〜Ｒｓ３には、要求データ領域Ｒｒおよび揮発性メモリＭ２間でデータが更新された回数の累計値が書き込まれる。
【００５７】
すなわち、最新のデータであるほど、識別領域Ｒｓ１〜Ｒｓ３に書き込まれる累計値が大きくなる。このため、後述のアプリ制御部３は、識別領域Ｒｓ１〜Ｒｓ３に書き込まれた累計値を比較することで、どの識別領域Ｒｓ１〜Ｒｓ３が最新のデータを記憶しているかを容易に判定することができる。  
【００５８】
そして、データを読出すときは、識別領域Ｒｓ１〜Ｒｓ３の値に基づき最新のデータが記憶されているデータ領域Ｒａを判定して、そのデータ記憶領域Ｒｄのデータを読み出す。なお、要求データ領域Ｒｒは、２つ以上であってもよく、また、要求データ領域Ｒｒは２つ以下や４つ以上のデータ領域Ｒａを備えることにしてもよい。
【００５９】
また、データ領域Ｒａｎは、データ記憶領域Ｒｄｎと、識別領域Ｒｓｎからなる。データ記憶領域Ｒｄｎは、起動時に揮発性メモリＭ２へデータが転送され、停止時に、揮発性メモリＭ２に格納されたデータが転送される領域である。
【００６０】
その後、データ記憶領域Ｒｄｎから揮発性メモリＭ２へ転送されたデータは、揮発性メモリＭ２内でアプリ制御部３によって更新され、正常停止時に更新後のデータがデータ領域Ｒａｎに転送される。
【００６１】
識別領域Ｒｓｎは、揮発性メモリＭ２からデータが転送された回数が記憶される領域である。例えば、識別領域Ｒｓｎに記憶される値は、揮発性メモリＭ２からデータが転送された場合に、更新される。なお、以下、データ領域Ｒａｎについて更新データ領域Ｒａｎとも記載する。
【００６２】
図２の説明に戻り、揮発性メモリＭ２について説明する。揮発性メモリＭ２は、例えば、ＲＡＭであり、制御装置１の起動時において不揮発性メモリＭ１に記憶された所定の読み出しデータが転送される。
【００６３】
すなわち、実施形態に係る制御装置１は、正常停止時の処理の一環として揮発性メモリＭ２の最新のデータを不揮発性メモリＭ１の更新データ領域Ｒａｎのデータ記憶領域Ｒｄｎへ転送する。
【００６４】
そして、不揮発性メモリＭ１に書き込まれたかかる最新のデータは、次のＩＧ−ＯＮ時に、揮発性メモリＭ２に書き込まれることとなる。これにより、アプリ制御部３は、ＩＧ−ＯＮ時に前回のＩＧ−ＯＦＦ時の制御結果を引き継いで、車両を制御することが可能となる。
【００６５】
メモリ制御部２の更新部２３は、転送部２２によってデータ記憶領域Ｒｄｎから読み出しデータが揮発性メモリＭ２に転送される場合に、不揮発性メモリＭ１内の所定のデータ領域Ｒａ（例えば、データ領域Ｒａ１〜Ｒａ３のいずれかのデータ記憶領域Ｒｄ）の値を更新し、書き込みデータが転送される場合に、不揮発性メモリＭ１内の他のデータ領域Ｒａ（例えば、データ領域Ｒａｎにおける識別領域Ｒｓｎ）の値を更新する。
【００６６】
検出部２４は、起動時に所定のデータ領域Ｒａの値と他のデータ領域Ｒａの値とを比較することで、前回の停止時における揮発性メモリＭ２の停止異常を検出する。
【００６７】
ここで、図４を用いてメモリ制御部２による一連の動作について説明する。図４は、正常時におけるメモリ制御部２の処理の具体例を示す図である。また、ここでは、不揮発性メモリＭ１を簡略化して示す。
【００６８】
図４に示すように、メモリ制御部２は、起動すると、要求データ領域Ｒｒに記憶された値と、更新データ領域Ｒａｎに記憶されたデータとを比較する。
【００６９】
同図に示す例では、要求データ領域Ｒｒであるデータ領域Ｒａ１のデータ記憶領域Ｒｄ１に記憶された値と、更新データ領域Ｒａｎの識別領域Ｒｓｎに記憶された値がともに「５０」である。
【００７０】
したがって、メモリ制御部２は、双方の値が一致するため、前回の停止が正常だったことを認識する。続いて、更新部２３は、データ領域Ｒａ１の値を、更新データ領域Ｒａｎの識別領域Ｒｓｎに記憶されている値に１加算した値に更新、すなわち「５０」を「５０→５１」へ更新し、転送部２２は、更新データ領域Ｒａｎのデータ記憶領域Ｒｄｎに記憶されたデータ(ここでは、「１００」)を揮発性メモリＭ２へ転送する。
【００７１】
揮発性メモリＭ２に転送されたデータ「１００」は、アプリ制御部３によって「７０」へ更新され、ＩＧ−ＯＦＦ時にデータ記憶領域Ｒｄｎへ転送される。
【００７２】
そして、データ記憶領域Ｒｄｎへのデータ転送が終わると、更新部２３は、更新データ領域Ｒａｎの識別領域Ｒｓｎの値「５０」を「５０→５１」へ更新する。すなわち、更新データ領域Ｒａｎの識別領域Ｒｓｎの値は、揮発性メモリＭ２から更新データ領域Ｒａｎへデータが転送された回数の累計値となる。
【００７３】
つまり、要求データ領域Ｒｒの値が、更新データ領域Ｒａｎから揮発性メモリＭ２へデータが転送された回数の累計値となり、更新データ領域Ｒａｎの値が揮発性メモリＭ２から更新データ領域Ｒａｎへデータが転送された回数の累計値となる。
【００７４】
このため、正常停止時後に、双方の値を比較すると、双方の値が等しくなり、異常停止時後に、双方の値を比較すると、双方の値が等しくならず、更新データ領域Ｒａｎの識別領域Ｒｓｎの値が、要求データ領域Ｒｒの値よりも少なくなる。
【００７５】
したがって、検出部２４は、双方の値を比較することで、前回の停止が正常か異常かを容易に判定することが可能となる。
【００７６】
次に、図５Ａおよび図５Ｂを用いて異常対応処理の具体例について説明する。図５Ａは、異常対応処理の具体例を示す図である。図５Ｂは、代替値の具体例を示す図である。
【００７７】
図５Ａに示すように、検出部２４は、起動時に更新データ領域Ｒａｎの値が、要求データ領域Ｒａ１の値よりも少ない場合、前回の停止が停止異常であったことを検出する。
【００７８】
このとき、更新部２３は、要求データ領域Ｒａ１のデータ記憶領域Ｒｄ１の値を更新データ領域Ｒａｎの識別領域Ｒｓｎに記憶されている値に１加算した値に更新する。同図に示す例では、起動時のデータ記憶領域Ｒｄ１の値が「５１」であり、識別領域Ｒｓｎの値が「５０」である。
【００７９】
このため、結果的に、データ記憶領域Ｒｄ１の値が「５１」から「５１」へ更新されたこととなる。続いて、転送部２２は、データ記憶領域Ｒｄｎに記憶されたデータ(「１００」)を揮発性メモリＭ２へ転送する。
【００８０】
その後、転送部２２は、揮発性メモリＭ２へ転送したデータを図示しないＲＯＭに記憶された代替値(「８０」)で上書きする。例えば、図５Ｂに示すように、上記のＲＯＭには、変速機は、代替値が「ｘｘｘ」として記憶されているものの、ダイアグ情報については、代替値が記憶されていない。例えば、変速機が、５段の変則ギアを備え、前回の正常停止時の変速機の状態が１段（低速走行）であり、停止異常前の変速機の状態が５段（高速走行）である場合を想定する。
【００８１】
かかる場合に、仮に、停止異常後の再起動時に、揮発性メモリＭ２に変速機が１段であることを示すデータが転送された場合、変速機が５段から１段に切り替えられる場合がある。かかる場合に、車両の急減速を招く恐れがあり、ドライバに違和感を与えるおそれがある。
【００８２】
このため、転送部２２は、変速機の代替値として例えば、１〜５段の中間値である３段を揮発性メモリＭ２に上書きする。これにより、上記の急減速を抑制することができるので、ドライバに与える違和感を軽減することができる。すなわち、代替値は、車両の挙動が急激に変化することを防ぐフェールセーフ値である。なお、代替値については、任意に設定することが可能である。
【００８３】
一方、転送部２２は、ダイアグ情報等の現在の車両の制御に直結しない情報については、代替値に上書きせず、例えば、前回正常停止時の読み出しデータがそのまま使用される。このように、転送部２２は、停止異常が検出された場合、車両の制御に直結するデータ項目について代替値で上書きする。
【００８４】
これにより、アプリ制御部３は、停止異常が生じた場合であっても、車両の挙動を急激に変えることなく制御することが可能となる。なお、代替値は、図示しないＲＯＭに格納されるが、不揮発性メモリＭ１の所定の領域に格納されていてもよく、その他の不揮発性メモリに格納されていてもよい。
【００８５】
次に、図６および図７を用いて実施形態に係る制御装置１が実行する処理手順について説明する。図６および図７は、制御装置１が実行する処理手順を示すフローチャートである。
【００８６】
まず、図６を用いて起動時に行う処理手順について説明する。図６に示すように、まず、メモリ制御部２の判定部２１は、揮発性メモリＭ２のデータに破損があるか否かを判定する（ステップＳ１０１）。ここで、データが破損していない場合（ステップＳ１０１、Ｎｏ）、電源の瞬断が発生したが揮発性メモリＭ２のデータは正常に記憶されていると判断し、要求データ領域Ｒｒの値を更新して(ステップＳ１０４)、処理を終了する。
【００８７】
一方、データが破損していた場合（ステップＳ１０１，Ｙｅｓ）、転送部２２は、更新データ領域Ｒａｎから揮発性メモリＭ２へデータを転送する（ステップＳ１０２）。
【００８８】
続いて、検出部２４は、要求データ領域Ｒｒの値と識別領域Ｒｓｎの値とが一致しているか否かを判定する（ステップＳ１０３）。ここで、双方の値が一致していた場合（ステップＳ１０３，Ｙｅｓ）、更新部２３は、前回の終了が正常であったと判断し、要求データ領域Ｒｒの値を更新し(ステップＳ１０４)、処理を終了する。
【００８９】
一方、双方の値が一致していなかった場合（ステップＳ１０３，Ｎｏ）、転送部２２は、前回の終了が異常終了であったと判断し、一旦、揮発性メモリＭ２へ一旦転送したデータを代替値で上書きする（ステップＳ１０５）。その後、要求データ領域Ｒｒの値を更新し(ステップＳ１０４)、処理を終了する。
【００９０】
続いて、図７を用いて正常停止時における制御装置１の処理について説明する。図７に示すように、転送部２２は、揮発性メモリＭ２の停止指示を取得すると（ステップＳ２０１）、揮発性メモリＭ２に記憶されたデータを不揮発性メモリＭ１の更新データ領域Ｒａｎへ転送する（ステップＳ２０２）。
【００９１】
なお、停止指示とは、例えば、車両のＩＧ−ＯＦＦを意味する。続いて、更新部２３は、更新データ領域Ｒａｎの識別領域Ｒｓｎの値を更新して（ステップＳ２０３）、処理を終了する。
【００９２】
上述したように、実施形態に係る制御装置１は、転送部２２と、更新部２３と、検出部２４とを備える。転送部２２は、起動時に不揮発性メモリＭ１から揮発性メモリＭ２へ読み出しデータを転送し、正常終了時に揮発性メモリＭ２から不揮発性メモリＭ１へ書き込みデータを転送する。
【００９３】
更新部２３は、転送部２２によって読み出しデータが転送される場合に、不揮発性メモリＭ１内の所定のデータ領域Ｒａの値を更新し、書き込みデータが転送される場合に、不揮発性メモリＭ１内の他のデータ領域Ｒａの値を更新する。
【００９４】
検出部２４は、起動時に所定のデータ領域Ｒａの値と他のデータ領域Ｒａの値とを比較することで、前回の停止時における揮発性メモリＭ２の停止異常を検出する。したがって、実施形態に係る制御装置１によれば、停止異常を検出することができる。
【００９５】
ところで、上述した実施形態では、制御装置１が車載用の制御装置である場合について説明したが、これに限定されず、その他の制御装置にも本発明を適用することが可能である。
【００９６】
また、上述した実施形態では、要求データ領域Ｒｒの値と、更新データ領域Ｒａｎの値とが一致する場合に、停止異常を検出する場合について説明したが、これに限定されるものではない。
【００９７】
すなわち、要求データ領域Ｒｒの値と更新データ領域Ｒａｎの値とを所定の規則に則って更新することにすれば、要求データ領域Ｒｒの値と更新データ領域Ｒａｎの値とが同じ場合に、停止異常を検出することにしてもよい。
【００９８】
また、上述した実施形態では、要求データ領域Ｒｒの値と更新データ領域Ｒａｎの値とをそれぞれ更新する場合について説明したが、かかる値を記憶するのは、要求データ領域Ｒｒや更新データ領域Ｒａｎに限られず、不揮発性メモリＭ１内の任意の領域であってもよい。
【００９９】
また、上述した実施形態では、停止異常を検出したとき揮発性メモリＭ２のデータをＲＯＭに記憶された代替値で上書きするようにしたが、ＲＯＭではなくデータフラッシュに代替値を記憶しておき、データフラッシュから代替値を転送して上書きしてもよい。
【０１００】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【０１０１】
１    制御装置
２    メモリ制御部
５    アプリ制御部
２１    判定部
２２    転送部
２３    更新部
２４    検出部
Ｍ１    不揮発性メモリ
Ｍ２    揮発性メモリ
【図１】
2019160080.tif 000003
【図２】
2019160080.tif 000004
【図３】
2019160080.tif 000005
【図４】
2019160080.tif 000006
【図５Ａ】
2019160080.tif 000007
【図５Ｂ】
2019160080.tif 000008
【図６】
2019160080.tif 000009
【図７】
2019160080.tif 000010