フラッシュメモリ5内において個々にデータ消去の単位となる複数のブロックのうち、使用中である旨のブロックステータス情報を保持しているブロックに対して追記方式でデータの書き込みを行う制御装置であって、前記複数のブロックのうち第1のブロックのデータ消去時に、消去対象の前記第1のブロックを特定可能な区別用データまたは前記複数のブロックのうちデータの最新値が保存されている第2のブロックを特定可能な区別用データを、不揮発性記憶媒体5aに書き込む消去前処理手段110と、前記消去前処理手段110によって前記区別用データが記録された後、前記第1のブロックのデータ消去を行う消去手段120と、前記制御装置がリセットから復帰した後、使用中である旨のブロックステータス情報を保持しているブロックが前記複数のブロック中で2個あったことに基づいて、前記不揮発性記憶媒体5a中の前記区別用データを参照する参照手段230と、使用中である旨のブロックステータス情報を保持している前記2個のブロックのうち、前記参照手段240が参照した前記区別用データによれば消去対象となっている前記第1のブロックのデータ消去を行うか、または、前記参照手段240が参照した前記区別用データによればデータの最新値が保存されている前記第2のブロック以外のブロックのデータ消去を行う消去手段240と、を備えた制御装置。フラッシュメモリ5内でエリア毎に複数個設けられて個々にデータ消去の単位となる複数のブロックのうち、各エリアにおいて使用中である旨のブロックステータス情報を保持しているブロックに対して追記方式でデータの書き込みを行う制御装置であって、複数のブロックのうち第1のブロックの消去時に、消去対象の前記第1のブロックを特定可能な区別用データ、または、前記第1のブロックと同じ第1のエリアに属する他のブロックのうちデータの最新値が保存されている第2のブロックを特定可能な区別用データを、不揮発性記憶媒体5aに書き込む消去前処理手段110と、前記消去前処理手段110によって前記区別用データが記録された後、前記第1のブロックを消去する消去手段120と、前記制御装置がリセットから復帰した後、使用中である旨のブロックステータス情報を保持しているブロックが前記第1のエリア内に2個あったことに基づいて、前記不揮発性記憶媒体5a中の前記区別用データを参照する参照手段230と、使用中である旨のブロックステータス情報を保持している前記第1のエリア内の前記2個のブロックのうち、前記参照手段240が参照した前記区別用データによれば消去対象となっている前記第1のブロックのデータ消去を行うか、または、前記参照手段240が参照した前記区別用データによればデータの最新値が保存されている前記第2のブロック以外のブロックのデータ消去を行う消去手段240と、を備えた制御装置。前記不揮発性記憶媒体5aは、フラッシュメモリにおいてデータ消去の単位となる管理ブロックであり、前記消去前処理手段110によって前記区別用データが記録された後、前記管理ブロックにこれ以上区別用データを書き込む空き領域がない場合、前記複数のブロックのうち1つのブロックに、所定の管理ブロック消去中データを書き込む管理ブロック消去前処理手段150と、前記管理ブロック消去前処理手段150によって前記管理ブロック消去中データが書き込まれた後、前記管理ブロックのデータ消去を行う管理ブロック消去手段160、260と、前記管理ブロック消去手段が前記管理ブロックのデータ消去を行った後、前記管理ブロック消去中データを無効化する管理ブロック消去中データ無効化手段170、270と、前記管理ブロック消去手段160は、前記制御装置がリセットから復帰した後、前記1つのブロックに前記管理ブロック消去中データが記録されていることに基づいて、前記管理ブロックのデータ消去を行うことを特徴とする請求項1または2に記載の制御装置。特許文献1に記載のような方法でフラッシュメモリを使用することで、既存のEEPROMと同様にデータの読み出しおよび書き込みを行うことができる。しかし、特許文献1に記載のような方法では、電源が瞬断した際に、EEPROMと同様に保存したデータが消失する場合が発生する。また、フラッシュメモリはEEPROMよりも容量が大きいため、より多くのデータを保存することができる。従って、今後、今までは保存していなかったデータ、例として、データが消失すると、制御装置が提供する機能全体への影響が大きいデータ等、を保存する場合が想定される。その際は、データの消失の可能性を従来よりも低減させることが必要とされる。本発明は上記点に鑑み、フラッシュメモリにデータを記録する技術において、保存しているデータが消失する可能性をより低減させることを目的とする。上記目的を達成するための請求項1に記載の発明は、フラッシュメモリ5内において個々にデータ消去の単位となる複数のブロックのうち、使用中である旨のブロックステータス情報を保持しているブロックに対して追記方式でデータの書き込みを行う制御装置であって、前記複数のブロックのうち第1のブロックのデータ消去時に、消去対象の前記第1のブロックを特定可能な区別用データまたは前記複数のブロックのうちデータの最新値が保存されている第2のブロックを特定可能な区別用データを、不揮発性記憶媒体5aに書き込む消去前処理手段110と、前記消去前処理手段110によって前記区別用データが記録された後、前記第1のブロックのデータ消去を行う消去手段120と、前記制御装置がリセットから復帰した後、使用中である旨のブロックステータス情報を保持しているブロックが前記複数のブロック中で2個あったことに基づいて、前記不揮発性記憶媒体5a中の前記区別用データを参照する参照手段230と、使用中である旨のブロックステータス情報を保持している前記2個のブロックのうち、前記参照手段240が参照した前記区別用データによれば消去対象となっている前記第1のブロックのデータ消去を行うか、または、前記参照手段240が参照した前記区別用データによればデータの最新値が保存されている前記第2のブロック以外のブロックのデータ消去を行う消去手段240と、を備えた制御装置である。また、請求項2に記載の発明は、フラッシュメモリ5内でエリア毎に複数個設けられて個々にデータ消去の単位となる複数のブロックのうち、各エリアにおいて使用中である旨のブロックステータス情報を保持しているブロックに対して追記方式でデータの書き込みを行う制御装置であって、複数のブロックのうち第1のブロックの消去時に、消去対象の前記第1のブロックを特定可能な区別用データ、または、前記第1のブロックと同じ第1のエリアに属する他のブロックのうちデータの最新値が保存されている第2のブロックを特定可能な区別用データを、不揮発性記憶媒体5aに書き込む消去前処理手段110と、前記消去前処理手段110によって前記区別用データが記録された後、前記第1のブロックを消去する消去手段120と、前記制御装置がリセットから復帰した後、使用中である旨のブロックステータス情報を保持しているブロックが前記第1のエリア内に2個あったことに基づいて、前記不揮発性記憶媒体5a中の前記区別用データを参照する参照手段230と、使用中である旨のブロックステータス情報を保持している前記第1のエリア内の前記2個のブロックのうち、前記参照手段240が参照した前記区別用データによれば消去対象となっている前記第1のブロックのデータ消去を行うか、または、前記参照手段240が参照した前記区別用データによればデータの最新値が保存されている前記第2のブロック以外のブロックのデータ消去を行う消去手段240と、を備えた制御装置である。請求項1、2のように、第1のブロックのデータ消去時に、前処理として上記のような区別データを不揮発性記憶媒体5aに書き込んでおき、その後にデータ消去を行うようにする。そして、制御装置がリセットから復帰した後、使用中である旨のブロックステータス情報を保持しているブロックが2個あったことに基づいて、この区別用データを参照することで、消去対象の第1のブロックまたはデータの最新値が保存されている第2のブロックを特定できるので、上記2個のブロックのうち、区別用データによれば消去対象となっているブロックのデータ消去するか、区別用データによればデータの最新値が保存されているブロックではない方のブロックのデータ消去を行う。これにより、リセット前に消去しようとしていたブロックの消去が完了するので、使用中である旨のブロックステータス情報を保持しているブロックが、データの最新値が保存されている第2のブロック1個になり、どのブロックにデータの最新値が保存されているのかがわかるようになる。したがって、フラッシュメモリにデータを記録する技術において、記憶しているデータが消失する可能性をより低下させることができる。また、請求項3に記載の発明は、請求項1または2に記載の制御装置において、前記不揮発性記憶媒体5aは、フラッシュメモリにおいてデータ消去の単位となる管理ブロックであり、前記消去前処理手段110によって前記区別用データが記録された後、前記管理ブロックにこれ以上区別用データを書き込む空き領域がない場合、前記複数のブロックのうち1つのブロックに、所定の管理ブロック消去中データを書き込む管理ブロック消去前処理手段150と、前記管理ブロック消去前処理手段150によって前記管理ブロック消去中データが書き込まれた後、前記管理ブロックのデータ消去を行う管理ブロック消去手段160、260と、前記管理ブロック消去手段が前記管理ブロックのデータ消去を行った後、前記管理ブロック消去中データを無効化する管理ブロック消去中データ無効化手段170、270と、前記管理ブロック消去手段160は、前記制御装置がリセットから復帰した後、前記1つのブロックに前記管理ブロック消去中データが記録されていることに基づいて、前記管理ブロックのデータ消去を行うことを特徴とする。このようにすることで、管理ブロックのデータ消去時にリセットが発生した場合も、リセットから復帰した後にデータ消去できるようになる。なお、上記および特許請求の範囲における括弧内の符号は、特許請求の範囲に記載された用語と後述の実施形態に記載される当該用語を例示する具体物等との対応関係を示すものである。以下、本発明の一実施形態について説明する。図1に、本実施形態に係るマイクロコントローラ1本発明の制御装置の一例に相当するの構成を示す。このマイクロコントローラ1は、車両に搭載され、I/O2、ROM3、RAM4、フラッシュメモリ5、フラッシュコントローラ6、CPU7等を備えている。I/O2は、マイクロコントローラ1の外部の装置と信号の授受を行うためのインターフェース装置である。ROM3は、CPU7が実行するための各種プログラム等があらかじめ記憶された不揮発性の記憶媒体である。RAM4は、CPU7の作業用のメモリ領域である。フラッシュメモリ5は、データ消去の最小単位となるブロックを複数個有して構成されている。各ブロックのサイズは数キロバイト例えば、4キロバイトであり、1つのブロック内のあるデータを消去するには、そのブロック全体のデータを消去するすなわち、そのブロック全体のビットを1にとする必要がある。しかし、1つのブロック内にある特定のビットを1から0に書き替える場合は、それよりも小さい単位例えば2バイト単位、4バイト単位でデータを書き換えることができる。これら複数個のブロックのそれぞれは、複数M個のエリアのいずれかに属するようになっている。例えば、図1の例では、ブロック1、2がエリア1に属し、ブロック3、4がエリア2に属している。1つのエリアに属するブロックの数は、2の場合もあれば、3以上の場合もある。どのブロックがどのエリアに属するかの情報は、あらかじめROM3に記録されている。エリアは、フラッシュメモリ5に書き込むレコードの記録先を、そのレコードが含むデータの種別に応じて仕分けするために設けられた領域である。例えば、ドアの開閉回数、エンジンの開閉回数等の、値が変化する頻度すなわち、更新の頻度が高い種別のデータは、エリア2に記録し、ソフトのバージョン等の、値が変化する頻度が低い種別のデータは、エリア1に記録する等の区分けを行う。どの種別のデータがどのエリアに記録されるかの情報は、データIDとエリアとの対応関係を示すエリア対応テーブルとして、ROM3に記録されている。各エリア内において、同じエリアに属する複数のブロックは、CPU7およびフラッシュコントローラ6によって、1番目のブロックが使用され、1番目のブロックの使用が終了すると次に2番目のブロックが使用されるという風に、順番に書き込みに使用されるようになっている。複数のブロックのそれぞれは、一部の領域がブロックステータス領域として使用され、他の領域がデータ領域を有している。各ブロックステータス領域にはブロックステータス情報が記録されるようになっており、ブロックステータス情報は、当該ブロックが使用中のブロックであるか使用済みのブロックであるか未使用のブロックであるかを判別することができる。各ブロックは、CPU7およびフラッシュコントローラ6によって、当該ブロックの使用を始める際に、使用中である旨のブロックステータス情報がブロックステータス領域に書き込まれる。また、使用中のブロック使用中である旨のブロックステータス情報を有するブロックのデータ領域には、先頭のアドレスから順にレコードが順次記録されるようになっている。そして、当該ブロックが更にレコードを書き込む空き領域がない満杯状態になった場合、使用済みである旨のブロックステータス情報がブロックステータス領域に書き込まれる。また、当該ブロックのデータ消去を行うことで、当該ブロックのブロックステータス情報は、未使用である旨のブロックステータス情報となる。なお、レコードのデータサイズは、固定でも可変でもよいが、本実施形態では固定とする。また、レコードのデータサイズは、典型的には数十バイト程度の長さである。したがって、典型的には、1つのブロック内には、数十個~数百個程度のレコードが記録可能である。また、フラッシュメモリ5は、どのエリアにも属さないブロックとして、管理ブロック5aを1つ有している。この管理ブロックは、他のブロック同様、データ消去の最小単位であり、また、レコードが記録可能となっている。この管理ブロック5aには、後述するように、各エリアのブロックのデータ消去直前に、そのエリアでデータの最新値が記録されているブロックの情報が書き込まれるようになっている。フラッシュコントローラ6は、CPU7の制御に従ってフラッシュメモリ5内の各ブロックに対してデータの読み出しおよび書き込みを行う周知の装置である。具体的には、CPU7から特定のブロックの特定のアドレスのデータの読み出し指令を受けると、当該アドレスに記録されたデータの内容をフラッシュメモリ5から読み出し、読み出した内容をCPU7に出力する。また、CPU7から特定のブロックの特定のアドレスに特定のデータの書き込むよう書き込み指令を受けると、フラッシュメモリ5の当該ブロックの当該アドレス位置へ、当該特定のデータを書き込む。また、CPU7からブロックの消去命令を受けると、フラッシュメモリ5の当該ブロックの全データの消去を行う。CPU7は、ROM3に記録されたプログラムを実行することで、種々の処理を実現し、その処理において、必要に応じ、I/O2を用いて外部と信号の授受を行い、ROM3からデータを読み出し、RAM4を作業領域として用い、フラッシュコントローラ6に上記のような各種指令を出力することで、フラッシュメモリ5へのデータの読み出しおよび書き込みを行う。以下、簡単のため、CPU7がフラッシュコントローラ6に読み出し指令を出力し、その読み出し指令に従ってフラッシュコントローラ6がフラッシュメモリ5のブロックからデータを読み出してCPU7に出力する作動については、単に、CPU7がフラッシュメモリ5のブロックからデータを読み出すと記載する。また、簡単のため、CPU7がフラッシュコントローラ6に書き込み指令を出力し、その書き込み指令に従ってフラッシュコントローラ6がフラッシュメモリ5のブロックにデータを書き込む作動については、単に、CPU7がフラッシュメモリ5のブロックにデータを書き込むと記載する。図1に示すように、ROM3には、CPU7が実行するプログラムとして、フラッシュドライバソフト、および、複数のアプリケーションソフトが格納されている。図2に、アプリケーションソフト、フラッシュドライバソフト、フラッシュコントローラ6、フラッシュメモリ5の階層構成を概念的に示す。CPU7は、これらアプリケーションソフトを実行することで、例えば、I/O2を介してドア開閉センサから信号を受け取って車両のドアの開閉を検出し、車両のエンジンの始動を検知するセンサから信号を受け取ってエンジンECUの始動を検出する。これらのようなアプリケーションを実行したときの処理により、フラッシュメモリ5にデータを記録する必要が発生する場合がある。例えば、エンジンを始動した回数を、その回数が変化する度にフラッシュメモリ5に記録する必要が発生し、ドアを開閉した回数を、その回数が変化する度にフラッシュメモリ5に記録する必要が発生する。このように、CPU7がアプリケーションソフトの実行において書き込みデータの書き込みの必要が発生すると、書き込みデータの書き込み要求をRAM4またはCPU7のレジスタに出力する書き込む。この書き込み要求は、書き込みデータの種別を示すデータID例えば、エンジンを始動した回数か、ドアを開閉した回数かの別と、書き込みデータの値とを含むデータである。すると、CPU7は、書き込み要求が出力されたことに基づいて、フラッシュドライバソフトの実行を開始し、その実行処理において、書き込み要求中のデータIDに基づいて、書き込み先のエリアを決定し、当該エリア中で、使用中の旨のブロックステータス情報が記録されているブロックを特定し、特定したブロックに書き込みデータの値を記録するため、フラッシュコントローラ6に必要な指令を出力する。これにより、フラッシュコントローラ6によって書き込みデータがレコードとしてブロックのデータ領域に追記方式で記録される。ここで、追記方式について説明する。追記方式では、あるデータIDのデータの値が、すでにブロックのある領域に記録されており、新たに当該データの値を更新するときには、当該領域に新たな値を上書き記録するのではなく、当該ブロックの空き領域に当該データの最新値を追加記録する。以下では、簡単のため、CPU7が、ある特定のアドレスにデータを書き込む書き込み指令をフラッシュコントローラ6に出力する処理を、単に、CPU7が、ブロックの特定のアドレスにデータを書き込むと記載する。また同様に、CPU7が、ある特定のアドレスからデータを読み出す読み出し指令をフラッシュコントローラ6に出力し、フラッシュコントローラ6から当該データを取得する処理を、単に、CPU7が、ある特定のアドレスからデータを読み出すと記載する。以下、上記のような構成のマイクロコントローラ1の具体的な作動例について説明する。本例では、ブロック1およびブロック2のみを有するエリア1に、あるデータIDのデータの値を書き込む作動について説明するが、他のエリアにデータの値を書き込む場合も同様の作動を行う。まず、CPU7は、あるデータの値をエリア1に書き込むとき、エリア1内のブロック1、2に保存されているブロックステータス情報を参照し、使用中である旨のブロックステータス情報を有しているブロックに、データの値およびデータIDを有するレコードを追記方式で書き込む。通常、使用中である旨のブロックステータス情報を有するブロックは、1つのエリア内で1つだけであり、同じエリア中の他のブロックのブロックステータス情報は未使用か使用済みとなっている。本例では、エリア1に属するブロック2が使用中である旨のブロックステータス情報を有しているとする。この場合、データの値が更新される度、最新の値がブロック2に順次追加されてく。そして、ブロック2にこれ以上レコードを記録できない満杯状態になると図3参照、CPU7は、ブロック1第1のブロックの一例に相当するのデータ消去を行うため、フラッシュドライバソフトの処理の一部として、図4に示す処理を実行する。まずステップ110では、消去の前処理として、データの最新値が記録されているブロック2第2のブロックの一例に相当するのブロックIDと当該ブロック2が属するエリア1のエリアIDとの組を、区別用データとして、管理ブロックの空き領域に書き込む。ブロックIDは、フラッシュメモリ5中のブロックを一意に区別するために各ブロックに割り当てられた識別子であり、エリアIDは、フラッシュメモリ5中のエリアを一意に区別するために各エリアに割り当てられた識別子である。この際、区別用データには、当該区別用データが有効である旨のデータも含める図5参照。続いてステップ120では、消去対象のブロック1のデータ消去を実行する。具体的には、フラッシュコントローラ6にブロック1の消去命令を出力する。これにより、フラッシュコントローラ6は、ブロック1のデータ消去を行い、データ消去が完了したら、その旨をCPU7に通知する。フラッシュコントローラ6からデータ消去完了の通知を受けた後、CPU7は、ステップ130に進んで、直前のステップ110で管理ブロックに書き込んだ区別用データを無効化する図6参照。具体的には、当該区別用データ中で、当該区別用データが有効である旨のデータを、無効である旨のデータに書き換える。なお、ブロックのある領域に値を一旦書き込んでも、その値を構成するビット列のうち一部を1から0に書き替えるような1→0タイプの書き換えは可能であり、上記のような有効である旨のデータから無効である旨のデータへの書き換えは、そのような1→0タイプの書き換えである。続いてステップ140では、管理ブロックが満杯状態になっているか否か、すなわち、管理ブロックに新たに区別用データを書き込む空き領域が無いかあるかを判定する。本例では、図6に示すように、まだ管理ブロックに空き領域があるので、管理ブロックが満杯状態でないと判定して図4の処理を終了する。このような図4の処理により、ブロック1のデータ消去が実現する。その後CPU7は、ブロック2に記録されている各種データの最新値をブロック1にコピーし、ブロック2のブロックステータス領域のブロックステータス情報を、使用済みである旨のブロックステータス情報に書き換えるこれも1→0タイプの書き換えであると共に、ブロック1のブロックステータス領域に、使用中である旨のブロックステータス情報を書き込む。これにより、以後ブロック1に、エリア1用のデータの最新値が順次記録されていく。ここで、図4のステップ120でブロック1のデータ消去を行っている途中に、マイクロコントローラ1がリセットした場合について説明する。リセットの原因は、マイクロコントローラ1の暴走、マイクロコントローラ1の外部からのリセット要求、CPU7が実行しているプログラムによるソフトウェアリセット要求、マイクロコントローラ1への電力供給の瞬断等、様々である。マイクロコントローラ1がリセットした場合、ブロック1のデータ消去が中断してしまうので、ブロック1の記憶領域は、完全に消去された状態全ビットが1となっている状態ではなく、中途半端に消去された状態になっている。あるブロックのデータ消去が途中で終わってしまった場合に、そのブロック内のデータ構成がどのようなっているかは、消去前のデータ構成、中断のタイミング、フラッシュコントローラ6によるデータ消去の手順例えば、フラッシュコントローラ6がランダムな順序で当該ブロックの各ビットを1にするようなものであってもよい等によって様々である。したがって、場合によっては、図7に示すように、データ消去が中断したブロック1のブロックステータス領域のブロックステータス情報が、使用中である旨のブロックステータス情報に、たまたま変化してしまう場合がある。この方法でフラッシュメモリを使用すれば、既存のEEPROMと同等の性能を提供することが可能になると共に、EEPROMと同様にデータが消失する場合がある。そして、フラッシュメモリはEEPROMよりも多くのデータを保存することができるため、今までは保存していなかった消失してはいけないデータを保存する場合が想定される。その際は、データの消失の可能性を従来よりも低減させることが望ましい。本実施形態では、この課題を解消するため、マイクロコントローラ1がリセットから復帰したときに、CPU7が、図8に示す処理を実行するようになっている。この図8の処理においてCPU7は、まずステップ210で、全エリアに渡って、使用中である旨のブロックステータス情報を有するブロックを検索する。続いてステップ210で、その検索結果に従って、使用中である旨のブロックステータス情報を有するブロックが1エリア内に2個以上あるようなエリアが存在するか否かを判定する。存在しないと判定した場合、ステップ230、240をバイパスしてステップ250に進む。図7の例の場合、エリア1が、使用中である旨のブロックステータス情報を有するブロックを2つブロック1とブロック2を有していると判定し、ステップ230に進む。ステップ230では、管理ブロック中に記録された区別用データを参照する。管理ブロック中に複数個の区別用データが記録されている場合は、最後に記録された区別用データを参照するようになっていてもよいし、有効であるすなわち、無効になっていない区別用データを参照するようになっていてもよい。ブロックの消去は2ブロック以上同時に行うことはほとんどないので、管理ブロックには、有効である区別用データは1つしかないことがほとんどである。図7の例では、ブロック2のブロックIDと、エリア1のエリアIDを有する区別用データを参照する。続いてステップ240では、参照した区別用データに基づいて消去対象のブロックを特定する。参照した区別用データに基づいて消去対象のブロックを特定する方法は、以下の通りである。区別用データには、図4のステップ110の説明で述べた通り、ブロック1のデータ消去の時点でデータの最新値が記録されているブロック2のブロックIDが記録されている。また、図7に示した通り、使用中である旨のブロックステータス情報を有しているのは、当該ブロック2と、データ消去が中断してしまったブロック1である。したがって、CPU7は、エリア1内で使用中である旨のブロックステータス情報を有している2個のブロック1、2のうち、参照した区別用データに含まれるブロックIDのブロック2ではない方のブロック1を、消去対象のブロックとして特定する。更にステップ240では、特定した消去対象のブロック1の消去命令をフラッシュコントローラ6に出力する。これにより、フラッシュコントローラ6は、当該消去対象のブロック1のデータ消去を行い、データ消去が完了したら、その旨をCPU7に通知する。また更にステップ240では、ステップ230で参照した区別用データを、図4のステップ130と同じ方法で、無効化する。この結果、ブロック1のデータ構成は、図7に示すような中途半端な消去状態から、図6に示すような完全に消去された状態に復帰する。このように、ブロック1のデータ消去時に、前処理として上記のような区別データを管理ブロック5aに書き込んでおき、その後にデータ消去を行うようにする。そして、制御装置がリセットから復帰した後、使用中である旨のブロックステータス情報を保持しているブロックが2個あったことに基づいて、この区別用データを参照することで、データの最新値が保存されているブロック2を特定できるので、上記2個のブロックのうち、区別用データによればデータの最新値が保存されているブロックではない方のブロックのデータ消去を行う。これにより、リセット前に消去しようとしていたブロックの消去が完了するので、使用中である旨のブロックステータス情報を保持しているブロックが、データの最新値が保存されているブロック2の1個になり、どのブロックにデータの最新値が保存されているのかがわかるようになる。そして、当該データの値が必要になるときには、ブロック2からデータの最新値を読み出すことができる。ブロック1のデータ消去が完了した旨の通知をフラッシュコントローラ6から受けたCPU7は、続いてステップ250に進み、あらかじめ定められた所定のエリア本例ではエリア1とする内で使用中のブロック使用中の旨のブロックステータス情報を有するブロックに、管理ブロック消去中データが含まれているか否かを判定する。図6の例では、ブロック2に管理ブロック消去中データが含まれていないので、図8の処理を終了する。管理ブロック消去中データについては後述する。なお、ステップ240でブロックのデータ消去を行った場合は、図8の処理の終了後、消去を行ったブロック1に対し、ブロック2に記録されている各種データの最新値をブロック1にコピーし、さらに、コピー元のブロック2のブロックステータス情報を、使用済みである旨のブロックステータス情報に書き換え、また、コピー先のブロック1のブロックステータス領域に、使用中である旨のブロックステータス情報を書き込み込む。これにより、以後ブロック1に、エリア1用のデータの最新値が順次記録されていく。次に、図4のステップ110の処理の結果、管理ブロックが満杯状態になった場合について説明する。この場合は、ステップ130でいずれかのブロック管理ブロック以外の消去完了後に、図4のステップ140で、管理ブロックが満杯状態になったと判定し、ステップ150に進む。ステップ150では、管理ブロック消去の前処理として、図9に示すように、あらかじめ定められた所定のエリア本例ではエリア1とするのブロック1、2のうち、使用中のブロック使用中の旨のブロックステータス情報を有するブロックであるブロック2の空き領域に、管理ブロック消去中データを記録する。なお、管理ブロック消去中データは、当該管理ブロック消去中データが有効である旨の有効データを含む。続いてステップ160では、管理ブロックのデータ消去を実行する。具体的には、フラッシュコントローラ6に管理ブロックの消去命令を出力する。これにより、フラッシュコントローラ6は、管理ブロックのデータ消去を行い、データ消去が完了したら、その旨をCPU7に通知する。フラッシュコントローラ6からデータ消去完了の通知を受けた後、CPU7は、ステップ170に進んで、直前のステップ150で管理ブロックに書き込んだ管理ブロック消去中データを無効化する図10参照。具体的には、当該区別用データ中で、当該区別用データが有効である旨のデータを、無効である旨のデータに書き換えるこれも1→0タイプの書き換えである。ステップ170の後、図4の処理が終了する。ここで、図4のステップ160で管理ブロックのデータ消去を行っている途中に、マイクロコントローラ1がリセットした場合について説明する。マイクロコントローラ1がリセットした場合、図11に例示するように、管理ブロックのデータ消去が途中で中断してしまうので、管理ブロックの記憶領域は、完全に消去された状態ではなく、中途半端に消去された状態になっている。このような中途半端に消去された状態を解消するため、リセットから復帰後にCPU7実行する図8の処理では、ステップ250で、あらかじめ定められた所定のエリア1内で使用中のブロック2に、管理ブロック消去中データが含まれていると判定し、続いてステップ260に進む。ステップ260では、管理ブロックのデータ消去を実行する。具体的には、フラッシュコントローラ6に管理ブロックの消去命令を出力する。これにより、フラッシュコントローラ6は、管理ブロックのデータ消去を行い、データ消去が完了したら、その旨をCPU7に通知する。フラッシュコントローラ6からデータ消去完了の通知を受けた後、CPU7は、ステップ270に進んで、上記管理ブロック消去中データを、図4のステップ170と同じ方法で無効化する。これにより、管理ブロックのデータ構成は、図10の状態に復帰する。ステップ270の後、図8の処理は終了する。このように、区別用データが記録された後、管理ブロックにこれ以上区別用データを書き込む空き領域がない場合、所定のエリアの使用中のブロック2に、所定の管理ブロック消去中データを書き込み、その後に、管理ブロックのデータ消去を行い、その後、管理ブロック消去中データを無効化する。そして、マイクロコントローラ1がリセットから復帰した後、上記ブロック2に管理ブロック消去中データが記録されていることに基づいて、管理ブロックのデータ消去を行い、その後、管理ブロック消去中データを無効化する。このようにすることで、管理ブロックのデータ消去時にリセットが発生した場合も、リセットから復帰した後にデータ消去できるようになる。なお、上記実施形態においては、マイクロコントローラ1のCPU7が、ステップ110を実行することで消去前処理手段の一例として機能し、ステップ120を実行することで消去手段の一例として機能し、ステップ230を実行することで参照手段の一例として機能し、ステップ240を実行することで消去手段の一例として機能し、ステップ150を実行することで管理ブロック消去前処理手段の一例として機能し、ステップ160、260を実行することで管理ブロック消去手段の一例として機能し、ステップ170、270を実行することで管理ブロック消去中データ無効化手段の一例として機能する。他の実施形態以上、本発明の実施形態について説明したが、本発明の範囲は、上記実施形態のみに限定されるものではなく、本発明の各発明特定事項の機能を実現し得る種々の形態を包含するものである。例えば、以下のような形態も許容される。1上記実施形態においては、フラッシュメモリ5中のブロックは複数のエリアのいずれかに振り分けられているが、フラッシュメモリ5は、必ずしもこのように複数のエリアにエリア分けされていなくてもよい。2また、上記実施形態では、区別用データを記録する記憶媒体として、フラッシュメモリ5の管理ブロックを採用しているが、区別用データを記録する記憶媒体は、EEPROMでもよいし、他のフラッシュメモリ5以外のフラッシュメモリでもよい。つまり、区別用データを記録する記憶媒体は、不揮発性の記憶媒体なら、どのようなものであってもよい。なお、EEPROMを採用する場合、区別用データを無効にするためには、単純に当該区別用データを消去してもよい。3上記実施形態では、ステップ110で管理ブロックに書き込む区別用データは、エリア1内でデータの最新値が保存されたブロック2のブロックIDを含むようになっており、CPU7は、リセットから復帰時に、エリア1内で使用中の旨のブロックステータス情報を有する2つのブロック1、2のうち、当該区別用データ内の当該ブロックIDのブロック2ではない方のブロック1の消去を行うようになっている。しかし、このようなものに限らず、本発明においては、ブロックステータス情報を有する2つのブロック1、2のうち、どちらが消去中でどちらがデータの最新値が保存されているかがわかればよい。したがって、ステップ110で管理ブロックに書き込む区別用データは、エリア1内で消去対象のブロック1のブロックIDを含むようになっており、CPU7は、リセットから復帰時に、エリア1内で使用中の旨のブロックステータス情報を有する2つのブロック1、2のうち、当該区別用データ内の当該ブロックIDのブロック1の消去を行うようになっていても、結果は同じことになる。4上記実施形態では、CPU7およびフラッシュコントローラ6がブロック1のデータ消去を行うのは、ブロック2が満杯状態になった場合であったが、ブロック1のデータ消去のタイミングは、必ずしもこのようなものに限られない。例えば、アプリケーションがブロック1の消去要求を出力したことに基づいて、CPU7およびフラッシュコントローラ6がブロック1のデータ消去を行うようになっていてもよい。そして、そのようなデータ消去の場合でも、図3に示した処理を行うが、図3、図8の処理が終了したときにデータコピーは行わない。5また、上記の実施形態において、CPU7がプログラムを実行することで実現している各機能は、それらの機能を有するハードウェア例えば回路構成をプログラムすることが可能なFPGAを用いて実現するようになっていてもよい。