(57)【特許請求の範囲】
【請求項１】
フラッシュメモリ（１３）にデータを書き込むデータ書き込み手段（Ｓ１００）と、
前記データ書き込み手段による前記フラッシュメモリへのデータに書き込みが完了したときに、前記書き込んだデータは書き込みが完了したデータである旨を示すチェックコードを前記書き込んだデータに対応付けて前記フラッシュメモリに書き込むチェックコード書き込み手段（Ｓ１２０）と、
リセットにより起動されたとき、前記リセット前の最後に書き込まれた最終書き込みデータに対応付けて書き込まれたチェックコードについて各ビットの書き込み深さを検出する検出手段（Ｓ２２０）と、
前記検出手段により検出される前記各ビットの書き込み深さに基づいて、前記リセットの前にて前記チェックコードの書き込み動作が中断されたか否かを判定する中断判定手段（Ｓ２３０）と、
前記リセットの前にて前記チェックコードの書き込み動作が中断されたと前記中断判定手段が判定したときに、前記チェックコードおよび前記最終書き込みデータのうち前記チェックコードのみを前記最終書き込みデータに対応付けて前記フラッシュメモリに対して上書きする上書き手段（Ｓ２４０）と、を備えることを特徴とするフラッシュメモリの書き込み装置。
【請求項２】
前記チェックコード書き込み手段が前記チェックコードを前記フラッシュメモリに書き込むことにより、前記チェックコードを構成するビット値が「０」である場合には、前記書き込み深さが書き込み狙い値以上になり、かつ前記チェックコードを構成するビット値が「１」である場合には、前記書き込み深さが前記データの消去時の狙い値以下を維持するようになっており、
前記検出手段が検出した各ビット値の書き込み深さのうち、あるビットの書き込み深さが前記データの消去時の狙い値よりも大きく、かつ前記書き込み狙い値未満である場合には、前記中断判定手段は、前記リセットの前にて前記チェックコードの書き込み動作が中断されたと判定することを特徴とする請求項１に記載のフラッシュメモリの書き込み装置。
【請求項３】
前記チェックコードを構成する各ビットのうち値が「０」であるビットの前記書き込み深さが書き込み狙い値以上であり、かつ前記各ビットのうち値が「１」であるビットの前記書き込み深さが前記データの消去時の狙い値以下であるときには、前記中断判定手段は、前記リセットの前にて前記チェックコードの書き込み動作が完了したと判定することを特徴とする請求項２に記載のフラッシュメモリの書き込み装置。
【請求項４】
フラッシュメモリ（１３）にデータを書き込むデータ書き込みステップ（Ｓ１００）と、
前記データ書き込みステップで記フラッシュメモリへのデータに書き込みが完了したときに、前記書き込んだデータは書き込みが完了したデータである旨を示すチェックコードを前記書き込んだデータに対応付けて前記フラッシュメモリに書き込むチェックコード書き込みステップ（Ｓ１２０）と、
リセットにより起動されたとき、前記リセット前の最後に書き込まれた最終書き込みデータに対応付けて書き込まれたチェックコードについて各ビットの書き込み深さを検出する検出ステップ（Ｓ２２０）と、
前記検出ステップにより検出される前記各ビットの書き込み深さに基づいて、前記リセットの前にて前記チェックコードの書き込み動作が中断されたか否かを判定する中断判定ステップ（Ｓ２３０）と、
前記リセットの前にて前記チェックコードの書き込み動作が中断されたと前記中断判定ステップで判定したときに、前記チェックコードおよび前記最終書き込みデータのうち前記チェックコードのみを前記最終書き込みデータに対応付けて前記フラッシュメモリに対して上書きする上書きステップ（Ｓ２４０）と、を備えることを特徴とするフラッシュメモリの書き込み制御方法。
【請求項５】
前記チェックコード書き込みステップで前記チェックコードを前記フラッシュメモリに書き込むことにより、前記チェックコードを構成するビット値が「０」である場合には、前記書き込み深さが書き込み狙い値以上になり、かつ前記チェックコードを構成するビット値が「１」である場合には、前記書き込み深さが前記データの消去時の狙い値以下を維持するようになっており、
前記検出ステップで検出した各ビット値の書き込み深さのうち、あるビットの書き込み深さが前記データの消去時の狙い値よりも大きく、かつ前記書き込み狙い値未満である場合には、前記中断判定ステップは、前記リセットの前にて前記チェックコードの書き込み動作が中断されたと判定することを特徴とする請求項４に記載のフラッシュメモリの書き込み制御方法。
【請求項６】
前記チェックコードを構成する各ビットのうち値が「０」であるビットの前記書き込み深さが書き込み狙い値以上であり、かつ前記各ビットのうち値が「１」であるビットの前記書き込み深さが前記データの消去時の狙い値以下であるときには、前記中断判定ステップは、前記リセットの前にて前記チェックコードの書き込み動作が完了したと判定することを特徴とする請求項５に記載のフラッシュメモリの書き込み制御方法。
【請求項７】
ＣＰＵ（１４）に
フラッシュメモリ（１３）にデータを書き込むデータ書き込み手段（Ｓ１００）と、
前記データ書き込み手段による前記フラッシュメモリへのデータに書き込みが完了したときに、前記書き込んだデータは書き込みが完了したデータである旨を示すチェックコードを前記書き込んだデータに対応付けて前記フラッシュメモリに書き込むチェックコード書き込み手段（Ｓ１２０）と、
リセットにより起動されたとき、前記リセット前の最後に書き込まれた最終書き込みデータに対応付けて書き込まれたチェックコードについて各ビットの書き込み深さを検出する検出手段（Ｓ２２０）と、
前記検出手段により検出される前記各ビットの書き込み深さに基づいて、前記リセットの前にて前記チェックコードの書き込み動作が中断されたか否かを判定する中断判定手段（Ｓ２３０）と、
前記リセットの前にて前記チェックコードの書き込み動作が中断されたと前記中断判定手段が判定したときに、前記チェックコードおよび前記最終書き込みデータのうち前記チェックコードのみを前記最終書き込みデータに対応付けて前記フラッシュメモリに対して上書きする上書き手段（Ｓ２４０）として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリにデータを書き込むフラッシュメモリの書き込み装置、フラッシュメモリの書き込み制御方法、およびプログラムに関するものである。
【背景技術】
【０００２】
一般にフラッシュメモリは、データの書き込み動作と消去動作とがあり、データの書き込み単位は、２バイト（或いは４バイト）であるのに対して、データの消去単位は、数Ｋバイトのブロック単位である。その特性より、データを永続的に更新するためには、追記書き込みする必要があり、数Ｋバイトの１ブロックのデータを書き終わると空きブロックへとデータを移動し、既にデータを書き終えたブロックを消去する必要がある。データの書き込み動作や消去動作の途中で電源瞬断が発生すると、データ値が不定となり、データが消失してしまう懸念がある。
【０００３】
そこで、従来、動作途中での電源瞬断によるデータ消失を防ぐため、データ書き込み前に電圧を監視し書き込み処理を保留したり、電源の復帰後に上書きをするなどの対策が取られている。
【０００４】
例えば、特許文献１では、フラッシュメモリにおいて、データ毎にそのデータが有効情報であるか無効情報であるかを識別するための有効／無効情報をチェックコードとして書き込んで、電源再投入時にて、チェックコードを確認してこのチェックコードに基づいてデータの書き込み動作の途中で電源瞬断が発生したと判定したときには、中断された処理の一つ前の処理からプログラムの実行を開始して、書き込みが不十分であるメモリセルにデータを上書きすることでフラッシュメモリのデータ消失を未然に防止している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−９７３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の特許文献１では、チェックコードを確認してデータの書き込み動作の途中で電源瞬断が発生したと判定すると、書き込みデータを上書きするものの、チェックコードの書き込み時に電源瞬断が発生して、チェックコードの書き込みが不十分となる場合、データの書き込み動作の途中で電源瞬断が発生したか否かを正しく判定することができない。このため、チェックコードを書き込む直前に書き込んだデータが信頼性のあるものか否かを識別できなくなり、チェックコードに対応するデータを消失することになる。
【０００７】
本発明は上記点に鑑みて、チェックコードの書き込み動作の途中で電源瞬断などが発生し中断した場合において、チェックコードに対応するデータの消失を防止できるようにしたフラッシュメモリの書き込み装置、フラッシュメモリの書き込み制御方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、請求項１に記載の発明では、フラッシュメモリにデータ（Ｕｎｉｔ１）を書き込むデータ書き込み手段（Ｓ１００）と、
前記データ書き込み手段による前記フラッシュメモリへのデータに書き込みが完了したときに、前記書き込んだデータは書き込みが完了したデータである旨を示すチェックコード（Ｕｎｉｔ２）を前記書き込んだデータに対応付けて前記フラッシュメモリに書き込むチェックコード書き込み手段（Ｓ１２０）と、
リセットにより起動されたとき、前記リセット前の最後に書き込まれた最終書き込みデータに対応付けて書き込まれたチェックコードについて各ビットの書き込み深さを検出する検出手段（Ｓ２２０）と、
前記検出手段により検出される前記各ビットの書き込み深さに基づいて、前記リセットの前にて前記チェックコードの書き込み動作が中断されたか否かを判定する中断判定手段（Ｓ２３０）と、
前記リセットの前にて前記チェックコードの書き込み動作が中断されたと前記中断判定手段が判定したときに、前記チェックコードおよび前記最終書き込みデータのうち前記チェックコードのみを前記最終書き込みデータに対応付けて前記フラッシュメモリに対して上書き手段（Ｓ２４０）と、を備えることを特徴とする。
【０００９】
請求項１に記載の発明によれば、チェックコードの書き込む動作が中断されたと判定したときには、フラッシュメモリに対してチェックコード（Ｕｎｉｔ２）が上書きされる。このため、チェックコードの書き込み動作が中断した場合に、チェックコードをフラッシュメモリに書き込むことができる。これにより、データ（Ｕｎｉｔ１）およびチェックコード（Ｕｎｉｔ２）を合わせたものが１つの単位として消滅することを防止することができる。
【００１０】
なお、この欄で記載した各手段の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態におけるマイクロコンピュータの構成を示す図である。
【図２】図１のフラッシュメモリに記憶されるデータのフォーマットを示す図である。
【図３】図１のフラッシュメモリのセルの構造を示す図である。
【図４】図１のフラッシュメモリの書き込み深さにおける書き込み狙い値Ｗ、および消去狙い値Ｅを示す図である。
【図５】図１のＣＰＵの書き込み処理を示すフローチャートである。
【図６】図１のＣＰＵのリカバリ処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図に基づいて説明する。図１に本発明のフラッシュメモリの書き込み装置が適用されたマイクロコンピュータ１の構成を示す。
【００１３】
マイクロコンピュータ１は、図１に示すように、ＲＯＭ１０、ＲＡＭ１１、Ｉ／Ｏ１２、フラッシュメモリ（図中Ｆｌａｓｈメモリと記す）１３、ＣＰＵ１４、およびフラッシュコントローラ（図中Ｆｌａｓｈコントローラと記す）１５から構成されている。
【００１４】
ＲＯＭ１０は、Ｆｌａｓｈドライバソフト、アプリケーションソフト１、２、・・・・ｎを実行するためのコンピュータプログラムを記憶するメモリである。ＲＡＭ１１は、ＣＰＵ１４のコンピュータプログラムの実行に伴うデータの記憶などを行うメモリである。Ｉ／Ｏ１２は、周辺回路である。
【００１５】
ＣＰＵ１４は、ＣＰＵコア、ウォッチドックタイマ等から構成される周知の中央演算装置であって、ＲＯＭ１０に記憶されるコンピュータプログラムを実行する。ＣＰＵ１４は、コンピュータプログラムの実行に伴って、フラッシュコントローラ１５を介してデータをフラッシュメモリ１３に対して書き込む処理を実行する。
【００１６】
フラッシュメモリ１３は、ブロック１、・・・・・ブロックｍ（ｍは２以上の整数）から構成されている。ブロック１は、レコード１、・・・・・レコードｌ（ｌは２以上の整数）から構成されている。ブロックｎ（２≦ｎ≦ｍ）は、ブロック１と同様、レコード１、・・・・・レコードｌから構成されている。レコード１、・・・・・レコードｌは、それぞれ数バイトのデータ（Ｕｎｉｔ３）からなる。
【００１７】
データ（Ｕｎｉｔ３）は、図２に示すように、データ部（Ｕｎｉｔ１）と、このデータ部（Ｕｎｉｔ１）に対応付けて記憶されるチェックコード（Ｕｎｉｔ２）とからなる。データ部（Ｕｎｉｔ１）は、数バイトからなる実際のデータを示すものである。データ部（Ｕｎｉｔ１）は、特許請求の範囲におけるデータ書き込み手段（Ｓ１００）によって書き込まれるデータに対応するものであるが、データ（Ｕｎｉｔ３）との区別を明確にするために、本明細書では、便宜上、実際のデータをデータ部（Ｕｎｉｔ１）という。
【００１８】
チェックコード（Ｕｎｉｔ２）は、数バイトからなるコードであって、データ部（Ｕｎｉｔ１）が書き終えた旨を示すものである。つまり、データ部（Ｕｎｉｔ１）とチェックコード（Ｕｎｉｔ２）とから構成されるデータ（Ｕｎｉｔ３）を１つの単位として、データ部（Ｕｎｉｔ１）が信頼性のあるものであることを保証することになる。
【００１９】
フラッシュコントローラ１５は、ＣＰＵ１４からの指令にしたがって、フラッシュメモリ１３に対してデータ部（Ｕｎｉｔ１）やチェックコード（Ｕｎｉｔ２）を書き込んだり、フラッシュメモリ１３からデータ部（Ｕｎｉｔ１）やチェックコード（Ｕｎｉｔ２）を読み出したり、フラッシュメモリ１３に対してブロック毎にデータ（Ｕｎｉｔ３）を消去したりする。これに加えて、フラッシュコントローラ１５は、後述するように、チェックコード（Ｕｎｉｔ２）に対して各ビットの書き込み深さを検出する。
【００２０】
なお、ＲＯＭ１０、ＲＡＭ１１、Ｉ／Ｏ１２、フラッシュメモリ１３、ＣＰＵ１４、およびフラッシュコントローラ１５は、電源１６から電源電圧が与えられて動作する。
【００２１】
次に、本実施形態のＣＰＵ１４におけるデータ部（Ｕｎｉｔ１）／チェックコード（Ｕｎｉｔ２）の書き込み処理の説明に先立って、フラッシュメモリ１３の作動について説明する。
【００２２】
図３にフラッシュメモリ１３のメモリセル１３ａの構成を示す。メモリセル１３ａは、１ビットのデータを記憶するためのもので、コントロール・ゲート２０、ソース２１、ドレイン２２、およびフローティング・ゲート２３から構成されている。
【００２３】
まず、ドレイン２２とソース２１との間に電圧が印加された状態で、コントロール・ゲート２０とソース２１との間に電圧（以下、ゲート電圧）を与えた場合において、ドレイン２２からソース２１に電流Ｉｄｓが流れ始めるときのゲート電圧を閾値Ｖｔという。
【００２４】
ここで、フローティング・ゲート２３に電荷が存在しているときには、コントロール・ゲート２０とソース２１との間にゲート電圧を与えても、電流Ｉｄｓが流れない。このとき、メモリセル１３ａに「０」が記憶されているとする。フローティング・ゲート２３に電荷が存在しないときには、コントロール・ゲート２０とソース２１との間にゲート電圧を与えると、電流Ｉｄｓが流れる。このとき、メモリセル１３ａに「１」が記憶されているとする。
【００２５】
そこで、フラッシュコントローラ１５は、読み出し動作として、コントロール・ゲート２０とソース２１との間にゲート電圧を与えて、電流Ｉｄｓが流れるか否かを判定して、メモリセル１３ａに記憶される値を判別する。フラッシュコントローラ１５は、消去動作として、閾値Ｖｔが消去狙い値Ｅ（図４参照）以下になるまで、フローティング・ゲート２３から電荷を抜く。消去狙い値Ｅは、消去動作時における閾値Ｖｔ（書き込み深さ）の目標値である。
【００２６】
フラッシュコントローラ１５は、書き込動作として、ドレイン２２およびソース２１の間に電流を流してエネルギ障壁を越えてホット・エレクトロンをフローティング・ゲート２３に注入して「０」を書き込むことになる。具体的には、フラッシュコントローラ１５は、書き込動作として、閾値Ｖｔが書き込み狙い値Ｗ（図４参照）以上になるまで、ホット・エレクトロンをフローティング・ゲート２３に注入する。書き込み狙い値Ｗは、書き込動作時における閾値Ｖｔの目標値である。書き込み狙い値Ｗは、消去狙い値Ｅよりも大きな値になる。
【００２７】
ここで、閾値Ｖｔは、書き込み深さを示している。そして、閾値Ｖｔが高くなるほど、書き込み深さが浅くなることになる。
【００２８】
図４に書き込み狙い値Ｗと消去狙い値Ｅとの関係を示す。書き込み狙い値Ｗは、リード値Ｒに対してフラッシュ動作マージンＭ３および保持マージンＭ４を加えた値である。リード値Ｒは、フラッシュコントローラ１５が読み出し動作としてコントロール・ゲート２０とソース２１との間に与えるゲート電圧である。
【００２９】
フラッシュ動作マージンＭ３は、例えばノイズ等の外乱に対しても動作の確実性を保持するためのマージンである。保持マージンＭ４は、経年変化しても動作の確実性を保持するためのマージンである。
【００３０】
なお、本実施形態の閾値Ｖｔ（すなわち、書き込み深さ）を検出する検出処理は、特開２００４−５５０９８号公報等に示すように周知であるため、閾値Ｖｔの検出処理の説明は省略する。
【００３１】
次に、本実施形態のＣＰＵ１４におけるデータ部（Ｕｎｉｔ１）／チェックコード（Ｕｎｉｔ２）の書き込み処理について参照して説明する。
【００３２】
図５はＣＰＵ１４によるデータ部（Ｕｎｉｔ１）／チェックコード（Ｕｎｉｔ２）の書き込み処理を示すフローチャートである。図６はＣＰＵ１４によるチェックコードのリカバリ処理を示すフローチャートである。以下、リカバリ処理に先だって書き込み処理について説明する。
【００３３】
（書き込み処理）
書き込み処理は、ＣＰＵ１４によりＲＯＭ１０に記憶されるアプリケーションソフトが実行される際に、フラッシュメモリ１３に対して、新データ（Ｕｎｉｔ３）の書き込みが要求される毎に実行される。
【００３４】
まず、ステップＳ１００において、データ書き込み手段として、フラッシュコントローラ１５を制御して、フラッシュメモリ１３のうち、あるアドレスにおいて、新データ（Ｕｎｉｔ３）のデータ部（Ｕｎｉｔ１）を書き込ませる。
【００３５】
このとき、フラッシュコントローラ１５は、フラッシュメモリ１３に対してデータ部（Ｕｎｉｔ１）を２バイト（或いは４バイト）ずつ書き込む。そして、フラッシュコントローラ１５によってデータ部（Ｕｎｉｔ１）を２バイト（或いは４バイト）書き込ませる毎に、データ部（Ｕｎｉｔ１）の全てのデータの書き込みが完了したか否かを判定する（ステップＳ１１０）。
【００３６】
このとき、データ部（Ｕｎｉｔ１）の書き込みが完了していない場合には、ステップＳ１１０においてＮＯと判定して、ステップＳ１００に戻る。このことにより、データ部（Ｕｎｉｔ１）の全てのデータの書き込みが完了するまで、ステップＳ１００の書き込み処理とステップＳ１１０のＮＯ判定処理とを繰り返すことになる。
【００３７】
その後、データ部（Ｕｎｉｔ１）の全てのデータの書き込みが完了するとステップＳ１１０でＹＥＳと判定して、次のステップＳ１２０において、チェックコード書き込み手段として、フラッシュコントローラ１５によって新データ（Ｕｎｉｔ３）のチュックコード（Ｕｎｉｔ２）を書き込ませる。
【００３８】
このように本実施形態では、新データ（Ｕｎｉｔ３）の書き込みが要求される毎に、新データ（Ｕｎｉｔ３）を書き込むアドレスを順次ずらして新データ（Ｕｎｉｔ３）の書き込みが実行されることになる。
【００３９】
（リカバリ処理）
リカバリ処理は、ＣＰＵ１４がリセットにより起動したときにリカバリ処理を実行する。リセットが発生する要因には、電源監視回路（図示省略）が電源の瞬断を検出してＣＰＵ１４にリセット信号を出力したとき、或いはＣＰＵ１４に内蔵されるウォッチドックタイマがプログラムの暴走を検出してＣＰＵ自体をリセットさせたときなどが考えられる。以下、リカバリ処理について説明する。
【００４０】
まず、ステップＳ２００において、フラッシュメモリ１３に書き込まれた全てのデータ（Ｕｎｉｔ３）のうち、リセット前にて最後に書き込んだ最終書き込みデータ（Ｕｎｉｔ３）を検索する。
【００４１】
まず、フラッシュメモリ１３のうち末尾のアドレスに記憶されるデータ（Ｕｎｉｔ３）を読み出して、この読み出したデータ（Ｕｎｉｔ３）が、最終書き込みデータ（Ｕｎｉｔ３）であるか否かを判定する。（ステップＳ２１０）。
【００４２】
末尾のアドレスとは、フラッシュメモリ１３に設定されるアドレス空間において、上記ステップＳ１００によりデータ（Ｕｎｉｔ３）を書き始めるアドレスを最初のアドレスとしたときに最後のアドレスとなるものである。
【００４３】
あるアドレスにおいて最終書き込みデータ（Ｕｎｉｔ３）であるとして、ステップＳ２１０でＹＥＳと判定する。
【００４４】
次に、ステップＳ２２０において、検出手段として、最終書き込みデータ（Ｕｎｉｔ３）のチェックコード（Ｕｎｉｔ２）について各ビットの書き込み深さを検出する。これに伴い、ステップＳ２３０において、中断判定手段として、この検出される書き込み深さ（閾値Ｖｔ）が変動しているか否かを判定する。
【００４５】
具体的には、書き込み深さが消去狙い値Ｅから書き込み狙い値Ｗ迄の範囲内に入っているか否かを判定する。例えば、チェックコード（Ｕｎｉｔ２）を構成する複数ビットのうち、あるビットの書き込み深さが消去狙い値Ｅから書き込み狙い値Ｗ迄の範囲内に入っているときには、リセットの前にてチェックコード（Ｕｎｉｔ２）の書き込み動作が中断しているとしてＹＥＳと判定する。すなわち、チェックコード（Ｕｎｉｔ２）の書き込み動作の痕跡があると判定することになる。これに伴い、ステップＳ２４０において、上書き手段として、最終書き込みデータ（Ｕｎｉｔ３）のデータ部（Ｕｎｉｔ１）に対応付けて、チェックコード（Ｕｎｉｔ２）を上書きする。
【００４６】
一方、チェックコード（Ｕｎｉｔ２）を構成する複数ビットのうち値が「０」であるビットの書き込み深さが書き込み狙い値Ｗ以上であり、かつ値が「１」であるビットの書き込み深さが消去狙い値Ｅ以下であるときには、チェックコード（Ｕｎｉｔ２）の書き込み動作が完了したとして、ＮＯと判定する。これに伴い、リカバリ処理の実行を終了する。
【００４７】
以上説明した本実施形態によれば、ＣＰＵ１４は、リセットにより起動されたとき、リセット前の最後に書き込まれた最終書き込みデータ（Ｕｎｉｔ３）に対応付けて書き込まれたチェックコードについて各ビットの書き込み深さを検出する。この検出される各ビット値の書き込み深さのうち、あるビットの書き込み深さが消去狙い値Ｅよりも大きく、かつ書き込狙い値Ｗ未満である場合には、リセットの前にてチェックコード（Ｕｎｉｔ２）の書き込み動作が中断されたと判定して、フラッシュメモリ１３の最終書き込みデータ（Ｕｎｉｔ３）に対応付けてチェックコード（Ｕｎｉｔ２）を上書きする。
【００４８】
したがって、チェックコード（Ｕｎｉｔ２）の書き込み動作が中断した場合に、チェックコード（Ｕｎｉｔ２）を書き込むことができる。これにより、データ（Ｕｎｉｔ１）およびチェックコード（Ｕｎｉｔ２）を合わせたデータ（Ｕｎｉｔ３）が１つの単位として消滅することを防止することができる。
【符号の説明】
【００４９】
１      マイクロコンピュータ
１０    ＲＯＭ
１１    ＲＡＭ
１２    Ｉ／Ｏ
１３    フラッシュメモリ
１４    ＣＰＵ
１５    フラッシュコントローラ
【図１】
0005862350.tif 000002
【図２】
0005862350.tif 000003
【図３】
0005862350.tif 000004
【図４】
0005862350.tif 000005
【図５】
0005862350.tif 000006
【図６】
0005862350.tif 000007