(57)【特許請求の範囲】
【請求項１】
制御対象を制御する処理を実装した制御ソフトウェアを実行する演算装置、
第１データと第２データと第３データを格納する不揮発性記憶装置、を備え、
前記第１データは、前記第１データを識別する第１物理識別子、前記第１データの妥当性を検証するための第１誤り検出符号、を含み、
前記第２データは、前記第２データを識別する第２物理識別子、前記第２データの妥当性を検証するための第２誤り検出符号、を含み、
前記第３データは、前記第３データを識別する第３物理識別子、前記第３データの妥当性を検証するための第３誤り検出符号、を含み、
前記不揮発性記憶装置はさらに、前記演算装置が前記制御ソフトウェアを実行する際に使用する論理データを識別する論理識別子、前記第１物理識別子、および前記第２物理識別子を対応付ける対応関係を記述した対応関係データを格納しており、
前記演算装置は、前記対応関係データの記述にしたがって前記第１データと前記第２データを前記論理データと対応付けることにより、前記制御ソフトウェアを実行する際に前第１データと前記第２データを前記論理データとして取り扱い、
前記演算装置は、前記対応関係データの記述にしたがって前記論理データとして前記第１データと前記第２データを読み出す際に、前記第１誤り検出符号を用いて前記第１データの妥当性を検証するとともに、前記第２誤り検出符号を用いて前記第２データの妥当性を検証し、
前記不揮発性記憶装置はさらに、前記制御ソフトウェアの更新版である更新版制御ソフトウェアを前記不揮発性記憶装置に対して書き込む処理を実装したリプログラミングソフトウェアを格納しており、
前記演算装置は、前記リプログラミングソフトウェアを実行することにより前記更新版制御ソフトウェアを前記不揮発性記憶装置に対して書き込む際に、前記論理識別子、前記第１物理識別子、前記第２物理識別子、および前記第３物理識別子を対応付けるように前記対応関係データを更新し、
前記演算装置は、前記対応関係データの記述にしたがって前記第１データと前記第２データと前記第３データを前記論理データと対応付けることにより、前記制御ソフトウェアを実行する際に前記第１データと前記第２データと前記第３データを前記論理データとして取り扱い、
前記演算装置は、前記対応関係データの記述にしたがって前記論理データとして前記第３データを読み出す際に、前記第３誤り検出符号を用いて前記第３データの妥当性を検証し、
前記演算装置は、前記リプログラミングソフトウェアを実行することにより前記更新版制御ソフトウェアを前記不揮発性記憶装置に対して書き込む際に、前記制御ソフトウェアを前記更新版制御ソフトウェアに更新した旨を表す第４データを、前記不揮発性記憶装置に対して書き込み、
前記演算装置は、前記不揮発性記憶装置が前記第４データを格納しているか否かに基づき前記制御ソフトウェアが前記更新版制御ソフトウェアに更新されたか否かを判断し、
前記演算装置は、前記制御ソフトウェアが前記更新版制御ソフトウェアに更新されていないと判断した場合は、前記論理データを用いて前記制御ソフトウェアを実行し、
前記演算装置は、前記制御ソフトウェアが前記更新版制御ソフトウェアに更新されていると判断した場合は、前記論理データのうち少なくとも一部について所定の固定初期値に置き換えた上で前記更新版制御ソフトウェアを実行するとともに、前記第４データを削除することを特徴とする電子制御装置。
【請求項２】
前記第１データはさらに、前記第１データを更新した回数を表す第１書込回数カウンタを含み、
前記演算装置は、前記第１データを更新する際に前記第１書込回数カウンタをインクリメントし、
前記不揮発性記憶装置はさらに、前記制御ソフトウェアまたは前記更新版制御ソフトウェアの起動回数を表す第４データを格納しており、
前記演算装置は、前記制御ソフトウェアまたは前記更新版制御ソフトウェアを起動する際に、前記第４データをインクリメントし、
前記演算装置は、前記リプログラミングソフトウェアを実行することにより前記更新版制御ソフトウェアを前記不揮発性記憶装置に対して書き込む際に、その時点における前記第４データを前記不揮発性記憶装置に対して第５データとしてコピーし、
前記演算装置は、前記第５データの値が前記第１書込回数カウンタの値よりも小さい場合は、前記論理データを用いて前記更新版制御ソフトウェアを実行し、
前記演算装置は、前記第５データの値が前記第１書込回数カウンタの値よりも大きい場合は、前記論理データのうち少なくとも一部について所定の固定初期値に置き換えた上で前記更新版制御ソフトウェアを実行する
ことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記第５データはさらに、前記第５データの妥当性を検証するための第５誤り検出符号を含み、
前記演算装置は、前記第５誤り検出符号に基づき前記第５データが不正であると判断した場合は、前記第５データの値と前記第１書込回数カウンタの値いずれが大きいかによらず、前記論理データを用いて前記更新版制御ソフトウェアを実行することを特徴とする請求項２に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
自動車用のＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）は、その演算に用いるデータを記憶するために、通常の制御動作時は揮発性記憶装置を用いる。揮発性記憶装置の書き換えによる記憶性劣化は、自動車用として計算に用いるために十分な性能がある。また、書き込み、読み出し速度の性能も十分である。
【０００３】
一方、不揮発性記憶装置は書き換え回数に制約があり、計算用に用いるほどの頻度で書き換えた場合、自動車の耐用年数に対する性能は著しく低い。また、書き込み、読み出し速度の性能も不十分である。
【０００４】
そこで、ＥＣＵにおいて不揮発性記憶装置を用いる場合、電源が遮断されることを検知すると、制御ソフトウェアは揮発性記憶装置から不揮発性記憶装置に対してデータを移動させる。これにより、不揮発性記憶装置の性能不足を補うことを図っている。
【０００５】
下記特許文献１は、ＥＣＵにおいて不揮発性記憶装置に対してデータを書き込む際の技術を記載している。ＥＣＵが実行するソフトウェアは、その演算過程において、不揮発性記憶装置が永続的に格納するデータ（例えば制御マップなど）を用いる場合がある。そこでＥＣＵが起動するとき、ＥＣＵソフトウェアは前回遮断時に不揮発性記憶装置に対して書き込んだデータを読み出し、これを用いて演算を実施する。この際、不揮発性記憶装置の故障によりデータが破壊されている可能性がある。そこで同文献においては、そのようなデータ破損を検知するため、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）等の誤り検出符号を用いてデータの妥当性を判断している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１８５６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
自動車用ＥＣＵにおいて、機能の改善等を目的としてソフトウェアを更新（以下、リプロと略す）する場合、ソフトウェアを書き換える機能を持ったソフトウェア（以下、リプロローダと略す）が用いられる。ソフトウェア更新後にＥＣＵはいったんリセットされ、通常起動する。この場合、不揮発性記憶装置に記憶されたデータは、更新前のソフトウェアが使用することを前提としたデータである。このデータ内には、更新後ソフトウェアに対して引き継ぐべきデータと、更新後ソフトウェアにおいては無効であるデータとが混在している。更新に際してこの点に対処する必要がある。
【０００８】
ソフトウェアを更新する際に、不揮発性記憶装置に記憶すべきデータを追加する場合も考えられる。この場合は、追加したデータを書き込んだ後にこれを初めて読み出す際に誤りとして検出されることを避けるため、追加したデータを含むデータ集合は、その誤り検出符号を一致させる必要がある。
【０００９】
特許文献１の技術を用いる場合、ソフトウェア更新にともなって追加したデータを含むデータ集合を初めて読み出す際に、データ追加により拡張した記憶領域を含めたデータ集合の妥当性は必ずしも保証されていない。
【００１０】
本発明は、上記のような課題に鑑みてなされたものであり、ＥＣＵソフトウェアを更新した後にＥＣＵを起動するとき、不揮発性記憶装置から読み出すデータの妥当性を保証することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る電子制御装置は、不揮発性記憶装置が格納する複数の物理データを集約して１つの論理データとして取り扱い、個々の物理データの妥当性は各物理データが有する誤り検出符号によって個別に検証する。
【発明の効果】
【００１２】
本発明に係る電子制御装置によれば、制御ソフトウェアを更新した場合であっても、更新後の制御ソフトウェアが使用する論理データの妥当性を物理データごとに個別に検証することにより、更新後においても論理データの妥当性を保証することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態１に係る電子制御装置（ＥＣＵ）１００の構成図である。
【図２】物理グループ１１１のデータフォーマットを示す図である。
【図３】論理グループ１４０の構成を示す図である。
【図４】リプロローダ１３２が制御ソフトウェア１３１を書き換えるシーケンスを示す図である。
【図５】制御ソフトウェア１３１が参照する制御データが追加された後における論理グループ１４０の構成を示す図である。
【図６】実施形態２における論理グループ１４０の構成を示す図である。
【図７】実施形態３における物理グループ１１１のデータフォーマットを示す図である。
【図８】実施形態３における論理グループ１４０の構成を示す図である。
【図９】実施形態３におけるリプロローダ１３２の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
＜実施の形態１＞
図１は、本発明の実施形態１に係る電子制御装置（ＥＣＵ）１００の構成図である。ＥＣＵ１００は、制御対象（例えば車両が備えるアクチュエータなどの電気機器）を電子的に制御する装置であり、不揮発性記憶装置１１０、揮発性記憶装置１２０、不揮発性記憶装置１３０、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１６０を備える。揮発性記憶装置１２０は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。不揮発性記憶装置１１０と１３０は、例えばＥＥＰＲＯＭやＤａｔａＦｌａｓｈである。
【００１５】
不揮発性記憶装置１３０は、制御ソフトウェア１３１とリプロローダ１３２を格納している。ＣＰＵ１６０は、制御ソフトウェア１３１とリプロローダ１３２を実行する。ＣＰＵ１６０は、制御ソフトウェア１３１を実行することにより制御処理を実施する。以下では記載の便宜上、各ソフトウェアを動作主体として説明する場合があるが、実際にこれらソフトウェアを実行するのはＣＰＵ１６０であることを付言しておく。
【００１６】
ＣＰＵ１６０が制御ソフトウェア１３１を実行する際に必要な制御データは、揮発性記憶装置１２０に対して格納され、必要に応じて参照される。揮発性記憶装置１２０は、ＥＣＵ１００に対して電源電圧が供給される間はその値を保持しているが、電源供給が停止されると失われる。
【００１７】
リプロローダ１３２は、制御ソフトウェア１３１を書き換える。制御ソフトウェア１３１は、不揮発性記憶装置１１０が格納しているデータを用いるので、制御ソフトウェア１３１の更新にともなって不揮発性記憶装置１１０が格納しているデータも更新する場合がある。論理グループ１４０については後述する。
【００１８】
不揮発性記憶装置１１０に対してデータを書き込む際には、先に格納されているデータをいったん消去してから新たなデータを書き込む。例えばＤａｔａＦｌａｓｈは、１回に消去する領域のサイズが６４ｂｙｔｅなどのようにデバイス仕様として固定されている。このため、消去サイズと同じサイズ、あるいはその整数倍で記憶領域を分割し、グループとして管理する。各グループに対してアドレスを割り付けて物理グループとして取り扱うこととする。以下では不揮発性記憶装置１１０が有する記憶領域を、物理グループ１１１〜１１５の５つに分けるものとする。
【００１９】
図２は、物理グループ１１１のデータフォーマットを示す図である。物理グループ１１２〜１１５も同様のフォーマットを備える。物理グループ１１１は、物理ＩＤ１１１１、データ群１１１２、誤り検出符号１１１３を有する。物理グループ１１２〜１１５も同様の構成を備える。
【００２０】
物理ＩＤ１１１１は、各物理グループを特定する固有の数値であり、制御ソフトウェア１３１内部において一意となるように定められる。データ群１１１２は、複数のデータで構成されている。データ群１１１２のサイズは、物理グループ１１１が格納するデータサイズと同一でもよいしこれより大きくてもよい。データ群１１１２のサイズの方が大きい場合は、データが格納されていない領域は未使用領域となる。未使用領域は、例えば将来的な拡張領域としてあらかじめ決めた値を固定値として書き込むことができる。
【００２１】
誤り検出符号１１１３は、物理グループ１１１の妥当性を示すためのデータであり、例えばＣＲＣ （Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）を用いることができる。誤り検出符号１１１３による検出対象は、物理ＩＤ１１１１とデータ群１１１２である。ＣＰＵ１６０は、物理グループ１１１を読み出す際に、物理ＩＤ１１１１とデータ群１１１２から計算したＣＲＣを誤り検出符号１１１３と比較し、一致すれば物理ＩＤ１１１１とデータ群１１１２が有効であると判断する。これは、物理ＩＤ１１１１あるいはデータ群１１１２が意図せず変更されていないことを確認し、制御に悪影響を及ぼさないようにするためである。
【００２２】
図３は、論理グループ１４０の構成を示す図である。制御ソフトウェア１３１は、１以上の物理グループ（１１１〜１１５）を取りまとめて論理グループ１４０とすることにより、仮想的に１つのデータとして取り扱うことができる。例えば電源遮断時にも保持する必要がある制御データのうち、相互に関連するデータ群を１つの論理グループ１４０として取りまとめることが考えられる。
【００２３】
図３に示す例において、論理グループ１４０は、物理グループ１１１と１１２によって構成されている。論理グループ１４０は、論理ＩＤ１４１と論理データ１４２を有する。論理ＩＤ１４１は、論理グループ１４０を一意に識別するＩＤである。論理データ１４２は、物理グループ１１１と１１２それぞれのデータ群の集合である。
【００２４】
制御ソフトウェア１３１は、論理グループ１４０と物理グループ１１１〜１１２との間の対応関係２２０をあらかじめ保持している。例えば論理ＩＤ１４１／物理ＩＤ１１１１／物理ＩＤ１１２１の対応関係を保持することにより、これを実現できる。制御ソフトウェア１３１内部に対応関係２２０を保持することに代えて、対応関係２２０を定義したデータを不揮発性記憶装置１１０または１３０に格納し、制御ソフトウェア１３１がこれを参照してもよい。
【００２５】
リプロローダ１３２は、制御ソフトウェア１３１を不揮発性記憶装置１３０に対して書き込む際に、対応関係２２０を併せて書き込む（制御ソフトウェア１３１の一部または別データとして）。物理グループ１１１〜１１２については、それぞれ個別の物理グループとして不揮発性記憶装置１１０に対して書き込むとともに、誤り検出符号もそれぞれ個別に算出して書き込む。
【００２６】
制御ソフトウェア１３１は、論理グループの単位で制御データを参照する。例えば論理グループ１４０を読み出す際には、対応関係２２０にしたがって物理グループ１１１と１１２をまとめて読み出す。このとき、各物理グループについてはそれぞれの誤り検出符号に基づき誤り検出を実施する。いずれかの物理グループが意図せず変更されている場合、例えばその物理グループを含む論理グループ全体を無効として取り扱うこともできるし、当該物理グループのみ無効とすることもできる。
【００２７】
物理グループまたは論理グループを無効とした場合、制御ソフトウェア１３１は、その無効としたグループについては、不揮発性記憶装置１１０または１３０があらかじめ格納している固定値を代替値として、以後の制御処理において用いる。例えば性能は劣るが安全側に倒した固定値を用いることが考えられる。
【００２８】
制御ソフトウェア１３１は、対応関係２２０を更新する場合もあり得る。その場合、制御ソフトウェア１３１はＥＣＵ１００の電源を遮断する直前に、制御データを不揮発性記憶装置１１０に対して書き込むとともに、対応関係２２０を不揮発性記憶装置１１０に書き込む。
【００２９】
図４は、リプロローダ１３２が制御ソフトウェア１３１を書き換えるシーケンスを示す図である。図４においては時刻１〜時刻２の間に書換を実施している。制御ソフトウェア１３１を更新することにともない、制御ソフトウェア１３１が取り扱う制御データが追加される場合がある。この場合は対応関係２２０も追加後の内容を反映する必要がある。更新後の論理グループ１４０の構成について以下説明する。
【００３０】
図５は、制御ソフトウェア１３１が参照する制御データが追加された後における論理グループ１４０の構成を示す図である。制御ソフトウェア１３１を更新することにより、更新後の制御ソフトウェア１３１が参照する制御データが追加される場合がある。図５においては、論理データ１４３が新たに追加されている。リプロローダ１３２は、論理データ１４３に対応する物理グループ１１３と論理グループ１４０を関連付けるように、対応関係２２０を更新する。これにより、更新後の制御ソフトウェア１３１は物理グループ１１１〜１１３を用いて制御処理を実施することになる。
【００３１】
時刻１においては、制御ソフトウェア１３１は物理グループ１１３を使用しない。したがって時刻１においては、物理グループ１１３の用途は未定である。用途未定である物理グループ１１３は、例えば固定値とこれに対応する誤り検出符号１１３３を格納することができる。物理グループ１１３が格納する固定値の１例としては、制御処理を安全に動作させる初期パラメータが考えられる。
【００３２】
時刻２は、制御ソフトウェア１３１更新後の初回起動に相当する。制御ソフトウェア１３１は、論理データ１４２については更新前と同様に対応関係２２０に基づき正常に読み出すとともに、物理グループ１１１〜１１２それぞれの誤り検出符号によって個別に妥当性を検証することができる。さらに新たに追加された論理データ１４３についても、更新後の対応関係２２０にしたがって物理グループ１１３を正常に読み出すとともに、誤り検出符号１１３３によって妥当性を検証することができる。
【００３３】
物理グループ１１３は、制御ソフトウェア１３１の更新にともなって更新される場合もあるし更新されない場合もあるが、いずれの場合であっても全ての物理グループ１１１〜１１３について正常に読み出すとともにそれぞれの誤り検出符号を用いて妥当性を検証することができる。
【００３４】
制御ソフトウェア１３１は、ＥＣＵ１００の電源を遮断する直前に、論理データ１４２と１４３（すなわち物理グループ１１１〜１１３）を不揮発性記憶装置１１０に対して書き込むとともに、対応関係２２０を不揮発性記憶装置１１０に書き込む。以後同様に、論理データ１４２と１４３を制御処理において用いることができる。
【００３５】
＜実施の形態１：まとめ＞
本実施形態１に係るＥＣＵ１００は、制御ソフトウェア１３１が参照する物理グループを対応関係２２０によって論理グループとしてまとめるとともに、妥当性については各物理グループ自身がそれぞれ有する誤り検出符号によって個別に検証する。これにより、制御ソフトウェア１３１を更新することにともなって制御ソフトウェア１３１が参照する物理グループが変更されたとしても、更新後の対応関係２２０にしたがって各物理グループを参照することができるとともに、各物理グループの妥当性を更新前と同様に検証することができる。
【００３６】
制御ソフトウェア１３１は、物理グループ１１３を初めて使用する場合は、新たに追加された論理データ１４３に代えて固定初期値を用いることもできる。この固定初期値は例えばあらかじめ制御ソフトウェア１３１内部に組み込んでおくことができる。物理グループ１１３が初回使用であるか否かを判定する手法としては、例えば初回使用であることを明示的に表す値を物理グループ１１３内に格納しておくことが考えられる。制御ソフトウェア１３１は、新たに追加した物理グループ１１３がそのような値を格納している場合は初回使用であると判定することができる。
【００３７】
＜実施の形態２＞
実施形態１において、制御ソフトウェア１３１が更新されたことにともなって物理グループ１１３が追加された場合は、物理グループ１１３が格納されている値に基づき、制御ソフトウェア１３１の更新後の初回使用であることを判定できる旨を説明した。本発明の実施形態２では、更新後の初回使用（または制御ソフトウェア１３１自体の初回起動）を判定するその他手法について説明する。
【００３８】
図６は、本実施形態２における論理グループ１４０の構成を示す図である。図５で説明した構成に加えて、論理データ１４３と物理グループ１１４が新たに対応関係２２０によって関連付けられている点が、実施形態１とは異なる。物理グループ１１４は、制御ソフトウェア１３１を更新した旨を示すデータを格納する。詳細は後述する。
【００３９】
リプロローダ１３２は、制御ソフトウェア１３１を更新する際に、物理グループ１１４に対して、制御ソフトウェア１３１を更新した旨を示す更新フラグを書き込む。例えば更新版の制御ソフトウェア１３１を不揮発性記憶装置１３０に対して書き込んだ後に、更新フラグを書き込むことができる。更新フラグの値は、制御ソフトウェア１３１を更新したことが分かるのであれば任意でよい。リプロローダ１３２はさらに、対応関係２２０についても図６に示すように書き込む。
【００４０】
制御ソフトウェア１３１は、更新後の初回起動時（時刻２）において、対応関係２２０にしたがって物理グループ１１４を読み込む。物理グループ１１４は更新フラグを格納しているので、制御ソフトウェア１３１は更新後の初回起動であることを認識できる。制御ソフトウェア１３１は、初回起動時に限り、実施形態１で説明したように、物理グループ１１３が格納しているデータを固定初期値に置き換える。制御ソフトウェア１３１はその後、物理グループ１１４が格納している更新フラグを削除する。以後の動作は実施形態１と同様である。
【００４１】
＜実施の形態３＞
本発明の実施形態３では、制御ソフトウェア１３１が更新された後の初回起動であるか否かを判断する手法として、実施形態２で説明したものとは異なる手法を説明する。その他構成は実施形態１〜２と同様であるので、以下では差異点を中心に説明する。
【００４２】
本実施形態３において、物理グループ１１４は実施形態２で説明した更新フラグに代えて、起動回数カウンタを格納する。制御ソフトウェア１３１は、起動するごとにその起動回数カウンタを１ずつインクリメントする。
【００４３】
図７は、本実施形態３における物理グループ１１１のデータフォーマットを示す図である。本実施形態３において、物理グループ１１１は実施形態１で説明したフォーマットに加えて、書込回数カウンタ１１１４を有する。物理グループ１１２〜１１５も同様のフォーマットを有する。制御ソフトウェア１３１は、物理グループ１１１に対してデータを書き込む際に、起動回数カウンタの値を書込回数カウンタ１１１４に対して書き込む。これにより書込回数カウンタ１１１４は、物理グループ１１１が更新されたときの起動回数の積算値（換言すると更新時期）を表すことになる。
【００４４】
図８は、本実施形態３における論理グループ１４０の構成を示す図である。図６で説明した構成に加えて、論理データ１４３と物理グループ１１５が新たに対応関係２２０によって関連付けられている点が、実施形態２とは異なる。物理グループ１１５は、制御ソフトウェア１３１を更新した時点における起動回数カウンタを格納する。
【００４５】
図９は、本実施形態３におけるリプロローダ１３２の動作を説明するフローチャートである。以下図９の各ステップについて説明する。
【００４６】
（図９：ステップＳ９０１）
リプロローダ１３２は、リプログラミングを実施する条件が成立しているか否かを判断する。例えば、ＥＣＵ１００を搭載している自動車が停車中であり、ＥＣＵ１００の外部からリプログラミング要求が到着したことなどが条件として挙げられる。条件が成立した場合はステップＳ９０２へ進み、成立していない場合は本フローチャートを終了する。
【００４７】
（図９：ステップＳ９０２）
リプロローダ１３２は、物理グループ１１４が格納している起動回数カウンタの値を、物理グループ１１５に対して書き込む。これにより物理グループ１１５は、リプログラミングを実施したタイミング（そのタイミングにおける起動回数カウンタ）を格納することとなる。
【００４８】
（図９：ステップＳ９０３）
リプロローダ１３２は、不揮発性記憶装置１３０に対して制御ソフトウェア１３１の更新版を書き込む。
【００４９】
制御ソフトウェア１３１は、不揮発性記憶装置１１０から物理グループ（以下では便宜上物理グループ１１１とする）を読み出す際に、誤り検出符号による妥当性確認後、書込回数カウンタ１１１４と、物理グループ１１４が格納しているリプログラミング実施タイミングとを比較する。
【００５０】
リプログラミング実施タイミングの方が書込回数カウンタ１１１４よりも大きいか等しい場合、物理グループ１１１を更新した後にリプログラミングが実施されたことになる。したがって制御ソフトウェア１３１は、リプログラミング後における物理グループ１１１の初回読出であると判断することができる。制御ソフトウェア１３１は、初回読出であると判断した場合は、物理グループ１１１が格納している値に代えて、実施形態１で説明したように固定初期値を用いることができる。
【００５１】
リプログラミング実施タイミングの方が書込回数カウンタ１１１４よりも小さい場合、物理グループ１１１の方がリプログラミング実施タイミングよりも新しいことになる。したがって制御ソフトウェア１３１は、物理グループ１１１が格納している値をそのまま制御に用いることができる。
【００５２】
＜実施の形態３：まとめ＞
本実施形態３において、リプロローダ１３２が更新フラグを書き込むことなく、リプログラミング後の初回読出であるか否かを、物理グループごとに判断することができる。したがって実施形態２と比べると、リプロローダ１３２のサイズを小さくできる。またリプログラミング処理が簡易化されるので、リプログラミング時間を短縮することができる。
【００５３】
物理グループのなかには、制御ソフトウェア１３１を起動するごとに更新するとは限らないものもある。そのような物理グループについては、更新されるまでは書込回数カウンタが初回読出時と同じのままとなるので、更新タイミングと書込回数カウンタは同期されていることになる。したがって、更新タイミングの異なる物理グループが混在している場合であっても、本実施形態３の動作に特段支障は生じない。
【００５４】
本実施形態３においては、物理グループ１１５が格納しているリプログラミング実施タイミングを用いて、初回読出であるか否かを判定する。したがって、物理グループ１１５に対する妥当性検証が失敗した場合、初回読出であるか否かを判定できないので、その場合は判定をスキップしてもよい。
【符号の説明】
【００５５】
１００：ＥＣＵ
１１０：不揮発性記憶装置
１１１〜１１５：物理グループ
１２０：揮発性記憶装置
１３０：不揮発性記憶装置
１３１：制御ソフトウェア
１３２：リプロローダ
１４０：論理グループ
１４１：論理ＩＤ
１４２〜１４３：論理データ
【図１】
0006568826.tif 000002
【図２】
0006568826.tif 000003
【図３】
0006568826.tif 000004
【図４】
0006568826.tif 000005
【図５】
0006568826.tif 000006
【図６】
0006568826.tif 000007
【図７】
0006568826.tif 000008
【図８】
0006568826.tif 000009
【図９】
0006568826.tif 000010