(57)【要約】【課題】  １回のダウンロード作業にて、ブートセクタを含むフラッシュメモリの各セクタに格納されたデータの書換えを実現可能とする。【解決手段】  フラッシュメモリ１０１は、起動ブートデータを格納する起動ブートセクタ２０１と、ブートデータを格納する少なくとも２のブートセクタ（２０２、２０３）と、メインデータを格納するメインセクタとを有して構成される。ブートデータ判定部３０１は、ブートセクタのそれぞれに格納されたブートデータの中からブートデータ更新判定データに基づいて起動ブートデータにより実行すべきブートデータを選択する。書換え部（３０２、３０３）は、ブートデータ判定部３０１によって選択されたブートデータの機能によって、当該選択されたブートデータが格納されたブートセクタを除くブートセクタ、起動ブートセクタ及びメインセクタに格納されたデータを受信した更新データに基づいて書換える。【選択図】  図２
2008117404.tif 000002
【特許請求の範囲】
【請求項１】
複数のセクタからなりセクタ単位でデータ消去可能なフラッシュメモリであって、起動ブートデータを格納する起動ブートセクタと、前記起動ブートデータによって選択的に起動されるブートデータを格納する少なくとも２のブートセクタと、前記起動ブートデータ又は前記ブートデータによって起動されるメインデータを格納するメインセクタとを有するフラッシュメモリのメモリ書き換え制御システムであって、
前記ブートセクタのそれぞれに格納された前記ブートデータの中から、前記ブートセクタのそれぞれに格納されたブートデータ更新判定データに基づいて、前記起動ブートデータにより起動すべきブートデータを選択するブートデータ判定部と、
前記ブートデータ判定部によって選択された前記ブートデータが格納されたブートセクタを除く前記ブートセクタ、前記起動ブートセクタ及び前記メインセクタに格納されたデータを書き換える書き換え部と、
を備えることを特徴とするメモリ書き換え制御システム。
【請求項２】
前記書き換え部は、
前記フラッシュメモリに格納されたデータを書き換えるための更新データを受信する更新データ受信部と、
前記更新データ受信部によって受信された前記更新データに基づいて、前記起動ブートセクタ、前記ブートセクタ及び前記メインセクタの中から更新データを格納すべきセクタを選択するセクタ判定部と、
前記セクタ判定部によって選択された前記セクタに、前記更新データ受信部によって受信された前記更新データを書き込む更新データ書き込み部と、
前記セクタ判定部によって選択された前記セクタが前記ブートセクタである場合に、前記ブートデータ更新判定データを算出し更新する更新判定データ算出部と、
を備えたことを特徴とする請求項１に記載のメモリ書き換え制御システム。
【請求項３】
前記ブートデータ更新判定データは、前記ブートセクタの前記ブートデータを書き換えた回数を通算したブート更新回数と、前記ブートデータの正当性を検証する前記ブートデータのチェックサムとを備えて構成され、
前記更新判定データ算出部は、前記ブート更新回数と前記チェックサムとを算出し更新することを特徴とする請求項２に記載のメモリ書き換え制御システム。
【請求項４】
前記書き換え部は、前記更新データ受信部によって受信された更新データが、前記フラッシュメモリの所定のアドレスに所定のデータ長を有する特定データを書き込む旨の所定の更新データであるか否かを判定し、前記更新データが前記所定の更新データである場合にのみ、前記起動ブートセクタを書き換え可能状態にすることを特徴とする請求項１から３のいずれか１項に記載のメモリ書き換え制御システム。
【請求項５】
複数のセクタからなりセクタ単位でデータ消去可能なフラッシュメモリであって、起動ブートデータを格納する起動ブートセクタと、前記起動ブートデータによって選択的に起動されるブートデータを格納する少なくとも２のブートセクタと、前記起動ブートデータ又は前記ブートデータによって起動されるメインデータを格納するメインセクタとを有するフラッシュメモリのメモリ書き換え制御方法であって、
前記ブートセクタのそれぞれに格納された前記ブートデータの中から、前記ブートセクタのそれぞれに格納されたブートデータ更新判定データに基づいて、前記起動ブートデータにより起動すべきブートデータを選択するブートデータ判定工程と、
前記ブートデータ判定工程によって選択された前記ブートデータが格納されたブートセクタを除く前記ブートセクタ、前記起動ブートセクタ及び前記メインセクタに格納されたデータを書き換える書き換え工程と、
を備えることを特徴とするメモリ書き換え制御方法。
【請求項６】
前記書き換え工程は、
前記フラッシュメモリに格納されたデータを書き換えるための更新データを受信する更新データ受信工程と、
前記更新データ受信工程によって受信された前記更新データに基づいて、前記起動ブートセクタ、前記ブートセクタ及び前記メインセクタの中から更新データを格納すべきセクタを選択するセクタ判定工程と、
前記セクタ判定工程によって選択された前記セクタに、前記更新データ受信工程によって受信された前記更新データを書き込む更新データ書き込み工程と、
前記セクタ判定工程によって選択された前記セクタが前記ブートセクタである場合に、前記ブートデータ更新判定データを算出し更新する更新判定データ算出工程と、
を備えたことを特徴とする請求項５に記載のメモリ書き換え制御方法。
【請求項７】
前記ブートデータ更新判定データは、前記ブートセクタの前記ブートデータを書き換えた回数を通算したブート更新回数と、前記ブートデータの正当性を検証する前記ブートデータのチェックサムとを備えて構成され、
前記更新判定データ算出工程は、前記ブート更新回数と前記チェックサムとを算出し更新することを特徴とする請求項６に記載のメモリ書き換え制御方法。
【請求項８】
前記書き換え工程は、前記更新データ受信工程によって受信された更新データが、前記フラッシュメモリの所定のアドレスに所定のデータ長を有する特定データを書き込む旨の所定の更新データであるか否かを判定し、前記更新データが前記所定の更新データである場合にのみ、前記起動ブートセクタを書き換え可能状態にすることを特徴とする請求項５から７のいずれか１項に記載のメモリ書き換え制御方法。
【請求項９】
請求項５から８のいずれか１項に記載のメモリ書き換え制御方法の各工程を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタ、スキャナ等の装置におけるファームウェアのブートプログラムとメインプログラムが格納されているフラッシュメモリを書き換えるフラッシュメモリの書き換え制御システム、メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラムに関する。
【背景技術】
【０００２】
プリンタ、スキャナ等の装置においては、ファームウェアのブートプログラムとメインプログラムとが分離されて、フラッシュメモリに格納されている。例えば、プリンタの場合、プリンタの通常モード（ここでは、印字動作を行うモードをいう）を制御するプログラムであるメインプログラム及びフォントデータがメインセクタに格納されている。また、プリンタの起動処理を実行するプログラムと、プリンタのメモリ書き換えモード（ここでは、フラッシュメモリに格納されたプログラム等のデータの書き換えを行うモードをいう）を制御して、メインセクタに格納されているメインプログラム及びフォントデータ等の書き換え処理を実行するプログラムとがブートセクタに格納されている。ここで、セクタは、フラッシュメモリにおいて一括して消去可能な領域である。
【０００３】
ブートセクタに格納されているデータ（ブートデータ）を書き換える場合、ブートデータは、自プログラムが格納されているセクタを書き換えることをソフト的に禁止していることから、３回のダウンロード処理が必要であった。
【０００４】
図１０は、従来の書き換え処理によるデータ遷移を説明する図である。フラッシュメモリの書き換え処理において、ブートセクタ以外のフラッシュメモリのセクタの書き換え処理はブートセクタに格納されているブートデータによって実行され、ブートセクタの書き換え処理は、新たにダウンロードしたブートリライトデータによって実行される。
【０００５】
ブートデータにより、１回目のダウンロード処理にてブートリライトデータを取得し、メインセクタのデータを消去し、メインセクタに取得したブートリライトデータを書き込む（図１０の(1)）。
【０００６】
次に、ブートリライトデータにより、２回目のダウンロード処理にて新ブートデータを取得し、ブートセクタのデータを消去し、ブートセクタに取得した新ブートデータを書き込む（図１０の(2)）。
【０００７】
新ブートデータにより、３回目のダウンロード処理にて新メインデータを取得し、メインセクタのブートリライトデータを消去し、メインセクタに取得した新メインデータを書き込む（図１０の(3)）。
【特許文献１】特願平１１−２６５２８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述したように、フラッシュメモリのブートセクタに格納されているデータの書き換え作業は、３回のダウンロード作業を実行しなければ完了しないことから、作業手順が煩雑であり、作業エラーが発生しやすいという問題点があった。また、書き換え作業にかかる時間も長時間となってしまうという問題点もあった。
【０００９】
そこで、本発明は、以上のような問題点を解決するためになされたもので、装置を起動させる最低限の機能を実行させるブートデータを第１のブートセクタに、第１のブートセクタに格納されている以外の起動時の処理機能等とフラッシュメモリを書き換える機能を実行させるブートデータを第２のブートセクタ及び第３のブートセクタに格納し、第１のブートセクタの機能により第２または第３のブートセクタの機能のどちらを実行させるかを判定し、判定された第２または第３のブートセクタの機能により、判定された自身のブートセクタ以外の第１のブートセクタを含むフラッシュメモリのセクタのデータを書き換えるメモリ書き換え制御システム、メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のメモリ書き換え制御システムは、複数のセクタからなりセクタ単位でデータ消去可能なフラッシュメモリであって、起動ブートデータを格納する起動ブートセクタと、起動ブートデータによって選択的に起動されるブートデータを格納する少なくとも２のブートセクタと、起動ブートデータ又はブートデータによって起動されるメインデータを格納するメインセクタとを有するフラッシュメモリのメモリ書き換え制御システムであって、ブートセクタのそれぞれに格納されたブートデータの中から、ブートセクタのそれぞれに格納されたブートデータ更新判定データに基づいて、起動ブートデータにより起動すべきブートデータを選択するブートデータ判定部と、ブートデータ判定部によって選択されたブートデータが格納されたブートセクタを除くブートセクタ、起動ブートセクタ及びメインセクタに格納されたデータを書き換える書き換え部と、を備えることを特徴とする。この構成によれば、１回のダウンロード作業にてフラッシュメモリの各セクタに格納されたデータの書き換えを実現可能とするばかりでなく、ブートセクタの書き換え処理異常による装置の起動不能状態を回避することができる。
【００１１】
また、書き換え部は、フラッシュメモリに格納されたデータを書き換えるための更新データを受信する更新データ受信部と、更新データ受信部によって受信された更新データに基づいて、起動ブートセクタ、ブートセクタ及びメインセクタの中から更新データを格納すべきセクタを選択するセクタ判定部と、セクタ判定部によって選択されたセクタに、更新データ受信部によって受信された更新データを書き込む更新データ書き込み部と、セクタ判定部によって選択されたセクタがブートセクタである場合に、ブートデータ更新判定データを算出し更新する更新判定データ算出部と、を備えることが好ましい。
【００１２】
また、ブートデータ更新判定データが、ブートセクタのブートデータを書き換えた回数を通算したブート更新回数と、ブートデータの正当性を検証するブートデータのチェックサムとを備えて構成ており、更新判定データ算出部は、ブート更新回数とチェックサムとを算出し更新することが好ましい。
【００１３】
これらの場合において、書き換え部は、更新データ受信部によって受信された更新データが、フラッシュメモリの所定のアドレスに所定のデータ長を有する特定データを書き込む旨の所定の更新データであるか否かを判定し、更新データが所定の更新データである場合にのみ、起動ブートセクタを書き換え可能状態にすることが好ましい。この構成によれば、装置が起動不能状態となる恐れのある起動ブートデータを保護することができると共に、起動ブートデータの書き換えが必要な場合には、所定のアドレスに特定データを書き込む旨のデータを更新データに含めて送信することにより、起動ブートセクタを書き換え可能状態とし、起動ブートデータの書き換えを容易に行うことができる。即ち、起動ブートデータを書き換える場合であっても、特別の書き換えプログラム等を用意する必要がなく、ブートデータやメインデータと同様の作業手順で書き換えることができる。
【００１４】
本発明のメモリ書き換え制御方法は、複数のセクタからなりセクタ単位でデータ消去可能なフラッシュメモリであって、起動ブートデータを格納する起動ブートセクタと、起動ブートデータによって選択的に起動されるブートデータを格納する少なくとも２のブートセクタと、起動ブートデータ又はブートデータによって起動されるメインデータを格納するメインセクタとを有するフラッシュメモリのメモリ書き換え制御方法であって、ブートセクタのそれぞれに格納されたブートデータの中から、ブートセクタのそれぞれに格納されたブートデータ更新判定データに基づいて、起動ブートデータにより起動すべきブートデータを選択するブートデータ判定工程と、ブートデータ判定工程によって選択されたブートデータが格納されたブートセクタを除くブートセクタ、起動ブートセクタ及びメインセクタに格納されたデータを書き換える書き換え工程と、を備えることを特徴とする。
【００１５】
また、書き換え工程は、フラッシュメモリに格納されたデータを書き換えるための更新データを受信する更新データ受信工程と、更新データ受信工程によって受信された更新データに基づいて、起動ブートセクタ、ブートセクタ及びメインセクタの中から更新データを格納すべきセクタを選択するセクタ判定工程と、セクタ判定工程によって選択されたセクタに、更新データ受信工程によって受信された更新データを書き込む更新データ書き込み工程と、セクタ判定工程によって選択されたセクタがブートセクタである場合に、ブートデータ更新判定データを算出し更新する更新判定データ算出工程と、を備えることが好ましい。
【００１６】
また、ブートデータ更新判定データが、ブートセクタのブートデータを書き換えた回数を通算したブート更新回数と、ブートデータの正当性を検証するブートデータのチェックサムとを備えて構成されており、更新判定データ算出工程は、ブート更新回数とチェックサムとを算出し更新することが好ましい。
【００１７】
これらの場合において、書き換え工程は、更新データ受信工程によって受信された更新データが、フラッシュメモリの所定のアドレスに所定のデータ長を有する特定データを書き込む旨の所定の更新データであるか否かを判定し、更新データが所定の更新データである場合にのみ、起動ブートセクタを書き換え可能状態にすることが好ましい。
【００１８】
本発明のプログラムは、上記のメモリ書き換え制御方法の各工程を実行させるためのものであることを特徴とする。
【発明の効果】
【００１９】
以上説明したように、本発明によれば、起動ブートセクタと、少なくとも２のブートセクタとをフラッシュメモリに設け、起動ブートセクタには、装置を起動させるための最低限の機能を実行させる起動ブートデータを格納し、少なくとも２のブートセクタのそれぞれには、自身のブートセクタを除くフラッシュメモリの起動ブートセクタを含む他のセクタを書き換える機能と起動ブートデータが有する以外の起動時の処理機能等を実行させるブートデータを格納することにより、ブートセクタの書き換え処理異常による装置の起動不能状態を回避することができる。
【００２０】
また、起動ブートデータの書き換えが必要な場合には、所定のアドレスに特定データを書き込む旨のデータを更新データに含めて送信することにより、起動ブートセクタを書き換え可能状態とし、起動ブートデータの書き換えを容易に行うことができる。即ち、起動ブートデータを書き換える場合であっても、特別の書き換えプログラム等を用意する必要がなく、Ｗブートデータやメインデータと同様の作業手順で書き換えることができる。
【００２１】
また、１回のダウンロード作業のみで起動ブートデータ、Ｗブートデータ及びメインデータを書き換えることができることから、作業手順が簡素化され、作業エラーの発生を削減することができる。更に、書き換え作業の時間を削減することができる。
【発明を実施するための最良の形態】
【００２２】
本発明の一実施態様を、図面を参照しながら説明する。なお、以下に説明する実施態様は説明のためのものであり、本発明の範囲を制限するものではない。従って、当業者であればこれらの各要素もしくは全要素をこれと均等なものによって置換した実施態様を採用することが可能であるが、これらの実施態様も本発明の範囲に含まれる。
【００２３】
図１は、フラッシュメモリ書き換え制御システムのハードウェアの構成を示す図である。メモリ書き換え制御システム１００は、一括して消去可能な最小単位の記憶領域であるセクタ毎に分割された書き換えが可能であるフラッシュメモリ１０１、読み書きが可能であるＲＡＭ１０２及びメモリ書き換え制御システム１００の制御を実行するＣＰＵ１０３を備えている。
【００２４】
フラッシュメモリ１０１は、装置の通常モードの制御を実行するメインプログラム、フォントデータ等を記憶し、更に、装置の起動処理を制御したり、フラッシュメモリ１０１に記憶されているデータを書き換えたりするブートプログラムを記憶している。以下、ブートプログラムが格納されるセクタを「ブートセクタ」、メインプログラム、フォントデータ等が格納されるセクタを「メインセクタ」という。また、ブートセクタに格納されているブートプログラムのデータを「ブートデータ」、メインセクタに格納されているメインプログラム、フォントデータ等のデータを「メインデータ」という。
【００２５】
図２は、本発明のフラッシュメモリにおけるブートセクタの構成の一例を示す図である。以下、３個のセクタによって構成されたブートセクタを例に挙げて説明する。フラッシュメモリ１０１におけるブートセクタは第１のブートセクタ２０１、第２のブートセクタ２０２及び第３のブートセクタ２０３の３個のセクタから構成される。
【００２６】
第１のブートセクタ２０１には、装置を起動するための最低限の機能を実行させるブートデータが格納されている。例えば、装置を起動させるための最低限の機能として、ＣＰＵ１０３の初期化、スタックの初期化等の各種初期化、ＲＡＭ１０２のチェック、ゲートアレイレジスタのチェック等の各種チェック、起動モードの判定等の各種判定等が挙げられる。以下、第１のブートセクタ２０１を「起動ブートセクタ」と呼ぶ。また、起動ブートセクタ２０１に格納されるブートデータを「起動ブートデータ」、起動ブートデータによって実行される処理を「起動ブート処理」と呼ぶ。
【００２７】
第２のブートセクタ２０２には、装置を起動させるための最低限の機能以外の起動時における各種機能及びフラッシュメモリ１０１に格納されたデータを書き換えるための機能を実行させるブートデータが格納されている。例えば、装置を起動させるための最低限の機能以外の起動時における機能として、通信インタフェースの種別判定、各通信インタフェースに対応した処理、各種ステータスコマンドに対応した処理等が挙げられる。起動ブート処理は、フラッシュメモリ１０１に格納されたデータを書き換えるための機能を実行させるブートデータによって、第２のブートセクタ（自身のセクタ）２０２以外のフラッシュメモリ１０１に格納されたブートデータ及びメインデータを書き換える処理を実行させる。以下、第２のブートセクタ２０２を「ＷブートセクタＡ」、ＷブートセクタＡ２０２に格納されるＷブートデータを「ＷブートデータＡ」、ＷブートデータＡによって実行されるＷブート処理を「Ｗブート処理Ａ」と呼ぶ。
【００２８】
第３のブートセクタ２０３には、装置を起動させるための最低限の機能以外の起動時における各種機能及びフラッシュメモリ１０１に格納されたデータを書き換えるための機能を実行させるＷブートデータＡとほぼ同様のブートデータが格納されている。起動ブート処理は、フラッシュメモリ１０１に格納されたデータを書き換えるための機能を実行させるブートデータによって、第３のブートセクタ（自身のセクタ）２０３以外のフラッシュメモリ１０１に格納されたブートデータ及びメインデータを書き換える処理を実行させる。以下、第３のブートセクタ２０３を「ＷブートセクタＢ」、ＷブートセクタＢ２０３に格納されるＷブートデータを「ＷブートデータＢ」、ＷブートデータＢによって実行されるＷブート処理を「Ｗブート処理Ｂ」と呼ぶ。
【００２９】
即ち、Ｗブートセクタの一方のＷブート処理により他方のＷブートセクタを書き換えることによって、正常に動作する少なくとも１個のＷブートセクタを保障することができる。
【００３０】
また、Ｗブートセクタには、Ｗブートデータが正しく記憶されているかどうかを検証するためのチェックサム、Ｗブートセクタのデータ更新回数であるＷブート更新回数及びＷブートセクタを指定するＷブートＩＤが格納されている。チェックサム及びＷブート更新回数は、ブートデータ更新判定データとして利用される。即ち、起動ブート処理は、チェックサム及びＷブート更新回数に基づいて、最新のＷブートデータが格納されているＷブートセクタを判定し、判定したＷブートセクタに格納されているＷブートデータによってＷブート処理を実行させる。
【００３１】
ところで、起動ブートセクタ２０１に格納されている起動ブートデータの書き換え作業には、書き換えエラーによって装置が起動不能状態になるという恐れがある。このため、通常は、起動ブートセクタを書き換え対象セクタとせずにＷブートセクタ及びメインセクタのみを書き換え対象セクタとすることにより、起動ブートデータを保護している（以下、通常書き換えモードと呼ぶ）。しかし、ファームウェアバグが発見された場合のバグ修正や、起動ブートデータのバージョンアップ等、起動ブートデータの書き換えが必要な場合がある。そのため、メモリ書き換え制御システム１００は、Ｗブートセクタ及びメインセクタに加えて、起動ブートセクタも書き換え対象セクタとするブート書き換えモードを有している。
【００３２】
メモリ書き換え制御システム１００は、ホスト装置から送信されるフラッシュメモリ１０１に格納されたデータを書き換えるための更新データの中に、フラッシュメモリ１０１の所定のアドレスに所定のデータ長を有する特定データを書き込む旨のデータを検出した場合にブート書き換えモードに移行する。所定のアドレス及び特定データは、予め任意に決定したものであればよく、本実施形態においては、特定データを、データ長が７バイトのキャラクタコード“ＲＥＷＲＩＴＥ”とし、所定のアドレスを、実行中のＷブートセクタがＷブートセクタＡ２０２の場合には０ｘＦ１ＦＦＥ０番地、実行中のＷブートセクタがＷブートセクタＢ２０３の場合には０ｘＦ０ＦＦＥ０番地としている。なお、上記２つのアドレスのそれぞれを、特定データを書き込む所定のアドレスとして１つの更新データ中に含めることができる。この場合には、実行中のＷブートセクタが何れであっても、ブート書き換えモードに移行させることが可能となる。
【００３３】
図３は、フラッシュメモリのメモリ書き換え制御システムの構成の一例を示すブロック図である。メモリ書き換え制御システム１００は、ブートデータ判定部３０１、第１の書き換え部３０２及び第２の書き換え部３０３を備えている。更に、第１の書き換え部３０２は、第１の更新データ受信部３２１、第１のセクタ判定部３２２、第１の更新データ書き込み部３２３及び第１の更新判定データ算出部３２４を備え、第２の書き換え部３０３は、第２の更新データ受信部３３１、第２のセクタ判定部３３２、第２の更新データ書き込み部３３３及び第２の更新判定データ算出部３３４を備えている。
【００３４】
ブートデータ判定部３０１は、図２の起動ブートセクタ２０１の起動ブート処理の機能であり、ＷブートセクタＡ２０２のＷブート処理ＡまたはＷブートセクタＢ２０３のＷブート処理Ｂのどちらの処理を実行させるかを、ブートデータ更新判定データであるＷブートセクタに格納されているチェックサムが正しいか否かを検証し、Ｗブート更新回数が最大のものであるかを検証することにより判定する。
【００３５】
第１の書き換え部３０２は、図２のＷブートセクタＡ２０２のＷブート処理Ａの機能であり、ＷブートセクタＡ２０２を除くフラッシュメモリ１０１を構成するセクタを書き換える。即ち、起動ブートセクタ２０１に格納された起動ブートデータ、ＷブートセクタＢ２０３に格納されたＷブートデータＢ、メインセクタに格納されたメインデータは、第１の書き換え部３０２によって書き換え可能である。
【００３６】
第１の更新データ受信部３２１は、所定の通信インタフェースを利用してホスト装置から更新データを受信する。更新データは、所定のフォーマットに従って、所定のサイズのデータを受信データ単位（レコード単位）として送受信される。第１のセクタ判定部３２２は、第１の更新データ受信部３２１によって受信した更新データを格納するフラッシュメモリ１０１のセクタがどこのセクタであるかを判定し、ＷブートセクタＡ２０２である場合は、更新データによる書き換えを実行しないようにする。また、受信した更新データを解析してブート書き換えモードに移行するか否かを判定し、そのモードに移行しない場合であって更新データを格納すべきセクタが起動ブートセクタ２０１である場合は、更新データによる書き換えを実行しないようにする。
【００３７】
第１の更新データ書き込み部３２３は、第１のセクタ判定部３２２の判定結果に基づいて、更新データをフラッシュメモリ１０１の指定されたセクタに書き込む。第１の更新判定データ算出部３２４は、書き換えられたフラッシュメモリ１０１のＷブートセクタＢ２０３のチェックサム及びメインセクタのチェックサムを算出し、ＷブートセクタＡ２０２のＷブート更新回数に基づいて、ＷブートセクタＢ２０３のＷブート更新回数を算出して、それぞれ更新する。
【００３８】
第２の書き換え部３０３は、図２のＷブートセクタＢ２０３のＷブート処理Ｂの機能であり、ＷブートセクタＢ２０３を除くフラッシュメモリ１０１を構成するセクタを書き換える。即ち、起動ブートセクタ２０１に格納された起動ブートデータ、ＷブートセクタＡ２０２に格納されたＷブートデータＡ、メインセクタに格納されたメインデータは、第２の書き換え部３０３によって書き換え可能である。
【００３９】
第２の更新データ受信部３３１は、所定の通信インタフェースを利用してホスト装置からの更新データをレコード単位で受信する。第２のセクタ判定部３３２は、第２の更新データ受信部３３１によって受信した更新データを格納するフラッシュメモリ１０１のセクタがどこのセクタであるかを判定し、ＷブートセクタＢ２０３である場合は、更新データによる書き換えを実行しないようにする。また、受信した更新データを解析して、ブート書き換えモードに移行するか否かを判定し、そのモードに移行しない場合であって更新データを格納すべきセクタが起動ブートセクタ２０１である場合は、更新データによる書き換えを実行しないようにする。
【００４０】
第２の更新データ書き込み部３３３は、第２のセクタ判定部３３２の判定結果に基づいて、更新データをフラッシュメモリ１０１の指定されたセクタに書き込む。第２の更新判定データ算出部３３４は、書き換えられたフラッシュメモリ１０１のＷブートセクタＡ２０２のチェックサム及びメインセクタのチェックサムを算出し、ＷブートセクタＢ２０３のＷブート更新回数に基づいて、ＷブートセクタＡ２０２のＷブート更新回数を算出して、それぞれ更新する。
【００４１】
図４は、２個のＷブートセクタによるＷブートデータの書き換え順序を示す図である。まず、フラッシュメモリ１０１のＷブートセクタＡ２０２及びＷブートセクタＢ２０３には、ＷブートデータＡ及びＷブートデータＢがともに格納された状態で出荷される。また、Ｗブート更新回数は、一方のＷブートセクタには「１」、他方のＷブートセクタには「０」が格納される。本実施形態では、ＷブートセクタＡ２０２のＷブート更新回数を「１」、ＷブートセクタＢ２０３のＷブート更新回数を「０」とする。
【００４２】
起動ブート処理によって実行される最新のＷブート処理がＷブート処理ＡであるかＷブート処理Ｂであるかを、ＷブートセクタＡ２０２及びＷブートセクタＢ２０３における各Ｗブートセクタ領域のチェックサム及びＷブート更新回数に基づいて判定する。ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムがともに正常である場合は、Ｗブート更新回数の大きいＷブートセクタのＷブート処理を実行させる。また、ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムの一方が正常である場合は、正常であるチェックサムのＷブートセクタのＷブート処理を実行させる。
【００４３】
実行中のＷブートセクタのＷブート処理により非実行中のＷブートセクタのＷブートデータを書き換え、Ｗブート更新回数を更新する。例えば、図に示すように１回目のＷブートセクタの書き換えの場合、即ち、１回目の書き込みの場合、実行されているＷブート処理は、Ｗブート処理Ａである。従って、書き換えられるＷブートセクタは、ＷブートセクタＢ２０３となる。即ち、Ｗブート処理ＡによりＷブートセクタＢ２０３のＷブートデータＢが更新される。
【００４４】
また、ＷブートセクタＢ２０３のＷブート更新回数は、ＷブートセクタＡ２０２のＷブート更新回数に１を加えた回数になる。即ち、更新されたＷブートセクタのＷブート更新回数の方が、実行中のＷブートセクタのＷブート更新回数よりも大きくなる。尚、図に示すように、例外として、更新回数がＦＦＦＦｈ回である場合、次の更新回数は０回となる。即ち、Ｗブート更新回数は、１００００ｈ回書き込むと出荷時の状態に戻る。
【００４５】
図５は、ブート処理の手順の一例を示す図である。起動ブートセクタ２０１の起動ブート処理、ＷブートセクタＡ２０２のＷブート処理Ａ及びＷブートセクタＢ２０３のＷブート処理Ｂによる処理手順の一例を示す。まず、装置の電源が投入されると、ＣＰＵ１０３の初期化、スタックの初期化等の各種初期化、ＲＡＭ１０２のチェック、ゲートアレイレジスタのチェック等の各種チェック、起動モードの判定等の各種判定等を実行する（Ｓ５０１）。
【００４６】
次に、装置が備えるディップスイッチの状態を検出してメモリ書き換えモードであるか否かを判定し（Ｓ５０２）、メモリ書き換えモードではない場合、即ち通常モードである場合（Ｓ５０２；Ｎｏ）は、メインセクタのチェックサムを検証し（Ｓ５１２）、チェックサムが正常であるか否か、即ち、メインセクタのデータが正常であるか否かを判定する（Ｓ５１３）。チェックサムが異常である場合（Ｓ５１３；Ｎｏ）は、エラー表示等のエラー処理を実行する（Ｓ５１５）。一方、チェックサムが正常である場合（Ｓ５１３；Ｙｅｓ）は、メインプログラムの各種処理を実行する（Ｓ５１４）。
【００４７】
メモリ書き換えモードである場合（Ｓ５０２；Ｙｅｓ）は、ＷブートセクタＡ２０２のチェックサム及びＷブートセクタＢ２０３のチェックサムを検証する（Ｓ５０３）。ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムがともに異常であるか否かを判定し（Ｓ５０４）、ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムがともに異常である場合（Ｓ５０４；Ｙｅｓ）は、エラー表示等のエラー処理を実行する（Ｓ５０５）。
【００４８】
一方、ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムがともに異常ではない場合（Ｓ５０４；Ｎｏ）は、ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムがともに正常であるか否かを判定し（Ｓ５０６）、ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムがともに正常である場合（Ｓ５０６；Ｙｅｓ）は、ＷブートセクタＡ２０２のＷブート更新回数及びＷブートセクタＢ２０３のＷブート更新回数を取得し（Ｓ５０７）、ＷブートセクタＡ２０２のＷブート更新回数がＷブートセクタＢ２０３のＷブート更新回数よりも大きいか否かを判定する（Ｓ５０８）。
【００４９】
ＷブートセクタＡ２０２のＷブート更新回数がＷブートセクタＢ２０３のＷブート更新回数よりも大きい場合、即ち、ＷブートデータＡがＷブートデータＢよりも新しいＷブートデータである場合（Ｓ５０８；Ｙｅｓ）は、ＷブートセクタＡ２０２のＷブート処理Ａによるメモリ書き換え処理を実行する（Ｓ５１０）。一方、ＷブートセクタＡ２０２のＷブート更新回数がＷブートセクタＢ２０３のＷブート更新回数以下の場合、即ち、ＷブートデータＢがＷブートデータＡよりも新しいＷブートデータである場合（Ｓ５０８；Ｎｏ）は、ＷブートセクタＢ２０３のＷブート処理Ｂによるメモリ書き換え処理を実行する（Ｓ５０９）。
【００５０】
ＷブートセクタＡ２０２及びＷブートセクタＢ２０３のチェックサムがともに正常ではない場合、即ち、どちらか一方のＷブートセクタが異常である場合（Ｓ５０６；Ｎｏ）は、ＷブートセクタＡ２０２のチェックサムが正常であるか否かを判定し（Ｓ５１１）、ＷブートセクタＡ２０２のチェックサムが正常である場合（Ｓ５１１；Ｙｅｓ）は、ＷブートセクタＡ２０２のＷブート処理Ａによるメモリ書き換え処理を実行する（Ｓ５１０）。一方、ＷブートセクタＡ２０２のチェックサムが異常である場合、即ち、ＷブートセクタＢ２０３のチェックサムが正常である場合（Ｓ５１１；Ｎｏ）は、ＷブートセクタＢ２０３のＷブート処理Ｂによるメモリ書き換え処理を実行する（Ｓ５０９）。
【００５１】
また、通常モードからメモリ書き換えモードへ移行する場合は、メモリ書き換えモード移行コマンドを受信することにより（Ｓ５１６）、ステップＳ５０３へ移行し、フラッシュメモリの書き換えが実行される。
【００５２】
図６は、ブート書き換えモードへの移行判定処理の手順の一例を示す図である。本処理は、通常書き換えモードからブート書き換えモードへ移行するか否かを判定する処理であって、図４に示すメモリ書き換え処理（Ｓ５０９、Ｓ５１０）の中で行われる。
【００５３】
まず、受信した更新データをレコード単位で解析し、指定されたアドレスが所定のアドレス（本例では、０ｘＦ１ＦＦＥ０番地、０ｘＦ０ＦＦＥ０番地）であるか否かを判定する（Ｓ６０１）。指定アドレスが所定アドレスである場合（Ｓ６０１；Ｙｅｓ）は、指定されたデータのデータ長が所定のデータ長（本例では７バイトで）であるか否かを判定する（Ｓ６０２）。データ長が所定データ長である場合（Ｓ５２１；Ｙｅｓ）は、指定されたデータの内容が特定データ（本例ではキャラクタコード“ＲＥＷＲＩＴＥ”）であるか否かを判定する（Ｓ６０３）。指定データの内容が特定データである場合（Ｓ６０３；Ｙｅｓ）は、正常に受信したことを通知するための正常受信ステータスデータをホスト装置に送信し（Ｓ６０４）、フラッシュメモリ１０１の書き換え対象セクタに起動ブートセクタ２０１を追加するフラグをセットして（Ｓ６０５）、受信したレコードを読み捨てる（Ｓ６０６）。
【００５４】
また、指定アドレスが所定アドレスではない場合（Ｓ６０１；Ｎｏ）、データ長が所定データ長ではない場合（Ｓ６０２；Ｎｏ）及びデータの内容が特定データではない場合（Ｓ６０３；Ｎｏ）には、書き換え対象セクタに起動ブートセクタ２０１を追加するフラグをセットすることなく本判定処理を終了する。この場合、通常書き換えモードのままとなる。
【００５５】
図７は、Ｗブート処理ＡまたはＷブート処理Ｂによるフラッシュメモリ書き換え処理の手順の一例を示す図である。まず、フラッシュメモリ１０１を書き換えるための更新データをホスト装置から受信するための通信インタフェースの判別及び各種初期化を実行し（Ｓ７０１）、実行中のＷブートセクタのＷブート処理を認識するためにＷブートＩＤを取得する（Ｓ７０２）。
【００５６】
次に、更新データをレコード単位に受信する（Ｓ７０３）。以下、受信したレコード単位の更新データを「受信レコードデータ」と呼ぶ。そして、受信レコードデータが、所定のアドレスに特定のデータを書き込む旨のデータであるか否かを判定し、その判定結果に基づいてブート書き換えモードに移行するか通常書き換えモードのままでいるかを決定する（Ｓ７０４；図６のブート書き換えモード移行判定処理）。次に、受信レコードデータが終了レコードであるか否か、即ち更新データの受信が終了であるか否かを判定する（Ｓ７０５）。
【００５７】
受信レコードデータが終了レコードではない場合（Ｓ７０５；Ｎｏ）は、受信レコードデータが格納すべきフラッシュメモリのセクタの更新データであるか否か判定する（Ｓ７０６）。受信レコードデータには、格納開始アドレスが格納されており、この格納開始アドレスに基づいて、格納すべきフラッシュメモリのセクタが判定される。また、書き換えられるセクタは、通常書き換えモードでは起動ブートセクタおよび実行中のＷブートセクタ以外のセクタ、ブート書き換えモードでは実行中のＷブートセクタ以外のセクタである。
【００５８】
受信レコードデータが格納すべきフラッシュメモリのセクタの更新データである場合（Ｓ７０６；Ｙｅｓ）は、受信レコードデータの書き込み処理を実行し（Ｓ７０７）、正常に受信したことを通知するための正常受信ステータスをホスト装置に送信し（Ｓ７０８）、ステップＳ６０３に戻り、次の更新データであるレコードデータを受信する。一方、受信レコードデータが格納すべきフラッシュメモリのセクタの更新データではない場合（Ｓ７０６；Ｎｏ）は、ステップＳ６０３に戻り、次の更新データであるレコードデータを受信する。
【００５９】
受信レコードデータが終了レコードである場合（Ｓ７０５；Ｙｅｓ）は、受信レコードデータの書き込み処理が行なわれたメインセクタ及び／又は非実行中のＷブートセクタのチェックサムをそれぞれ算出して書き込み（Ｓ７０９）、メモリ書き換えモードにおける所定の終了処理を実行し（Ｓ７１０）、最後にＣＰＵのリセット処理を実行する（Ｓ７１１）。なお、ステップＳ７０４においてブート書き換えモードに移行した場合、起動ブートセクタ２０１を書き換え対象セクタとするためにセットされたフラグは、ステップＳ７１０の終了処理によってリセットされる。
【００６０】
ここで、ホスト装置から送信される更新データは、各セクタ毎に、即ち起動ブートセクタ２０１、Ｗブートセクタ２０２、２０３及びメインセクタ毎に、構成されたものであってもよいし、任意の複数のセクタの更新データを統括したものであってもよい。
【００６１】
図８は、フラッシュメモリの書き換え範囲を示す図である。図８（ａ）は、Ｗブート処理Ａが実行されている場合のフラッシュメモリの書き換え範囲を示す図であり、図８（ｂ）は、Ｗブート処理Ｂが実行されている場合のフラッシュメモリの書き換え範囲を示す図である。図に示すように、以下に示す３項目のデータ以外のデータを受信レコードデータに基づいて書き換える。
・実行中のＷブートセクタのＷブートデータ：Ｗブート処理Ａが実行中の場合は、ＷブートデータＡであり、Ｗブート処理Ｂが実行中の場合は、ＷブートデータＢである。
・非実行中のＷブートセクタのチェックサム：Ｗブート処理Ａが実行中の場合は、ＷブートセクタＢ２０３のチェックサムであり、Ｗブート処理Ｂが実行中の場合は、ＷブートセクタＡ２０２のチェックサムである。
・メインセクタのチェックサム：メインセクタ全領域のチェックサムである。
なお、上述したとおり、通常書き換えモードの場合には、起動ブートデータも書き換え範囲に含まれない。
【００６２】
フラッシュメモリ１０１のデータ書き換え方法には様々な方法がある。例えば、以下に説明する書き換え方法を利用して実行することができる。
【００６３】
第１の書き換え方法は、フラッシュメモリ１０１を構成する全てのセクタにおいて、セクタ全域の更新データをレコードデータとして順次受信する場合である。ここで、未使用領域のレコードデータは０ｘｆｆとして受信する。受信レコードデータが書き換え対象となるセクタ（更新対象セクタ）の初めての更新データである場合に、更新対象セクタのデータを消去し、所定の格納開始アドレスに基づいて受信レコードデータを更新対象セクタに書き込む。受信レコードデータが更新対象セクタの初めての更新データではない場合は、所定の格納開始アドレスに基づいて受信レコードデータを更新対象セクタに書き込む。
【００６４】
第２の書き換え方法は、Ｗブートセクタのデータにおいては、データが存在する部分の更新データを受信しセクタ全域を書き換え、Ｗブートセクタ以外のセクタにおいては、更新すべきデータのみを受信し、その受信レコードデータの部分のみを書き換える場合である。Ｗブートセクタが更新対象セクタである場合は、受信レコードデータが更新対象セクタの初めての更新データである場合に、更新対象セクタのデータをＲＡＭ上に複写し、更新対象セクタのデータを消去する。ＲＡＭ上のセクタイメージにデータが存在する部分の全ての受信レコードデータを書き込み、書き込まれたＲＡＭ上のセクタイメージを更新対象セクタに書き戻す。Ｗブートセクタ以外のセクタが更新対象セクタである場合は、更新対象セクタのデータをＲＡＭ上に複写し、更新すべき部分の受信レコードデータを書き込み、更新対象セクタのデータを消去し、書き込まれたＲＡＭ上のセクタイメージを更新対象セクタに書き戻す。
【００６５】
第３の書き換え方法は、フラッシュメモリ１０１の構成する全てのセクタにおいて、更新すべきデータのみを受信し、その受信レコードデータの部分のみを書き換える場合である。更新対象セクタのデータをＲＡＭ上に複写し、更新すべき部分の受信レコードデータを書き込み、更新対象セクタのデータを消去し、書き込まれたＲＡＭ上のセクタイメージを更新対象セクタに書き戻す。
【００６６】
図９は、Ｗブートセクタの書き換え方法の詳細を示す図である。図９（ａ）は、Ｗブート処理Ａが実行されている場合のＷブートセクタの書き換え方法を示す図であり、図９（ｂ）は、Ｗブート処理Ｂが実行されている場合のＷブートセクタの書き換え方法を示す図である。例えば、図９（ａ）に示すように、Ｗブート処理Ａが実行されている場合は、ＷブートセクタＢ２０３のＷブートデータＢを順次受信し、その受信レコードデータを所定の格納開始アドレスに基づいて、ＷブートセクタＢ２０３に書き込む。次に、ＷブートセクタＢ２０３のＷブート更新回数を算出し、ＷブートセクタＢ２０３の所定の領域に書き込む。ここで、ＷブートセクタＡ２０２のブートセクタ更新回数がＮである場合、ＷブートセクタＢ２０３のＷブート更新回数は（Ｎ＋１）となる。次に、ＷブートセクタＢ２０３のチェックサムを算出し、ＷブートセクタＢ２０３の所定の領域に書き込む。また、図９（ｂ）に示すように、Ｗブート処理Ｂが実行されている場合も、Ｗブート処理Ａが実行されている場合と同様である。即ち、ＷブートセクタＡ２０２のＷブートデータＡは、受信レコードデータに基づいて書き換えられ、ＷブートセクタＡ２０２のＷブート更新回数とＷブートセクタＡ２０２のチェックサムは、算出した値が書き込まれる。
【００６７】
既に正常に機能しているブート処理に新しい機能を追加する場合に、追加される機能についてのブートデータをＷブートデータとしてＷブートセクタに書き込むことにより、ブートデータの書き換え作業における、書き換えエラーによる装置の起動不能状態を回避することができる。
【００６８】
本発明は、Ｗブートセクタが３個以上ある場合にも適用可能であって、起動ブートセクタに格納された起動ブートデータを、チェックサム及びブート更新回数に基づいて複数のＷブートセクタの中から実行すべきＷブートセクタを判定し実行させるよう構成することができる。
【００６９】
また、本発明のプログラムは、上述したフラッシュメモリのメモリ書き換え制御方法の各工程を実行させるプログラムである。
【図面の簡単な説明】
【００７０】
【図１】メモリ書き換え制御システムのハードウェアの構成を示す図である。
【図２】本発明のフラッシュメモリにおけるブートセクタの構成を示す図である。
【図３】メモリ書き換え制御システムの構成の一例を示すブロック図である。
【図４】２個のＷブートセクタによるＷブートデータの書き換え順序を示す図である。
【図５】ブート処理の手順を示す図である。
【図６】ブート書き換えモードへの移行判定処理の手順を示す図である。
【図７】Ｗブート処理ＡまたはＷブート処理Ｂによるフラッシュメモリ書き換え処理の手順を示す図である。
【図８】（ａ）は、Ｗブート処理Ａが実行されている場合のフラッシュメモリの書き換え範囲を示す図であり、（ｂ）は、Ｗブート処理Ｂが実行されている場合のフラッシュメモリの書き換え範囲を示す図である。
【図９】（ａ）は、Ｗブート処理Ａが実行されている場合のＷブートセクタの書き換え方法を示す図であり、（ｂ）は、Ｗブート処理Ｂが実行されている場合のＷブートセクタの書き換え方法を示す図である。
【図１０】従来の書き換え処理によるデータ遷移を説明する図である。
【符号の説明】
【００７１】
１００    メモリ書き換え制御システム
１０１    フラッシュメモリ
１０２    ＲＡＭ
１０３    ＣＰＵ
２０１    起動ブートセクタ
２０２    ＷブートセクタＡ
２０３    ＷブートセクタＢ
３０１    ブートデータ判定部
３０２    第１の書き換え部
３０３    第２の書き換え部
【図１】
2008117404.tif 000003
【図２】
2008117404.tif 000004
【図３】
2008117404.tif 000005
【図４】
2008117404.tif 000006
【図５】
2008117404.tif 000007
【図６】
2008117404.tif 000008
【図７】
2008117404.tif 000009
【図８】
2008117404.tif 000010
【図９】
2008117404.tif 000011
【図１０】
2008117404.tif 000012
【手続補正書】
【提出日】平成19年12月4日(2007.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
起動ブートデータを格納する起動ブートセクタと、前記起動ブートデータの起動の後に選択的に起動されるブートデータを格納する少なくとも２個のブートセクタと、前記起動ブートデータ又は前記ブートデータの起動の後に起動されるメインデータを格納するメインセクタとを有し、フラッシュメモリのメモリ書き換え制御システムであって、
前記起動ブートデータが当該制御システムを制御する中央処理装置によって実行されることにより実現され、当該制御システムのハードウェアの初期化を行う初期化部と、
前記起動ブートデータが前記中央処理装置によって実行されることにより実現され、当該制御システムの起動モードの判定を行なう起動モード判定部と、
前記起動モード判定部によって判定された前記起動モードが前記フラッシュメモリのメモリ書き換えモードである場合に、前記起動ブートデータが前記中央処理装置によって実行されることにより実現され、前記ブートセクタのそれぞれに格納された前記ブートデータの中から、前記ブートセクタのそれぞれに格納されたブートデータ更新判定データに基づいて、前記起動ブートデータの後に起動すべきブートデータを選択するブートデータ判定部と、
前記ブートデータ判定部によって選択された前記ブートデータが前記中央処理装置によって実行されることにより実現され、当該ブートデータが格納されたブートセクタを除く前記ブートセクタ、前記起動ブートセクタ及び前記メインセクタに格納されたデータを前記更新データにより書き換える書き換え部と、
を備えることを特徴とするメモリ書き換え制御システム。
【請求項２】
前記書き換え部は、
前記フラッシュメモリに格納されたデータを書き換えるための前記更新データを前記ホスト装置から受信する更新データ受信部と、
前記更新データ受信部によって受信された前記更新データに基づいて、前記起動ブートセクタ、前記ブートセクタ及び前記メインセクタの中から更新データを格納すべきセクタを選択するセクタ判定部と、
前記セクタ判定部によって選択された前記セクタに、前記更新データ受信部によって受信された前記更新データを書き込む更新データ書き込み部と、
前記セクタ判定部によって選択された前記セクタが前記ブートセクタである場合に、前記ブートデータ更新判定データを算出し更新する更新判定データ算出部と、
を備えたことを特徴とする請求項１に記載のメモリ書き換え制御システム。
【請求項３】
前記ブートデータ更新判定データは、前記ブートセクタの前記ブートデータを書き換えた回数を通算したブート更新回数と、前記ブートデータの正当性を検証する前記ブートデータのチェックサムとを備えて構成され、
前記更新判定データ算出部は、前記ブート更新回数と前記チェックサムとを算出し前記ブートデータ更新判定データを更新することを特徴とする請求項２に記載のメモリ書き換え制御システム。
【請求項４】
前記書き換え部は、前記更新データ受信部によって受信された更新データが、前記フラッシュメモリの所定のアドレスに所定のデータ長を有する特定データを書き込む旨の所定の更新データであるか否かを判定し、前記更新データが前記所定の更新データである場合にのみ、前記ブートセクタ及び前記メインセクタのみを書き換え可能状態にする通常書き換えモードから前記起動ブートデータも書き換え可能状態にするブート書き換えモードに移行することを特徴とする請求項２または３のいずれか１項に記載のメモリ書き換え制御システム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明のメモリ書き換え制御システムは、起動ブートデータを格納する起動ブートセクタと、前記起動ブートデータの起動の後に選択的に起動されるブートデータを格納する少なくとも２個のブートセクタと、前記起動ブートデータ又は前記ブートデータの起動の後に起動されるメインデータを格納するメインセクタとを有し、フラッシュメモリのメモリ書き換え制御システムであって、
前記起動ブートデータが当該制御システムを制御する中央処理装置によって実行されることにより実現され、当該制御システムのハードウェアの初期化を行う初期化部と、
前記起動ブートデータが前記中央処理装置によって実行されることにより実現され、当該制御システムの起動モードの判定を行なう起動モード判定部と、
前記起動モード判定部によって判定された前記起動モードが前記フラッシュメモリのメモリ書き換えモードである場合に、前記起動ブートデータが前記中央処理装置によって実行されることにより実現され、前記ブートセクタのそれぞれに格納された前記ブートデータの中から、前記ブートセクタのそれぞれに格納されたブートデータ更新判定データに基づいて、前記起動ブートデータの後に起動すべきブートデータを選択するブートデータ判定部と、
前記ブートデータ判定部によって選択された前記ブートデータが前記中央処理装置によって実行されることにより実現され、当該ブートデータが格納されたブートセクタを除く前記ブートセクタ、前記起動ブートセクタ及び前記メインセクタに格納されたデータを前記更新データにより書き換える書き換え部と、
を備えることを特徴とする。
この構成によれば、１回のダウンロード作業にてフラッシュメモリの各セクタに格納されたデータの書き換えを実現可能とするばかりでなく、ブートセクタの書き換え処理異常による装置の起動不能状態を回避することができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
参考例である、メモリ書き換え制御方法は、複数のセクタからなりセクタ単位でデータ消去可能なフラッシュメモリであって、起動ブートデータを格納する起動ブートセクタと、起動ブートデータによって選択的に起動されるブートデータを格納する少なくとも２のブートセクタと、起動ブートデータ又はブートデータによって起動されるメインデータを格納するメインセクタとを有するフラッシュメモリのメモリ書き換え制御方法であって、ブートセクタのそれぞれに格納されたブートデータの中から、ブートセクタのそれぞれに格納されたブートデータ更新判定データに基づいて、起動ブートデータにより起動すべきブートデータを選択するブートデータ判定工程と、ブートデータ判定工程によって選択されたブートデータが格納されたブートセクタを除くブートセクタ、起動ブートセクタ及びメインセクタに格納されたデータを書き換える書き換え工程と、を備えることを特徴とする。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
参考例であるメモリ書き換え制御プログラムは、上記のメモリ書き換え制御方法の各工程を実行させるためのものであることを特徴とする。