(57)【要約】【課題】  電源断によるデータ破壊を防止しつつ、メモリ効率を向上し、さらに、書き換え動作を高速にできる、電子機器、不揮発性メモリ及び不揮発性メモリのデータ書き換え方法を提供すること。【解決手段】  本発明にかかる電子機器は、セクタ０びセクタ１と、データの書き換えを行うフラッシュメモリ制御回路１５とを備え、セクタ０及びセクタ１は、セキュリティフラグ領域２１２と、有効フラグ領域２１１とを有し、フラッシュメモリ制御回路１５は、セクタ０のセキュリティフラグ領域２１２に書き換え前のデータが格納されている場合には、セクタ１のセキュリティフラグ領域２１２に書き換え後のデータを書き込み、セクタ０あるいはセクタ１の記憶領域の有効フラグ領域２１１に、セクタ１のセキュリティフラグ領域２１２が有効であることを示す識別情報を書き込むものである。【選択図】  図１
2005107608.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性である第１及び第２の記憶領域と、前記第１及び第２の記憶領域のデータの書き換えを行う書き換え手段とを備える電子機器であって、
前記第１及び第２の記憶領域は、データを格納するデータ領域と、当該データ領域が有効あるいは無効であることを示す識別情報を格納する識別情報領域とを有し、
前記書き換え手段は、
前記第１の記憶領域の前記データ領域に書き換え前のデータが格納されている場合には、前記第２の記憶領域の前記データ領域に書き換え後のデータを書き込み、
前記第１あるいは第２の記憶領域の前記識別情報領域に前記第２の記憶領域の前記データ領域が有効であることを示す識別情報を書き込む電子機器。
【請求項２】
前記書き換え前のデータ及び前記書き換え後のデータは、不揮発性である第３の記憶領域についての書き換え禁止あるいは許可を示す保護情報であることを特徴とする請求項１記載の電子機器。
【請求項３】
前記第１及び第２の記憶領域は、フラッシュメモリのセクタであることを特徴とする請求項１又は２記載の電子機器。
【請求項４】
第１及び第２の記憶領域を有する不揮発性メモリであって、
前記第１及び第２の記憶領域は、データを格納するデータ領域と、当該データ領域が有効あるいは無効であることを示す識別情報を格納する識別情報領域とを有し、
前記第１の記憶領域のデータ領域に書き換え前のデータが格納されている場合には、前記第２の記憶領域のデータ領域に書き換え後のデータを格納し、
前記第１あるいは第２の記憶領域の識別情報領域に第２の記憶領域のデータ領域が有効であることを示す識別情報を格納する不揮発性メモリ。
【請求項５】
不揮発性である第１の記憶領域のデータ領域に書き換え前のデータが格納されている場合には、不揮発性である第２の記憶領域のデータ領域に書き換え後のデータを書き込むステップと、
第１あるいは第２の記憶領域の識別情報領域に第２の記憶領域が有効であることを示す識別情報を書き込むステップとを備えた不揮発性メモリのデータ書き換え方法。
【請求項６】
前記書き換え前のデータ及び前記書き換え後のデータは、不揮発性である第３の記憶領域についての書き換えの禁止あるいは許可を示す保護情報であることを特徴とする請求項５記載の不揮発性メモリのデータ書き換え方法。
【請求項７】
前記第１及び第２の記憶領域は、フラッシュメモリのセクタであることを特徴とする請求項５又は６記載の不揮発性メモリのデータ書き換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電源断によるデータ破壊を防ぐことができる、電子機器、不揮発性メモリ及び不揮発性メモリのデータ書き換え方法に関するものである。
【背景技術】
【０００２】
不揮発性メモリのうち、セクタ単位にデータを消去し、書き込み可能なフラッシュメモリは、パソコン（パーソナルコンピュータ）のＢＩＯＳ（Basic Input/Output System）の格納に用いられたり、デジタルカメラや家庭用ゲーム機等のメモリカード等で利用されている。
【０００３】
また、フラッシュメモリをワンチップに内蔵したマイコン（マイクロコンピュータ）も開発されている。これにより、回路基板にマイコンを実装した状態でプログラムを書き換えることができる。さらに、マイコンでプログラム動作中に、自己のプログラムを書き換えるセルフプログラミングも可能である。
【０００４】
例えば、フラッシュメモリのデータの書き換え（データの消去及び書き込みを含む）中に電源断等によるシステムダウンが発生した場合、書き換え中のデータが破壊されてしまう。システムの重要なデータが破壊されてしまうと、その後、システムを正常に起動することができない。
【０００５】
このような電源断によるデータ破壊を防ぐために、従来、図７に示す方法で、データ書き換えが行われている。この方法では、図に示されるように、フラッシュメモリのセクタ等である不揮発性領域７０、７１及び７２を用いる。ここで、不揮発性領域７０と７１は同じサイズであるが、不揮発性領域７２は違うサイズでもよい。
【０００６】
まず、書き換え前のデータ「ＤＡＴＡ」は、不揮発性領域７０に格納されている（図７（ａ））。このとき、ＣＰＵは、例えば、不揮発性領域７２にデータが格納されていないことから、不揮発性領域７０を有効な領域として動作している。そして、データを書き換える際には、不揮発性領域７０のデータを不揮発性領域７１にコピーする（図７（ｂ））。その後、不揮発性領域７２に、不揮発性領域７１が有効であるという情報を書き込む（図７（ｃ））。不揮発性領域７２がこの情報を格納している間、ＣＰＵは不揮発性領域７２を有効な領域として動作する。それから、不揮発性領域７０に、書き換え後のデータ「ＤＡＴＡ'」を書き込む（図７（ｄ））。ここで、フラッシュメモリでは、データを書き込む前にデータの消去が必要である。次に、正常にデータの書き込みが完了すると、不揮発性領域７２のデータを消去した後、不揮発性領域７１のデータを消去し、書き換え動作が終了する（図７（ｅ））。このとき、ＣＰＵは、図７（ａ）と同様に、不揮発性領域７０を有効な領域として動作する。
【０００７】
例えば、図７（ｄ）の状態で、不揮発性領域７０に書き込み中に、電源断となり再起動した場合、ＣＰＵは不揮発性領域７２を参照し、正常なデータが格納されている不揮発性領域７１により、データ書き換え前の状態で動作することができる。
【０００８】
しかしながら、このような方法では、独立に消去可能な不揮発性領域が３つ必要なため、メモリ効率が悪く、さらに、書き換え前のデータを一旦コピーしてから書き換え後のデータを書き込むため、書き換え動作が遅いという問題がある。
【０００９】
尚、従来の不揮発性メモリのデータ書き換え方法として特許文献１が知られている。また、チェックサムにより書き込んだデータの異常を検出する方法や（例えば、特許文献２参照）、書き換え動作のステータス情報を用いる方法（例えば、特許文献３参照）も知られている。
【特許文献１】特開平９−３４８０７号公報
【特許文献２】特開２００３−１５７２０４号公報
【特許文献３】特開２００３−３６２０９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
このように、従来の不揮発性メモリのデータ書き換え方法では、電源断によるデータ破壊を防止しようとすると、独立に消去可能な不揮発性領域が３つ必要なため、メモリ効率が悪く、さらに、書き換え前のデータを一旦コピーしてから書き換え後のデータを書き込むため、書き換え動作が遅いという問題があった。
【００１１】
本発明は、このような問題点を解決するためになされたもので、電源断によるデータ破壊を防止しつつ、メモリ効率を向上し、さらに、書き換え動作を高速にできる、電子機器、不揮発性メモリ及び不揮発性メモリのデータ書き換え方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明にかかる電子機器は、不揮発性である第１及び第２の記憶領域と、前記第１及び第２の記憶領域のデータの書き換えを行う書き換え手段とを備える電子機器（例えば、マイクロコンピュータ）であって、前記第１及び第２の記憶領域は、データを格納するデータ領域と、当該データ領域が有効あるいは無効であることを示す識別情報を格納する識別情報領域とを有し、前記書き換え手段は、前記第１の記憶領域の前記データ領域に書き換え前のデータが格納されている場合には、前記第２の記憶領域の前記データ領域に書き換え後のデータを書き込み、前記第１あるいは第２の記憶領域の前記識別情報領域に前記第２の記憶領域の前記データ領域が有効であることを示す識別情報を書き込むものである。これにより、２つの記憶領域のみで、電源断によるデータ破壊を防止できるため、メモリ効率がよく、さらに、書き換え前のデータをコピーしないため、書き換え動作を高速にできる。
【００１３】
上述の電子機器において、前記書き換え前のデータ及び前記書き換え後のデータは、不揮発性である第３の記憶領域についての書き換え禁止あるいは許可を示す保護情報であってもよい。これにより、保護情報のデータ破壊を防止できるため、信頼性を向上することができる。
【００１４】
上述の電子機器において、前記第１及び第２の記憶領域は、フラッシュメモリのセクタであってもよい。これにより、記憶領域を一括消去できるため、書き換え動作をさらに高速にできる。
【００１５】
本発明にかかる不揮発性メモリは、第１及び第２の記憶領域を有する不揮発性メモリ（例えば、フラッシュメモリ）であって、前記第１及び第２の記憶領域は、データを格納するデータ領域と、当該データ領域が有効あるいは無効であることを示す識別情報を格納する識別情報領域とを有し、前記第１の記憶領域のデータ領域に書き換え前のデータが格納されている場合には、前記第２の記憶領域のデータ領域に書き換え後のデータを格納し、前記第１あるいは第２の記憶領域の識別情報領域に、第２の記憶領域のデータ領域が有効であることを示す識別情報を格納するものである。これにより、２つの記憶領域のみで、電源断によるデータ破壊を防止できるため、メモリ効率がよく、さらに、書き換え前のデータをコピーしないため、書き換え動作を高速にできる。
【００１６】
本発明にかかる不揮発性メモリのデータ書き換え方法は、不揮発性である第１の記憶領域のデータ領域に書き換え前のデータが格納されている場合には、不揮発性である第２の記憶領域のデータ領域に書き換え後のデータを書き込むステップと、第１あるいは第２の記憶領域の識別情報領域に第２の記憶領域が有効であることを示す識別情報を書き込むステップとを備えるものである。これにより、２つの記憶領域のみで、電源断によるデータ破壊を防止できるため、メモリ効率がよく、さらに、書き換え前のデータをコピーしないため、書き換え動作を高速にできる。
【００１７】
上述の不揮発性メモリのデータ書き換え方法において、前記書き換え前のデータ及び前記書き換え後のデータは、不揮発性である第３の記憶領域についての書き換えの禁止あるいは許可を示す保護情報であってもより。これにより、保護情報のデータ破壊を防止できるため、信頼性を向上することができる。
【００１８】
上述の不揮発性メモリのデータ書き換え方法において、前記第１及び第２の記憶領域は、フラッシュメモリのセクタであってもよい。これにより、記憶領域を一括消去できるため、書き換え動作をさらに高速にできる。
【発明の効果】
【００１９】
本発明によれば、電源断によるデータ破壊を防止しつつ、メモリ効率を向上し、さらに、書き換え動作を高速にできる、電子機器、不揮発性メモリ及び不揮発性メモリのデータ書き換え方法を提供することができる。
【発明を実施するための最良の形態】
【００２０】
発明の実施の形態１．
まず、図１を用いて、本発明の実施の形態１にかかるマイコンの構成について説明する。このマイコン１０は、図１に示されるように、ＣＰＵ１１、ＲＡＭ１２、ＲＯＭ１３、フラッシュメモリ１４及びフラッシュメモリ制御回路１５から構成されている。この他に、マイコン１０は、入出力部等を備えていてもよい。また、ＣＰＵ１１は、ＲＡＭ１２、ＲＯＭ１３、フラッシュメモリ１４及びフラッシュメモリ制御回路１５と、例えばバスにより接続されている。フラッシュメモリ制御回路１５は、さらに、フラッシュメモリ１４とも接続されている。
【００２１】
マイコン１０は、図に示される要素を備えていればよく、例えば、ＭＰＵ（Micro Processing Unit）、ＭＣＵ（Micro Controller Unit）、ＡＳＩＣ（Application Specific Integrated Circuit）等である。また、マイコン１０は、ワンチップ型のマイコンでもよいし、任意の数のチップとして、基板上で配線され接続されていてもよい。
【００２２】
尚、このマイコン１０は、マイコン１０の設計者によって、図に示されるハードウェア構成及びマイコン１０の基本プログラムであるファームウェアが設計され、製造された後、マイコン１０のユーザによって、ユーザプログラムやブートプログラムが設計され、フラッシュメモリ１４に書き込まれることにより、ユーザ所望の動作が実現されるものである。
【００２３】
ＣＰＵ１１は、中央演算装置（Central Processing Unit）である。例えば、ＣＰＵ１１は、ＲＯＭ１３やフラッシュメモリ１４からプログラムの命令を読み出し、当該命令にしたがい、ＲＡＭ１２やフラッシュメモリ１４とデータの読み込みや書き込みを行ったり、各種演算を行う。
【００２４】
ＲＡＭ１２は、揮発性メモリであり、例えば、ＤＲＡＭ（Dynamic RAM）やＳＲＡＭ（Static RAM）等である。また、ＲＡＭ１２は、ＣＰＵ１１のメインメモリやキャッシュメモリとして、例えば、ＣＰＵ１１の一時的なデータの読み込みや書き込みに用いられる。
【００２５】
ＲＯＭ１３は、不揮発性メモリであり、例えば、書き換え不可能なマスクＲＯＭ等でもよいし、書き換え可能なＥＰＲＯＭ（Erasable Programmable ROM）やＥＥＰＲＯＭ（Electrical Erasable Programmable ROM）、フラッシュメモリ等でもよい。また、ＲＯＭ１３には、例えば、基本プログラムが格納されている。この基本プログラムは、マイコン１０が動作するための基本的なプログラムであり、変更することはできない。基本プログラムには、例えば、フラッシュメモリ１４のデータ書き換え命令等が含まれる。
【００２６】
フラッシュメモリ１４は、セクタ単位に一括にデータの消去ができ、データの書き込みができる不揮発性メモリである。フラッシュメモリ１４には、例えば、ユーザプログラムやブートプログラム等が格納されている。このユーザプログラムは、ユーザ所望の動作を記述したプログラムであり、前述の基本プログラムを利用して動作するものである。ブートプログラムは、マイコンの起動用のプログラムであり、起動時に必要な設定値や動作が記述されている。また、フラッシュメモリ１４に、基本プログラムを格納し、ＲＯＭ１３の無い構成としてもよい。フラッシュメモリ１４の構成については、後述する。
【００２７】
フラッシュメモリ１４へのユーザプログラム等の書き込みは、基本プログラムに含まれるデータ書き換えプログラムを用いて行われる。このデータ書き換えプログラムを用いて、ユーザプログラムにより、フラッシュメモリ１４を書き換えることができる。ユーザプログラム動作中に、ユーザプログラム自身を書き換えることをセルフプログラミングという。セルフプログラミングは、例えば、ＲＡＭ１２等にユーザプログラムのうち書き換えを行う部分を一旦退避した後、フラッシュメモリ１４内のユーザプログラムを書き換えることにより行われる。また、書き込み専用の装置であるライタをマイコン１０に接続し、基本プログラムを用いて、フラッシュメモリ１４のユーザプログラム等の書き換えを行ってもよい。
【００２８】
フラッシュメモリ制御回路１５は、フラッシュメモリ１４のデータ書き換え制御を行う回路である。データ書き換え制御とは、例えば、フラッシュメモリ１４に対して書き換えるデータのアドレスの生成や、書き換えるデータの生成、書き込みモードあるいは消去モード等のモード信号生成、データ書き換え用のクロック生成、後述するセキュリティフラグの制御等である。また、フラッシュメモリ制御回路１５は、例えば、１つの機能ブロックであるマクロセルとして設計され、マイコン１０の中で最適な位置に配置・配線されている。フラッシュメモリ制御回路１５の構成や動作については、後述する。
【００２９】
次に、図２を用いて、本実施形態にかかるフラッシュメモリ１４の構成について説明する。フラッシュメモリ１４は、図２（ａ）に示されるように、システム領域２１０及びユーザ領域２２０から構成されている。
【００３０】
システム領域２１０及びユーザ領域２２０は、図に示されるように、複数のセクタから構成されている。セクタは、フラッシュメモリ１４の最小消去単位であり、このセクタ単位に一括にデータ消去が行われる。データの書き込みについては、セクタ単位でもよいし、さらに小さいバイト単位でもよい。また、セクタではなく、複数のセクタを含むブロックとしてもよい。さらに、フラッシュメモリ１４を複数備え、各領域やセクタが、それぞれ別のフラッシュメモリ１４上にあってもよい。
【００３１】
ユーザ領域２２０は、図２（ａ）に示されるように、セクタを任意の数だけ備えている。このユーザ領域２２０には、前述のユーザプログラムやブートプログラムが格納されている。またユーザ領域２２０の一部の領域を、ブートプログラム専用のブート領域としてもよい。
【００３２】
システム領域２１０は、図２（ｂ）に示されるように、セクタ０とセクタ１である２つのセクタを備えている。このセクタ０及びセクタ１は、さらに、有効フラグ領域２１１、セキュリティフラグ領域２１２及びその他の領域２１３を備えている。例えば、１つのセクタを２Ｋバイトとした場合、セクタ０の有効フラグ領域２１１は００００Ｈ番地、セクタ０のセキュリティフラグ領域２１２は０００１Ｈ番地、セクタ１の有効フラグ領域２１１は０８００Ｈ番地、セクタ１のセキュリティフラグ領域２１２は０８０１Ｈ番地でもよい。ここで、１Ｋバイトは１０２４バイトであり、番地の添え字の「Ｈ」は、１６進表示を表している。
【００３３】
有効フラグ領域２１１には、有効フラグが格納される。この有効フラグは、セクタ０あるいはセクタ１の有効あるいは無効を示すフラグである。この有効フラグにより、セクタ０あるいはセクタ１のどちらか一方が有効となり、当該セクタ内のセキュリティフラグ領域２１２及びその他の領域２１３のデータが有効なデータとなる。有効フラグ領域２１１に格納される値は、特に限定されない。また、セクタ０とセクタ１のうちどちらか一方の有効フラグ領域２１１にのみ値を格納してもよい。有効フラグの制御については、後述する。
【００３４】
尚、以下において、有効セクタとは、有効フラグにより有効となっているセクタ０あるいはセクタ１のことであり、無効セクタとは、有効フラグにより無効となっているセクタ０あるいはセクタ１のことである。
【００３５】
セキュリティフラグ領域２１２には、セキュリティフラグが格納される。このセキュリティフラグは、ユーザ領域２２０のデータ書き換えの禁止あるいは許可を示すデータ保護用のフラグである。セキュリティフラグには、例えば、ユーザ領域２２０の書き込み禁止用のフラグ、ユーザ領域２２０のセクタ消去禁止用のフラグ、ユーザ領域２２０の全セクタ一括消去禁止用のフラグ、ユーザ領域２２０のブート領域書き換え禁止用のフラグ等がある。セキュリティフラグ領域２１２に格納される値は、特に限定されない。例えば、書き込み禁止用のフラグが禁止に設定されている場合、ユーザ領域２２０の書き込みは行われない。セキュリティフラグの書き換えについては、後述する。
【００３６】
また、その他の領域２１３には、例えば、フラッシュメモリ１４の精度に関する情報や、マイコン１０のシステム特有の情報等が格納されている。
【００３７】
続いて、図３を用いて、本実施形態にかかるフラッシュメモリ制御回路１５の構成について説明する。フラッシュメモリ制御回路１５は、図に示されるように、レジスタ部３１０、ラッチ部３２０及び制御部３３０から構成されている。レジスタ部３１０は、ＣＰＵ１１、制御部３３０及びフラッシュメモリ１４と接続されている。制御部３３０は、さらに、ラッチ部３２０及びフラッシュメモリ１４とも接続され、ラッチ部３２０は、さらに、フラッシュメモリ１４とも接続されている。
【００３８】
レジスタ部３１０は、ＣＰＵ１１がフラッシュメモリ制御回路１５へ各処理を指示するために用いるレジスタである。レジスタ部３１０は、例えば、図に示される、モード信号生成用レジスタ３１１、アドレス生成用レジスタ３１２及び書き込み値生成用レジスタ３１３を備えており、さらに、その他にも各種レジスタを備えている。
【００３９】
モード信号生成用レジスタ３１１は、フラッシュメモリ１４へデータを書き込む書き込みモード、あるいはデータを消去する消去モード等を指定するためのモード信号を生成し、フラッシュメモリ１４へ出力するためのレジスタである。アドレス生成用レジスタ３１２は、フラッシュメモリ１４へデータを書き込むあるいは消去するアドレスを指定するためのアドレス信号を生成し、フラッシュメモリ１４へ出力するためのレジスタである。書き込み値生成用レジスタ３１３は、フラッシュメモリ１４へ書き込むデータを指定するためのデータ信号を生成し、フラッシュメモリ１４へ出力するためのレジスタである。
【００４０】
ラッチ部３２０は、制御部３３０が動作するために必要な情報を格納しておくラッチ回路である。ラッチ部３２０は、図に示されるように、セキュリティフラグ格納用ラッチ３２１、状態格納用ラッチ３２２、有効セクタ格納用ラッチ３２３を備えており、さらに、その他の各種ラッチも備えている。
【００４１】
セキュリティフラグ格納用ラッチ３２１は、フラッシュメモリ１４のセキュリティフラグ領域２１２から読み出したセキュリティフラグを格納しておくラッチである。状態格納用ラッチ３２２は、後述するセキュリティフラグの書き換えにおける状態を格納しておくラッチである。有効セクタ格納用ラッチ３２３は、フラッシュメモリ１４のシステム領域２１０のうち、どのセクタが有効かを示す情報を格納しておくラッチである。
【００４２】
制御部３３０は、ＣＰＵ１１からレジスタ部３１０を介して指示を受け、当該指示に従い、ラッチ部３２０を参照し、各処理を実行する。また、制御部３３０はステートマシンを備えており、このステートマシンにより後述する状態遷移が実行される。
【００４３】
例えば、ＣＰＵ１１からモード信号生成用レジスタ３１１に書き込みモードが設定されると、制御部３３０は、セキュリティフラグ格納用ラッチ３２１を参照し、書き込み禁止用のフラグが許可に設定されていれば、モード信号を生成しフラッシュメモリ１４へ出力するが、書き込み禁止用のフラグが禁止に設定されていれば、モード信号を生成しない。
【００４４】
また、例えば、ＣＰＵ１１からアドレス生成用レジスタ３１２にフラッシュメモリ１４のブート領域のアドレスが設定されると、制御部３３０は、セキュリティフラグ格納用ラッチ３２１を参照し、ブート領域書き換え禁止用のフラグが許可に設定されていれば、モード信号を生成しフラッシュメモリ１４へ出力するが、ブート領域書き換え禁止用のフラグが禁止に設定されていれば、モード信号を生成しない。このように、モード信号を生成する、あるいは生成しないことにより、ブート領域の書き換え制御が行われる。
【００４５】
ＣＰＵ１１から、アドレス生成用レジスタ３１２に指定されたアドレスは、有効セクタ格納用ラッチ３２３に基づき、実際の物理アドレスに変換されアドレス信号が生成され、フラッシュメモリ１４へ出力される。これにより、有効セクタがセクタ０とセクタ１のどちらであっても、ＣＰＵ１１はこれを意識せずに、常に同じアドレスを指定することができる。例えば、図２（ｂ）のようにセクタ０のセキュリティフラグ領域２１２を０００１Ｈ番地として、セキュリティフラグ領域２１２の読み出した書き込みを行う場合、ＣＰＵ１１は０００１Ｈ番地を指定すれば、制御部３３０において、有効セクタがセクタ０であれば０００１Ｈ番地、有効セクタがセクタ１であれば０８０１Ｈにマッピングし、フラッシュメモリ１４へ出力する。同様に、セクタ１のアドレスを０８００Ｈ番地として、無効セクタの消去を行う場合、ＣＰＵ１１は０８００Ｈ番地を指定すれば、制御部３３０において、無効セクタがセクタ０であれば００００Ｈ番地、無効セクタがセクタ１であれば０８００Ｈ番地にマッピングし、フラッシュメモリ１４へ出力する。
【００４６】
次に、図４乃至図６を用いて、本実施形態にかかるセキュリティフラグの書き換え処理について説明する。
【００４７】
図４は、セキュリティフラグの書き換え時の状態遷移を示している。制御部３３０は、この状態遷移にもとづき書き換え動作を行い、各々の状態は、前述の状態格納用ラッチ３２２に格納される。また、以下の処理では、有効フラグ領域２１１やセキュリティフラグ領域２１２等のシステム領域２１０について読み書きが行われるが、状態ごとに、それぞれシステム領域２１０について書き換えの禁止あるいは許可が決められている。尚、例えば、ＣＰＵ１１において、基本プログラムに含まれるセキュリティフラグ書き換えプログラムが実行され、制御部３３０において、ＣＰＵ１１からの指示に従い以下の処理を行う。このセキュリティフラグ書き換えプログラムには、例えば、セキュリティフラグの読み出しや書き込み、無効セクタの消去等の命令が記述されている。
【００４８】
例えば、ＣＰＵ１１において、セキュリティフラグ書き換えプログラムの実行が開始され、有効セクタのセキュリティフラグを読み出されることにより、この処理は開始される。まず、最初の状態は、初期状態のＩＮＩＴ状態４１である。この状態では、有効セクタのセキュリティフラグ領域２１２からセキュリティフラグの読み出しが行われる。この読み出されたセキュリティフラグは、セキュリティフラグ格納用ラッチ３２１に格納される。また、この状態では、無効セクタの消去のみ可能である。
【００４９】
例えば、読み出された更新前の書き込み禁止用フラグが、許可の場合は、禁止あるいは許可に更新できるが、書き込み禁止用フラグが禁止の場合、許可に更新できないようにしてもよい。これは、更新データを書き込む際に、セキュリティフラグ格納用ラッチ３２１を参照し、書き込み禁止用フラグが禁止であれば、更新データが許可で書き込もうとしても、禁止として書き込むことにより行ってもよい。
【００５０】
セキュリティフラグの読み出しが完了すると、セキュリティフラグ読み出し終了状態４２へ状態を遷移する。この状態では、無効セクタのセキュリティフラグ領域２１２へ更新データの書き込みが行われる。また、この状態では、無効セクタのセキュリティフラグ領域２１２の書き込みのみ可能である。
【００５１】
更新データの書き込みが完了すると、セキュリティフラグ書き込み終了状態４３へ状態を遷移する。この状態では、無効セクタの有効フラグ領域２１１へ有効であることを示すフラグの書き込みが行われる。また、この状態では、無効セクタの有効フラグ領域２１１及びその他の領域２１３の書き込みのみ可能である。
【００５２】
有効フラグの書き込みが完了すると、有効フラグ書き込み終了状態４４へ状態を遷移する。ここで、有効セクタを示す情報を有効セクタ格納用ラッチ３２３に格納する。また、この状態では、システム領域２１０に対する全ての書き換えが禁止される。有効セクタ格納用ラッチ３２３を変更することにより、上述したように、マッピングする物理アドレスが変更になる。
【００５３】
その後、例えば、ＣＰＵ１１が、システム領域２１０以外の領域であるユーザ領域２２０のアドレスを指定することにより、ＩＮＩＴ状態４１へと状態が遷移する。そして、ＩＮＩＴ状態４１において、無効セクタのデータ消去が行われる。こうして、セキュリティフラグの書き換え処理は終了する。
【００５４】
このように、書き換えの状態ごとに、システム領域２１０の書き換えの禁止あるいは許可を決めておくことにより、この状態遷移を行わなければ、セキュリティフラグを書き換えることができなくなり、セキュリティフラグの信頼性をより確実にすることができる。つまり、図４の状態遷移に基づいた書き換え手順を記述してあるセキュリティフラグ書き換えプログラムでは、セキュリティフラグの書き換えを行うことができるが、他の手順を記述したプログラムでは、セキュリティフラグを書き換えることができない。例えば、このような処理は、データの消去や書き込みの際に状態格納用ラッチ３２２を参照することにより行われる。
【００５５】
図５及び図６は、セキュリティフラグ書き換え時のシステム領域２１０の各セクタの状態を示している。図５及び図６において、（ａ）、（ｂ）、（ｃ）、（ｄ）は、それぞれ、図４のセキュリティフラグ読み出し終了状態４２、セキュリティフラグ書き込み終了状態４３、有効フラグ書き込み終了状態４４、セキュリティフラグ書き換え後のＩＮＩＴ状態４１における、各セクタの状態を示している。また、図５及び図６において「ＦＦＨ」や「００Ｈ」の「Ｈ」は１６進表示を表している。各領域に書き込みあるいは消去されるデータは、「ＦＦＨ」や「００Ｈ」としているが、一例であり、各領域のサイズや値を限定するものではない。
【００５６】
この例では、セクタ１の有効フラグ領域２１１が「ＦＦＨ」の場合、セクタ０を有効とし、セクタ１の有効フラグ領域２１１が「００Ｈ」の場合、セクタ１を有効としている。これに限らず、セクタ１ではなく、セクタ０の有効フラグ領域２１１を用いてもよい。尚、上述のように、現在有効なセクタを示す情報は、有効セクタ格納用ラッチ３２３に格納されているため、制御部３３０は、通常、セクタ１の有効フラグ領域２１１ではなく、有効セクタ格納用ラッチ３２３を参照し動作する。電源後の再起動時は、有効セクタ格納用ラッチ３２３に情報が残っていないため、セクタ１の有効フラグ領域２１１から有効なセクタの情報を読み出し、有効セクタ格納用ラッチ３２３に格納する。また、制御部３３０は、有効セクタ格納用ラッチ３２３を用いずに、常に、セクタ１の有効フラグ領域２１１を読み出しどちらのセクタが有効か認識してから処理を行ってもよい。
【００５７】
図５は、有効セクタがセクタ０のときに、セキュリティフラグを書き換え、有効セクタをセクタ１とした例である。まず、セキュリティフラグ書き換え動作が開始されると、ＩＮＩＴ状態４１において、有効セクタであるセクタ０のセキュリティフラグ領域２１２からセキュリティフラグが読み出され、セキュリティフラグ読み出し終了状態４２へ状態遷移する（図５（ａ））。ここでは、有効セクタ格納用ラッチ３２３に基づき、有効セクタであるセクタ０のセキュリティフラグ「ＤＡＴＡ＿Ａ」を読み出す。また、セクタ１の有効フラグ領域２１１が「ＦＦＨ」であることからセクタ０が有効であると判断してもよい。
【００５８】
次に、セキュリティフラグ読み出し終了状態４２において、無効セクタであるセクタ１のセキュリティフラグ領域２１２へ更新データを書き込み、さらに、セクタ０のその他の領域２１３をセクタ１へコピーし、セキュリティフラグ書き込み終了状態４３へ状態遷移する（図５（ｂ））。ここでは、更新データ「ＤＡＴＡ＿Ａ'」及びその他のデータ「ＤＡＴＡ＿Ｔ」を書き込んでいる。
【００５９】
そして、セキュリティフラグ書き込み終了状態４３において、無効セクタであるセクタ１の有効フラグ領域２１１に有効であることを示すフラグを書き込み、有効フラグ書き込み終了状態４４へ状態遷移する（図５（ｃ））。ここでは、セクタ１の有効フラグ領域２１１に「００Ｈ」を書き込み、さらに、セクタ１が有効であることを有効セクタ格納用ラッチ３２３に格納することで、制御部３３０はセクタ１を有効として動作する。セクタ１の有効フラグ領域２１１を「００Ｈ」とすることにより、電源断後の再起動時に、セクタ１の有効フラグ領域２１１を参照し、セクタ１が有効として動作することができる。
【００６０】
その後、有効フラグ書き込み終了状態４４において、ＣＰＵ１１がユーザ領域２２０のアドレスを指定することにより、ＩＮＩＴ状態４１へ状態遷移し、無効セクタであるセクタ０のデータを消去する（図５（ｄ））。ここで、データの消去はセクタ単位に行われるため、セクタ０の全領域が「ＦＦＨ」となる。
【００６１】
図６は、有効セクタがセクタ１のときに、セキュリティフラグを書き換え、有効セクタをセクタ０とした例である。まず、セキュリティフラグ書き換え動作が開始されると、ＩＮＩＴ状態４１において、有効セクタであるセクタ１のセキュリティフラグ領域２１２からセキュリティフラグが読み出され、セキュリティフラグ読み出し終了状態４２へ状態遷移する（図６（ａ））。ここでは、有効セクタ格納用ラッチ３２３に基づき、有効セクタであるセクタ１のセキュリティフラグ「ＤＡＴＡ＿Ａ'」を読み出す。また、セクタ１の有効フラグ領域２１１が「００Ｈ」であることからセクタ１が有効であると判断してもよい。
【００６２】
次に、セキュリティフラグ読み出し終了状態４２において、無効セクタであるセクタ０のセキュリティフラグ領域２１２へ更新データを書き込み、さらに、セクタ１のその他の領域２１３をセクタ０へコピーし、セキュリティフラグ書き込み終了状態４３へ状態遷移する（図６（ｂ））。ここでは、更新データ「ＤＡＴＡ＿Ａ''」及びその他のデータ「ＤＡＴＡ＿Ｔ」を書き込んでいる。
【００６３】
そして、セキュリティフラグ書き込み終了状態４３において、無効セクタであるセクタ０の有効フラグ領域２１１に有効であることを示すフラグを書き込み、有効フラグ書き込み終了状態４４へ状態遷移する（図６（ｃ））。ここでは、セクタ０の有効フラグ領域２１１に「ＦＦＨ」を書き込み、さらに、セクタ０が有効であることを有効セクタ格納用ラッチ３２３に格納することで、制御部３３０はセクタ０を有効として動作する。また、データ消去の状態が「ＦＦＨ」のため、セクタ０の有効フラグ領域２１１には何も書き込まなくてもよい。
【００６４】
その後、有効フラグ書き込み終了状態４４において、ＣＰＵ１１がユーザ領域２２０のアドレスを指定することにより、ＩＮＩＴ状態４１へ状態遷移し、無効セクタであるセクタ１のデータを消去する（図６（ｄ））。ここで、データの消去はセクタ単位に行われるため、セクタ１の全領域が「ＦＦＨ」となる。セクタ１の有効フラグ領域２１１を「ＦＦＨ」とすることにより、電源断後の再起動時に、セクタ１の有効フラグ領域２１１を参照し、セクタ０が有効として動作することができる。
【００６５】
このような方法により、セクタを２つ用いて、データ書き換え中の電源断に対応することができる。例えば、セキュリティフラグ書き換え中、図５（ｂ）や図６（ｂ）等において、電源断が発生し、マイコン１０が再起動した場合、セクタ１の有効フラグ領域２１１を参照することにより、図５（ｂ）のセクタ０や図６（ｂ）のセクタ１等のように正常なセクタの情報で動作することができる。また、その後のセキュリティフラグの書き換え動作において、セクタの書き換え前に、無効セクタについて、データが消去されているかブランクチェックを行うことにより、図５（ｂ）のセクタ１や図６（ｂ）のセクタ０等のように、異常終了等によりデータが破壊されていることを知ることができる。
【００６６】
また、更新前のデータ（図５のＤＡＴＡ＿Ａや図６のＤＡＴＡ＿Ａ'）を退避せずに、更新データ（図５のＤＡＴＡ＿Ａ'や図６のＤＡＴＡ＿Ａ''）を書き込むため、データをコピーして退避してから書き換える方法に比べて、データの書き換えを高速に行うことができる。
【００６７】
その他の発明の実施の形態．
上述の例では、セキュリティフラグの書き換え方法として説明したが、セキュリティフラグに限らず、その他のデータ、例えば、ユーザプログラムや基本プログラム等でもよい。
【００６８】
また、上述の例では、フラッシュメモリにおけるデータ書き換え方法として説明したが、フラッシュメモリに限らず、その他の不揮発性メモリ、例えば、ＥＰＲＯＭやＥＥＰＲＯＭ等でもよい。
【００６９】
さらに、上述の例では、マイコン上で動作するデータ書き換え方法として説明したが、マイコンに限らず、その他の電子機器、例えば、不揮発性メモリの制御回路を備える外部記憶装置等でもよい。
【図面の簡単な説明】
【００７０】
【図１】本発明にかかるマイクロコンピュータの構成図である。
【図２】本発明にかかるフラッシュメモリのメモリ構成図である。
【図３】本発明にかかるフラッシュメモリ制御回路の構成図である。
【図４】本発明にかかるデータ書き換え方法の状態遷移図である。
【図５】本発明にかかるデータ書き換え方法のメモリの状態を示す図である。
【図６】本発明にかかるデータ書き換え方法のメモリの状態を示す図である。
【図７】従来のデータ書き換え方法のメモリの状態を示す図である。
【符号の説明】
【００７１】
１０  マイクロコンピュータ
１２  ＲＡＭ
１３  ＲＯＭ
１４  フラッシュメモリ
１５  フラッシュメモリ制御回路
２１０  システム領域
２１１  有効フラグ領域
２１２  セキュリティフラグ領域
２１３  その他の領域
２２０  ユーザ領域
【図１】
2005107608.tif 000003
【図２】
2005107608.tif 000004
【図３】
2005107608.tif 000005
【図４】
2005107608.tif 000006
【図５】
2005107608.tif 000007
【図６】
2005107608.tif 000008
【図７】
2005107608.tif 000009