(57)【要約】【課題】  書き換えた後のフラッシュメモリ内に、書き換え前の古い内容が残ることのないフラッシュメモリ書き換えシステムを提供する。【解決手段】  複合処理装置１は、データ書き換え可能なフラッシュメモリ６３と、フラッシュメモリ６３に書き込まれるデータを一時的に保存するＲＡＭ６２と、フラッシュメモリ６３へのデータの書き込みを制御するＣＰＵ６１と、を備え、前記ＣＰＵ６１は、ホストコンピュータ１００から受信する書き換え方法指示コマンドに応じて、フラッシュメモリ６３の書き換え方法を選択する。【選択図】  図２
2005293476.tif 000002
【特許請求の範囲】
【請求項１】
データ書き換え可能なフラッシュメモリと、
前記フラッシュメモリに書き込まれるデータを一時的に保存する揮発性メモリと、
前記フラッシュメモリへの前記データの書き込みを制御する制御部とを備え、
前記制御部は、ホストコンピュータから受信する書き換え方法指示コマンドに応じて、前記フラッシュメモリの書き換え方法を選択することを特徴とするフラッシュメモリ書き換えシステム。
【請求項２】
前記制御部は、前記ホストコンピュータから受信する前記書き換え方法指示コマンドに応じて、部分書き換えプログラム及び一括書き換えプログラムのうち何れか一つを実行して、前記フラッシュメモリ内のデータを書き換えることを特徴とする請求項１記載のフラッシュメモリ書き換えシステム。
【請求項３】
前記制御部は、前記部分書き換えプログラムに応じて、前記フラッシュメモリ内の所定領域に記憶されているデータを前記揮発性メモリ内のデータ展開領域に展開し、前記フラッシュメモリ内の前記所定領域を初期化し、前記揮発性メモリにコピーされたデータを編集し、編集された前記データを前記フラッシュメモリの前記所定領域に書き込むことを特徴とする請求項２記載のフラッシュメモリ書き換えシステム。
【請求項４】
前記制御部は、前記一括書き換えプログラムに応じて、前記揮発性メモリ内のデータ展開領域を初期化し、前記フラッシュメモリ内の所定領域を初期化し、前記データ展開領域に書き込みデータを展開し、前記書き込みデータを前記フラッシュメモリの前記所定領域に書き込むことを特徴とする請求項２記載のフラッシュメモリ書き換えシステム。
【請求項５】
請求項１〜４の何れか１項に記載のフラッシュメモリ書き換えシステムを備えたプリンタ。
【請求項６】
請求項１〜４の何れか１項に記載のフラッシュメモリ書き換えシステムを備えた情報機器。
【請求項７】
ホストコンピュータから受信する書き換え方法指示コマンドに応じて、フラッシュメモリの書き換え方法を選択する選択ステップと、
選択された書き換え方法に応じてフラッシュメモリの書き換えを行う書き換えステップと、を備えたことを特徴とするフラッシュメモリ書き換え方法。
【請求項８】
前記書き換えステップでは、前記ホストコンピュータから受信する前記書き換え方法指示コマンドに応じて、部分書き換え及び一括書き換えのうち何れか一つを実行して、前記不揮発性メモリ内のデータを書き換えることを特徴とする請求項７記載のフラッシュメモリ書き換え方法。
【請求項９】
前記部分書き換えを実行する場合には、
前記不揮発性メモリ内の所定領域に記憶されているデータを前記揮発性メモリ内のデータ展開領域に展開するステップと、
前記不揮発性メモリ内の前記所定領域を初期化するステップと、
前記揮発性メモリにコピーされたデータを編集するステップと、
編集された前記データを前記不揮発性メモリの前記所定領域に書き込むステップと、を実行することを特徴とする請求項８記載のフラッシュメモリ書き換え方法。
【請求項１０】
前記一括書き換えを実行する場合には、
前記揮発性メモリ内のデータ展開領域を初期化するステップと、
前記不揮発性メモリ内の所定領域を初期化するステップと、
前記データ展開領域に書き込みデータを展開するステップと、
前記書き込みデータを前記不揮発性メモリの前記所定領域に書き込むステップと、を実行することを特徴とする請求項８記載のフラッシュメモリ書き換え方法。
【請求項１１】
ホストコンピュータから受信する書き換え方法指示コマンドに応じて、フラッシュメモリの書き換え方法を選択する選択ステップと、
選択された書き換え方法に応じてフラッシュメモリの書き換えを行う書き換えステップと、をコンピュータに実行させることを特徴とするフラッシュメモリ書き換えプログラム。
【請求項１２】
前記書き換えステップでは、前記ホストコンピュータから受信する前記書き換え方法指示コマンドに応じて、部分書き換え及び一括書き換えのうち何れか一つを実行して、前記不揮発性メモリ内のデータを書き換えることを特徴とする請求項１１記載のフラッシュメモリ書き換えプログラム。
【請求項１３】
前記部分書き換えを実行する場合には、
前記不揮発性メモリ内の所定領域に記憶されているデータを前記揮発性メモリ内のデータ展開領域に展開するステップと、
前記不揮発性メモリ内の前記所定領域を初期化するステップと、
前記揮発性メモリにコピーされたデータを編集するステップと、
編集された前記データを前記不揮発性メモリの前記所定領域に書き込むステップと、をコンピュータに実行させることを特徴とする請求項１２記載のフラッシュメモリ書き換えプログラム。
【請求項１４】
前記一括書き換えを実行する場合には、
前記揮発性メモリ内のデータ展開領域を初期化するステップと、
前記不揮発性メモリ内の所定領域を初期化するステップと、
前記データ展開領域に書き込みデータを展開するステップと、
前記書き込みデータを前記不揮発性メモリの前記所定領域に書き込むステップと、をコンピュータに実行させることを特徴とする請求項１２記載のフラッシュメモリ書き換えプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ書き換えシステム、フラッシュメモリ書き換え方法及びプログラムに関する。
【背景技術】
【０００２】
情報機器、たとえばプリンタ、スキャナ等の機器においては、ファームウェアがブートセクタとメインプログラムセクタとに分離されて、フラッシュメモリに格納されている。例えば、プリンタの場合、プリンタの通常モードを制御するプログラムであるメインプログラムがメインプログラムセクタに格納されている。また、プリンタの起動処理を実行する起動プログラムや、プリンタの書き換えモードを制御してフラッシュメモリを書き換える書き換えモードプログラムなどはブートセクタに格納されている。ここで、セクタとは、フラッシュメモリにおいて一括して消去書き込み可能な領域である。
【０００３】
フラッシュメモリの書き換えは、セクタ単位で行われる。通常、情報機器への新しい機能の追加や、ファームウェアのバグ修正や、特定顧客向けのカスタマイズなどのために、情報機器のファームウェアはバージョンアップされるので、フラッシュメモリの書き換えは比較的頻繁に行われる。
【０００４】
従来のフラッシュメモリの書き換え時には、先ず、フラッシュメモリ内の更新対象セクタ内のデータをＲＡＭにコピーする。そして、コピーの終了後、更新対象セクタをセクタ消去プログラムにより一括消去（セクタの初期化）する。
【０００５】
次に、ＲＡＭにコピーされたデータを編集し、ＲＡＭでの編集の終了後、編集されたデータ（以下、新セクタ格納データ）を、書き込み可能なデータサイズ分(例えば、1ワード)取り出して更新対象セクタに書き込む。そして、新セクタ格納データを更新対象セクタに全て書き込んだか否かを判定し、新セクタ格納データを更新対象セクタに全て書き込んでいない場合には書き込みを続行し、一方新セクタ格納データを更新対象セクタに全て書き込んだ場合には、セクタの書き換え処理を終了する（特許文献１参照）。
【特許文献１】特開2004-13536号公報(請求項1)
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述のフラッシュメモリの書き換え方法では、フラッシュメモリのプログラムの一部だけを書き換える場合には、書き換え対象のプログラムコードを1セクタ単位でＲＡＭにコピーしてからＲＡＭ上で編集し、書き換えた内容をフラッシュメモリのセクタに書き戻すという手順により実行されている。
【０００７】
この手順では、図６（ｂ）のように１セクタ中の書き換え前のデータ領域が書き換え後のデータ領域と全く同じであり、例えばフラッシュメモリ中に記録された所定値の変更（例えば“値１”から“値０”への変更）等の場合には問題が発生しないが、図６（ａ）に示すように、プログラム全体におよぶ更新が必要で、１セクタ中の書き換え前のデータ領域が書き換え後のデータ領域より大きい場合、書き換え後のセクタ中に書き換え前の古い内容が一部残ってしまう可能性がある。この場合、書き換え後のセクタ中のファームウェアは、古い内容のデータにはアクセスしないため問題が発生しないと考えられるが、この書き換えにより厳密には製造メーカ内で評価中のファームウェア（旧プログラム領域なし）と製品に組み込まれたファームウェア（旧プログラム領域あり）が全く同じではなくなる。したがって、ファームウェア中にプログラムエラー等が存在した場合、製品版のファームウェアでは、偶然旧プログラム領域中の値を読んで装置が異常動作する等、評価中には顕在化しなかった問題が生じてしまうおそれがあり、ファームウェアの品質を確保できたとは言えない状況が生じてしまう虞もある。
【０００８】
本発明は、書き換え前の領域より小さい領域の書き換えを実行した場合でも、書き換えた後のフラッシュメモリのセクタには、書き換えた新プログラム領域の外部に、書き換え前の古い内容が残ることのないフラッシュメモリ書き換えシステム、フラッシュメモリ書き換え方法及びプログラムを提供しつつ、必要な状況に応じて、部分的なフラッシュメモリの書き換え方法を選択する方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
（１）  データ書き換え可能なフラッシュメモリと、
前記フラッシュメモリに書き込まれるデータを一時的に保存する揮発性メモリと、
前記フラッシュメモリへの前記データの書き込みを制御する制御部とを備え、
前記制御部は、ホストコンピュータから受信する書き換え方法指示コマンドに応じて、前記フラッシュメモリの書き換え方法を選択することを特徴とするフラッシュメモリ書き換えシステム。
（２）  前記制御部は、前記ホストコンピュータから受信する前記書き換え方法指示コマンドに応じて、部分書き換えプログラム及び一括書き換えプログラムのうち何れか一つを実行して、前記フラッシュメモリ内のデータを書き換えることを特徴とする（１）記載のフラッシュメモリ書き換えシステム。
（３）  前記制御部は、前記部分書き換えプログラムに応じて、前記フラッシュメモリ内の所定領域に記憶されているデータを前記揮発性メモリ内のデータ展開領域に展開し、前記フラッシュメモリ内の前記所定領域を初期化し、前記揮発性メモリにコピーされたデータを編集し、編集された前記データを前記フラッシュメモリの前記所定領域に書き込むことを特徴とする（２）記載のフラッシュメモリ書き換えシステム。
（４）  前記制御部は、前記一括書き換えプログラムに応じて、前記揮発性メモリ内のデータ展開領域を初期化し、前記フラッシュメモリ内の所定領域を初期化し、前記データ展開領域に書き込みデータを展開し、前記書き込みデータを前記フラッシュメモリの前記所定領域に書き込むことを特徴とする（２）記載のフラッシュメモリ書き換えシステム。
（５）  （１）〜（４）の何れか１項に記載のフラッシュメモリ書き換えシステムを備えたプリンタ。
（６）  （１）〜（４）の何れか１項に記載のフラッシュメモリ書き換えシステムを備えた情報機器。
（７）  ホストコンピュータから受信する書き換え方法指示コマンドに応じて、フラッシュメモリの書き換え方法を選択する選択ステップと、
選択された書き換え方法に応じてフラッシュメモリの書き換えを行う書き換えステップと、を備えたことを特徴とするフラッシュメモリ書き換え方法。
（８）  前記書き換えステップでは、前記ホストコンピュータから受信する前記書き換え方法指示コマンドに応じて、部分書き換え及び一括書き換えのうち何れか一つを実行して、前記不揮発性メモリ内のデータを書き換えることを特徴とする（７）記載のフラッシュメモリ書き換え方法。
（９）  前記部分書き換えを実行する場合には、
前記不揮発性メモリ内の所定領域に記憶されているデータを前記揮発性メモリ内のデータ展開領域に展開するステップと、
前記不揮発性メモリ内の前記所定領域を初期化するステップと、
前記揮発性メモリにコピーされたデータを編集するステップと、
編集された前記データを前記不揮発性メモリの前記所定領域に書き込むステップと、を実行することを特徴とする（８）記載のフラッシュメモリ書き換え方法。
（１０）  前記一括書き換えを実行する場合には、
前記揮発性メモリ内のデータ展開領域を初期化するステップと、
前記不揮発性メモリ内の所定領域を初期化するステップと、
前記データ展開領域に書き込みデータを展開するステップと、
前記書き込みデータを前記不揮発性メモリの前記所定領域に書き込むステップと、を実行することを特徴とする（８）記載のフラッシュメモリ書き換え方法。
（１１）  ホストコンピュータから受信する書き換え方法指示コマンドに応じて、フラッシュメモリの書き換え方法を選択する選択ステップと、
選択された書き換え方法に応じてフラッシュメモリの書き換えを行う書き換えステップと、をコンピュータに実行させることを特徴とするフラッシュメモリ書き換えプログラム。
（１２）  前記書き換えステップでは、前記ホストコンピュータから受信する前記書き換え方法指示コマンドに応じて、部分書き換え及び一括書き換えのうち何れか一つを実行して、前記不揮発性メモリ内のデータを書き換えることを特徴とする（１１）記載のフラッシュメモリ書き換えプログラム。
（１３）  前記部分書き換えを実行する場合には、
前記不揮発性メモリ内の所定領域に記憶されているデータを前記揮発性メモリ内のデータ展開領域に展開するステップと、
前記不揮発性メモリ内の前記所定領域を初期化するステップと、
前記揮発性メモリにコピーされたデータを編集するステップと、
編集された前記データを前記不揮発性メモリの前記所定領域に書き込むステップと、をコンピュータに実行させることを特徴とする（１２）記載のフラッシュメモリ書き換えプログラム。
（１４）  前記一括書き換えを実行する場合には、
前記揮発性メモリ内のデータ展開領域を初期化するステップと、
前記不揮発性メモリ内の所定領域を初期化するステップと、
前記データ展開領域に書き込みデータを展開するステップと、
前記書き込みデータを前記不揮発性メモリの前記所定領域に書き込むステップと、をコンピュータに実行させることを特徴とする（１２）記載のフラッシュメモリ書き換えプログラム。
【発明の効果】
【００１０】
本発明によれば、部分書き換えの方が好ましい状況においては、フラッシュメモリの部分書き換えを実行させ、そして一括書き換えの方が好ましい状況においては、フラッシュメモリの一括書き換えを実行させることができる。すなわち、書き換え前の領域より書き換え後の領域が小さい時等、部分書き換えを行った場合には、書き換えた後のフラッシュメモリのセクタに書き換えた新データ領域の外部に、書き換え前の古い内容が残るような場合には一括書き換えを行い、それ以外の場合には部分書き換えを実行するように構成することができる。これにより、フラッシュメモリ内に常に不要なデータが存在しない状態を作り出すことが可能となり、誤動作の少ないシステムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら、本発明に係るフラッシュメモリ書き換えシステムの実施の形態について詳細に説明する。以下の説明では、フラッシュメモリ書き換えシステムを備えた複合処理装置を例に挙げ、この複合処理装置のファームウェアを書き換える場合について例示する。
【００１２】
図１は、本実施形態の複合処理装置を含むデータ処理システムを示す斜視図である。
本実施形態の複合処理装置１は、図１に示すように、給紙部３に装填される小切手Ｓを筐体１ａに形成された用紙搬送路Ｐ１に沿って排紙部４まで搬送するとともに、カード挿入口２０から挿入される第２の読み取り媒体であるカードＣを同じく筐体１ａに形成された用紙搬送路Ｐ２に沿って搬送可能に構成されている。そして、複合処理装置１は、用紙搬送路Ｐ１に沿って小切手Ｓを搬送しながら、小切手Ｓ上の画像を読み取り、小切手Ｓに印字された磁気文字を読み取り、かつ小切手Ｓ上への印字を行うとともに、用紙搬送路Ｐ２に沿ってカードＣを搬送しながら、カードＣ上の画像を読み取ることが可能な画像読取装置兼磁気文字読み取り装置兼印字装置である。複合処理装置１は、通信ケーブル５０を介してホストコンピュータ１００と通信可能に接続されている。
【００１３】
ホストコンピュータ１００は、本体部１００ａと、この本体部１００ａに一体に設けられたディスプレイとしての表示部１０３と、オペレータが各種入力を行うための入力部１０２を有している。このホストコンピュータ１００は、複合処理装置１を制御する制御端末であり、複合処理装置１は、このホストコンピュータ１００から送信される各種制御コマンドに応じて画像読取、印字、磁気文字読取等の実行を行う。ホストコンピュータ１００は、ファームウェアの書き換え時には、複合処理装置１にファームウェア書き換え指示コマンドを送信するとともに、新しいファームウェアデータをコマンド形式で送信する。これにより、複合処理装置１は、フラッシュメモリ内のファームウェアの書き換えを実行する。
【００１４】
図２は、本実施形態の複合処理装置１とホストコンピュータ１００を備えたデータ処理システムの電気的構成を示すブロック図であり、図３はフラッシュメモリ６３内に保存されたデータを示すメモリマップである。
【００１５】
まず、複合処理装置１の構成について説明する。
複合処理装置１は、ＣＰＵ６１と、ＲＡＭ６２と、フラッシュメモリ６３と、通信制御部６４と、搬送制御部６５と、印字制御部６６と、画像読取制御部６７と、磁気文字読取制御部６８とを備えて構成されている。
【００１６】
ＣＰＵ６１は、複合処理装置１の制御中枢を担うメイン制御部である。ＣＰＵ６１は、フラッシュメモリ６３に書き込まれているファームウェアを実行して、複合処理装置１の全体を制御する各種処理を実行する。
【００１７】
ＲＡＭ６２は、複合処理装置１のメインメモリとして設けられた揮発性のメモリである。ＲＡＭ６２は、ＣＰＵ６１の各種演算における一時データバッファ、受信データを一時保存する受信バッファ、印刷データを一時保存する印刷バッファ等として用いられる。また、ＲＡＭ６２は、後述するフラッシュメモリ６３のデータ書き換え時におけるデータ一時退避・書き換え領域としても用いられる。
【００１８】
フラッシュメモリ６３は、複合処理装置１で実行されるブートプログラム、メインプログラム等のファームウェアや複合処理装置１の制御に用いられる各種設定値等が書き込まれた不揮発性のメモリであり、複合処理装置１の電源オフ時でもその内部のデータを失うことなく、保持することができる。
【００１９】
図３に示すように、フラッシュメモリ６３内の記憶領域は、複数のセクタと呼ばれる領域に分割されている。本実施形態の例では、セクタ１０に複合処理装置１の起動処理を実行するブートプログラムを記憶する「ブートプログラム領域」が、セクタ７およびセクタ８に起動処理後の複合処理装置１の各種動作を制御するメインプログラムを記憶する「メインプログラム領域」が、そしてセクタ９に各種設定値が記憶された「データ領域」がそれぞれ割り当てられている。
この、フラッシュメモリ６３は、各セクタ単位でのみデータの消去および書き込みが可能となっている。フラッシュメモリ６３のデータを書き換える具体的な方法については、後述する。
【００２０】
通信制御部６４は、ホストコンピュータ１００との通信を制御する制御部である。ホストコンピュータ１００から送信される各種コマンドは、通信制御部６４を介して受信され、ＲＡＭ６２内の受信バッファに保存される。また、複合処理装置１内の各種状況を示すステータス信号は、この通信制御部６４を介してホストコンピュータ１００に送信される。
【００２１】
搬送制御部６５は、用紙搬送路Ｐ１内の小切手Ｓの搬送動作および用紙搬送路Ｐ２内のカードＣの搬送動作を制御する制御部である。具体的に、搬送制御部６５は、図示せぬ用紙検出器の検出結果に応じて、図示せぬステッピングモータを駆動して各用紙搬送路Ｐ１、Ｐ２に沿って配置された搬送ローラを回転駆動することにより、小切手ＳやカードＣを搬送する。
【００２２】
印字制御部６６は、筐体１ａ内に設けられた印字ヘッドを駆動する制御部である。複合処理装置１内には、インクジェット方式の印字ヘッドが設けられており、ホストコンピュータ１００から受信した印字データに基づき、この印字ヘッドから吐出されるインク量および吐出タイミング等を制御する。
【００２３】
画像読取制御部６７は、複合処理装置１の用紙搬送路Ｐ１、Ｐ２に沿って設けられた画像読取センサ（スキャナ）を制御する制御部である。画像読取センサは、この画像読取制御部６７からの指示に応じて、用紙搬送路Ｐ１、Ｐ２を搬送される小切手ＳまたはカードＣに読取光を照射し、その反射光を受信して小切手ＳまたはカードＣの画像データを取得する。
【００２４】
磁気文字読取制御部６８は、複合処理装置１の用紙搬送路Ｐ１に沿って設けられたＭＩＣＲ（Magnet Ink Character Reader）の動作制御を行う制御部である。ＭＩＣＲは、磁気文字読取制御部６８の指示に応じて、用紙搬送路Ｐ１に沿って搬送される小切手Ｓに磁気インクで印字された磁気文字を読み取り、磁気文字データを取得する。
【００２５】
次に、ホストコンピュータ１００の構成について説明する。
ホストコンピュータ１００は、主制御部１０１と、入力部１０２と、表示部１０３と、通信制御部１０４と、データ保持部１０５とを備えている。
【００２６】
主制御部１０１は、ＣＰＵ、ＲＡＭ、ＲＯＭ、他各種コントローラから構成されるホストコンピュータ１００の制御中枢であり、入力部１０２、表示部１０３、通信制御部１０４、データ保持部１０５の動作を制御する。また、主制御部１０１は、各種プログラムを実行することにより、複合処理装置１を制御するための各種コマンドを生成し、複合処理装置１を制御する。
【００２７】
入力部１０２は、オペレータが各種データ入力をするためのマンマシンインターフェースであり、キーボードや各種入力機器等から構成することができる。また、表示部１０３は、液晶等のディスプレイ装置で構成されており、オペレータへの視覚的な情報の通知を行う。
【００２８】
通信制御部１０４は、複合処理装置１との通信を制御する制御部である。主制御部１０１によって生成された各種コマンドは、この通信制御部１０４を介して複合処理装置１に送信される。また、複合処理装置１内の各種状況を示すステータス信号は、この通信制御部１０４を介して複合処理装置１から受信される。
【００２９】
データ保持部１０５は、ホストコンピュータ１００のデータ記憶領域として構成されるものである。本実施形態では、このデータ保持部１０５にフラッシュメモリ６３内の書き換え用データが保存されているとして、以下説明を行う。
【００３０】
次に、本実施形態における複合処理装置１のフラッシュメモリ１の書き換えについて説明する。ここでは、まずフラッシュメモリ１の書き換え方法を選択するコマンドについて説明する。
【００３１】
本実施形態のホストコンピュータ１００は、複合処理装置１にフラッシュメモリ６３の書き換え方法を指定する書き換え方式選択コマンドを送信可能に構成されている。書き換え方式選択コマンドの形式としては、たとえば、以下のようなものが例示される。
ＥＳＣ  １００  ｎ    ・・・（１）
【００３２】
式（１）において、“ＥＳＣ”はコマンド体系の種類を示しており、引数“１００”は、このＥＳＣコマンド体系におけるコマンドの種類、ここでは式（１）のコマンドがフラッシュメモリ書き換え方法を指定するコマンドであることを示している。そして、ｎは、書き換え方法を示す因数であり、例えば「ｎ＝０」の場合は、このコマンドがフラッシュメモリの部分書き換えを、そして「ｎ＝１」の場合はフラッシュメモリの一括書き換えをそれぞれ指定するものであることを意味している。
【００３３】
図４は、フラッシュメモリ６３の書き換え方法を模式的に示す模式図であり、（ａ）はフラッシュメモリのセクタｎの部分書き換えを、（ｂ）はフラッシュメモリのセクタｎの一括書き換えを示している。
【００３４】
まず、図４（ａ）を参照しながら、フラッシュメモリの部分書き換えについて説明する。
「フラッシュメモリの部分書き換え」とは、フラッシュメモリ６３のセクタｎにおける一部のデータのみを書き換える処理を指す。この部分書き換えにおいては、ＣＰＵ６１がフラッシュメモリ６３内の例えばブートプログラム領域に書き込まれたフラッシュメモリ書き換えプログラムを実行することにより処理がなされる。
【００３５】
図４（ａ）を参照しながら具体的に説明すると、この部分書き換えでは、まずデータの書き換え対象となるフラッシュメモリ６３内のセクタｎ内の全データをＲＡＭ６２内のデータ展開領域にコピーする（ステップＳ１）。
【００３６】
ＲＡＭ６２内のデータ展開領域にセクタｎの全データがコピーされると、セクタｎの全データＸは、フラッシュメモリ６３内におけるアドレスに対応してＲＡＭ６２内に展開された状態となる。そして、この全データＸのうち、部分書き換えを行う書き換え領域Ｙのデータを新しいデータで置換することにより書き換えが実行され、書き換え領域Ｙが書き換えれたセクタｎのデータＺが生成される（ステップＳ２）。
なお、この部分書き換えを行う場合には、書き換えを行う前と後で書き換え領域Ｙの大きさが変化してはならない。
【００３７】
次に、フラッシュメモリ６３内のセクタｎに対して初期化処理が施され、セクタｎ内のデータは一括消去（例えば、すべてのアドレスに何も書き込まれていない状態＝０ｘＦＦが書き込まれている状態）される（ステップＳ３）。そして、ＲＡＭ６２内に展開されている書き換え後のセクタｎのデータＺは、フラッシュメモリ６３のセクタｎへ書き込みがなされ、セクタｎに記録されることにより、フラッシュメモリの部分書き換えが終了する（ステップＳ４）。
以上が、「フラッシュメモリの部分書き換え」のフローである。このフラッシュメモリの部分書き換えは、例えばフラッシュメモリ中に記録された所定値の変更（例えば“値１”から“値０”への変更）等、書き換えを行う前と後で書き換え領域Ｙの大きさが変化しないような状況の場合に好適に適用できる。
【００３８】
次に、図４（ｂ）を参照しながら、フラッシュメモリの一括書き換えについて説明する。
「フラッシュメモリの一括書き換え」とは、図４（ａ）を使って述べた「フラッシュメモリの部分書き換え」のフローの中で、フラッシュメモリ６３からＲＡＭ６２へのデータのコピーを行うことなくフラッシュメモリ６３のセクタｎの全データを消去し、全く新しいデータをセクタｎに書き込む処理を指す。この一括書き換えにおいても、ＣＰＵ６１がフラッシュメモリ６３内の例えばブートプログラム領域に書き込まれたフラッシュメモリ書き換えプログラムを実行することにより処理がなされる。
【００３９】
図４（ｂ）を参照しながら具体的に説明すると、この一括書き換えでは、まずフラッシュメモリ６３のセクタｎに書き込まれるべきデータが展開される予定のＲＡＭ６２内のデータ展開領域が初期化されて、データ展開領域にデータが無い状態（例えば、すべてのアドレスに何も書き込まれていない状態＝０ｘＦＦが書き込まれている状態）とされる（ステップＳ１１）。
【００４０】
ＲＡＭ６２のデータ展開領域の初期化がなされると、この初期化がなされたデータ展開領域内にセクタｎに書き込まれるデータＷが書き込まれて、セクタｎ内のアドレスに応じて展開される（ステップＳ１２）。そして、フラッシュメモリ６３内のセクタｎに対して初期化処理が施され、セクタｎ内のデータは一括消去（例えば、すべてのアドレスに何も書き込まれていない状態＝０ｘＦＦが書き込まれている状態）される（ステップＳ１３）。そして、このＲＡＭ６２に展開されたデータＷをフラッシュメモリ６３のセクタｎに書き込まれ、セクタｎに記録されることにより、フラッシュメモリの一括書き換えが終了する（ステップＳ１４）。
以上が、「フラッシュメモリの一括書き換え」のフローである。このフラッシュメモリの一括書き換えは、例えばプログラム全体におよぶ完全更新時の書き換え等、フラッシュメモリ中の書き換えを行う前と後でセクタｎ内のデータ量が変化するような状況の場合に好適に適用できる。
【００４１】
本実施形態では、このフラッシュメモリの部分書き換えと一括書き換えの特徴を考慮し、ホストコンピュータ１００は、書き換え方式選択コマンドを複合処理装置１に送信して、複合処理装置１におけるフラッシュメモリの書き換え方法を変化させるようにしている。複合処理装置１は、書き換え方式選択コマンドを受信し、そのコマンド解析を行った結果、部分書き換えが指示されていれば、例えばＲＡＭ６２内に部分書き換えに対応する書き換えプログラムを実行し、一方、一括書き換えが指示されていれば、ＲＡＭ６２内に一括書き換えに対応する書き換えプログラムを実行することにより、書き換え方法が選択される。
【００４２】
次に、このフラッシュメモリの書き換えの全体のフローを説明する。
図５は、本実施形態のフラッシュメモリの書き換えの全体の流れを示すフローチャートである。
【００４３】
まず、ホストコンピュータ１００は、例えばオペレータが入力部１０２を介して複合処理装置１００のフラッシュメモリ６３の書き換え指示を入力すると、複合処理装置１にフラッシュメモリ書き換えコマンドを送信して、フラッシュメモリ６３の書き換えモードへの移行を指示する（ステップＳ２１）。
【００４４】
複合処理装置１は、ホストコンピュータ１００からフラッシュメモリ書き換えコマンドを受信すると（ステップＳ２２）、複合処理装置１を再起動してＣＰＵ、ＲＡＭ等の初期化を行い、ブートプログラム領域からフラッシュメモリ書き換えプログラムを読み出して、フラッシュメモリ書き換えモードに移行するとともに、フラッシュメモリ書き換えモードへのホストコンピュータ１００に移行完了を通知する（ステップＳ２３）。
【００４５】
そして、ホストコンピュータ１００は、複合処理装置１がフラッシュメモリ書き換えモードへ移行すると、まず書き換え方法指示コマンドを複合処理装置１に送信して、フラッシュメモリ６３の書き換え方法として部分書き換えかまたは一括書き換えを指示する（ステップＳ２４）。そして、複合処理装置１は書き換え方法指示コマンドを受信すると（ステップＳ２５）、書き換え方法指示コマンドに応じたフラッシュメモリ６３の書き換えプログラムを実行する（ステップＳ２６）。
【００４６】
ここで、書き換え方法指示コマンドが部分書き換えを指示していれば、部分書き換えプログラムを実行し、ステップＳ２７でホストコンピュータ１００から送信される書き換えデータを基に、図４（ａ）に示すようにフラッシュメモリ６３のデータを書き換えが指示されたセクタ毎に部分書き換えする（ステップＳ２８）。
一方、書き換え方法指示コマンドが一括書き換えを指示していれば、一括書き換えプログラムを実行し、ステップＳ２７でホストコンピュータ１００から送信される書き換えデータを基に、図４（ｂ）に示すようにフラッシュメモリ６３のデータを書き換えが指示されたセクタ毎に一括書き換えする（ステップＳ２９）。
【００４７】
そして、ステップＳ２８及びステップＳ２９において、フラッシュメモリ６３の書き換えが終了すると、終了処理を行って複合処理装置１はリセットされて再起動される（ステップＳ３０）。これにより、複合処理装置１のフラッシュメモリ６３内のデータが書き換えられ、書き換え後は、フラッシュメモリ６３内の書き換えられたデータに基づいて、複合処理装置１は動作する。
以上が、本実施形態におけるフラッシュメモリ書き換えのフローである。
【００４８】
以上説明したように、本実施形態の複合処理装置１は、データ書き換え可能なフラッシュメモリ６３と、フラッシュメモリ６３に書き込まれるデータを一時的に保存するＲＡＭ６２と、フラッシュメモリ６３へのデータの書き込みを制御するＣＰＵ６１と、を備え、前記ＣＰＵ６１は、ホストコンピュータ１００から受信する書き換え方法指示コマンドに応じて、フラッシュメモリ６３の書き換え方法を選択する。
【００４９】
具体的には、ＣＰＵ６１は、ホストコンピュータ１００から受信する書き換え方法指示コマンドに応じて、部分書き換えプログラム及び一括書き換えプログラムのうち何れか一つのを実行して、フラッシュメモリ６３内のデータを書き換える。
【００５０】
具体的には、ＣＰＵ６１は、部分書き換えプログラムが実行される場合には、フラッシュメモリ６３内の所定領域に記憶されているデータをＲＡＭ６２内のデータ展開領域に展開し、そしてフラッシュメモリ６２内の所定領域を初期化し、ＲＡＭ６２に展開されたデータを編集し、編集されたデータをフラッシュメモリ６３の所定領域に書き込む。
【００５１】
また、ＣＰＵ６１は、一括書き換えプログラムが実行される場合には、ＲＡＭ６２内のデータ展開領域を初期化し、フラッシュメモリ６３内の所定領域を初期化し、データ展開領域に書き込みデータを展開し、書き込みデータをフラッシュメモリ６３の所定領域に書き込む。
【００５２】
本実施形態によれば、部分書き換えの方が好ましい状況においては、複合処理装置１にフラッシュメモリ６３の部分書き換えを実行させ、そして一括書き換えの方が好ましい状況においては、複合処理装置１にフラッシュメモリ６３の一括書き換えを実行させることができる。例えば、書き換え前の領域より書き換え後の領域が小さい時等部分書き換えを行った場合には、書き換えた後のフラッシュメモリのセクタに書き換えた新プログラム領域の外部に、書き換え前の古い内容が残るような場合には一括書き換えを行い、それ以外の場合には部分書き換えを実行するように構成することができる。
【００５３】
したがって、例えばフラッシュメモリ６３内のプログラム全体におよぶ完全更新時の書き換え等、フラッシュメモリ内のデータの増減が予想されるような場合には、複合処理装置１に一括書き換えを選択させることにより、書き換えられるセクタ内に書き換え前のプログラムが残らず、製造メーカー側が意図したとおりのデータ構造をフラッシュメモリ６３内に構築することができる。これにより、意図せぬプログラムエラー等により、書き換え後のプログラムを実行することにより書き換え前のプログラムの一部が実行され、誤動作が発生するといった問題の生じない複合処理装置１を提供することが可能となる。
【００５４】
一方、フラッシュメモリ６３内のある設定値を書き換える等、その領域の書き換えが他の領域に影響を及ぼさないような場合には、部分書き換えを選択させることにより、プログラムを書き換えることが可能となる。部分書き換えの場合には、ホストコンピュータ１００から複合処理装置へのデータ転送量が少なくてすむので、迅速にフラッシュメモリ６３内のデータ書き換えが実行できる。
【００５５】
また、ホストコンピュータ１００は、フラッシュメモリ６３内に不要なプログラムが残ったままとならないような書き換え方法を指示する書き換え方法指示コマンドを生成し、書き換え方法指示コマンドに応じてフラッシュメモリ６３内のデータを書き換えるように構成することにより、フラッシュメモリ６３内の書き換え履歴を保持していれば、今現在のフラッシュメモリ６３内の状態がどのような状態になっているか完全に把握することが可能である。したがって、フラッシュメモリ６３の書き換え回数が増加しても、常にフラッシュメモリ６３内の状態を鑑みながら、フラッシュメモリ６３内に不要なデータが存在しないように書き換えを実行して、常に安定な動作を実現できるデータ状態をフラッシュメモリ６３内に構築することができる。
【００５６】
なお、本実施形態では、印刷機能、画像読取機能及び磁気文字読取機能を備えた複合処理装置１を例に挙げて説明を行ったが、これに限られることはなく、印刷機能のみを有するプリンタ、画像読取機能のみを有するスキャナ、磁気文字読取機能のみを有するＭＩＣＲ装置、その他フラッシュメモリを有する各種情報機器に適用してもよい。
【図面の簡単な説明】
【００５７】
【図１】本発明にかかる複合処理装置を含むデータ処理システムを示す斜視図である。
【図２】複合処理装置とホストコンピュータを備えたデータ処理システムの電気的構成を示すブロック図である。
【図３】フラッシュメモリ内に保存されたデータを示すメモリマップである。
【図４】フラッシュメモリの書き換え方法を模式的に示す模式図であり、（ａ）はフラッシュメモリのセクタｎの部分書き換えを、（ｂ）はフラッシュメモリのセクタｎの一括書き換えを示している。
【図５】フラッシュメモリの書き換えの全体の流れを示すフローチャートである。
【図６】フラッシュメモリの書き換えの様子を示す模式図である。
【符号の説明】
【００５８】
１・・  複合処理装置  ６１・・ＣＰＵ  ６２・・ＲＡＭ  ６３・・フラッシュメモリ  ６４・・通信制御部  ６５・・搬送制御部  ６６・・印字制御部  ６７・・画像読取制御部  ６８・・磁気文字読取制御部  １００・・ホストコンピュータ  １０１・・主制御部  １０２・・入力部  １０３・・表示部  １０４・・通信制御部  １０５・・データ保持部
【図１】
2005293476.tif 000003
【図２】
2005293476.tif 000004
【図３】
2005293476.tif 000005
【図４】
2005293476.tif 000006
【図５】
2005293476.tif 000007
【図６】
2005293476.tif 000008