(57)【要約】【課題】データが破壊された場合にも、できるだけ新らしいデータを保持できるメモリのデータ書替方法を提供する。【解決手段】フラッシュメモリ１３の書替エリアを複数に分割すると共に分割した複数のエリアＡ〜Ｄに対して順番に書替を行っていき、書替毎に書替するエリアを切替えるようにする。これにより、複数に分割された各エリアＡ〜Ｄそれぞれに対してデータを保持することができ、最も新しく選択されたエリアに最新データへの書替を行いつつ、他のエリアにそれぞれ過去のデータを保持させることが可能となる。したがって、仮に最新データの書替を行っている最中に電源遮断などによってデータが破壊された場合にも、書替中のエリアと異なるエリアに過去のデータを保持することが可能となる。【選択図】図２
2009116521.tif 000002
【特許請求の範囲】
【請求項１】
マイコン（１２）に備えられるメモリ（１３）のデータの書替を行うメモリのデータ書替方法であって、
前記メモリ（１３）の書替エリアを複数のエリア（Ａ〜Ｄ）に分割すると共に、該複数のエリア（Ａ〜Ｄ）で書替を行う順番を予め決めておき、１回のデータの書替毎に前記順番に従って前記複数のエリア（Ａ〜Ｄ）に対する書替を行い、前記複数のエリア（Ａ〜Ｄ）すべてにデータの書替が行われると、再び前記順番の最初のエリア（Ａ）から消去・書替を行うことを特徴とするメモリのデータ書替方法。
【請求項２】
前記複数のエリア（Ａ〜Ｄ）それぞれにデータの書替回数をカウントするカウンタを備え、前記複数のエリア（Ａ〜Ｄ）に備えられた各カウンタのカウント値が小さいもののうち、最も前記順番が早いエリアを次に書替を行うエリアとして選択することを特徴とする請求項１に記載のメモリのデータ書替方法。
【請求項３】
前記複数のエリア（Ａ〜Ｄ）は更に最小消去単位の整数倍のビット数とされた複数の書替ブロックに分割され、書替時には、前記複数の書替ブロックに対して順番に消去を行った後、当該順番とは逆の順番で前記複数の書替ブロックに対して書き込みを行うことによりデータの書替を行うことを特徴とする請求項１または２に記載のメモリのデータ書替方法。
【請求項４】
前記複数のエリア（Ａ〜Ｄ）に対してデータの書替を行ったときに、前記複数のエリア（Ａ〜Ｄ）それぞれでチェックサムを行うことを特徴とする請求項１ないし３のいずれか１つに記載のメモリのデータ書替方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書替可能回数に制限があるフラッシュメモリなどのようなメモリのデータ書替方法に関するものである。
【背景技術】
【０００２】
従来より、エンジン制御用の電子制御装置（以下、エンジンＥＣＵという）等では、車両状態に応じて適宜データの更新を行う必要があり、メモリにデータの書替えを行っている。このメモリとしては、ＥＥＰＲＯＭなどがあるが、近年ではコストダウンのためにＥＥＰＲＯＭの代替としてマイコン内のフラッシュメモリが使用されている。しかしながら、一般的にフラッシュメモリの書替可能回数がＥＥＰＲＯＭの書替可能回数に対して少ないことから、フラッシュメモリの書替エリアを分割して使用することにより、ＥＥＰＲＯＭ相当の書替回数を実現している（特許文献１参照）。この手法について、図４を参照して説明する。
【０００３】
図４は、２．５万回書替可能な４ｋＢのフラッシュメモリの書替エリアを分割して使用するときの様子を示した模式図である。
【０００４】
図４の紙面左側に記載したフラッシュメモリの全体構造に示されるように、フラッシュメモリが各エリア１ｋＢの４つのエリアＡ〜Ｄに分けられている。各エリアＡ〜Ｄにはそれぞれ書替回数を記憶するためのカウンタが備えられており、書替えが行われるごとにカウント値がインクリメントされる。
【０００５】
図４において紙面中央には各エリアの詳細構造（ここでは代表としてエリアＡのみ）を示してある。これに示されるように、各エリアＡ〜Ｄの書替ブロックは、消去単位に設定されており、各エリアＡ〜Ｄの消去単位ごとに書込みおよび消去が行われる。そして、書替時には、例えばエリアＡの場合、まず保持されているデータの消去をブロックＡ−４からブロックＡ−１の順番で行ったのち、続いて新たなデータの書き込みを消去時とは逆にブロックＡ−１からブロックＡ−４の順番で行う。このようにして、データの書替を行う。
【０００６】
これら各エリアＡ〜Ｄでの書替は、まずはエリアＡから行われ、エリアＡのカウンタのカウント値がエリアＡの書替可能回数である２５０００に到達すると、次のエリアＢに対して行われる。そして、エリアＢのカウント値が書込可能回数に到達すると続いてエリアＣに対して書込・消去が行われ、同様にエリアＣのカウント値が書込可能回数に到達すると最後にエリアＤに対して書込・消去が行われる。このようにして、合計１０万回の書替えに対応することが可能となる。
【特許文献１】特開２００７−１３３６８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、書替中に例えば電源遮断が起こった場合や処理エラーが発生して中断された場合、書替を行っていたエリアのデータ全体が破壊されることになるため、そのエリアのデータを復元できないという問題がある。つまり、書替時に最新データあった場所に上書きしているため、最新データ消去後に現在のデータが書込まれることになり、その書替中に電源遮断などが起こると、そのエリアのデータが既に消失しており、データを復元できないのである。また、データ化けした場合にもそれをチェックすることができず、各エリアのデータの信頼性を確保することができない。
【０００８】
本発明は上記点に鑑みて、データが破壊された場合にも、できるだけ新らしいデータを保持できるメモリのデータ書替方法を提供する。さらに、データが破壊された場合にも、できるだけ新しいデータを保持でき、かつ、データ化けが検出できるようにすることを他の目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明では、マイコン（１２）に備えられるメモリ（１３）のデータの書替を行うメモリのデータ書替方法において、メモリ（１３）の書替エリアを複数のエリア（Ａ〜Ｄ）に分割すると共に、該複数のエリア（Ａ〜Ｄ）で書替を行う順番を予め決めておき、１回のデータの書替毎に順番に従って複数のエリア（Ａ〜Ｄ）に対する消去・書替を行い、複数のエリア（Ａ〜Ｄ）すべてにデータの書替が行われると、再び順番の最初のエリア（Ａ）から書替を行うことを特徴としている。
【００１０】
このように、メモリの書替エリアを複数に分割すると共に分割した複数のエリア（Ａ〜Ｄ）に対して順番に書替を行っていき、書替毎に書替するエリアを切替えるようにしている。このため、複数に分割された各エリア（Ａ〜Ｄ）それぞれに対してデータを保持することができ、最も新しく選択されたエリアに最新データへの書替を行いつつ、他のエリアにそれぞれ過去のデータを保持させることが可能となる。
【００１１】
したがって、仮に最新データの書替を行っている最中に電源遮断などによってデータが破壊された場合にも、書替中のエリアと異なるエリアに過去のデータを保持することが可能となる。これにより、できるだけ新しいデータを保持できるメモリのデータ書替方法とすることが可能となる。
【００１２】
例えば、複数のエリア（Ａ〜Ｄ）それぞれにデータの書替回数をカウントするカウンタを備え、複数のエリア（Ａ〜Ｄ）に備えられた各カウンタのカウント値を小さいもののうち、最も順番が早いエリアを次に書替を行うエリアとして選択することにより、複数のエリア（Ａ〜Ｄ）の中で次に書替を行うエリアがどれであるかを選択できる。
【００１３】
また、複数のエリア（Ａ〜Ｄ）は更に最小消去単位の整数倍のビット数とされた複数の書替ブロックに分割し、書替時に、複数の書替ブロックに対して順番に消去を行った後、当該順番とは逆の順番で複数の書替ブロックに対して書き込みを行うことによりデータの書替を行うことができる。
【００１４】
さらに、複数のエリア（Ａ〜Ｄ）に対してデータの書替を行ったときに、複数のエリア（Ａ〜Ｄ）それぞれでチェックサムを行うと好ましい。
【００１５】
このようにチェックサムを行うことにより、データ化けを検出することが可能となる。したがって、データが破壊された場合にも、できるだけ新しいデータを保持でき、かつ、データ化けが検出できるデータ書替方法とすることが可能となる。
【００１６】
なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態について図に基づいて説明する。なお、以下の各実施形態相互において、互いに同一もしくは均等である部分には、図中、同一符号を付してある。
【００１８】
（第１実施形態）
本発明の第１実施形態について説明する。図１は、本実施形態にかかるデータの書替方法が実行されるエンジンＥＣＵ１のブロック構成等を示した模式図である。エンジンＥＣＵ１は、バッテリ２を電源として、イグニッションスイッチ３がオンされたときに印加されるバッテリ電圧ＶＢに基づいて作動する。具体的には、エンジンＥＣＵ１には電源回路１０が備えられ、バッテリ電圧ＶＢの印加に伴って電源回路１０でＶｃｃ電源１１をオンさせ、電圧Ｖｃｃがマイコン１２に印加されることでマイコン１２が起動する構成とされている。このマイコン１２に内蔵されたフラッシュメモリ１３に対してデータの書替方法が実行される。このデータの書替方法について、図２を参照して説明する。
【００１９】
図２は、２．５万回書替可能な４ｋＢのフラッシュメモリ１３の書替エリアを分割して使用するときの様子を示した模式図である。
【００２０】
図２において紙面左側に記載したフラッシュメモリ１３の全体構造に示されるように、フラッシュメモリ１３が各エリア１ｋＢの４つのエリアＡ〜Ｄに分けられている。各エリアＡ〜Ｄにはそれぞれ書替回数を記憶するためのカウンタが備えられており、書替えが行われるごとにカウント値がインクリメントされる。また、各エリアＡ〜Ｄ毎にチェックサムが行われるようになっている。
【００２１】
図２の紙面中央には各エリア（ここでは代表としてエリアＡ）の詳細構造を示してある。これに示されるように、各エリアＡ〜Ｄの書替ブロックは、消去単位（例えば２５６バイト）に設定されており、各エリアＡ〜Ｄの消去単位ごとに書込みおよび消去が行われる。そして、書替時には、例えばエリアＡの場合、まず保持されているデータの消去をブロックＡ−４からブロックＡ−１の順番で行ったのち、続いて新たなデータの書き込みを消去時とは逆にブロックＡ−１からブロックＡ−４の順番で行う。このようにして、データの書替を行う。
【００２２】
このような書替を行うに際し、各エリアＡ〜Ｄに順番に書替えを行う。例えば、エリアＡでの書替を行ったら次にエリアＢで書替を行い、続いてエリアＣで書替を行ったのち、エリアＤで書替を行うというように、書替を各エリアＡ〜Ｄに順番に行う。そして、エリアＤまで書替を行うと、再びエリアＡに戻って書替を行い、上記と同様に、エリアＢ→エリアＣ、エリアＤ→エリアＡ・・・というように、書替を順番に行う。つまり、書替を行うエリアＡ〜Ｄをリング構造にし、書替を順番に行った後、最後のエリアＤまで書替が行われると再び最初のエリアＡに戻って書替が行う。エリアＡ〜エリアＤの書替を行う順番に関しては予め決めおけば良いため、書替時に次に書替を行うのがエリアＡ〜エリアＤのいずれになるかに関してのみカウンタのカウント値に基づいて決めることになる。
【００２３】
具体的には、書替時にはエリアＡ〜Ｄのカウンタのカウント値を確認し、エリアＡ〜Ｄのうちでカウント値が低いものの中で最も書替の順番が早いエリアで次の書替えを行う。例えば、初めての書替時にエリアＡで書替が行われたとする。この場合、エリアＡのカウンタのカウント値が１にインクリメントされ、エリアＢ〜Ｄのカウンタのカウント値はまだ０のままとなる。次に、２回目の書替時には、エリアＡ〜Ｄのカウンタのカウント値を確認し、エリアＡ〜Ｄのうちでカウント値が低いエリアＢ〜Ｄの中から最も書替の順番が早いエリアＢが選択され、書替が行われる。そして、エリアＢのカウンタのカウント値が１にインクリメントされる。同様の手法により、３回目の書替時にはエリアＣで書替が行われ、４回目の書替時にはエリアＤで書替が行われる。
【００２４】
この後、５回目の書替時には、エリアＡ〜Ｄのカウンタのカウント値がすべて１になっているため、今度はエリアＡ〜Ｄの中から最も書替の順番が早いエリアＡが選択され、書替が行われると共に、エリアＡのカウンタのカウント値が２にインクリメントされる。このようにして、各エリアＡ〜Ｄに順番に書替が繰り返されていき、エリアＡ〜Ｄのカウンタが書替可能回数である２５０００回に到達するまで書替を行うことが可能となり、エリアＡ〜Ｄの４つのエリアでそれぞれ書替を行うことで合計１０万回の書替が行える。
【００２５】
このような手法により、書替毎に書替するエリアを切替えることができる。このため、エリアＡ〜Ｄそれぞれにデータを保持することができ、最も新しく選択されたエリアに最新データへの書替を行いつつ、他の３つのエリアにそれぞれ三回の書替分古い過去のデータを保持させることが可能となる。
【００２６】
また、書替時には、各エリアＡ〜Ｄそれぞれでチェックサムを行う。すなわち、各エリアＡ〜Ｄに書込みが為されると、各ビットのデータの総和が求められ、その総和が予め決められたチェック用の数値と一致しているか、例えば総和の下２桁がチェック用の数値と一致しているかが判定され、一致していればデータ化けは発生していないと判定している。このように、チェックサムを行うことにより、データ化けを検出することが可能となり、データの信頼性を確保できる。
【００２７】
以上説明したように、本実施形態では、フラッシュメモリ１３の書替エリアを複数に分割すると共に分割した複数のエリアＡ〜Ｄに対して順番に書替を行っていき、書替毎に書替するエリアを切替えるようにしている。このため、複数に分割された各エリアＡ〜Ｄそれぞれに対してデータを保持することができ、最も新しく選択されたエリアに最新データへの書替を行いつつ、他のエリアにそれぞれ過去のデータを保持させることが可能となる。
【００２８】
したがって、仮に最新データの書替を行っている最中に電源遮断などによってデータが破壊された場合にも、書替中のエリアと異なるエリアに過去のデータを保持することが可能となる。これにより、できるだけ新しいデータを保持できるメモリ１３のデータ書替方法とすることが可能となる。
【００２９】
また、本実施形態では、書替時にチェックサムを行っているため、データ化けを検出することが可能となる。したがって、データが破壊された場合にも、できるだけ新しいデータを保持でき、かつ、データ化けが検出できるデータ書替方法とすることが可能となる。
【００３０】
さらに、本実施形態のように書替中にデータが破壊された場合にもできるだけ新しいデータを保持できることからエンジンＥＣＵ１内部構成も簡略化が可能となる。これについて、図３を参照して説明する。
【００３１】
図３は、従来のエンジンＥＣＵ１００のブロック構成等を示した模式図である。この図に示されるように、従来のエンジンＥＣＵ１００は、電源回路１０１、マイコン１０２に加えてシャットオフ回路１０３が備えられた構成とされている。そして、シャットオフ回路１０３にバッテリ１０４からの電圧ＢＡＴＴが直接入力されるようにすることで、書替時の電源遮断によるデータの破壊が防止できるようになっている。
【００３２】
具体的には、イグニッションスイッチ１０５がオンされてバッテリ電圧ＶＢがエンジンＥＣＵ１００に印加されると、バッテリ電圧ＶＢの印加に伴って電源回路１０がＶｃｃ電源１０６をオンさせ、電圧Ｖｃｃがマイコン１０２に印加されることでマイコン１０２が起動する。これにより、データの書替が行われる。また、このときマイコン１０２がシャットオフ回路１０３をオン側に保持するように指示する。
【００３３】
そして、データの書替が行われているときにイグニッションスイッチ１０５がオフされた場合など、電源遮断が生じたときには、電源回路１０１へのバッテリ電圧ＶＢの印加が遮断されるが、シャットオフ回路１０３がオン側に保持されているため、バッテリ１０４から直接印加される電圧ＢＡＴＴを電源回路１０１へ印加し、Ｖｃｃ電源１０６の電圧Ｖｃｃがオフになることが防止される。これにより、書替完了まで電圧Ｖｃｃのオンが維持され、データが破壊されること無く書替を行うことが可能となる。
【００３４】
これに対し、本実施形態のようなデータ書替方法を採用する場合、仮に書替時に電源遮断が生じて最新のデータが破壊されたとしても、その直前に書き込まれたデータを含めた過去のデータが書替に選択されているエリアと異なるエリアに保持されている。このため、図１に示したように、シャットオフ回路等を省略しても問題が生じない。これにより、エンジンＥＣＵ１やエンジンＥＣＵ１に繋げる配線構造の簡略化を図ることが可能となる。
【００３５】
（他の実施形態）
上記実施形態では、例えば書替エリアを４つに分割する場合について説明したが、４つ未満もしくは４つよりも多数に書替エリアを分割するようにしても構わない。
【００３６】
また、上記実施形態では、各エリアの書替ブロックを消去単位（例えば２５６バイト）とする場合を例に挙げたが、これはフラッシュメモリの製造メーカが規定する最小消去単位の整数倍を意味しており、最小消去単位の整数倍であればどのような値であっても構わない。
【００３７】
更には、書替順番をカウンターで判別する方法以外に、チップ内で決まるフラッシュＲＯＭアドレスで判別し順次書き替えを実施してもよい。
【図面の簡単な説明】
【００３８】
【図１】本発明の第１実施形態にかかるデータの書替方法が実行されるエンジンＥＣＵ１のブロック構成等を示した模式図である。
【図２】フラッシュメモリの書替エリアを分割して使用するときの様子を示した模式図である。
【図３】従来のエンジンＥＣＵ１００のブロック構成等を示した模式図である。
【図４】フラッシュメモリの書替エリアを分割して使用するときの様子を示した模式図である。
【符号の説明】
【００３９】
１…エンジンＥＣＵ、２…バッテリ、３…イグニッションスイッチ、１０…電源回路、１１…Ｖｃｃ電源、１２…マイコン、１３…フラッシュメモリ、１３…メモリ、Ａ〜Ｄ…フラッシュメモリの分割エリア、Ａ−１〜Ａ−４…書替ブロック
【図１】
2009116521.tif 000003
【図２】
2009116521.tif 000004
【図３】
2009116521.tif 000005
【図４】
2009116521.tif 000006