(57)【特許請求の範囲】
【請求項１】
車両に装備された電子制御装置が有する揮発性メモリに記憶された、前記車両の車載機器の制御状態を示す複数のデータのそれぞれに対して異なった２進数を割り当て、その２進数のビット数は、不揮発性メモリに記憶すべき全ての前記データに異なった２進数値を割り当てられる最小のビット数とする割り当てステップと、
前記車両の駆動部の停止時に、前記車両に備えられた不揮発性メモリに、前記割り当てステップで求められた２進数値を記憶する記憶ステップと、
を車両に装備されたコンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記車両の駆動部の始動時に、前記不揮発性メモリに記憶された前記２進数の情報を、その２進数に関連付けられた前記車載機器の制御状態を示すデータの情報に変換して、前記揮発性メモリに復元する復元ステップを、車両に装備されたコンピュータに実行させる請求項１に記載のプログラム。
【請求項３】
前記データの数に応じて、全ての前記異なった２進数値を記述できるビット数を算出する算出ステップを、車両に装備されたコンピュータに実行させる請求項１又は２に記載のプログラム。
【請求項４】
前記割り当てステップは、車両に装備された電子制御装置が有する揮発性メモリに記憶された、前記車両の車載機器の複数の設定値のそれぞれに対して、異なった２進数を割り当て、その２進数のビット数は、不揮発性メモリに記憶すべき全ての設定値に異なった２進数値を割り当てられる最小のビット数とする設定値割り当てステップを含む請求項１乃至３のいずれか１項に記載のプログラム。
【請求項５】
オブジェクト指向のプログラム言語で記述されたプログラムであり、
前記制御状態を示すデータは、そのプログラムにおけるオブジェクトである請求項１乃至４のいずれか１項に記載のプログラム。
【請求項６】
前記２進数値の情報量は前記オブジェクトのポインタの情報量よりも小さい請求項５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに関する。
【背景技術】
【０００２】
車両の電子制御ユニット（ＥＣＵ：  Ｅｌｅｃｔｒｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）では、イグニッションオフされたときに、揮発性メモリ上のユーザ設定や諸元等の車両情報を不揮発性メモリに記憶させ、再度イグニッションオンされた時に不揮発性メモリ上の車両情報を揮発性メモリに戻す。例えば下記特許文献１には、車両の情報を揮発性メモリから不揮発性メモリに短時間で移す技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１９３０１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
車載等の組み込みソフトではメモリ容量の制限が厳しく、不揮発性メモリに記憶できるデータ量は限られている。また車両の電子制御装置の場合、不揮発性メモリは通常のメモリとは別に搭載するため、コスト面の制約から容量のより大きな不揮発性メモリに変更することは容易ではない。
【０００５】
したがって、記憶すべきデータを圧縮する必要がある。一般にデータを圧縮する技術として、例えば画像圧縮技術のＪＰＥＧやファイル圧縮技術のｚｉｐが知られているが、処理負荷や必要なＲＯＭサイズが大きく、車載ソフトに用いるのは適当ではない。またＪＰＥＧやｚｉｐでは圧縮の必要のないデータまで圧縮する欠点も有している。
【０００６】
車載ソフトでは、機能やバリエーションの増加やソフトウェアの再利用性を向上させるための技術として例えばオブジェクト指向の導入が考えられるが、その場合記憶したいデータ量は今後ますます多くなる。よって、オブジェクト指向のソフトウェアを含む車載用のソフトウェアにおいて、不揮発性メモリに記憶するデータを効果的に圧縮する技術の開発が必要である。上記特許文献１では、車両故障時における揮発性メモリから不揮発性メモリへの情報移動のみを扱っており、車両故障時以外は対象外である。
【０００７】
そこで本発明が解決しようとする課題は、上述の項目を鑑み、車両の電子制御装置の揮発性メモリに記憶された情報を不揮発性メモリに記憶する際に、従来技術における記憶手法よりも不揮発性メモリが小容量化でき、記憶処理の処理負荷や処理時間も低減できるプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を達成するために、本発明に係るプログラムは、車両に装備された電子制御装置が有する揮発性メモリに記憶された、前記車両の車載機器の制御状態を示す複数のデータのそれぞれに対して異なった２進数を割り当て、その２進数のビット数は全ての前記データに異なった２進数値を割り当てられる最小のビット数とする割り当てステップと、前記車両の駆動部の停止時に、前記車両に備えられた不揮発性メモリに、前記割り当てステップで求められた２進数値を記憶する記憶ステップと、を車両に装備されたコンピュータに実行させることを特徴とする。
【０００９】
これにより本発明に係るプログラムでは、車両の電子制御装置の揮発性メモリに記憶された、車載機器の制御状態を示す複数のデータに異なった２進数を最小のビット数で割り当て、車両の駆動部の停止時に不揮発性メモリにその２進数を記憶する。したがって従来技術のようにオブジェクトのポインタをそのまま記憶したり、データ全体をｚｉｐ等で圧縮するのではなく、記憶すべきデータのうち圧縮する必要のあるデータのみを最小のビット数で記憶できる。よって不揮発性メモリに容量を低減でき、さらには記憶処理における処理負荷や処理時間も低減することができる。特に車載機器の場合、とり得る制御状態の数は相対的に少ない場合が多いため、少ないビット数の２進数に圧縮でき、メモリ容量の制約が厳しい車載組み込みソフトに対して本発明はきわめて有効である。
【００１０】
また前記車両の駆動部の始動時に、前記不揮発性メモリに記憶された前記２進数の情報を、その２進数に関連付けられた前記車載機器の制御状態を示すデータの情報に変換して、前記揮発性メモリに復元する復元ステップを、車両に装備されたコンピュータに実行させるとしてもよい。
【００１１】
この発明によれば、車両の駆動部の停止時に不揮発性メモリに２進数として記憶されたデータを、駆動部の始動時に揮発性メモリに車載機器の制御情報として復元するので、最小ビット数の２進数の読み出しでよく、復元処理における処理負荷や処理時間が低減できる。
【００１２】
また前記データの数に応じて、全ての前記異なった２進数値を記述できるビット数を算出する算出ステップを、車両に装備されたコンピュータに実行させるとしてもよい。
【００１３】
この発明によれば、車両の電子制御装置の揮発性メモリに記憶された複数のデータに異なった２進数を最小のビット数で割り当てる際に、データの数に応じて最小ビット数を自動的に算出する。したがって車両における各種システム構成を変更してもプログラムを変更する必要がなく、システム変更に自動的に適切に対応するプログラムが実現できる。
【００１４】
また前記割り当てステップは、車両に装備された電子制御装置が有する揮発性メモリに記憶された、前記車両の車載機器の複数の設定値のそれぞれに対して、異なった２進数を割り当て、その２進数のビット数は、不揮発性メモリに記憶すべき全ての設定値に異なった２進数値を割り当てられる最小のビット数とする設定値割り当てステップを含むとしてもよい。
【００１５】
この発明によれば、車両の駆動部の停止時に車載機器の制御状態を示すデータに最小ビット数の２進数を割り当てて不揮発性メモリに記憶するのみでなく、車載機器の設定値にも最小ビット数の２進数を割り当てて不揮発性メモリに記憶する。したがって駆動部停止時に記憶しておくべき重要な制御状態や設定値などの情報を最小ビット数で不揮発性メモリに記憶させることができ、不揮発性メモリの小容量化、記憶処理負荷、処理時間の低減を達成できる。
【００１６】
またオブジェクト指向のプログラム言語で記述されたプログラムであり、前記制御状態を示すデータは、そのプログラムにおけるオブジェクトであるとしてもよい。
【００１７】
この発明によれば、オブジェクト指向のプログラム言語で記述されたプログラムにおいて、車載機器の制御状態を示すオブジェクトに最小のビット数の２進数が割り当てられて、車両の駆動部の停止時に不揮発性メモリに記憶される。したがって車載ソフトウェアとして、機能やバリエーションの増加やソフトウェアの再利用性を向上させるための技術としてオブジェクト指向のプログラムが導入された状況において、従来技術のようにオブジェクトのポインタをそのまま記憶したり、データ全体をｚｉｐ等で圧縮するのではなく、記憶すべきデータのうち圧縮する必要のあるデータのみを最小のビット数で記憶する。よって不揮発性メモリに容量を低減でき、さらには記憶処理における処理負荷や処理時間も低減することができる。特に車載機器の場合、とり得る制御状態の数は相対的に少ない場合が多いため、少ないビット数の２進数に圧縮でき、メモリ容量の制約が厳しい車載組み込みソフトに対して本発明はきわめて有効である。
【００１８】
また前記２進数値の情報量は前記オブジェクトのポインタの情報量よりも小さいとしてもよい。
【００１９】
この発明によれば、２進数値の情報量はオブジェクトのポインタの情報量よりも小さくするので、車両の電子制御装置の揮発性メモリに記憶された複数のオブジェクトを不揮発性メモリに記憶する際に、オブジェクトのポインタの情報量よりも小さい情報量の２進数で記憶する。したがって従来技術のようにオブジェクトのポインタをそのまま記憶する場合よりも不揮発性メモリに容量を低減でき、さらには記憶処理における処理負荷や処理時間も低減することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の記憶制御システムの一実施例における構成図。
【図２】車載装置の例を示す図。
【図３】スタックの状態の一例を示す図。
【図４】マップ作成処理の第１の例を示すフローチャート。
【図５】マップ作成処理の第２の例を示すフローチャート。
【図６】不揮発性メモリへの記憶処理の第１の例を示すフローチャート。
【図７】不揮発性メモリからの復元処理の第１の例を示すフローチャート。
【図８】不揮発性メモリへの記憶処理の第２の例を示すフローチャート。
【図９】不揮発性メモリからの復元処理の第２の例を示すフローチャート。
【図１０】指数の割り当ての第１の例を示す図。
【図１１】指数の割り当ての第２の例を示す図。
【図１２】指数の割り当ての第３の例を示す図。
【図１３】保存データの第１の例を示す図。
【図１４】保存データの第２の例を示す図。
【図１５】従来技術における保存データの例を示す図。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を図面を参照しつつ説明する。まず図１は、本発明に係る記憶制御システムの装置構成の概略図である。
【００２２】
本発明に係る記憶制御システムは、車両２に、ＥＣＵ２と、ＥＣＵ２によって制御される車載装置３とを備える。また車両２はイグニッションスイッチ４と駆動部４０を備える。駆動部４０は例えばエンジンや電気的モータなどからなって車両の進行のために車輪を駆動する。ユーザがイグニッションスイッチ４をオン操作することにより駆動部４０が始動する。
【００２３】
ＥＣＵ２は、通常のコンピュータと同様の構造を有し、ＣＰＵ２０、ＲＡＭ２１、不揮発性メモリ２２を備える。ＣＰＵ２０は車載装置３の制御に関する情報処理を行い、ＲＡＭ２１はＣＰＵ２０の作業領域として機能する揮発性の記憶部（メモリ）である。不揮発性メモリ２２は、例えばＥＥＰＲＯＭなどによる不揮発性の記憶部であり、車載装置３の制御に関する各種データやプログラムを記憶する。
【００２４】
不揮発性メモリ２２は、制御プログラム２３、保存プログラム２４、保存データ２５を記憶（保存、格納）している。制御プログラム２３は、車載装置３の制御を司るプログラムである。保存プログラム２４は、ＲＡＭ２１に記憶された車載装置３の制御に関係する情報（のうちの一部）を不揮発性メモリ２２に保存する処理を司るプログラムである。制御プログラム２３と保存プログラム２４とはＲＡＭ２１にロードされてＣＰＵ２０によって自動的に実行されるとすればよい。保存データ２５は保存プログラム２４を実行することによってＲＡＭ２１から不揮発性メモリ２２に移されるデータ（情報）である（詳細は後述）。
【００２５】
制御プログラム２３は、オブジェクト指向のプログラム言語（例えばＪａｖａ（登録商標）、Ｃ＋＋など）によって記述されたプログラムである。したがって制御プログラム２３は、（複数の）オブジェクト２３０ａ、２３０ｂ、２３０ｃ、・・を含む。個々のオブジェクト２３０ａ、２３０ｂ、２３０ｃ等は具体的には、例えば車載装置３のコンポーネント（後述）や車載装置３そのものや、その機能（あるいは制御状態）をプログラム内で表現したものとすればよい。
【００２６】
また制御プログラム２３は、例えばスタック２３１や設定値関数２３２ａ、２３２ｂ等を含む。スタック２３１は、例えば車載装置３における特定のコンポーネントにおける操作（機能、制御状態）の履歴を記憶する。設定値関数２３２ａ、２３２ｂ等は車載装置３における各種設定値を表すプログラム内の関数（例えばオブジェクトが属するクラスで定義されたメンバ関数）である。
【００２７】
スタック２３１の例が図３に示されている。同図の例においては、オブジェクト２３０ａから２３０ｆを車載エアコン装置における機能Ａ、機能Ｂ、機能Ｃ、機能Ｄ、機能Ｅ、機能Ｆとしている。機能Ａなどは具体的には、例えばオート機能などとすればよい。
【００２８】
スタック２３１はＦＩＬＯ（Ｆｉｒｓｔ  Ｉｎ  Ｌａｓｔ  Ｏｕｔ）の仕組みによって、機能Ａ、機能Ｂ、機能Ｃ、機能Ｄ、機能Ｅ、機能Ｆのうちでユーザから選択された機能が、時間的に先のものほど図示下側に記憶されることにより例えば車載エアコン装置の制御状態の時間的推移が記憶される。図３の例ではユーザは順に機能Ａ、機能Ｄ、機能Ｃを選択しており、その履歴がスタック２３１に記憶されている。
【００２９】
図１に戻って、車載装置３は車両２に装備された各種装置である。車載装置３の１つの具体例として図２に示された車載エアコン装置３ａがある。車載エアコン装置３ａは、車両２の車室内の空調を制御する。車載エアコン装置３ａは、その部分的な構成部位（コンポーネント）を有する。コンポーネント３０、３１、３２等の例として、ユーザが所望の車内温度を設定する温度設定部３３、内外気の切替を行う吸込口３４などを備える。以上の構成は車内通信によって接続されて情報の受け渡しが可能となっている。
【００３０】
図１の構成のもとで記憶制御システムは、車両１のイグニッションオフ時に、ＲＡＭ２１（揮発性メモリ）から不揮発性メモリ２２に所定の車両情報を圧縮して保存データ２５として移動して保存させる。そして再度イグニッションをオン操作したときに保存データ２５をＲＡＭ２１に復元して戻す。保存プログラム２４が以上の保存、復元処理を実行する。保存プログラム２４による処理手順例が図４から図９に示されている。
【００３１】
まず図４はマップ作成のための処理手順例を示す。ここでマップとは、不揮発性メモリ２２への車両情報の記憶、不揮発性メモリ２２からの車両情報の復元のために必要となる情報（の集まり）である。具体的には例えば、スタック２３１のサイズ、スタック２３１を使用するオブジェクト数、スタック２３１を使用する各オブジェクトに割り当てられた番号（あるいは指数）、不揮発性メモリ２２における記憶開始場所（開始バイト位置とその中での開始ビット位置）等である。
【００３２】
図４の処理ではまずＳ１０で、不揮発性メモリ２２に記憶させる１組の情報を指定する。ここで１組の情報とは、車両の情報、あるいは車載装置３に関する情報とすればよい。図１の例の場合、例えばスタック２３１の状態が１組の情報であり、設定値関数２３２ａ、２３２ｂの数値が別の１組の情報である。なお１組の情報は複数の情報を有するものには限定せず、１個の情報のみを有するものも含むとする。
【００３３】
次にＳ２０で不揮発性メモリ２２における記憶開始場所を指定する。記憶開始場所は具体的には、開始バイト位置と、そのなかでの開始ビット位置とすればよい。
【００３４】
次にＳ３０で記憶させる複数の情報に指数（番号）を割り振る。その例が図１０から図１２に示されている。図１０の例では、スタック２３１に格納される可能性のある機能Ａから機能Ｆに、指数１から６が割り振られている。図１１の例では、設定値関数２３２ａとしての設定温度において、摂氏１６度から３２度までに、指数１から１７が割り振られている。図１２の例では、設定値関数２３２ｂとしての吸込口状態において、内気、外気、半内気にそれぞれ指数１から３が割り振られている。
【００３５】
図４に戻って、次にＳ４０で指数を２進数化する際のビット数を指定する。そしてＳ５０で記憶する各情報の指数を２進数化（あるいは２進数に変換）する。その際、Ｓ４０で指定したビット数の２進数とする。
【００３６】
図１０の例では、機能Ａから機能Ｆの指数１から６は、３ビットの２進数で表現できるので、００１から１１０の２進数に変換されている。図１１の例では、摂氏１６度から３２度までの指数１から１７は５ビットの２進数で表現できるので、００００１から１０００１の２進数に変換されている。図１２の例では、内気、外気、半内気の指数１から３は２ビットの２進数で表現できるので、０１から１１の２進数に変換されている。
【００３７】
以上が図４の処理手順である。図４の処理では１組の情報ごとに指数を割り振り、その指数の２進数表現の際のビット数（記憶ビット数）を決定している。したがって図１０から図１２の例のように、例えばスタックの状態に対しては記憶ビット数は３、設定温度に対しては記憶ビット数は５、吸込口状態に対しては記憶ビット数は２と設定される。
【００３８】
なお図１０から図１２の例は全てのデータに指数が割り振ってある例だが、本発明はこれに限定せず、例えば重要度が低く、不揮発性メモリ２２に記憶する必要性が低い（記憶しない）データには指数を割り振らなくともよい。
【００３９】
次に、図５の処理手順は図４におけるＳ４０をＳ４１からＳ４４の手順に置き換えたものとなっている。図４では、保存プログラムを作成するプログラム側で、指数の２進数表現におけるビット数を指定したが、図５では、保存プログラム内で最小ビット数を算出する。以下で図４と異なる部分のみを説明する。
【００４０】
具体的にまずＳ４１では変数ｂｉｔＳｉｚｅを１に設定する。そしてＳ４２で、２のｂｉｔＳｉｚｅ乗から１を減算した数値が指数の最大値（例えば図１０の例ならば６）以上であるか否かを判定する。指数の最大値以上の場合（Ｓ４２：ＹＥＳ）はＳ４４に進み、指数の最大値未満の場合（Ｓ４２：ＮＯ）はＳ４３に進む。Ｓ４３に進んだら変数ｂｉｔＳｉｚｅの値を１増加させて、再びＳ４２に戻り、Ｓ４２がＹＥＳになるまで同じ手順を繰り返す。Ｓ４４に進んだら、その時点での変数ｂｉｔＳｉｚｅの値を、記憶する２進数のビット数とする。
【００４１】
以上が図５の処理手順である。図５の場合、例えばスタック２３１に記憶される機能数が変更された場合にも自動的に最小な記憶ビット数を算出するので、システム変更に対して自動的にかつ適切に対応できる。
【００４２】
次に、図６から図９を説明する。図６および図８には不揮発性メモリ２２への圧縮保存処理の手順が、図７および図９には不揮発性メモリ２２からの復元処理の手順が示されている。ただし、図６および図７においては記憶ビット数とデータ記憶位置をプログラム内で固定された数値とし、図８および図９においては記憶ビット数とデータ記憶位置を圧縮時に算出する。図６および図７は図４と組み合わされ、図８および図９は図５と組み合わされるとすればよい。
【００４３】
まず図６を説明する。図６には、イグニッションオフ時にＲＡＭ２１内の所定の情報を不揮発性メモリ２２へ記憶する処理の手順が示されている。図６の処理手順はイグニッションスイッチ４がオフされたら自動的に開始されるようにすればよい。
【００４４】
図６の処理ではまずＳ１００でＣＰＵ２０は保存データを０に初期化する。次にＳ１１０でＣＰＵ２０は、保存データ２５として記憶させる情報（上記の１組の情報）を取得する。次にＳ１２０でＣＰＵ２０は、Ｓ１１０で取得した情報の不揮発性メモリ２２における記憶開始場所を指定する。これは記憶する情報が何であるかに応じて予め決めておけばよい。
【００４５】
次にＳ１３０でＣＰＵ２０は、情報から１つのデータ（元データ）を取得する。１つの元データとは、例えば上述の例では、スタック２３１に格納された１個の機能（機能Ｃなど）である。下記の変換の前のデータを元データと呼称している。
【００４６】
次にＳ１４０でＣＰＵ２０は、元データに上述のＳ３０で指数が割り当てられているか否かを判定する。指数が割り当てられている場合（Ｓ１４０：ＹＥＳ）はＳ１５０に進み、指数が割り当てられていない場合（Ｓ１４０：ＮＯ）はＳ１６０に進む。
【００４７】
Ｓ１５０に進んだらＣＰＵ２０は、不揮発性メモリ２２に記憶するために元データを変換する。具体的には、元データに割り振られた指数を変換後のデータ（以下、変換データ）とする。そしてＳ１７０でＣＰＵ２０は、変換データを記憶ビットサイズの２進数に圧縮する。この処理で取得される２進数は上述のＳ５０で定めた２進数とすればよい。
【００４８】
一方Ｓ１６０に進んだらＣＰＵ２０は、指数が割り当てられていないデータを無視して、次のデータを詰めるか否かを判定する。次のデータを詰める場合（Ｓ１６０：ＹＥＳ）は、変換データに何の操作も施さずにＳ２１０へ進む。次のデータを詰めない場合（Ｓ１６０：ＮＯ）は、Ｓ１８０に進んで変換データをゼロとする。Ｓ１８０が終了したらＳ１９０へ進む。
【００４９】
Ｓ１９０でＣＰＵ２０は、保存データを記憶ビットサイズ分左にシフトする。そしてＳ２００で、シフトの結果右側に空いたビットに、変換データが圧縮された２進数を代入する。そしてＳ２１０でＣＰＵ２０は、圧縮していないデータがまだあるか否かを判定する。圧縮していないデータがまだある場合（Ｓ２１０：ＹＥＳ）はＳ１３０へ戻って上記手順を繰り返す。圧縮していないデータがない場合（Ｓ２１０：ＮＯ）はＳ２２０へ進む。
【００５０】
Ｓ２２０でＣＰＵ２０は、以上の処理によりＲＡＭ２１内で作成した保存データ２５を不揮発性メモリ２２に記憶させる。次にＳ２３０でＣＰＵ２０は、圧縮していない情報（上述の１組の情報）がまだあるか否かを判定する。圧縮していない情報がまだある場合（Ｓ２３０：ＹＥＳ）はＳ１００に戻って上記手順を繰り返す。圧縮していない情報がもうない場合（Ｓ２３０：ＮＯ）は図６の処理を終了する。
【００５１】
以上述べた図６の処理では、予めエンジニア（プログラマ）が保存プログラム２４内に、設定された記憶ビットサイズを記述しておき、それにしたがって各データに２進数が指定されて、それが不揮発性メモリ２２に記憶される。したがって予め記憶ビットサイズが設定されており、相対的に簡略化された処理となる。この場合、保存プログラム２４は、図４と図６（と図７）を組み合わせて作成すればよい。
【００５２】
次に図７を説明する。図７には、再度イグニッションオンにした時に不揮発性メモリ２２内の保存データ２５を復元してＲＡＭ２１へ戻す処理の手順が示されている。図７の処理はイグニッションスイッチ４がオンされたら自動的に開始されるようにすればよい。
【００５３】
図７の処理ではまずＳ３００でＣＰＵ２０は、保存データ２５のなかの復元する情報（上述の１組の情報）を指定する。次にＳ３１０でＣＰＵ２０は、Ｓ２０で指定された情報の保存データ２５内における記憶開始場所（開始バイト位置と、そのなかの開始ビット位置）の情報を取得する。
【００５４】
次にＳ３２０でＣＰＵ２０は、Ｓ３１０で取得された位置から記憶ビットサイズ分の２進数を取得する。そしてＳ３３０でＣＰＵ２０は、取得した２進数に指数が割り振られている否かを判定する。指数が割り振られている場合（Ｓ３３０：ＹＥＳ）はＳ３４０に進み、指数が割り振られていない場合（Ｓ３３０：ＮＯ）はＳ３５０に進む。
【００５５】
Ｓ３４０に進んだらＣＰＵ２０は、取得したデータの指数から元データを復元する。具体的には例えば図１０から図１２に示されたような、データと２進数の関係からデータ（元データ）を復元する。Ｓ３５０に進んだ場合、ＣＰＵ２０は元データを０とする。続いてＳ３６０でＣＰＵ２０は、元データをＲＡＭ２１に戻す。
【００５６】
そしてＳ３７０でＣＰＵ２０は、復元するデータのうちで復元していない記憶ビットサイズ分の２進数がまだあるか否かを判定する。復元していない２進数データがまだある場合（Ｓ３７０：ＹＥＳ）は、Ｓ３２０に戻って上記処理を繰り返す。復元していない２進数データがもうない場合（Ｓ３７０：ＮＯ）は、Ｓ３９０に進む。
【００５７】
Ｓ３９０に進んだらＣＰＵ２０は、不揮発性メモリ２２内の保存データ２５のなかに復元されていない情報（上述の１組の情報）がまだあるか否かを判定する。復元されていない情報がまだある場合（Ｓ３９０：ＹＥＳ）はＳ３００に戻って上記処理を繰り返す。保存データ２５がすべて復元された場合（Ｓ３９０：ＮＯ）は図７の処理を終了する。
【００５８】
以上が図７の処理手順である。図７の処理では、予めエンジニア（プログラマ）が保存プログラム２４内に、設定された記憶ビットサイズを記述しておき、それにしたがって不揮発性メモリ２２に２進数として記憶された各データがＲＡＭ２１に復元される。したがって予め記憶ビットサイズが設定されており、相対的に簡略化された処理となる。
【００５９】
次に図８を説明する。図８には記憶ビット数とデータ記憶位置を圧縮時に算出するタイプの、不揮発性メモリ２２への圧縮保存処理の手順が示されている。図８の処理手順は、図６の処理手順においてＳ１２５およびＳ２１１、Ｓ２１２を付加したものである。以下で図６と異なる部分を説明する。
【００６０】
図８のＳ１２５では、ＣＰＵ２０は指数の最大値（最大数）から記憶ビットサイズを算出する。この算出処理は、図５（におけるＳ４１からＳ４４）によって実行すればよい。
【００６１】
図８のＳ２１１、Ｓ２１２では、保存データ中における種類の異なる情報（図１の例では例えばスタック２３１と設定値関数２３２ａと設定値関数２３２ｂとが種類の異なる情報である）の間に、間であることを示すしるしのビットデータを挿入するための処理を実行する。要するに保存プログラム２４は、不揮発性メモリに記憶する情報において、１組の前記複数のオブジェクトと別の組の複数のオブジェクトの間に、間であることを示すビットデータを挿入する挿入ステップを備える。具体的には、まずＳ２１１でＣＰＵ２０は、保存データをしるしのビットサイズ分左にシフトする。次にＳ２１２でＣＰＵ２０は、しるしのビットデータを左シフトで右側に空いたビットに代入する。しるしのビットデータは具体的には、例えばビットサイズの桁数での最大値や、ビットサイズの桁数でゼロなどとすればよい。
【００６２】
以上が図８の図６からの変更部分である。図８の処理では、不揮発性メモリ２２に保存データ２５を記憶する際に、記憶する情報（１組の情報）ごとにそのつど記憶ビット数を算出して、その記憶ビット数の２進数を記憶していくとともに、保存データ２５内のある１組の情報と別の１組の情報の間にしるしを格納して、情報の区切りを明確化する。したがって車両１において各種システム変更を行っても保存プログラム２４を書き換える必要はなく、システム変更に柔軟に対応して、最適な記憶ビット数を自動的に算出する。
【００６３】
次に図９を説明する。図９には、記憶ビット数とデータ記憶位置を圧縮時に算出するタイプの、不揮発性メモリ２２からＲＡＭ２１への復元処理の手順が示されている。図９の処理手順は、図７の処理手順においてＳ３１５を付加し、Ｓ３７０をＳ３２５に変更したものである。以下で図７と異なる部分を説明する。
【００６４】
図９のＳ３１５では、ＣＰＵ２０は指数の最大値（最大数）から記憶ビットサイズを算出する。この算出処理は、図５（におけるＳ４１からＳ４４）によって実行すればよい。
【００６５】
図９のＳ３２５は、Ｓ３２０の次に処理され、取得したデータがしるしであるか否かを判定する。取得したデータがしるしである場合（Ｓ３２５：ＹＥＳ）はＳ３９０に進み、取得したデータがしるしでない場合（Ｓ３２５：ＮＯ）はＳ３３０に進む。
【００６６】
以上のとおり、図９の処理では、保存された情報の記憶ビットサイズの情報は用いず、異なった情報間の区切りとしてしるしを用いて、しるしを取得したら１つの情報の復元が終了したと認識する。したがって図８と同様、車両１において各種システム変更を行っても保存プログラム２４を書き換える必要はなく、システム変更に柔軟に対応して、最適な記憶ビット数が自動的に算出されて、それに応じて復元処理が実行される。以上の場合、保存プログラム２４は、図５、図８、図９を組み合わせて作成すればよい。
【００６７】
図１４には、図１０の２進数表現を用いて図３のスタックを保存した保存データ２５の例が示されている。図３のスタック２３１の格納状態は、順に機能Ａ、機能Ｄ、機能Ｃ、空、なので、図１２に示されているように、順に「００１」、「１００」、「０１１」、「０００」を記憶する。図１２の例では空を「０００」としているが、図１０に示された２進数以外ならばよい。
【００６８】
図１５には、従来技術における図３のスタックの場合の保存データ２５の例が示されている。従来技術では、図３のスタック２３１を記憶する場合、機能Ａ、機能Ｄ、機能Ｃのポインタ（オブジェクト指向のプログラム言語においてオブジェクトのメモリ内のアドレスを示す変数）を保存データとするが、通常ポインタは４バイトの情報なので、図１５のとおり、図３のスタックの状態の記憶のために合計１６バイト必要となる。これに対して本発明の図１４の例では、図３のスタックの状態の記憶のために合計１２ビットしか使用しておらず、情報量が約１０分の１となっている。したがって不揮発性メモリ２２の小容量化や、保存処理の処理負荷、処理時間の低減が実現できる。
【００６９】
なお保存データ２５は図１４ではなく図１３のようにしてもよい。図１３の例では、スタック２３１に格納された機能Ａ、機能Ｄ、機能Ｃ、空、の指数を保存データ２５内に順に記憶している（なおここでは空の指数を０としている）。通常、指数である整数値は１バイトの情報なので、図１３の例では合計４バイト使用される。したがって図１５の従来技術よりは情報量が４分の１に低減でき、不揮発性メモリ２２を小容量化できる。（なお図１３との比較においても図１４は不揮発性メモリ２２に記憶する情報量が低減される。すなわち図１４における記憶ビット数の２進数の情報量はオブジェクトに割り振った指数（整数値）の情報量よりも小さい。要するに、この場合２進数の情報量はオブジェクトに番号付けられた整数値の情報量よりも小さい。）
【００７０】
発明者の知見によれば、各種の車載装置３に対して、上述の指数の最大数は大半は７以下、８から１５は１割もなく、１６から３０はほとんどない。記憶ビット数で言えば、大半が３ビットであり、４ビットは１割もなく、５ビットはほとんどない。したがって本発明の手法で最小ビット数の２進数に圧縮した場合、良好な圧縮率が達成できる。
【００７１】
上記実施例では、制御プログラム２３、保存プログラム２４をオブジェクト指向のプログラム言語で記述されたプログラムとしたが、本発明はこうした実施形態に限定されない。本発明では、車両に装備された電子制御装置が有する揮発性メモリに記憶された、車両の車載機器の制御状態を示す複数のデータのそれぞれに対して異なった２進数を割り当て、その２進数のビット数は全てのデータに異なった２進数値を割り当てられる最小のビット数とする割り当てステップと、車両の駆動部の停止時に、車両に備えられた不揮発性メモリに、割り当てステップで求められた２進数値を記憶する記憶ステップと、を車両に装備されたコンピュータに実行させることを特徴とする。
【００７２】
当然オブジェクト指向のプログラム言語でない場合でも、上記のように図１１、図１２に示された設定温度や吸込口状態に対応する２進数表現をイグニッションオフ時に不揮発性メモリ２２に記憶すればよい。またプログラム内で図１０に示された各機能がオブジェクトとして記述されていない場合でも、イグニッションオフ時にスタック２３１の状態を記憶する際に、上記のようにスタック内の各機能の２進数表現を不揮発性メモリ２２に記憶すればよい。
【符号の説明】
【００７３】
１    車両
２    ＥＣＵ（電子制御装置）
３    車載装置（車載機器）
２１  ＲＡＭ（揮発性メモリ）
２２  不揮発性メモリ
２３    制御プログラム
２４    保存プログラム
２５    保存データ
【図１】
0005585941.tif 000002
【図２】
0005585941.tif 000003
【図３】
0005585941.tif 000004
【図４】
0005585941.tif 000005
【図５】
0005585941.tif 000006
【図６】
0005585941.tif 000007
【図７】
0005585941.tif 000008
【図８】
0005585941.tif 000009
【図９】
0005585941.tif 000010
【図１０】
0005585941.tif 000011
【図１１】
0005585941.tif 000012
【図１２】
0005585941.tif 000013
【図１３】
0005585941.tif 000014
【図１４】
0005585941.tif 000015
【図１５】
0005585941.tif 000016