JP2004013536A - フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 - Google Patents
フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 Download PDFInfo
- Publication number
- JP2004013536A JP2004013536A JP2002166245A JP2002166245A JP2004013536A JP 2004013536 A JP2004013536 A JP 2004013536A JP 2002166245 A JP2002166245 A JP 2002166245A JP 2002166245 A JP2002166245 A JP 2002166245A JP 2004013536 A JP2004013536 A JP 2004013536A
- Authority
- JP
- Japan
- Prior art keywords
- data
- sector
- boot
- flash memory
- update
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【解決手段】ブートセクタに格納するべきデータを一時的に格納するTMP領域を設けておき、書き換え用の更新データおよび格納指示データを取得し、ワーク領域に格納する(図11の▲1▼)。更新データがブートセクタに格納される場合は、更新データと格納指示データに基づいて、新ブートデータをTMP領域に生成する(図11の▲5▼)。旧ブートデータと新ブートデータとを比較し(図11の▲6▼)、データが異なっている場合は、ブートセクタを消去し、TMP領域の新ブートデータをブートセクタに書き込む(図11の▲7▼)。
【選択図】 図11
Description
【発明の属する技術分野】
本発明は、フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体に関する。特に、1回のダウンロード処理においてブートセクタおよび/または一般セクタのデータを書き換えることを可能にしたフラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体に関する。
【0002】
【従来の技術】
プリンタ、スキャナ等の機器においては、ファームウェアがブートセクタとメインプログラムセクタとに分離されて、フラッシュメモリに格納されている。例えば、プリンタの場合、プリンタの通常モードを制御するプログラムであるメインプログラムがメインプログラムセクタに格納されている。また、プリンタの起動処理を実行する起動プログラムや、プリンタの書き換えモードを制御してフラッシュメモリを書き換える書き換えモードプログラムなどはブートセクタに格納されている。ここで、セクタとは、フラッシュメモリにおいて一括して消去可能な領域である。
【0003】
フラッシュメモリの書き換えは、セクタ単位で行われる。その手順とは、先ず対象のセクタを消去し、次に新しいデータを1ワードずつ書き込むことにより、1セクタの書き換えが完了する。この作業には数秒間を要し、もし途中で不慮の電源断が起きれば、セクタの一部は消去されたままとなる。つまり、フラッシュメモリの書き換えは、既存の格納データを消失してしまう危険性を伴っていると言える。
【0004】
新しい機能の追加や、特定顧客向けのカスタマイズなどのために機器のファームウェアはバージョンアップされるので、フラッシュメモリの書き換えは比較的頻繁に行われる。しかし、起動プログラムは、もしそれが消失すれば機器は起動不能になってしまう。書き換えモードプログラムも同様に、もしそれが消失するとフラッシュメモリを書き換えることができないので、フラッシュメモリの内容を正しい内容に復旧することすらできなくなってしまう。このような特性を考慮して、メインプログラムセクタには通常モードを制御するメインプログラムを格納し、ブートセクタには起動プログラムや書き換えモードプログラムを格納する。また、メインプログラムセクタは書き換え可能とし、ブートセクタは通常は書き換えできないようにプロテクトするのが、一般的なセクタ割り当て方法である。
【0005】
ファームウェアのバージョンアップは、大抵の場合は1回のダウンロードで完了する。これは、機能追加やカスタマイズにより変更されるのが、大抵の場合はメインプログラムだけであるからである。この場合は、ブートセクタに格納されている書き換えモードプログラムを実行して、メインプログラムセクタの内容を書き換える。
【0006】
しかしながら、全く新規の機能を追加する場合は、ブートセクタに格納されている起動プログラムをも変更する必要が生じる場合があり、従来は次のようにしていた。すなわち、ブートセクタだけを書き換える特殊なメインプログラム(ブートリライトプログラムという)を作成する。そして先ず、ブートリライトプログラムをダウンロードし、次にブートリライトプログラムによってブートセクタを書き換え、最後に本来のメインプログラムに戻す、というように3回のダウンロードを実行して書き換える方法である。
【0007】
図12は、従来の書き換え処理によるデータ遷移を説明する図である。1回目のダウンロードでは、ブートセクタに格納されている書き換えモードプログラムが実行され、メインプログラムセクタの内容をブートリライトプログラムに書き換える(図12の▲1▼)。2回目のダウンロードでは、ブートリライトプログラムが実行され、ブートセクタの内容を新ブートデータに書き換える(図12の▲2▼)。ここで、ブートデータとは、ブートセクタに格納されているプログラムやデータの総称である。3回目のダウンロードでは、再びブートセクタに格納されている書き換えモードプログラムが実行され、メインプログラムセクタの内容を新メインプログラムデータに書き換える(図12の▲3▼)。
【0008】
【発明が解決しようとする課題】
上述したように、機器のファームウェアをバージョンアップする際、ブートセクタを書き換える場合と、メインプログラムセクタのようなブートセクタ以外のセクタ(一般セクタという)を書き換える場合とで作業手順が異なるという問題点があった。このため作業者は、現在のファームウェアバージョンを調べ、新しいバージョンにアップするにはブートセクタの書き換えが必要なのか否かを予め確認し、2通りの作業手順のいずれかを選択するという煩雑な作業をしなければならなかった。また、ブートセクタを書き換える場合は、ダウンロード作業を3回実行しなければ完了せず、時間的な効率が悪いという問題点もあった。
【0009】
従って、本発明は、以上のような問題点を解決するためになされたもので、1回のダウンロード作業によってブートセクタおよび/または一般セクタを書き換えることを可能にしたフラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体を提供することを目的とする。
【0010】
【課題を解決するための手段】
本発明の、フラッシュメモリ書き換え制御システムの1つの態様は、フラッシュメモリの書き換え用の更新データおよび更新データを格納するためのフラッシュメモリの領域を指定する格納指示データをRAM上に取得し、更新データを格納すべき更新対象セクタを特定する更新データ取得部と、更新データ取得部によって取得した更新データおよび格納指示データに基づいて、フラッシュメモリのブートセクタ以外の更新対象セクタである一般セクタに格納するための新セクタ格納データを生成し、更新対象セクタを消去し、更新対象セクタに新セクタ格納データを書き込む一般セクタ書き換え部と、更新データ取得部によって取得した更新データおよび格納指示データに基づいて、ブートセクタに格納するための新ブートデータをブートデータ保存領域に格納する一時データ格納部と、ブートセクタを消去した後、一時データ格納部によって格納されたブートデータ保存領域の新ブートデータをブートセクタに書き込むブートセクタ書き換え部とを備え、1回のダウンロード処理によりブートセクタおよび/または一般セクタを書き換えることを可能にしたフラッシュメモリ書き換え制御システムである。
【0011】
本発明の、フラッシュメモリ書き換え制御システムの別の態様は、一時データ格納部によって格納されたブートデータ保存領域の新ブートデータと、ブートセクタに既に格納されている旧ブートデータとを比較し、新ブートデータと旧ブートデータとが異なる場合にのみブートセクタ書き換え部を実行させるブートデータ比較部を、更に備えたフラッシュメモリ書き換え制御システムである。
【0012】
本発明の、フラッシュメモリ書き換え制御システムの別の態様は、フラッシュメモリの書き換えモード終了処理を制御するための情報である書き換えモード終了制御情報の配置アドレスを固定値とすることを特徴とするフラッシュメモリ書き換え制御システムである。
【0013】
本発明の、フラッシュメモリ書き換え制御システムの別の態様は、上述のブートデータ保存領域が、少なくとも新ブートデータを格納可能なフラッシュメモリの所定のセクタであることを特徴とするフラッシュメモリ書き換え制御システムである。
【0014】
本発明の、フラッシュメモリ書き換え制御システムの別の態様は、上述のブートデータ保存領域が、少なくとも新ブートデータを格納可能なRAMの所定の領域であることを特徴とするフラッシュメモリ書き換え制御システムである。
【0015】
本発明の、フラッシュメモリ書き換え制御方法の1つの態様は、(a)フラッシュメモリの書き換え用の更新データおよび更新データを格納するためのフラッシュメモリの領域を指定する格納指示データをRAM上に取得し、更新データを格納すべき更新対象セクタを特定する更新データ取得工程と、(b)更新データ取得工程によって取得した更新データおよび格納指示データに基づいて、フラッシュメモリのブートセクタ以外の更新対象セクタである一般セクタに格納するための新セクタ格納データを生成し、更新対象セクタを消去し、更新対象セクタに新セクタ格納データを書き込む一般セクタ書き換え工程と、(c)更新データ取得工程によって取得した更新データおよび格納指示データに基づいて、ブートセクタに格納するための新ブートデータをブートデータ保存領域に格納する一時データ格納工程と、(d)ブートセクタを消去した後、一時データ格納工程によって格納されたブートデータ保存領域の新ブートデータをブートセクタに書き込むブートセクタ書き換え工程とを備え、1回のダウンロード処理によりブートセクタおよび/または一般セクタを書き換えることを可能にしたフラッシュメモリ書き換え制御方法である。
【0016】
本発明の、フラッシュメモリ書き換え制御方法の別の態様は、上述の一時データ格納工程(c)とブートセクタ書き換え工程(d)との間に、(e)一時データ格納工程によって格納されたブートデータ保存領域の新ブートデータと、ブートセクタに既に格納されている旧ブートデータとを比較し、新ブートデータと旧ブートデータとが異なる場合にのみブートセクタ書き換え工程を実行させるブートデータ比較工程を、更に備えたフラッシュメモリ書き換え制御方法である。
【0017】
本発明の、フラッシュメモリ書き換え制御方法の別の態様は、フラッシュメモリの書き換えモード終了処理を制御するための情報である書き換えモード終了制御情報の配置アドレスを固定値とすることを特徴とするフラッシュメモリ書き換え制御方法である。
【0018】
本発明の、フラッシュメモリ書き換え制御方法の別の態様は、上述のブートデータ保存領域が、少なくとも新ブートデータを格納可能なフラッシュメモリの所定のセクタであることを特徴とするフラッシュメモリ書き換え制御方法である。
【0019】
本発明の、フラッシュメモリ書き換え制御方法の別の態様は、上述のブートデータ保存領域が、少なくとも新ブートデータを格納可能なRAMの所定の領域であることを特徴とするフラッシュメモリ書き換え制御方法である。
【0020】
本発明の、プログラムの1つの態様は、上述のフラッシュメモリ書き換え制御方法の各工程を実行させるプログラムである。
【0021】
本発明の、情報記録媒体の1つの態様は、上述のフラッシュメモリ書き換え制御方法の各工程を実行させるプログラムを記録したコンピュータに読み取り可能な情報記録媒体である。
【0022】
【発明の実施の形態】
この発明の一実施態様を、図面を参照しながら説明する。なお、以下に説明する実施態様は説明のためのものであり、本発明の範囲を制限するものではない。従って、当業者であればこれらの各要素もしくは全要素をこれと均等なものによって置換した実施態様を採用することが可能であるが、これらの実施態様も本発明の範囲に含まれる。
【0023】
図1は、フラッシュメモリ書き換え制御システムのハードウェアの構成を示す図である。
フラッシュメモリ書き換え制御システム100は、一括して消去可能な領域であるセクタに分割された書き換えが可能であるフラッシュメモリ101、読み書きが可能であるRAM102、および、フラッシュメモリ書き換え制御システム100を有する制御装置の制御を実行するCPU103を備えている。
【0024】
フラッシュメモリ101は、制御装置の通常モードの制御を実行するメインプログラムや、フォントデータ等を記憶し、更に、制御装置の起動処理を制御する起動プログラムや、フラッシュメモリ101の記憶内容を書き換える書き換えモードプログラム等を記憶している。以下、起動プログラムが格納されるセクタをブートセクタ、メインプログラムが格納されるセクタをメインプログラムセクタという。また、ブートセクタに格納されているプログラムやデータをブートデータ、メインプログラムセクタに格納されているプログラムやデータをメインプログラムデータという。
【0025】
図2は、新しいブートデータを一時的に格納する領域(以下、「ブートデータ保存領域」という)をRAM上に設けた場合の、フラッシュメモリ書き換え制御システムにおけるフラッシュメモリおよびRAMの構成を示す図であり、図3は、ブートデータ保存領域をフラッシュメモリ上に設けた場合の、フラッシュメモリ書き換え制御システムにおけるフラッシュメモリおよびRAMの構成を示す図である。
【0026】
ブートデータ保存領域をRAM上に設けた場合、図2に示すように、フラッシュメモリ101は、一括して消去可能な領域であるセクタとして、ブートデータを記憶するブートセクタ201およびメインプログラムデータを記憶するメインプログラムセクタ202を備えている。また、フォントデータ等はフラッシュメモリ101のその他の領域204に記憶されている。
【0027】
ブートデータには、リセット割り込み、受信割り込み等に対応する割り込みハンドラのアドレスをテーブル化した割り込みベクタテーブル、制御装置の起動処理を制御する起動プログラム、書き換えモードにおいてフラッシュメモリ101の各セクタのデータを書き換える処理を制御する書き換えモードプログラム、書き換えモードプログラムの一処理としてセクタに記憶されているデータを消去するセクタ消去プログラム、書き換えモードプログラムの一処理として一般セクタを書き換える一般セクタ更新プログラム、書き換えモードプログラムの一処理としてブートセクタ201を書き換えるブートセクタ更新プログラム、および、書き換えモードにおける終了処理として最後に実行される書き換えモード終了プログラムを備えている。
【0028】
また、書き換えモード終了プログラムは、配置アドレスが固定化されており、書き換え前のブートデータ(以下、「旧ブートデータ」という)であっても、書き換え後のブートデータ(以下、「新ブートデータ」という)であっても、同じアドレスから開始される。
【0029】
RAM102は、受信した書き換え用の更新データを記憶するためのワーク領域221、ブートデータの各プログラム(図では、セクタ消去プログラム、一般セクタ更新プログラムおよびブートセクタ更新プログラム)を複写するためのプログラム領域222、新ブートデータを一時的に記憶するためのブートデータ保存領域であるTMP領域223、および、ブートセクタ201以外のセクタを書き換える際にデータを編集するための編集領域224を備えている。ここで、TMP領域223は、新ブートデータを記憶可能な容量を備えていればよい。
【0030】
ブートデータ保存領域をフラッシュメモリ上に設けた場合は、図3に示すように、フラッシュメモリ101は、ブートセクタ201、メインプログラムセクタ202、その他の領域204、および、新ブートデータを一時的に記憶するブートデータ保存領域であるTMPセクタ203を備えている。尚、TMPセクタ203は、少なくともブートセクタ201と同等の記憶容量を持つセクタである。RAM102は、ワーク領域221、プログラム領域222および編集領域224を備えている。
【0031】
図4は、フラッシュメモリ書き換え制御システムのソフトウェアの機能ブロックの構成を示す図である。
フラッシュメモリ書き換え制御システム100は、更新データ取得部401、一般セクタ書き換え部402、一時データ格納部403、ブートデータ比較部404、ブートセクタ書き換え部405および書き換えモード終了部406を備えている。
【0032】
更新データ取得部401は、RAM102のプログラム領域222にセクタ消去プログラム、一般セクタ更新プログラムおよびブートセクタ更新プログラムを複写する。また、フラッシュメモリ101の書き換え用の更新データおよび更新データを格納すべきフラッシュメモリ101の領域を指定する格納指示データ(例えば、先頭アドレス、格納データ長等)を取得し、RAM102のワーク領域221に格納(記憶)し、格納指示データに基づいて、更新対象セクタを特定する。ここで、更新対象セクタとは、取得した更新データを格納すべきフラッシュメモリ101のセクタである。
【0033】
一般セクタ書き換え部402は、更新データ取得部401によって特定した更新対象セクタがブートセクタ201以外のセクタである場合に、更新対象セクタに既に格納されている全てのデータ(以下、「旧セクタ格納データ」という)を取得し、RAM102の編集領域224に格納する。また、更新データ取得部401によって取得した更新データおよび格納指示データに基づいて旧セクタ格納データを編集して、更新後の更新対象セクタに格納すべき全てのデータ(以下、「新セクタ格納データ」という)を生成する。更に、更新対象セクタを消去し、更新対象セクタに新セクタ格納データを1ワードずつ書き込む。
【0034】
一時データ格納部403は、更新データ取得部401によって特定した更新対象セクタがブートセクタ201である場合に、ブートデータ保存領域であるTMP領域223またはTMPセクタ203に、取得した更新データを格納する。ここで、ブートデータの一部分のみを変更することはできないので、更新データとして全ての新ブートデータを取得し、ブートデータ保存領域に新ブートデータを格納する。また、ブートデータ保存領域がTMPセクタ203である場合は、TMPセクタ203のデータが消去されていることを確認し、新ブートデータをTMPセクタ203に格納する。即ち、TMPセクタ203のデータが消去されていない場合は、TMPセクタ203のデータを消去した後、新ブートデータをTMPセクタ203に格納する。
【0035】
ブートデータ比較部404は、ブートデータ保存領域であるTMP領域223またはTMPセクタ203に格納されている新ブートデータとブートセクタ201に格納されている旧ブートデータとを比較し、異なるデータであるか否かを判定する。即ち、ブートセクタ201の書き換えが必要であるか否かを判定する。
【0036】
ブートセクタ書き換え部405は、ブートデータ比較部404によって、新ブートデータと旧ブートデータとが異なる場合には、ブートセクタ201を消去し、ブートセクタ201に新ブートデータを格納する。一方、ブートデータ比較部404によって、新ブートデータと旧ブートデータとが同一である場合には、ブートセクタ201を旧ブートデータのままとする。
【0037】
書き換えモード終了部406は、書き換えモードにおける処理結果をホスト装置へ送信したり、制御装置の操作パネル、表示部等の出力部へ送信したりする。また、処理結果に基づいた書き換えモードにおける所定の終了処理を実行する。ここで、書き換えモード終了部の実体は、ブートセクタ201に格納されている書き換えモード終了プログラムである。
【0038】
図5は、フラッシュメモリ書き換え制御システムのモード遷移を示す図である。以下、プリンタを例に挙げて説明する。
まず、プリンタの電源が投入されると、CPUは、起動処理を実行する(S501)。次に、操作パネル、コマンド等により入力された制御モードを取り出し(S502)、入力された制御モードが書き換えモードであるか否かを判定する(S503)。
【0039】
書き換えモードである場合(S503;Yes)は、フラッシュメモリの書き換えモード処理に移行する(S504)。書き換えモードではない場合(S503;No)は、プリンタの通常モード処理を実行する(S505)。
【0040】
次に、図6、図7、図8および図9を参照してフラッシュメモリの書き換えモード処理を説明する。図6および図7は、フラッシュメモリの書き換えモード処理の手順を示す図である。
まず、ブートセクタ201の旧ブートデータからRAM102のプログラム領域222にセクタ消去プログラム、一般セクタ更新プログラムおよびブートセクタ更新プログラムを複写する(S601)。
【0041】
次に、ブートデータ保存領域を初期化する(S602)。ここで、ブートデータ保存領域が、フラッシュメモリ101のTMPセクタ203である場合は、RAM102のプログラム領域222に複写したセクタ消去プログラムによりTMPセクタ203を一括消去する。また、ブートデータ保存領域がRAM102のTMP領域223である場合は、TMP領域223に初期データを格納する。
【0042】
次に、書き換え用の更新データおよび格納指示データを取得し(S603)、取得した更新データの更新対象セクタを判定する(S604)。ここで、取得した更新データおよび格納指示データは、RAM102のワーク領域221に格納される。
【0043】
更新対象セクタがブートセクタである場合(S604;「ブートセクタ」)は、取得した更新データをブートデータ保存領域に格納し(S605)、次のステップS610に移行する。ここで、ブートデータ保存領域がフラッシュメモリ101のTMPセクタ203である場合は、ワーク領域221に格納した格納指示データおよび更新データに基づいて、RAM102のプログラム領域222の一般セクタ更新プログラムにより、TMPセクタ203の所定の領域に更新データを格納する。また、ブートデータ保存領域がRAM102のTMP領域223である場合は、ワーク領域221に格納した格納指示データおよび更新データに基づいて、TMP領域223の所定の領域に、更新データを格納する。
【0044】
更新対象セクタが一般セクタである場合(S604;「一般セクタ」)は、更新対象セクタが既に編集中であるか否かを判定する(S606)。更新対象セクタが既に編集中である場合(S606;Yes)は、ワーク領域221に格納した格納指示データおよび更新データに基づいて、編集領域224の所定の領域に、更新データを格納し(S607)、次のステップS610に移行する。
【0045】
一方、更新対象セクタが編集中ではない場合(S606;No)は、RAM102のプログラム領域222の一般セクタ更新プログラムにより、編集領域224に格納されている新セクタ格納データを前回の更新対象セクタに格納し(S608)、今回の更新対象セクタにある旧セクタ格納データを編集領域224に取り出し(S609)、次のステップS607に移行する。
【0046】
次に、全ての更新データを取得したか否かを判定し(S610)、全ての更新データを取得していない場合(S610;No)は、ステップS603に戻り、ステップS603からS610までを繰り返す。一方、全ての更新データを取得した場合(S610;Yes)は、編集領域224に有効データが存在するか否かを判定する(S611)。即ち、更新対象セクタにまだ書き戻していない、編集途上のデータがあるか否かを判定する。
【0047】
編集領域224に有効データが存在しない場合(S611;No)は、次のステップS613に移行する。一方、編集領域224に有効データが存在する場合(S611;Yes)は、RAM102のプログラム領域222の一般セクタ更新プログラムにより、編集領域224に格納されている新セクタ格納データを更新対象セクタに格納する(S612)。
【0048】
次に、ブートデータ保存領域に有効データが存在するか否かを判定する(S613)。即ち、ブートデータ保存領域に新ブートデータが格納されているか否かを判定する。ブートデータ保存領域に有効データが存在しない場合(S613;No)は、次のステップS616に移行する。一方、ブートデータ保存領域に有効データが存在する場合(S613;Yes)は、ブートデータ保存領域に格納されている新ブートデータとブートセクタ201の旧ブートデータとを比較し、新ブートデータが旧ブートデータと異なるか否かを判定する(S614)。
【0049】
新ブートデータが旧ブートデータと同一の場合(S614;No)は、次のステップS616に移行する。最後に、ブートセクタ201の所定のアドレスへとジャンプすることにより、これ以降のモード終了に伴う各種の処理を書き換えモード終了プログラムに任せる(S616)。
【0050】
新ブートデータが旧ブートデータと異なる場合(S614;Yes)は、RAM102のプログラム領域222のブートセクタ更新プログラムにより、ブートデータ保存領域の新ブートデータをブートセクタ201に格納する(S615)。なお、ブートセクタ更新プログラムから呼び出し元に戻ってくることはない。
【0051】
書き換えモード終了プログラムは、S615および後述のS905からジャンプしてくることにより実行される。ここでは、書き換えモードにおける処理結果をホスト装置へ送信したり、制御装置の操作パネル、表示部等の出力部へ送信したり、また、処理結果に基づいた書き換えモードにおける所定の終了処理を実行する(S617)。
【0052】
図8は、一般セクタの書き換え処理の手順を示す図である。
まず、更新対象セクタをRAM102のプログラム領域222のセクタ消去プログラムにより一括消去する(S801)。次に、RAM102の編集領域224に格納されている更新対象セクタの新セクタ格納データを、書き込み可能なデータサイズ分(例えば、1ワード)取り出し(S802)、取り出したデータを更新対象セクタに書き込む(S803)。
【0053】
最後に、新セクタ格納データを更新対象セクタに全て書き込んだか否かを判定し(S804)、新セクタ格納データを更新対象セクタに全て書き込んでいない場合(S804;No)は、ステップS802に戻り、ステップS802からS804までを繰り返す。一方、新セクタ格納データを更新対象セクタに全て書き込んだ場合(S804;Yes)は、一般セクタの書き換え処理を終了する。
【0054】
図9は、ブートセクタの書き換え処理の手順を示す図である。
まずブートセクタを、RAM102のプログラム領域222のセクタ消去プログラムにより一括消去する(S901)。次に、ブートセクタ保存領域に格納されている新ブートデータを、書き込み可能なデータサイズ分(例えば、1ワード)取り出し(S902)、取り出したデータをブートセクタに書き込む(S903)。
【0055】
続いて、新ブートデータをブートセクタに全て書き込んだか否かを判定し(S904)、新ブートデータをブートセクタに全て書き込んでいない場合(S904;No)は、ステップS902に戻り、ステップS902からS904までを繰り返す。一方、新ブートデータをブートセクタに全て書き込んだ場合(S904;Yes)は、次のステップS905に移行する。
【0056】
最後に、ブートセクタ201の所定のアドレスへとジャンプすることにより、これ以降のモード終了に伴う各種の処理を書き換えモード終了プログラムに任せる(S905)。
【0057】
図10は、TMPセクタを使用した書き換え処理によるデータ遷移を説明する図である。ここで、更新データとしてメインプログラムデータとブートデータがダウンロードされる場合を例に挙げて説明する。
書き換え用の更新データおよび更新データを格納すべきフラッシュメモリ101の領域を指定する格納指示データを取得し、RAM102のワーク領域221に格納する(図10の▲1▼)。
【0058】
更新データがメインプログラムセクタ202に格納される場合は、メインプログラムセクタ202の旧セクタ格納データをRAM102の編集領域224に取り出し(図10の▲2▼)、更新データおよび格納指示データに基づいて編集し、新セクタ格納データを生成する(図10の▲3▼)。メインプログラムセクタ202を消去し、RAM102の編集領域224の新セクタ格納データをメインプログラムセクタ202に書き込む(図10の▲4▼)。
【0059】
更新データがブートセクタ201に格納される場合は、格納指示データに基づいて、更新データをTMPセクタ203に書き込む(図10の▲5▼)。ブートセクタ201の旧ブートデータとTMPセクタ203の新ブートデータとを比較し(図10の▲6▼)、ブートセクタ201の旧ブートデータとTMPセクタ203の新ブートデータとが異なっている場合は、ブートセクタ201を消去し、TMPセクタ203の新ブートデータをブートセクタ201に書き込み(図10の▲7▼)、TMPセクタ203を消去する(図10の▲8▼)。ブートセクタ201の旧ブートデータとTMPセクタ203の新ブートデータとが同一の場合は、TMPセクタ203を消去する(図10の▲9▼)。
【0060】
図11は、TMP領域を使用した書き換え処理によるデータ遷移を説明する図である。ここで、更新データとしてメインプログラムデータとブートデータがダウンロードされる場合を例に挙げて説明する。
書き換え用の更新データおよび更新データを格納すべきフラッシュメモリ101の領域を指定する格納指示データを取得し、RAM102のワーク領域221に格納する(図11の▲1▼)。
【0061】
更新データがメインプログラムセクタ202に格納される場合は、メインプログラムセクタ202の旧セクタ格納データをRAM102の編集領域224に取り出し(図11の▲2▼)、更新データおよび格納指示データに基づいて編集し、新セクタ格納データを生成する(図11の▲3▼)。メインプログラムセクタ202を消去し、RAM102の編集領域224の新セクタ格納データをメインプログラムセクタ202に書き込む(図11の▲4▼)。
【0062】
更新データがブートセクタ201に格納される場合は、格納指示データに基づいて、更新データをTMP領域223に格納する(図11の▲5▼)。ブートセクタ201の旧ブートデータとTMP領域223の新ブートデータとを比較し(図11の▲6▼)、ブートセクタ201の旧ブートデータとTMP領域223の新ブートデータとが異なっている場合は、ブートセクタ201を消去し、TMP領域223の新ブートデータをブートセクタ201に書き込む(図11の▲7▼)。ブートセクタ201の旧ブートデータとTMP領域223の新ブートデータとが同一の場合は、そのままの状態とする。
【0063】
本発明のプログラムは、上述のフラッシュメモリ書き換え制御方法の各工程を実行させるプログラムである。
本発明の情報記録媒体は、上述のフラッシュメモリ書き換え制御方法の各工程を実行させるプログラムを記録したものである。また、本発明の情報記録媒体は、コンパクト・ディスク、フレキシブル・ディスク、ハード・ディスク、光磁気ディスク、ディジタル・バーサタイル・ディスク、磁気テープ、もしくはメモリ・カードであっても良い。
【0064】
【発明の効果】
以上説明したように、本発明によれば、以下の効果を奏する。
ブートセクタの書き換え用のデータである新ブートデータをブートデータ保存領域に一時保存しておき、一般セクタの書き換えが終わった後にブートセクタを書き換えるので、ブートデータとメインプログラムデータをまとめて1回ダウンロードするだけで機器のファームウェアのバージョンアップが可能となる。即ち作業者は、以前のファームウェアバージョンを調べて作業手順を選択するという煩雑な作業から解放され、いつでも1回のダウンロード作業にてファームウェアのバージョンアップを完遂することができる。更に、1回のダウンロード作業のみであることから書き換え作業に要する時間を削減することができる。
【0065】
また、ブートデータ保存領域に格納されている新ブートデータとブートセクタに格納されている旧ブートデータとを比較し、新ブートデータと旧ブートデータとが異なるときにのみブートセクタを書き換えることにより、不慮の電源断等によりシステムが起動不能となるリスクを軽減することができる。
【0066】
また、新ブートデータを格納するブートデータ保存領域として、RAM上にTMP領域を備えることにより、フラッシュメモリの記憶容量が小さいシステムにおいても、1回のダウンロード作業にてブートセクタおよび/または一般セクタを書き換えることが可能である。
【0067】
また、新ブートデータを格納するブートデータ保存領域として、フラッシュメモリ上にTMPセクタを備えることにより、RAMの記憶容量が小さいシステムにおいても、1回のダウンロード作業にてブートセクタおよび/または一般セクタを書き換えることが可能である。
【0068】
また、書き換えモード終了プログラムの配置アドレスを固定化することにより、ブートセクタ更新プログラムの末尾で行うべき終了処理をフラッシュメモリ上で実行できるようになり、したがって、実行時はRAM上に置かれるブートセクタ更新プログラムが軽量化され、RAMの記憶容量がより小さいシステムにおいても、1回のダウンロード作業にてブートセクタおよび/または一般セクタを書き換えることが可能である。
【図面の簡単な説明】
【図1】フラッシュメモリ書き換え制御システムのハードウェアの構成を示す図である。
【図2】新ブートデータを格納する領域をRAM上に設けた場合のフラッシュメモリ書き換え制御システムにおけるフラッシュメモリおよびRAMの構成を示す図である。
【図3】新ブートデータを格納する領域をフラッシュメモリ上に設けた場合のフラッシュメモリ書き換え制御システムにおけるフラッシュメモリおよびRAMの構成を示す図である。
【図4】フラッシュメモリ書き換え制御システムのソフトウェアの機能ブロックの構成を示す図である。
【図5】フラッシュメモリ書き換え制御システムのモード遷移を示す図である。
【図6】フラッシュメモリの書き換えモード処理の手順を示す図である。
【図7】フラッシュメモリの書き換えモード処理の手順を示す図である(図6の続き)。
【図8】一般セクタの書き換え処理の手順を示す図である。
【図9】ブートセクタの書き換え処理の手順を示す図である。
【図10】TMPセクタを使用した書き換え処理によるデータ遷移を説明する図である。
【図11】TMP領域を使用した書き換え処理によるデータ遷移を説明する図である。
【図12】従来の書き換え処理によるデータ遷移を説明する図である。
【符号の説明】
100 フラッシュメモリ書き換え制御システム
101 フラッシュメモリ
102 RAM
103 CPU
201 ブートセクタ
202 メインプログラムセクタ
203 TMPセクタ
204 その他の領域
221 ワーク領域
222 プログラム領域
223 TMP領域
224 編集領域
Claims (12)
- フラッシュメモリの書き換え用の更新データおよび前記更新データを格納するための前記フラッシュメモリの領域を指定する格納指示データをRAM上に取得し、更新データを格納すべき更新対象セクタを特定する更新データ取得部と、
前記更新データ取得部によって取得した前記更新データおよび前記格納指示データに基づいて、前記フラッシュメモリのブートセクタ以外の前記更新対象セクタである一般セクタに格納するための新セクタ格納データを生成し、前記更新対象セクタを消去し、前記更新対象セクタに新セクタ格納データを書き込む一般セクタ書き換え部と、
前記更新データ取得部によって取得した前記更新データおよび前記格納指示データに基づいて、前記ブートセクタに格納するための新ブートデータをブートデータ保存領域に格納する一時データ格納部と、
前記ブートセクタを消去した後、前記一時データ格納部によって格納された前記ブートデータ保存領域の前記新ブートデータを前記ブートセクタに書き込むブートセクタ書き換え部とを備え、
1回のダウンロード処理により前記ブートセクタおよび/または前記一般セクタを書き換えることを可能にしたフラッシュメモリ書き換え制御システム。 - 前記一時データ格納部によって格納された前記ブートデータ保存領域の前記新ブートデータと、前記ブートセクタに既に格納されている旧ブートデータとを比較し、前記新ブートデータと旧ブートデータとが異なる場合にのみ前記ブートセクタ書き換え部を実行させるブートデータ比較部を、更に備えた請求項1に記載のフラッシュメモリ書き換え制御システム。
- 前記フラッシュメモリの書き換えモード終了処理を制御するための情報である書き換えモード終了制御情報の配置アドレスを固定値とすることを特徴とする、請求項1または2に記載のフラッシュメモリ書き換え制御システム。
- 前記ブートデータ保存領域が、少なくとも前記新ブートデータを格納可能な前記フラッシュメモリの所定のセクタであることを特徴とする、請求項1から3のいずれか1項に記載のフラッシュメモリ書き換え制御システム。
- 前記ブートデータ保存領域が、少なくとも前記新ブートデータを格納可能な前記RAMの所定の領域であることを特徴とする、請求項1から3のいずれか1項に記載のフラッシュメモリ書き換え制御システム。
- 下記の工程を備えた、1回のダウンロード処理により前記ブートセクタおよび/または前記一般セクタを書き換えることを可能にしたフラッシュメモリ書き換え制御方法。
(a)フラッシュメモリの書き換え用の更新データおよび前記更新データを格納すべき前記フラッシュメモリの領域を指定する格納指示データをRAM上に取得し、更新データを格納するための更新対象セクタを特定する更新データ取得工程と、
(b)前記更新データ取得工程によって取得した前記更新データおよび前記格納指示データに基づいて、前記フラッシュメモリのブートセクタ以外の前記更新対象セクタである一般セクタに格納するための新セクタ格納データを生成し、前記更新対象セクタを消去し、前記更新対象セクタに新セクタ格納データを書き込む一般セクタ書き換え工程と、
(c)前記更新データ取得工程によって取得した前記更新データおよび前記格納指示データに基づいて、前記ブートセクタに格納するための新ブートデータをブートデータ保存領域に格納する一時データ格納工程と、
(d)前記ブートセクタを消去した後、前記一時データ格納工程によって格納された前記ブートデータ保存領域の前記新ブートデータを前記ブートセクタに書き込むブートセクタ書き換え工程。 - 前記一時データ格納工程(c)と前記ブートセクタ書き換え工程(d)との間に、(e)前記一時データ格納工程によって格納された前記ブートデータ保存領域の前記新ブートデータと、前記ブートセクタに既に格納されている旧ブートデータとを比較し、前記新ブートデータと旧ブートデータとが異なる場合にのみ前記ブートセクタ書き換え工程を実行させるブートデータ比較工程を、更に備えた請求項6に記載のフラッシュメモリ書き換え制御方法。
- 前記フラッシュメモリの書き換えモード終了処理を制御するための情報である書き換えモード終了制御情報の配置アドレスを固定値とすることを特徴とする、請求項6または7に記載のフラッシュメモリ書き換え制御方法。
- 前記ブートデータ保存領域が、少なくとも前記新ブートデータを格納可能な前記フラッシュメモリの所定のセクタであることを特徴とする、請求項6から8のいずれか1項に記載のフラッシュメモリ書き換え制御方法。
- 前記ブートデータ保存領域が、少なくとも前記新ブートデータを格納可能な前記RAMの所定の領域であることを特徴とする、請求項6から8のいずれか1項に記載のフラッシュメモリ書き換え制御方法。
- 請求項6から10のいずれか1項に記載のフラッシュメモリ書き換え制御方法の各工程を実行させるプログラム。
- 請求項6から10のいずれか1項に記載のフラッシュメモリ書き換え制御方法の各工程を実行させるプログラムを記録したコンピュータに読み取り可能な情報記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002166245A JP2004013536A (ja) | 2002-06-06 | 2002-06-06 | フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002166245A JP2004013536A (ja) | 2002-06-06 | 2002-06-06 | フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004013536A true JP2004013536A (ja) | 2004-01-15 |
Family
ID=30433878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002166245A Pending JP2004013536A (ja) | 2002-06-06 | 2002-06-06 | フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004013536A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005250882A (ja) * | 2004-03-04 | 2005-09-15 | Fuji Xerox Co Ltd | 情報処理装置およびプログラムの書き換え方法 |
JP2007148695A (ja) * | 2005-11-25 | 2007-06-14 | Konica Minolta Business Technologies Inc | 情報処理装置およびブートプログラムの書き換え方法 |
JP2007249340A (ja) * | 2006-03-14 | 2007-09-27 | Fujitsu Ltd | ソフトウェアアップデート方法、アップデート管理プログラム、情報処理装置 |
US7634648B2 (en) | 2005-07-12 | 2009-12-15 | Seiko Epson Corporation | Data processing apparatus and control method for a data processing apparatus that temporarily provides a plurality of boot sectors in flash ROM |
JP2010079382A (ja) * | 2008-09-24 | 2010-04-08 | Hitachi Kokusai Electric Inc | ソフトウエア更新方法 |
JP2015111355A (ja) * | 2013-12-06 | 2015-06-18 | フクダ電子株式会社 | 電子機器及びそのプログラム更新方法 |
CN109669628A (zh) * | 2018-11-14 | 2019-04-23 | 广州市中海达测绘仪器有限公司 | 基于flash设备的数据存储管理方法及装置 |
-
2002
- 2002-06-06 JP JP2002166245A patent/JP2004013536A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005250882A (ja) * | 2004-03-04 | 2005-09-15 | Fuji Xerox Co Ltd | 情報処理装置およびプログラムの書き換え方法 |
US7634648B2 (en) | 2005-07-12 | 2009-12-15 | Seiko Epson Corporation | Data processing apparatus and control method for a data processing apparatus that temporarily provides a plurality of boot sectors in flash ROM |
JP2007148695A (ja) * | 2005-11-25 | 2007-06-14 | Konica Minolta Business Technologies Inc | 情報処理装置およびブートプログラムの書き換え方法 |
JP2007249340A (ja) * | 2006-03-14 | 2007-09-27 | Fujitsu Ltd | ソフトウェアアップデート方法、アップデート管理プログラム、情報処理装置 |
JP2010079382A (ja) * | 2008-09-24 | 2010-04-08 | Hitachi Kokusai Electric Inc | ソフトウエア更新方法 |
JP2015111355A (ja) * | 2013-12-06 | 2015-06-18 | フクダ電子株式会社 | 電子機器及びそのプログラム更新方法 |
CN109669628A (zh) * | 2018-11-14 | 2019-04-23 | 广州市中海达测绘仪器有限公司 | 基于flash设备的数据存储管理方法及装置 |
CN109669628B (zh) * | 2018-11-14 | 2024-04-19 | 广州市中海达测绘仪器有限公司 | 基于flash设备的数据存储管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100507884B1 (ko) | 플래시 메모리의 메모리 재기록 제어 시스템, 메모리 재기록 제어 방법, 메모리 재기록 제어 방법의 각 공정을 실행시키는 프로그램을 기록한 정보 기록 매체 | |
US6668261B1 (en) | Method of upgrading a program using associated configuration data | |
US7634648B2 (en) | Data processing apparatus and control method for a data processing apparatus that temporarily provides a plurality of boot sectors in flash ROM | |
JP2001209543A (ja) | フラッシュ・マイコンにおけるプログラム書き換え方法 | |
US20070094656A1 (en) | Self-modifying copier for downloading executable code in a non-disruptive manner | |
US20070083744A1 (en) | Digital broadcast processing apparatus and boot loader upgrade method thereof | |
JP3838840B2 (ja) | コンピュータ | |
US20140325496A1 (en) | Apparatus and method for firmware upgrade using usb | |
JP2013520744A (ja) | 最小ブートイメージの生成方法及びその装置 | |
JP2017027244A (ja) | 情報処理装置と、前記情報処理装置による不揮発記憶装置の初期化方法、及びプログラム | |
JP2004013536A (ja) | フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 | |
US7007036B2 (en) | Method and apparatus for embedding configuration data | |
JP3655152B2 (ja) | ソフトウェア編集装置及び記憶媒体 | |
JP2010009553A (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP2009009494A (ja) | 情報処理装置、情報処理方法、制御プログラム | |
JP2005321843A (ja) | ファームウェアの書換え方法 | |
KR20090021695A (ko) | 플래쉬 메모리 롤백 시스템 및 그 방법 | |
JP4062429B2 (ja) | メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム | |
JPH11282690A (ja) | 制御プログラムの書込方法及び情報処理装置並びに情報処理システム | |
JP2002007152A (ja) | ダウンロード方法および装置 | |
US20040210683A1 (en) | Embedding driver patches | |
JP3817499B2 (ja) | 情報処理装置、制御方法、制御プログラム | |
JP3817500B2 (ja) | 情報処理装置、制御方法、制御プログラム | |
JP2018032119A (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
KR20000003162A (ko) | 효율적인 플래시 메모리 운용 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050308 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20070402 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071030 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071226 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080715 |