(57)【要約】【課題】メモリ容量が節約でき、データの修復が可能な、不揮発性メモリのデータ書込失敗検出方法およびデータ書込失敗検出システムを提供する。【解決手段】複数のバイト２１、２２から構成されるデータ系列をＥＥＰＲＯＭ２０に書き込むにあたり、データ系列の上位バイト２１から下位バイト２２まで順に書き込んだ後、上位バイト２１に書き込まれたデータと同じデータを、追加バイト２３としてＥＥＰＲＯＭ２０に書き込む。そして、データ書込失敗検出システムへの電源投入直後に、最上位バイト２１に書き込まれているデータと追加バイト２３に書き込まれているデータとが一致しているか否かを検出することでデータ書込失敗を検出する。そして、データ書込失敗を検出した場合に、追加バイト２３に書き込まれているデータを上位バイト２１に書き込むようにすれば、少なくとも上位バイト２１は修復可能である。【選択図】図１
2008040939.tif 000002
【特許請求の範囲】
【請求項１】
複数のバイトから構成されるデータ系列を不揮発性メモリに書き込むにあたり、前記データ系列の上位バイトから下位バイトまで順に書き込んだ後、前記データ系列のうち前記下位バイトを除き少なくとも最上位バイトに書き込まれたデータと同じデータを、追加バイトとして前記不揮発性メモリに書き込むバックアップ記憶ステップと、
前記不揮発性メモリへの電源投入直後に、前記最上位バイトに書き込まれているデータと前記追加バイトに書き込まれているデータとが一致しているか否かを検出する書込失敗検出ステップと、
を備える不揮発性メモリのデータ書込失敗検出方法。
【請求項２】
前記書込失敗検出ステップにてデータの不一致が検出された場合に、前記最上位バイトのデータを修復するか否かを判定する判定ステップと、
前記判定ステップにて修復する旨の判定がなされた場合に、前記追加バイトに書き込まれているデータを前記最上位バイトに書き込むことにより、前記上位バイトのデータを修復する修復ステップと、
を備える請求項１記載の不揮発性メモリのデータ書込失敗検出方法。
【請求項３】
前記不揮発性メモリの所定のバイトにデータを書き込み更新する場合には、書き込み更新前のデータを一旦消去して特定のデータにした後に更新データに書き換えるようになっており、
前記判定ステップは、前記上位バイトが前記特定のデータである場合には前記修復する旨の判定を行う特定データ判定ステップを有する請求項２記載の不揮発性メモリのデータ書込失敗検出方法。
【請求項４】
前記データ系列は、増大方向にのみデータが変化するよう書き込み更新されていく系列であり、
前記判定ステップは、前記上位バイトのデータが前記追加バイトのデータよりも小さい値の場合には前記修復する旨の判定を行う大小比較判定ステップを有する請求項２記載の不揮発性メモリのデータ書込失敗検出方法。
【請求項５】
前記データ系列は、減少方向にのみデータが変化するよう書き込み更新されていく系列であり、
前記判定ステップは、前記上位バイトのデータが前記追加バイトのデータよりも大きい値の場合には前記修復する旨の判定を行う大小比較判定ステップを有する請求項２記載の不揮発性メモリのデータ書込失敗検出方法。
【請求項６】
不揮発性メモリの所定のバイトにデータを書き込み更新する場合には、書き込み更新前のデータを一旦消去して特定のデータにした後に更新データに書き換えるようになっており、
前記判定ステップは、前記上位バイトが前記特定のデータである場合には前記修復する旨の判定を行う特定データ判定ステップを有するとともに、前記特定データ判定ステップの判定結果を前記大小比較判定ステップの判定結果よりも優先させる請求項４または５記載の不揮発性メモリのデータ書込失敗検出方法。
【請求項７】
複数のバイトから構成されるデータ系列を不揮発性メモリに書き込むにあたり、その書き込みが失敗したか否かを検出するデータ書込失敗検出システムにおいて、
前記データ系列の上位バイトから下位バイトまで順に書き込んだ後、前記データ系列のうち前記下位バイトを除き少なくとも前記上位バイトに書き込まれたデータと同じデータを、追加バイトとして前記不揮発性メモリに書き込むバックアップ記憶手段と、
前記不揮発性メモリへの電源投入直後に、前記最上位バイトに書き込まれているデータと前記追加バイトに書き込まれているデータとが一致しているか否かを検出する書込失敗検出手段と、
を備えるデータ書込失敗検出システム。
【請求項８】
前記書込失敗検出手段にてデータの不一致が検出された場合に、前記最上位バイトのデータを修復するか否かを判定する判定手段と、
前記判定手段にて修復する旨の判定がなされた場合に、前記追加バイトに書き込まれているデータを前記最上位バイトに書き込むことにより、前記上位バイトのデータを修復する修復手段と、
を備える請求項７記載のデータ書込失敗検出システム。
【請求項９】
前記不揮発性メモリの所定のバイトにデータを書き込み更新する場合には、書き込み更新前のデータを一旦消去して特定のデータにした後に更新データに書き換えるようになっており、
前記判定手段は、前記上位バイトが前記特定のデータである場合には前記修復する旨の判定を行う特定データ判定手段を有する請求項８記載のデータ書込失敗検出システム。
【請求項１０】
前記データ系列は、増大方向にのみデータが変化するよう書き込み更新されていく系列であり、
前記判定手段は、前記上位バイトのデータが前記追加バイトのデータよりも小さい値の場合には前記修復する旨の判定を行う大小比較判定手段を有する請求項８記載のデータ書込失敗検出システム。
【請求項１１】
前記データ系列は、増大方向にのみデータが変化するよう書き込み更新されていく系列であり、
前記判定手段は、前記上位バイトのデータが前記追加バイトのデータよりも大きい値の場合には前記修復する旨の判定を行う大小比較判定手段を有する請求項８記載のデータ書込失敗検出システム。
【請求項１２】
不揮発性メモリの所定のバイトにデータを書き込み更新する場合には、書き込み更新前のデータを一旦消去して特定のデータにした後に更新データに書き換えるようになっており、
前記判定手段は、前記上位バイトが前記特定のデータである場合には前記修復する旨の判定を行う特定データ判定手段を有するとともに、前記特定データ判定手段の判定結果を前記大小比較判定手段の判定結果よりも優先させる請求項１０または１１記載のデータ書込失敗検出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリにデータを書き込むにあたりデータ書込失敗の有無を検出する、不揮発性メモリのデータ書込失敗検出方法およびデータ書込失敗検出システムに関する。
【背景技術】
【０００２】
ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等の不揮発性メモリへデータ系列を書き込む場合、書込み途中に電源断等によりデータが破壊されることがある。この対策として次の２つの方法が従来より知られている。
特許文献１に記載の方法では、同じデータを異なる３つの領域に書き込み、電源復旧直後の読み込み時に３つの領域のデータが異なる値の場合には、多数決によりデータを修復させる。すなわち、３つの領域のデータのうち１つのデータが他の２つのデータと異なる場合には、１つのデータを他の２つのデータと同一の値になるように修復する。
特許文献２に記載の方法では、同じデータを異なる２つの領域に書き込み、電源復旧直後の読み込み時に２つの領域のデータが異なる値の場合には、いずれのデータをもデフォルトデータに書き替えて修復する。
【０００３】
【特許文献１】特開平１０−１４５６０５号公報
【特許文献２】特開平４−２４３０６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の方法では、同じデータを異なる３つの領域に書き込む必要があるため、３倍のメモリ容量が必要となる。
また、特許文献２に記載の方法では、単にデフォルトデータに書き替えるだけであり、データを修復することはできない。
【０００５】
そこで、本発明の目的は、メモリ容量が節約でき、データの修復が可能な、不揮発性メモリのデータ書込失敗検出方法およびデータ書込失敗検出システムを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１および７記載の発明では、複数のバイトから構成されるデータ系列を不揮発性メモリに書き込むにあたり、データ系列の上位バイトから下位バイトまで順に書き込んだ後、バックアップ記憶ステップ（請求項７においてはバックアップ記憶手段）により最上位バイトは追加バイトにバックアップされるものの、下位バイトはバックアップされない。そのため、データ系列を構成する全てのバイトをバックアップする場合に比べてメモリ容量を節約できる。
そして、電源投入直後に、最上位バイトのデータと追加バイトのデータとが一致していなければ書込失敗検出ステップ（請求項７においては書込失敗検出手段）によりデータ書込失敗を検出できる。
さらに、データ書込失敗を検出した場合に、例えば、追加バイトに書き込まれているデータを最上位バイトに書き込むようにすれば、少なくとも最上位バイトは修復可能である。
【０００７】
ここで、書込失敗検出ステップ（書込失敗検出手段）にてデータの不一致が検出される場合として、追加バイトおよび最上位バイトのうち最上位バイトの書き込みのみが失敗した場合と、追加バイトの書き込みのみが失敗した場合とがある。
これに対し、請求項２および８記載の発明では、書込失敗検出ステップ（書込失敗検出手段）にてデータの不一致が検出された場合に、最上位バイトのデータを修復するか否かを判定する判定ステップ（請求項８においては判定手段）を備える。そして、判定ステップ（判定手段）にて修復する旨の判定がなされた場合に、追加バイトに書き込まれているデータを最上位バイトに書き込むことにより、上位バイトのデータを修復する。
そのため、追加バイトおよび最上位バイトのうち最上位バイトの書き込みのみが失敗した場合には、最上位バイトのデータを追加バイトのデータに修復し、追加バイトの書き込みのみが失敗した場合には最上位バイトのデータをそのままにすることができるので、最上位バイトのデータを好適に修復できる。
【０００８】
ここで、不揮発性メモリの所定のバイトにデータを書き込み更新する場合には、書き込み更新前のデータを一旦消去して特定のデータにした後に更新データに書き換える書込方式がある。このような書込方式の場合において、請求項３および９記載の発明では、判定ステップ（判定手段）は、上位バイトが特定のデータである場合には修復する旨の判定を行う特定データ判定ステップ（請求項９においては特定データ判定手段）を有する。
そのため、電源復旧直後の読み込み時に上位バイトが特定のデータである場合には、更新前のデータを一旦消去した状態で電源断が発生したことが特定データ判定ステップ（特定データ判定手段）により判定される。よって、書込失敗検出ステップ（書込失敗検出手段）にてデータの不一致が検出された場合に、追加バイトおよび最上位バイトのうち最上位バイトの書き込みが失敗したことを容易に判定できるので、最上位バイトのデータを好適に修復できる。
【０００９】
請求項４および１０記載の発明では、データ系列は、増大方向にのみデータが変化するよう書き込み更新されていく系列であり、判定ステップ（判定手段）は、上位バイトのデータが追加バイトのデータよりも小さい値の場合には修復する旨の判定を行う大小比較判定ステップ（請求項１０においては大小比較判定手段）を有する。
そして、データ系列が、増大方向にのみデータが変化するよう書き込み更新されていく系列である場合には、上位バイトのデータが追加バイトのデータよりも小さい値であれば、追加バイトおよび最上位バイトのうち最上位バイトの書き込みが失敗したことが明らかとなる。よって、書込失敗検出ステップ（書込失敗検出手段）にてデータの不一致が検出された場合に、追加バイトおよび最上位バイトのうち最上位バイトの書き込みが失敗したことを容易に判定できるので、最上位バイトのデータを好適に修復できる。
【００１０】
請求項５および１１記載の発明では、データ系列は、減少方向にのみデータが変化するよう書き込み更新されていく系列であり、判定ステップ（判定手段）は、上位バイトのデータが追加バイトのデータよりも大きい値の場合には修復する旨の判定を行う大小比較判定ステップ（請求項１１においては大小比較判定手段）を有する。
そして、データ系列が、減少方向にのみデータが変化するよう書き込み更新されていく系列である場合には、上位バイトのデータが追加バイトのデータよりも大きい値であれば、追加バイトおよび最上位バイトのうち最上位バイトの書き込みが失敗したことが明らかとなる。よって、書込失敗検出ステップ（書込失敗検出手段）にてデータの不一致が検出された場合に、追加バイトおよび最上位バイトのうち最上位バイトの書き込みが失敗したことを容易に判定できるので、最上位バイトのデータを好適に修復できる。
【００１１】
請求項６および１２記載の発明では、判定ステップ（判定手段）は、上位バイトが特定のデータである場合には修復する旨の判定を行う特定データ判定ステップ（特定データ判定手段）を有するとともに、特定データ判定ステップ（特定データ判定手段）の判定結果を大小比較判定ステップ（大小比較判定手段）の判定結果よりも優先させる。
ここで、大小比較判定ステップ（大小比較判定手段）による判定結果よりも特定データ判定ステップ（特定データ判定手段）の判定結果の方が、最上位バイトの書き込みが失敗したことに対する判定の確実性が高いので、請求項６および１２記載の発明によれば、最上位バイトのデータの修復精度を良好にできる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の各実施形態を図１〜図４に基づいて説明する。
（第１実施形態）
図１は、本第１実施形態に係るデータ書込失敗検出システムを示すブロック図である。このデータ書込失敗検出システムは、中央演算処理装置としてのＣＰＵ１０、不揮発性メモリとしてのＥＥＰＲＯＭ２０および揮発性メモリとしてのＲＡＭ３０を備えて構成されている。
【００１３】
ＣＰＵ１０は、ＥＥＰＲＯＭ２０内のデータを読み込み、この読み込んだデータをＲＡＭ３０を作業領域として演算等の処理を実行する。その後、ＣＰＵ１０は、演算等の処理により得られたデータをＥＥＰＲＯＭ２０に書き込む。すなわち、ＥＥＰＲＯＭ２０内のデータを書き込み更新する。なお、図１に示す例では、ＣＰＵ１０による上記演算等の処理とは、カウンタにより１ずつ数値を加算する処理である。よって、ＥＥＰＲＯＭ２０のデータは、増大方向にのみデータが変化するよう書き込み更新されていく。
【００１４】
この書き込み更新の最中に電源断等が生じることによりデータが破壊されることがあり、書き込み更新が失敗することがある。本実施形態に係るデータ書込失敗検出システムは、このような書き込み更新の失敗を検出し、ある程度のデータ修復が可能である。以下に、通常の書き込み更新手順と、書き込み更新失敗の検出および修復手順を図１を用いて説明する。
なお、以下の説明では、ＥＥＰＲＯＭ２０に記憶され、上位バイト２１および下位バイト２２から構成されたデータ系列を一例として説明する。
【００１５】
＜通常の書き込み更新手順＞
通常の書き込み更新においては、先ず、ＥＥＰＲＯＭ２０の上位バイト２１、下位バイト２２および追加バイト２３に記憶されたデータを、ＲＡＭ３０の上位バイト３１、下位バイト３２および追加バイト３３に読み出す。追加バイト２３、３３には、上位バイト２１、３１に書き込まれたデータと同じデータがバックアップデータとして書き込まれている。
【００１６】
この時点では、ＥＥＰＲＯＭ２０の上位バイト２１、下位バイト２２および追加バイト２３のデータは、それぞれ$00、$FF、$00である（符号Ａ参照）。また、ＲＡＭ３０の上位バイト３１、下位バイト３２および追加バイト３３のデータは、それぞれ$00、$FF、$00である（符号Ｘ参照）。なお、上記「$」は、データが１６進数である旨を表記する記号である。
その後、ＣＰＵ１０は、ＲＡＭ３０の上位バイト３１および下位バイト３２から構成されるデータ系列に１を加算する処理を実行し、ＲＡＭ３０の上位バイト３１、下位バイト３２および追加バイト３３のデータを、それぞれ$01、$00、$01（符号Ｙ参照）に書き込み更新する。
【００１７】
次に、ＣＰＵ１０は、ＥＥＰＲＯＭ２０のデータをＲＡＭ３０のデータに書き込み更新する。この書き込み更新にあたり、先ず、上位バイト２１のデータ$00を＄01に書き込み更新し（符号Ｂ参照）、その後、下位バイト２２のデータ$FFを＄00に書き込み更新し（符号Ｃ参照）、最後に、バックアップ記憶ステップとして、追加バイト２３のデータ$00を＄01に書き込み更新する（符号Ｄ参照）。
【００１８】
なお、各バイト２１、２２、２３を書き込み更新する際には、書き込み更新前のデータを一旦消去して特定のデータにした後に更新データに書き換えるようになっている。例えば、上位バイト２１を符号Ｂの如く書き込み更新する場合には、上位バイト２１のデータ$01は一端消去されて特定のデータである$FFとなり（符合Ｂ’参照）、その後、更新データ$01に書き換えられる。
【００１９】
＜書き込み更新失敗の検出および修復手順＞
ここで、ＥＥＰＲＯＭ２０のデータをＲＡＭ３０のデータに書き込み更新する途中で電源断となった場合のうち、符号Ｂに示すように、上位バイト２１のみが書き込み更新され、下位バイト２２および追加バイト２３は未だ書き込み更新されていない状態で電源断となった場合に次の手順によりデータ書込失敗検出および修復がなされる。
【００２０】
すなわち、電源が復旧して、データ書込失敗検出システムに電源を投入した直後に、ＥＥＰＲＯＭ２０の上位バイト２１に書き込まれているデータと追加バイト２３に書き込まれているデータとが一致しているか否かをＣＰＵ１０が検出する（書込失敗検出ステップ）。この検出を実行しているときのＣＰＵ１０は特許請求の範囲に記載の書込失敗検出手段に相当する。
そして、上位バイト２１のデータと追加バイト２３のデータとが一致していなければ、データ書込失敗であることが検出される。
【００２１】
次に、上位バイト２１のデータと追加バイト２３のデータとが一致していなければ、上位バイト２１のデータが追加バイト２３のデータよりも小さい値であるか否かを判定する（判定ステップ、大小比較判定ステップ）。この判定を実行しているときのＣＰＵ１０は特許請求の範囲に記載の判定手段および大小比較判定手段に相当する。
そして、図１に示す例では、ＥＥＰＲＯＭ２０のデータは、増大方向にのみデータが変化するよう書き込み更新されていくものであるため、上位バイト２１のデータが追加バイト２３のデータよりも小さい値であれば、追加バイト２３および上位バイト２１のうち上位バイト２１の書き込みが失敗したことが明らかとなる。
【００２２】
よって、上位バイト２１のデータが追加バイト２３のデータよりも小さい値であると判定した場合には、ＣＰＵ１０は、追加バイト２３に書き込まれているデータを上位バイト２１に書き込むことにより、上位バイト２１のデータを修復する（修復ステップ）。一方、上位バイト２１のデータが追加バイト２３のデータよりも大きい値であると判定した場合には、ＣＰＵ１０は、上位バイト２１に書き込まれているデータを追加バイト２３に書き込むことにより、追加バイト２３のデータを符号Ｅに示す如く修復する（修復ステップ）。なお、これらの修復を実行しているときのＣＰＵ１０は、特許請求の範囲に記載の修復手段に相当する。
【００２３】
符号Ｂ’に示すように、上位バイト２１の書き込み更新途中であり、上位バイト２１が特定のデータ$FFとなっている最中に電源断となった場合であっても、上記手順と同様の手順によりデータ書込失敗検出および修復が可能である。
【００２４】
すなわち、電源が復旧して、データ書込失敗検出システムに電源を投入した直後に、ＥＥＰＲＯＭ２０の上位バイト２１に書き込まれているデータと追加バイト２３に書き込まれているデータとが一致しているか否かをＣＰＵ１０が検出する。そして、上位バイト２１のデータと追加バイト２３のデータとが一致していなければ、データ書込失敗であることが検出される。
【００２５】
次に、上位バイト２１のデータと追加バイト２３のデータとが一致していなければ、上位バイト２１のデータが追加バイト２３のデータよりも小さい値であるか否かを判定する。ここで、図１に示す例では、ＥＥＰＲＯＭ２０の所定のバイトにデータを書き込み更新する場合には、書き込み更新前のデータを一旦消去して特定のデータ$FFにした後に更新データに書き換える書込方式である。そのため、電源復旧直後の読み込み時に上位バイト２１が特定のデータ$FFである場合には、更新前のデータを一旦消去した状態で電源断が発生したことがＣＰＵ１０により判定される（特定データ判定ステップ）。なお、この判定を実行しているときのＣＰＵ１０は、特許請求の範囲に記載の特定データ判定手段に相当する。
【００２６】
よって、上位バイト２１のデータが特定のデータ$FFであると判定した場合には、ＣＰＵ１０は、追加バイト２３に書き込まれているデータを上位バイト２１に書き込むことにより、符号Ｆに示す如く上位バイト２１のデータを修復する（修復ステップ）。なお、この修復を実行しているときのＣＰＵ１０は、特許請求の範囲に記載の修復手段に相当する。
【００２７】
また、下位バイト２２については、ＥＥＰＲＯＭ２０のデータをＲＡＭ３０のデータに書き込み更新する途中で電源断となり、電源が復旧して、データ書込失敗検出システムに電源を投入した直後において、ＣＰＵ１０は、下位バイト２２のデータを強制的に$00に修正する。
【００２８】
以上により、本第１実施形態によれば、複数のバイトから構成されるデータ系列のうち上位バイト２１のみを追加バイトにてバックアップする。すなわち、データ系列を構成する複数のバイトに優先順位をつけて、優先順位の高い上位バイト２１のみをバックアップしている。そのため、データ系列を構成する全てのバイトをバックアップする場合に比べてメモリ容量を節約でき、しかも、上位バイト２１についてはデータの修復が可能となる。従って、本第１実施形態を適用するデータ系列は、下位バイト２２を無視しても制御にあまり影響の出ないものが好適である。
【００２９】
（第２実施形態）
本発明の第２実施形態を図２に示す。なお、第１実施形態と実質的に同一構成部分には同一符号を付す。
【００３０】
上記第１実施形態では、ＥＥＰＲＯＭ２０のデータが、増大方向にのみデータが変化するよう書き込み更新されていく場合に本発明を適用しているが、本第２実施形態では、ＥＥＰＲＯＭ２０のデータが、減少方向にのみデータが変化するよう書き込み更新されていく場合に本発明を適用したものである。
【００３１】
図２を用いて具体的に説明すると、上位バイト２１のデータと追加バイト２３のデータとが一致していなければ、上位バイト２１のデータが追加バイト２３のデータよりも大きい値であるか否かを判定する（判定ステップ、大小比較判定ステップ）。この判定を実行しているときのＣＰＵ１０は特許請求の範囲に記載の判定手段および大小比較判定手段に相当する。
そして、図２に示す例では、ＥＥＰＲＯＭ２０のデータは、減少方向にのみデータが変化するよう書き込み更新されていくものであるため、上位バイト２１のデータが追加バイト２３のデータよりも大きい値であれば、追加バイト２３および上位バイト２１のうち上位バイト２１の書き込みが失敗したことが明らかとなる。
【００３２】
よって、上位バイト２１のデータが追加バイト２３のデータよりも大きい値であると判定した場合には、ＣＰＵ１０は、追加バイト２３に書き込まれているデータを上位バイト２１に書き込むことにより、上位バイト２１のデータを修復する（修復ステップ）。一方、上位バイト２１のデータが追加バイト２３のデータよりも小さい値であると判定した場合には、ＣＰＵ１０は、上位バイト２１に書き込まれているデータを追加バイト２３に書き込むことにより、追加バイト２３のデータを図２の符号Ｅに示す如く修復する（修復ステップ）。なお、これらの修復を実行しているときのＣＰＵ１０は、特許請求の範囲に記載の修復手段に相当する。
【００３３】
（第３実施形態）
本発明の第３実施形態を図３に示す。なお、第１実施形態と実質的に同一構成部分には同一符号を付す。
上記第１実施形態では、ＥＥＰＲＯＭ２０のデータが、増大方向にのみデータが変化するよう書き込み更新されていく場合に本発明を適用しているが、本第３実施形態では、ＥＥＰＲＯＭ２０のデータが、増大方向および減少方向のいずれにも変化するよう書き込み更新されていく場合に本発明を適用したものである。
【００３４】
図３を用いて具体的に説明すると、上位バイト２１のデータと追加バイト２３のデータとが一致していなければ、ＣＰＵ１０は、上位バイト２１に書き込まれているデータを追加バイト２３に書き込むことにより、追加バイト２３のデータを図２の符号Ｅに示す如く修復する（修復ステップ）。なお、これらの修復を実行しているときのＣＰＵ１０は、特許請求の範囲に記載の修復手段に相当する。
これは、ＥＥＰＲＯＭ２０のデータは、上位バイト２１、下位バイト２２、追加バイト２３の順に書き込み更新されるため、上位バイト２１のデータと追加バイト２３のデータとが一致していない場合は、上位バイト２１および追加バイト２３のうち追加バイト２３データのほうが破壊されている可能性が高いためである。
【００３５】
また、下位バイト２２については、ＥＥＰＲＯＭ２０のデータをＲＡＭ３０のデータに書き込み更新する途中で電源断となり、電源が復旧して、データ書込失敗検出システムに電源を投入した直後において、ＣＰＵ１０は、下位バイト２２のデータを強制的に$FFまたは$00に修正する。
【００３６】
（第４実施形態）
図４は、本第４実施形態に係るＣＰＵ１０による制御手順を示すフローチャートである。なお、本第４実施形態は、上記第１、第２および第３実施形態に係るＣＰＵ１０による制御を包括したものである。なお、本第４実施形態に係るデータ書込失敗検出システムのハード構成は、上記第１実施形態と同様である。
【００３７】
先ず、ステップＳ１０において、ＥＥＰＲＯＭ２０の上位バイト２１と追加バイト２３とが一致しているか否かを判定する。一致していないと判定された場合（Ｓ１０：ＮＯ）には、ステップＳ２０において、上位バイト２１が特定データ（例えば$FF）であるか否かを判定する。
【００３８】
上位バイト２１が特定データであると判定された場合（Ｓ２０：ＹＥＳ）には、ステップＳ５０において、下位バイト２２のデータを強制的に$FFまたは$00に修正する。
一方、上位バイト２１が特定データでないと判定された場合（Ｓ２０：ＮＯ）には、ステップＳ３０、Ｓ４０において、ＥＥＰＲＯＭ２０のデータが、増大方向にのみデータが変化するよう書き込み更新されていくデータであるか、或いは、減少方向にのみデータが変化するよう書き込み更新されていくデータであるかを判定する。
【００３９】
増大方向にのみデータが変化するよう書き込み更新されていくデータであると判定された場合（Ｓ３０：ＹＥＳ）には、下位バイト２２のデータを強制的に$00に修正する（ステップＳ９０）。減少方向にのみデータが変化するよう書き込み更新されていくデータであると判定された場合（Ｓ３０：ＮＯ、Ｓ４０：ＹＥＳ）には、下位バイト２２のデータを強制的に$FFに修正する（ステップＳ７０）。また、上位バイト２１が特定データではなく（Ｓ２０：ＮＯ）、データの変化に方向性もない場合（Ｓ３０：ＮＯかつＳ４０：ＮＯ）には、ステップＳ５０に進み、下位バイト２２のデータを強制的に$FFまたは$00に修正する。
【００４０】
ステップＳ５０の処理の後、ステップＳ５５において、上位バイト２１のデータが所定値より大きいか否かを判定することで、上位バイト２１のデータが異常に大きい値になっているか否かを判定する。上位バイト２１のデータが所定値より大きく、上位バイト２１のデータが異常に大きい値であると判定された場合（Ｓ５５：ＹＥＳ）には、追加バイト２３および上位バイト２１のうち上位バイト２１の書き込みが失敗した可能性が高いため、ステップＳ６０において、追加バイト２３に書き込まれているデータを上位バイト２１に書き込むことにより、上位バイト２１のデータを修復する。
一方、上位バイト２１のデータが所定値以下であり、上位バイト２１のデータが異常に大きい値ではないと判定された場合（Ｓ５５：ＮＯ）には、ステップＳ６０において、追加バイト２３に書き込まれているデータを上位バイト２１に書き込むことにより、上位バイト２１のデータを修復する。
【００４１】
また、データの変化に方向性があると判定された場合（Ｓ３０：ＹＥＳまたはＳ４０：ＹＥＳ）には、ステップＳ６０において、追加バイト２３に書き込まれているデータを上位バイト２１に書き込むことにより、上位バイト２１のデータを修復する。これは、ＥＥＰＲＯＭ２０のデータは、上位バイト２１、下位バイト、追加バイト２３の順に書き込み更新されるため、上位バイト２１のデータと追加バイト２３のデータとが一致していない場合には、上位バイト２１のデータが最新のデータであり、追加バイト２３のデータは更新前のデータである可能性が高いからである。
【００４２】
（他の実施形態）
上記各実施形態にて取り扱っているデータ系列は、上位バイト２１および下位バイト２２から構成されているが、上位バイト２１、中位バイトおよび下位バイト２２から構成されたデータ系列に本発明を適用してもよく、中位バイトは複数であってもよい。その場合には、上位バイト２１が、特許請求の範囲に記載の「最上位バイト」に相当することとなる。
また、上記各実施形態では、本発明に係る不揮発性メモリとしてＥＥＰＲＯＭ２０を適用しているが、本発明はこれに限られるものではなく、例えばフラッシュメモリ等を適用してもよい。
このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【図面の簡単な説明】
【００４３】
【図１】本発明の第１実施形態に係るデータ書込失敗検出システムを示すブロック図。
【図２】本発明の第２実施形態に係るデータ書込失敗検出システムを示すブロック図。
【図３】本発明の第３実施形態に係るデータ書込失敗検出システムを示すブロック図。
【図４】本発明の第４実施形態に係るＣＰＵによる制御手順を示すフローチャート。
【符号の説明】
【００４４】
２０：ＥＥＰＲＯＭ（不揮発性メモリ）、２１：上位バイト（最上位バイト）、２２：下位バイト、２３：追加バイト。
【図１】
2008040939.tif 000003
【図２】
2008040939.tif 000004
【図３】
2008040939.tif 000005
【図４】
2008040939.tif 000006