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