(57)【要約】【課題】デバイスドライバのバージョンアップに簡単に対応することができるデータ処理装置を提供する。【解決手段】ＣＰＵは、データ格納用のＲＯＭに格納されているデータを読み込む場合、デバイスドライバから提供されるページ構成情報と、データ格納用のＲＯＭに格納されているページ構成情報とを比較する（ステップＳ１０１，Ｓ１０２）。ＣＰＵは、これらページ構成情報が不一致であるとき（ステップＳ１０３でＹＥＳ）、データ格納用のＲＯＭのデータ構成をデバイスドライバから提供されるページ構成情報に従ったデータ構成に更新する（ステップＳ１０４）。このとき、データ格納用のＲＯＭに格納されているページ構成情報は、デバイスドライバから提供されるページ構成情報に更新される。この後、ＣＰＵはデータ格納用のＲＯＭに格納されているデータを読み込む（ステップＳ１０５）。【選択図】図３
2018160018.tif 000002
【特許請求の範囲】
【請求項１】
特定の読み書き単位でデータの読み書きが行われるとともに複数の前記読み書き単位を含むブロック単位でデータの消去が行われる第１の不揮発性メモリと、
前記第１の不揮発性メモリの読み書き動作を制御するためのプログラムであって前記第１の不揮発性メモリのデータ構成を規定するデータ構成情報を有するデバイスドライバが格納された第２の不揮発性メモリと、
前記デバイスドライバの実行を通じて提供される前記データ構成情報に従って前記第１の不揮発性メモリに対してデータを読み書きする制御回路と、を備え、
前記第１の不揮発性メモリの特定領域にも前記データ構成情報が格納されていて、
前記制御回路は、前記第１の不揮発性メモリに格納されているデータを読み出す場合、前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるとき、
前記第１の不揮発性メモリのデータ構成を前記デバイスドライバから提供されるデータ構成情報に従って更新するデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
前記特定領域は、複数のブロックのいずれか一に設定されていて、
前記制御回路は、前記第１の不揮発性メモリに格納されているデータを読み出すとき、はじめに、前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較するデータ処理装置。
【請求項３】
請求項１に記載のデータ処理装置において、
前記特定領域は、複数のブロックのそれぞれに設定されていて、
前記制御回路は、データの読み出し対象となるブロックに格納されているデータを読み出すとき、はじめに、前記データの読み出し対象となるブロックの前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較するデータ処理装置。
【請求項４】
請求項１〜請求項３のうちいずれか一項に記載のデータ処理装置において、
前記第１の不揮発性メモリは、ブロック単位でデータを先頭から順番に読み書きするシーケンシャルアクセス方式のフラッシュメモリであって、
前記特定領域は、ブロックの先頭領域に設定されているデータ処理装置。
【請求項５】
請求項１〜請求項４のうちいずれか一項に記載のデータ処理装置において、
前記制御回路は、前記第１の不揮発性メモリのデータ構成を更新する処理として、
前記第１の不揮発性メモリのデータを外部の記憶領域に待避させる処理と、
前記第１の不揮発性メモリのデータを一旦消去する処理と、
前記デバイスドライバから提供されるデータ構成情報を前記第１の不揮発性メモリの特定領域に格納する処理と、
前記外部の記憶領域に待避させてあるデータを前記デバイスドライバから提供されるデータ構成情報に従って前記第１の不揮発性メモリに格納する処理と、を実行するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関する。
【背景技術】
【０００２】
従来、不揮発性メモリの一種としてＮＡＮＤ型のフラッシュメモリが知られている（たとえば特許文献１参照）。
ＮＡＮＤ型のフラッシュメモリでは、データの読み書きは複数の記憶セルの集まりであるページ単位で行う一方、データの消去は複数のページを含むブロック単位で行う。また、当該フラッシュメモリでは、すでに存在するデータを新しいデータに置き換える、いわゆる上書き処理ができない。このため、データを書き換えるときには、当該データを含むブロック全体のデータをフラッシュメモリの外部に一時的に待避させたうえで、当該ブロック全体のデータをいったん消去する必要がある。この後、外部で書き換えられたデータを消去済みのブロックに改めて書き込む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１１−５０８３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
フラッシュメモリは、たとえばマイクロコンピュータの補助記憶装置の一つとして使用される。マイクロコンピュータのＣＰＵ（中央処理装置）は、デバイスドライバの実行を通じて、フラッシュメモリにアクセスする。デバイスドライバは、フラッシュメモリの動作を制御するためのソフトウェアであって、たとえばマイクロコンピュータの補助記憶装置の一つであるプログラム格納用の不揮発性メモリに格納されている。ＣＰＵは、プログラム格納用の不揮発性メモリからデバイスドライバを読み込み、この読み込まれるデバイスドライバを実行することにより、フラッシュメモリに対してデータの読み書きを行う。
【０００５】
デバイスドライバは、処理性能の向上などを目的として、バージョンアップ（更新）されることがある。これに伴い、デバイスドライバが有するページ構成情報も変更されることがある。ページ構成情報とは、フラッシュメモリにおけるページ数、各ページのサイズ、および各ページの先頭に設けられるページヘッダの記憶位置などのページの構成を示す情報をいう。ＣＰＵは、デバイスドライバから提供されるページ構成情報に従って、フラッシュメモリに対してデータの読み書きを行う。
【０００６】
ここで、デバイスドライバのバージョンアップに伴い、つぎのことが懸念される。すなわち、ＣＰＵがデバイスドライバから提供されるページ構成情報を通じて認識するフラッシュメモリのページ構成と、フラッシュメモリの実際のページ構成とが異なる状況が発生する。フラッシュメモリは、旧バージョンのデバイスドライバのページ構成情報に従ってデータが書き込まれた状態のままだからである。このため、ＣＰＵが新バージョンのデバイスドライバの実行を通じてフラッシュメモリからデータを読み出そうとするとき、ページ境界のデータの読み出しに失敗するおそれがある。たとえばＣＰＵが、ページヘッダとして認識する記憶位置に、ページヘッダではない通常のデータが記憶されている状況が考えられる。
【０００７】
フラッシュメモリに記憶された既存のデータをデバイスドライバのバージョンアップを行った後も引き続き使用するためには、デバイスドライバのバージョンアップをつぎの手順で行うことが考えられる。たとえば、まず旧バージョンのデバイスドライバを使用してフラッシュメモリに格納されているデータを読み出し、この読み出されるデータを専用の外部ツールに一時的に保持する。この状態でデバイスドライバのバージョンアップを行い、その後、外部ツールに保持しておいたデータを、新バージョンのデバイスドライバが有するページ構成情報に従って、フラッシュメモリに改めて書き込む。しかし、このような作業は面倒である。
【０００８】
本発明の目的は、デバイスドライバのバージョンアップに簡単に対応することができるデータ処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成し得るデータ処理装置は、特定の読み書き単位でデータの読み書きが行われるとともに複数の前記読み書き単位を含むブロック単位でデータの消去が行われる第１の不揮発性メモリと、前記第１の不揮発性メモリの読み書き動作を制御するためのプログラムであって前記第１の不揮発性メモリのデータ構成を規定するデータ構成情報を有するデバイスドライバが格納された第２の不揮発性メモリと、前記デバイスドライバの実行を通じて提供される前記データ構成情報に従って前記第１の不揮発性メモリに対してデータを読み書きする制御回路と、を備えている。そして、前記第１の不揮発性メモリの特定領域にも前記データ構成情報が格納されていることを前提として、前記制御回路は、前記第１の不揮発性メモリに格納されているデータを読み出す場合、前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるとき、前記第１の不揮発性メモリのデータ構成を前記デバイスドライバから提供されるデータ構成情報に従って更新する。
【００１０】
デバイスドライバのバージョンアップに伴い、デバイスドライバが有するデータ構成情報が変更されることがある。しかし、第１の不揮発性メモリのデータは、バージョンアップされる前のデバイスドライバから提供されるデータ構成情報に従って格納されている。このため、制御回路が新バージョンのデバイスドライバから提供されるデータ構成情報に基づき認識する第１の不揮発性メモリのデータ構成と、実際の第１の不揮発性メモリのデータ構成とが異なる状況が発生する。
【００１１】
この点、上記の構成によれば、制御回路は、第１の不揮発性メモリに格納されているデータを読み出す場合、第１の不揮発性メモリの特定領域に格納されているデータ構成情報と、デバイスドライバから提供されるデータ構成情報とが異なるとき、第１の不揮発性メモリのデータ構成が、新バージョンのデバイスドライバから提供されるページ構成情報に従って自動更新される。このため、第１の不揮発性メモリに格納されたデータを、デバイスドライバのバージョンアップを行った後も引き続き使用することができる。したがって、デバイスドライバのバージョンアップに簡単に対応することができる。
【００１２】
上記のデータ処理装置において、前記特定領域は、複数のブロックのいずれか一に設定されていてもよい。この場合、前記制御回路は、前記第１の不揮発性メモリに格納されているデータを読み出すとき、はじめに、前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較することが好ましい。
【００１３】
この構成によれば、制御回路は、第１の不揮発性メモリに格納されているデータを読み出す前に、前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるかどうかを判定することが可能となる。
【００１４】
上記のデータ処理装置において、前記第１の不揮発性メモリの特定領域は、複数のブロックのそれぞれに設定されていてもよい。この場合、前記制御回路は、データの読み出し対象となるブロックに格納されているデータを読み出すとき、はじめに、前記データの読み出し対象となるブロックの前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較することが好ましい。
【００１５】
この構成によれば、制御回路は、データの読み出し対象となるブロックに格納されているデータを読み出す前に、データの読み出し対象となるブロックの前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるかどうかを判定することが可能となる。
【００１６】
上記のデータ処理装置において、前記第１の不揮発性メモリは、ブロック単位でデータを先頭から順番に読み書きするシーケンシャルアクセス方式のフラッシュメモリであってもよい。この場合、前記特定領域は、ブロックの先頭領域に設定されていることが好ましい。
【００１７】
このタイプのフラッシュメモリにおいては、制御回路がバージョンアップされたデバイスドライバから提供されるデータ構成情報に基づき認識する第１の不揮発性メモリのデータ構成が、実際の第１の不揮発性メモリのデータ構成と異なる場合であれ、読み出し対象となるブロックの先頭領域に格納されているデータは読み出すことができる。このため、第１の不揮発性メモリの特定領域に格納されているデータ構成情報と、デバイスドライバから提供されるデータ構成情報とが異なるとき、第１の不揮発性メモリのデータ構成を更新する処理が、より確実に実行される。
【００１８】
上記のデータ処理装置において、前記制御回路は、前記第１の不揮発性メモリのデータ構成を更新する処理として、前記第１の不揮発性メモリのデータを外部の記憶領域に待避させる処理と、前記第１の不揮発性メモリのデータを一旦消去する処理と、前記デバイスドライバから提供されるデータ構成情報を前記第１の不揮発性メモリの特定領域に格納する処理と、前記外部の記憶領域に待避させてあるデータを前記デバイスドライバから提供されるデータ構成情報に従って前記第１の不揮発性メモリに格納する処理と、を実行することが好ましい。
【００１９】
この構成によれば、前記第１の不揮発性メモリのデータ構成を、前記デバイスドライバから提供されるデータ構成情報に従って適切に更新することができる。
【発明の効果】
【００２０】
本発明のデータ処理装置によれば、デバイスドライバのバージョンアップに簡単に対応することができる。
【図面の簡単な説明】
【００２１】
【図１】データ処理装置の一実施の形態であるマイクロコンピュータのブロック図。
【図２】（ａ）は、一実施の形態におけるデータ格納用のＲＯＭの構成図、（ｂ）は、一実施の形態におけるデータ格納用のＲＯＭにおけるブロックの構成図。
【図３】一実施の形態において、ＣＰＵにより実行されるデータの読み出し処理手順を示すフローチャート（メインルーチン）。
【図４】一実施の形態において、ＣＰＵにより実行されるデータ構成の更新処理手順を示すフローチャート（サブルーチン）。
【図５】一実施の形態におけるデータ格納用のＲＯＭにおける全データが消去された状態を示すブロックの構成図。
【図６】一実施の形態におけるデータ構成が更新された後のブロックの構成図。
【発明を実施するための形態】
【００２２】
＜第１の実施の形態＞
以下、データ処理装置をマイクロコンピュータに具体化した第１の実施の形態を説明する。このマイクロコンピュータは、たとえば特定の機能を実現するために様々な組み込み装置（制御対象）に組み込まれる。
【００２３】
＜マイクロコンピュータの構成＞
図１に示すように、マイクロコンピュータ１１は、ＣＰＵ（central processing unit）１２、プログラム格納用のＲＯＭ（read-only memory）１３、データ格納用のＲＯＭ１４、入力ポート１５、および出力ポート１６を有している。ＣＰＵ１２は、組み込み装置に要求される機能を実現するためのプログラムを実行する。プログラム格納用のＲＯＭ１３には、ＣＰＵ１２により実行されるプログラムが格納されている。データ格納用のＲＯＭ１４には、組み込み装置を制御するために必要とされるデータが格納されている。
【００２４】
プログラム格納用のＲＯＭ１３およびデータ格納用のＲＯＭ１４としては、不揮発性メモリの一種であるフラッシュメモリが採用される。フラッシュメモリには、主にＮＡＮＤ型およびＮＯＲ型の２種類が存在する。
【００２５】
ＮＡＮＤ型では、複数の記憶セル（データを記憶する最小単位）の集まりであるページ単位でデータの書き込みおよび読み出しが行われる。また、ＮＡＮＤ型では、複数のページを含むブロック単位でデータの消去が行われる。また、ＮＡＮＤ型では、すでに存在するデータを新しいデータに置き換える、いわゆる上書き処理ができない。このため、データを書き換えるときには、書き換え対象のデータを含むブロック全体のデータを外部に一時的に待避させたうえで当該ブロック全体のデータをいったん消去し、その後、外部で書き換えられたデータを元のブロックに改めて書き込む必要がある。ちなみに、ＮＡＮＤ型では、ブロック単位のシーケンシャルアクセスによるデータの読み書きが可能である。シーケンシャルアクセスとは、データに対するアクセス方式であって、データを先頭から順番に読み書きする方式をいう。
【００２６】
ＮＯＲ型では、１バイト単位でデータの読み書きが行われる。ブロック単位でデータが消去されること、および上書き処理ができないことについてはＮＡＮＤ型と同様である。ＮＯＲ型では、バイト単位のランダムアクセスによるデータの読み書きが可能である。ランダムアクセスとは、データに対するアクセス方式であって、データが記憶されている場所あるいは書き込みの順序に関係なく、必要とされるデータに直接アクセスして読み出すことをいう。ＮＯＲ型では、データの読み出しについては、デバイスドライバを必要としない。
【００２７】
なお、フラッシュメモリ（ＮＡＮＤ型およびＮＯＲ型）には、その動作原理上、書き換え回数に制限がある。このため、書き込み頻度が高いほど、フラッシュメモリはより早期に寿命を迎え、正常に読み書きすることができなくなる。そこで、フラッシュメモリの使用寿命を延ばすためにウェアレベリングが行われることがある。ウェアレベリングとは、データの消去単位であるブロックごとの書き換え回数（消去回数）を管理して、書き換え対象のブロックを選択するとき、各ブロックの書き換え回数が平均化するように、書き換え対象のブロックを選ぶ処理をいう。これにより、特定のブロックに書き換えが集中することが抑制される。
【００２８】
本例では、データ格納用のＲＯＭ１４としてはＮＡＮＤ型のフラッシュメモリが採用されている。また、プログラム格納用のＲＯＭ１３としてはＮＯＲ型のフラッシュメモリが採用されている。
【００２９】
プログラム格納用のＲＯＭ１３に格納されるプログラムには、デバイスドライバ２１が含まれている。デバイスドライバ２１は、データ格納用のＲＯＭ１４の動作（データの読み込み、書き込み、および消去）を制御するためのソフトウェアである。前述したウェアレベリング機能もデバイスドライバ２１の実行を通じて実現される。また、デバイスドライバ２１は、データ格納用のＲＯＭ１４を扱う仕様としてページ構成情報２２を有している。ページ構成情報２２は、データ格納用のＲＯＭ１４の記憶領域が分割されてなるページの構成に関する情報である。ページ構成情報２２には、各ブロックにおけるページ数、各ページのサイズ、および各ページの先頭に設けられるページヘッダ（ページの境界）の記憶位置などを示す情報が含まれている。
【００３０】
また、データ格納用のＲＯＭ１４にもページ構成情報２３が格納されている。データ格納用のＲＯＭ１４に格納されるページ構成情報２３は、基本的にはデバイスドライバ２１が有するページ構成情報２２と同じ内容を有している。
【００３１】
ＣＰＵ１２は、主記憶装置としてＲＡＭ（random access memory）２４を有している。ＲＡＭ２４は、データの書き込みおよび読み込み可能な揮発性のメモリである。ＣＰＵ１２は、プログラム格納用のＲＯＭ１３に格納されているプログラムを実行するとき、当該プログラムおよびデータ格納用のＲＯＭ１４に格納されているデータをＲＡＭ２４に読み込んで一時的に記憶する。これにより、ＣＰＵ１２はプログラムを実行可能となる。
【００３２】
ＣＰＵ１２は、デバイスドライバ２１の実行を通じて、データ格納用のＲＯＭ１４にアクセスする。ＣＰＵ１２はデバイスドライバ２１から提供されるページ構成情報２２に基づきデータ格納用のＲＯＭ１４のページ構成を把握し、この把握されるページ構成に従ってデータ格納用のＲＯＭ１４に対してデータの読み書きを行う。なお、ＣＰＵ１２は、入力ポート１５および出力ポート１６を介して、外部機器との間でデータの授受を行う。
【００３３】
＜データ格納用のＲＯＭの構成＞
つぎに、データ格納用のＲＯＭ１４の構成の一例を説明する。
図２（ａ）に示すように、データ格納用のＲＯＭ１４の記憶領域は、複数のブロックＢ（Ｂ０〜Ｂｎ）に区切られている。そして、１つのブロックＢはさらに複数のページＰ（Ｐ０〜Ｐｎ）に区切られている。
【００３４】
ここでは、図２（ｂ）に示すように、１つのブロックＢは、４つのページＰ０，Ｐ１，Ｐ２，Ｐ３に区切られているものとする。
複数のブロックＢのいずれか一のブロックＢ（たとえば先頭のブロックＢ０）には、ページ構成情報２３が格納されている。ページ構成情報２３は、ブロックＢ０における先頭ページであるページＰ０に格納されている。ページＰ０以外のページＰ１〜ページＰ３には、ＣＰＵ１２による演算などに使用される通常のデータが格納される。なお、先頭のブロックＢ０以外のブロックＢ１〜Ｂｎには、ページ構成情報２３は格納されていない。たとえばブロックＢ１〜Ｂｎにおいては、すべてのページＰ（Ｐ０〜Ｐ３）に通常のデータが格納されてもよい。
【００３５】
各ページＰ１〜ページＰ３の先頭（ページの開始位置）には、ページヘッダＰＨが設けられている。ページヘッダＰＨには、たとえば各ページＰを含むブロックＢの消去回数（書き換え回数）が格納される。この消去回数は、データ格納用のＲＯＭ１４の動作保証期限を管理するために、あるいは前述したウェアレベリングを行うために使用される。なお、先頭のページＰ０については、ページヘッダＰＨを設けてもよいし設けなくてもよい。図２（ｂ）の例では、先頭のページＰ０には、ページヘッダＰＨが設けられていない。
【００３６】
各ブロックＢにおける各ページＰのサイズは、データの書き込み頻度に応じて設定されることがある。たとえば、書き込み頻度がより高いデータが書き込まれるページＰほど、そのサイズはより大きく設定される。これは、新しいデータを追記できる空き領域をより増やす観点に基づく。空き領域が増大するほど、より多くの新しいデータを同じページに追記することができる。これにより、当該ページＰを含むブロックＢを消去する回数、ひいては同じ記憶セルに対する書き込み回数をより減らすことが可能である。書き込み頻度がより低いデータが書き込まれるページＰほど、そのサイズはより小さく設定される。
【００３７】
たとえば図２（ｂ）に示されるブロックＢ０において、４つのページＰのサイズの大小関係は次式（Ａ）で示される通りである。
ページＰ０＜ページＰ３＜ページＰ１＜ページＰ２  …（Ａ）
＜データの読み出し処理手順＞
つぎに、ＣＰＵ１２により実行されるデータ処理の一例として、データ格納用のＲＯＭ１４に格納されているデータの読み出し処理の手順を説明する。
【００３８】
図３のフローチャートに示すように、ＣＰＵ１２は、データ格納用のＲＯＭ１４に格納されているデータの読み出しを開始するとき、まずデータ格納用のＲＯＭ１４に格納されているページ構成情報２３を読み込む（ステップＳ１０１）。
【００３９】
具体的には、ＣＰＵ１２は、読み込もうとするデータがどのブロックＢに格納されている場合であれ、最初にブロックＢ０に格納されているページ構成情報２３を読み込む。ここで、ページ構成情報２３は、ブロックＢ０の先頭ページであるページＰ０に格納されている。また、ＮＡＮＤ型のフラッシュメモリであるデータ格納用のＲＯＭ１４では、ブロック単位で先頭から順番にデータが読み込まれる。このため、ブロックＢ０に格納されているデータの中でも、先頭ページに格納されているページ構成情報２３が真っ先にＣＰＵ１２に読み込まれる。
【００４０】
つぎに、ＣＰＵ１２は、デバイスドライバ２１から提供されるページ構成情報２２と、ステップＳ１０１で読み込んだデータ格納用のＲＯＭ１４に格納されているページ構成情報２３とを比較する（ステップＳ１０２）。ＣＰＵ１２は、２つのページ構成情報２２，２３を比較することにより、これらページ構成情報２２，２３の差分を検出する。
【００４１】
つぎに、ＣＰＵ１２は、２つのページ構成情報２２，２３が異なるものであるかどうかを判定する（ステップＳ１０３）。
ＣＰＵ１２は、先のステップＳ１０２において差分が検出されないとき、２つのページ構成情報２２，２３は異なるものではない旨判定する。また、ＣＰＵ１２は、先のステップＳ１０２において差分が検出されるとき、２つのページ構成情報２２，２３が異なるものである旨判定する。
【００４２】
ＣＰＵ１２は、２つのページ構成情報２２，２３が異なるものである旨判定されるとき（ステップＳ１０３でＹＥＳ）、データ格納用のＲＯＭ１４のデータ構成を、デバイスドライバ２１が有するページ構成情報２２に従ったデータ構成に更新する（ステップＳ１０４）。
【００４３】
２つのページ構成情報２２，２３の内容が一致しない状況としては、デバイスドライバ２１のバージョンアップに伴いページ構成情報２２が変更されたことが考えられる。これに対し、データ格納用のＲＯＭ１４に格納されているページ構成情報２３は変更されていない。このため、デバイスドライバ２１が有するページ構成情報２２とデータ格納用のＲＯＭ１４に格納されているページ構成情報２３とが互いに異なる状況が発生する。前述したように、ＣＰＵ１２は、デバイスドライバ２１から提供されるページ構成情報２２に従ってデータ格納用のＲＯＭ１４に格納されているデータを読み込む。このため、データ格納用のＲＯＭ１４のデータ構成を、バージョンアップされたデバイスドライバ２１から提供される新しいページ構成情報２２に従って更新することにより、ＣＰＵ１２はデータ格納用のＲＯＭ１４に格納されているデータを読み出すことが可能となる。
【００４４】
データ格納用のＲＯＭ１４におけるデータ構成の更新処理が完了した後、ＣＰＵ１２は、デバイスドライバ２１から提供されるページ構成情報２２に従って、データ格納用のＲＯＭ１４に格納されているデータを読み込む（ステップＳ１０５）。
【００４５】
なお、ＣＰＵ１２は、先のステップＳ１０３において、２つのページ構成情報２２，２３が異なるものではない旨判定されるとき（ステップＳ１０３でＮＯ）、デバイスドライバ２１から提供されるページ構成情報２２に従って、データ格納用のＲＯＭ１４に格納されているデータを読み込む（ステップＳ１０５）。
【００４６】
＜データ構成の更新処理手順＞
つぎに、データ格納用のＲＯＭ１４におけるデータ構成の更新処理について詳細に説明する。この更新処理は、先の図３のフローチャートにおけるステップＳ１０４に処理が移行した際に実行される。ここでは、デバイスドライバ２１のバージョンアップに伴い２つのページ構成情報２２，２３が異なる状況が発生している。
【００４７】
さて、図４のフローチャートに示すように、ＣＰＵ１２は、データ格納用のＲＯＭ１４におけるデータ構成を更新するに際して、まずデータ格納用のＲＯＭ１４に格納されているページ構成情報２３を読み込み、この読み込まれるページ構成情報２３に従ってデータ格納用のＲＯＭ１４に格納されているすべてのデータを読み出す（ステップＳ２０１）。
【００４８】
ここで、ＣＰＵ１２は、データ格納用のＲＯＭ１４におけるデータ構成の更新処理を実行開始した当初、バージョンアップされたデバイスドライバ２１から提供されるページ構成情報２２に従って、データ格納用のＲＯＭ１４に格納されているデータを読み込み始める。この段階において、データ格納用のＲＯＭ１４における各ブロックＢのデータ構成（ページ構成）は、バージョンアップされたデバイスドライバ２１から提供されるページ構成情報２２に従ったデータ構成となっていない。
【００４９】
しかし、データ格納用のＲＯＭ１４のページ構成情報２３は、ブロックＢ０の先頭ページであるページＰ０に格納されている。また、ＮＡＮＤ型のフラッシュメモリであるデータ格納用のＲＯＭ１４では、ブロック単位で先頭から順番にデータが読み込まれる。このため、ＣＰＵ１２は、バージョンアップされたデバイスドライバ２１から提供されるページ構成情報２２に従ってブロックＢ０のデータを読み込む場合、少なくとも先頭ページであるページＰ０に格納されているデータ（ここでは、ページ構成情報２３）については読み込むことができる。したがって、ＣＰＵ１２は、この読み込まれるページ構成情報２３に従って、データ格納用のＲＯＭ１４の各ブロックＢに格納されているすべてのデータを読み出すことができる。
【００５０】
つぎに、ＣＰＵ１２は、ステップＳ２０１で読み出されるすべてのデータをＲＡＭ２４に一時的に待避させる（ステップＳ２０２）。
つぎに、ＣＰＵ１２は、データ格納用のＲＯＭ１４に格納されているすべてのデータを消去する（ステップＳ２０３）。
【００５１】
すなわち、図５に示されるように、データ格納用のＲＯＭ１４のすべてのブロックＢは、何もデータが格納されていない状態となる。先頭のブロックＢ０においては、通常のデータだけでなく、ページ構成情報２３も消去される。
【００５２】
つぎに、ＣＰＵ１２は、バージョンアップされたデバイスドライバ２１から提供される新しいページ構成情報２２を、データ格納用のＲＯＭ１４に書き込むべき新しいページ構成情報２３として、データ格納用のＲＯＭ１４の特定の領域に書き込む（ステップＳ２０４）。
【００５３】
ここで、特定の領域とは、ページ構成情報２３を書き込むために割り当てられるブロックＢにおける特定のページＰをいう。ここでは、デバイスドライバ２１がバージョンアップされる前と同様に、ブロックＢ０の先頭ページであるページＰ０が特定の領域として割り当てられる。
【００５４】
最後に、ＣＰＵ１２は、デバイスドライバ２１から提供される新しいページ構成情報２２に従って、ＲＡＭ２４に待避させてあるすべてのデータを、データ格納用のＲＯＭ１４に書き込む（ステップＳ２０５）。
【００５５】
図６に示されるように、データ格納用のＲＯＭ１４の各ブロックＢにおいて、新しいページ構成情報２３に基づくページ構成は、図２に示される旧ページ構成に対して、ページ数は４つで同じであるものの、２つのページＰ１，Ｐ３のサイズが変更されている。旧ページ構成に比べて、ページＰ１のサイズはより小さく、ページＰ３のサイズはより大きく設定されている。残る２つのページＰ０，ページＰ２のサイズは変更されていない。４つのページＰのサイズの大小関係は次式（Ｂ）で示される通りである。
【００５６】
ページＰ０＜ページＰ１＜ページＰ３＜ページＰ２  …（Ｂ）
データ格納用のＲＯＭ１４の各ブロックＢに対して、図６に示される新しいページ構成に沿って系統立ててデータが格納されることにより、各ブロックＢには新たなデータ構成が構築される。
【００５７】
この後、ＣＰＵ１２は、先の図３のフローチャートで示されるメインルーチンにおけるステップＳ１０５へ処理を移行する。
この段階では、ＣＰＵ１２がバージョンアップされたデバイスドライバ２１から提供される新しいページ構成情報２２を通じて認識するデータ格納用のＲＯＭ１４のページ構成と、実際のデータ格納用のＲＯＭ１４のページ構成とが一致している。また、データ格納用のＲＯＭ１４における各ブロックＢのデータは、新しいページ構成情報２２に基づくページ構成に沿って格納されている。このため、ＣＰＵ１２はデータ格納用のＲＯＭ１４に格納されているすべてのデータを読み込むことができる。
【００５８】
＜実施の形態の効果＞
したがって、本実施の形態によれば、以下の効果を得ることができる。
（１）ＣＰＵ１２は、データ格納用のＲＯＭ１４に格納されているデータの読み込みを開始する場合、デバイスドライバ２１から提供されるページ構成情報２２と、データ格納用のＲＯＭ１４に格納されているページ構成情報２３とを比較する。ＣＰＵ１２は、これらページ構成情報２２，２３が不一致であるとき、データ格納用のＲＯＭ１４のデータ構成をデバイスドライバ２１が有するページ構成情報２２に従ったデータ構成に自動更新する。
【００５９】
このため、デバイスドライバ２１のバージョンアップに伴いデバイスドライバ２１が有するページ構成情報２２が変更された場合であれ、ＣＰＵ１２は、デバイスドライバ２１のバージョンアップが行われる前と同じように、データ格納用のＲＯＭ１４に対してデータを読み書きすることができる。また、データ格納用のＲＯＭ１４におけるデータ構成を変更するために、専用の書き込みツールをマイクロコンピュータ１１に接続したり、当該書き込みツールを操作したりする手間がない。このため、データ格納用のＲＯＭ１４に格納されているデータの保全を気にすることなく、デバイスドライバ２１のバージョンアップを実施することができる。したがって、デバイスドライバ２１のバージョンアップに簡単に対応することができる。
【００６０】
＜第２の実施の形態＞
つぎに、データ処理装置の第２の実施の形態を説明する。
第１の実施の形態では、データ格納用のＲＯＭ１４の複数のブロックＢのいずれか一のブロックＢ（たとえば先頭のブロックＢ０）にページ構成情報２３を格納したが、各ブロックＢにページ構成情報２３を格納してもよい。ただし、この場合であれ、ページ構成情報２３は、各ブロックＢにおける先頭ページであるページＰ０に格納する。
【００６１】
この構成を採用する場合、つぎの利点がある。
すなわち、第１の実施の形態のようにページ構成情報２３を一のブロックＢにのみ格納する場合、その時々のデータの読み出し対象となるブロックＢが、ページ構成情報２３が格納された特定のブロックＢと異なるとき、読み出し対象のブロックＢにアクセスする前に、ページ構成情報２３が格納された特定のブロックＢにアクセスする必要がある。この点、ページ構成情報２３を各ブロックＢに格納しておくことにより、ＣＰＵ１２はその時々のデータの読み出し対象となるブロックＢにそのままアクセスすればよい。このため、データをより迅速に読み出すことが可能となる。
【００６２】
また、この構成を採用する場合、データ格納用のＲＯＭ１４におけるデータ構成の更新処理としては、２つの更新処理パターンが考えられる。第１の更新処理パターンおよび第２の更新処理パターンのいずれの更新処理パターンを採用する場合であれ、ページ構成情報２２の変更を伴うデバイスドライバ２１のバージョンアップに対して、データ格納用のＲＯＭ１４を簡単に対応させることができる。
【００６３】
＜第１の更新処理パターン＞
第１の更新処理パターンは、つぎの通りである。すなわち、ＣＰＵ１２は、今回の読み出し対象である特定のブロックＢのページ構成情報２３と、デバイスドライバ２１から提供されるページ構成情報２２とが異なるとき（図３：ステップＳ１０３でＮＯ）、当該特定のブロックＢを含むすべてのブロックＢのデータ構成を、デバイスドライバ２１から提供されるページ構成情報２２に従って更新する（図３：ステップＳ１０４）。
【００６４】
この第１の更新処理パターンによれば、データ格納用のＲＯＭ１４のデータ構成の更新は１度で完了する。
＜第２の更新処理パターン＞
第２の更新処理パターンはつぎの通りである。すなわち、ＣＰＵ１２は、今回の読み出し対象である特定のブロックＢに格納されているページ構成情報２３と、デバイスドライバ２１から提供されるページ構成情報２２とが異なるとき（図３のステップＳ１０３でＮＯ）、今回の読み出し対象である特定のブロックＢのデータ構成のみを、デバイスドライバ２１から提供されるページ構成情報２２に従ったデータ構成に更新する（図３のステップＳ１０４）。ＣＰＵ１２は、データの読み出し対象となるブロックＢが変わるたびに、同様の更新処理を実行する。
【００６５】
この第２の更新処理パターンによれば、データの読み出しが行われるたびにブロックＢ毎にデータ構成の更新が繰り返され、やがてすべてのブロックＢが更新される。
＜他の実施の形態＞
なお、第１および第２の実施の形態は、つぎのように変更して実施してもよい。
【００６６】
・プログラム格納用のＲＯＭ１３としては、ＮＯＲ型のフラッシュメモリに代えて、たとえばＥＥＰＲＯＭ（electrically erasable and programmable read-only memory）を採用してもよい。このＥＥＰＲＯＭも不揮発性メモリの一種であって、電気的にデータを書き換えることができる。また、プログラム格納用のＲＯＭ１３として、ＮＡＮＤ型のフラッシュメモリを採用してもよい。
【符号の説明】
【００６７】
１１…マイクロコンピュータ（データ処理装置）、１２…ＣＰＵ（制御回路）、１３…プログラム格納用のＲＯＭ（第２の不揮発性メモリ）、１４…データ格納用のＲＯＭ（第１の不揮発性メモリ）、２１…デバイスドライバ、２２，２３…ページ構成情報（データ構成情報）、２４…ＲＡＭ（外部記憶領域）、Ｂ…ブロック、Ｐ…ページ（特定の読み書き単位）、Ｐ０…ページ（特定領域、先頭領域）。
【図１】
2018160018.tif 000003
【図２】
2018160018.tif 000004
【図３】
2018160018.tif 000005
【図４】
2018160018.tif 000006
【図５】
2018160018.tif 000007
【図６】
2018160018.tif 000008