(57)【特許請求の範囲】
【請求項１】
少なくとも第１ファームウェアスペースおよび第２ファームウェアスペースを有するシステムに新しいファームウェアを格納する方法であって、
前記第１ファームウェアスペースが消去されているか否か判定し、
前記第１ファームウェアスペースが消去されている場合には、該第１ファームウェアスペースにファームウェアをダウンロードし、該第１ファームウェアスペースを有効とし、
前記第２ファームウェアスペースを消去するとともに、該第２ファームウェアスペースを無効とし、
前記第１ファームウェアスペースが消去されていない場合には、前記第２ファームウェアスペースが消去されているか否か判定し、
前記第２ファームウェアスペースが消去されている場合には、該第２ファームウェアスペースにファームウェアをダウンロードし、該第２ファームウェアスペースを有効とし、
前記第１ファームウェアスペースを消去するとともに、該第１ファームウェアスペースを無効とし、
前記第２ファームウェアスペースが消去されていない場合には、前記第１ファームウェアスペースが有効であるか否か判定し、
前記第１ファームウェアスペースが有効でない場合には、該第１ファームウェアスペースにファームウェアをダウンロードし、該第１ファームウェアスペースを有効とし、前記第２ファームウェアスペースを消去するとともに、該第２ファームウェアスペースを無効とし、
前記第１ファームウェアスペースが有効である場合には、前記第２ファームウェアスペースが有効であるか否か判定し、
前記第２ファームウェアスペースが有効でない場合には、該第２ファームウェアスペースにファームウェアをダウンロードし、該第２ファームウェアスペースを有効とし、前記第１ファームウェアスペースを消去するとともに、該第１ファームウェアスペースを無効とし、
前記第２ファームウェアスペースが有効である場合には、エラーメッセージを出力する、
方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータプログラムの格納方法及びプログラム制御開始方法に関する。
【０００２】
【従来の技術及び発明が解決しようとする課題】
イメージスキャナ、モデム、及びプリンタ等のコンピュータ周辺機器の大半は、一般的に、揮発性及び/又は不揮発性であり得るランダムアクセスメモリ（ＲＡＭ）等の可変メモリと、読取り専用メモリ（ＲＯＭ）等の不変メモリと、ファームウェアの転送を容易にする種々のハードウェア回路とを含む内蔵された制御システムを用いている。初期の周辺機器の１つの短所は、サービス技術者が不変メモリに収容されている古いプログラムを物理的に取り除き、アップグレードされたソフトウェアを収容している新しい不変メモリをインストールしないと、機器内のソフトウェアをアップグレード及び改良できないことであった。
【０００３】
不揮発性メモリ、特に、電子的に消去可能なプログラム可能読み取り専用フラッシュメモリ（ＥＥＰＲＯＭ）が改良されると、ハードウェアの販売者は、アップグレードされたソフトウェアを遠隔でダウンロードして周辺機器に格納する技術を開発した。この方法は、一般的に、周辺機器に新しいソフトウェアを供給し、周辺機器の内臓コントローラに新しいプログラムを不揮発性可変メモリに格納するよう指示することを含む。このソフトウェア及びそのようなソフトウェアの不変メモリへの格納は、一般的に、両方を合わせてファームウェアと呼ばれる。
【０００４】
しかし、この新しいファームウェアをダウンロード及び格納する方法の１つの短所として、このファームウェアのアップグレードルーチン中に、例えば不意の停電によって処理が中断されると、データ及びプログラムが壊れて、システムが使用できなくなることがある。この事態が生じると、しばしば、周辺機器を修理するための救済策は、サービス技術者を呼んで、不揮発性可変メモリ、又は場合によっては回路基板全体を物理的に交換することしかなくなる。
【０００５】
【課題を解決するための手段】
本発明は、不揮発性可変メモリに収容されるソフトウェアのアップグレードを修復可能にするシステム、方法、及びアーキテクチャを提供する。
【０００６】
本発明は、ファームウェアのアップグレード手続きの失敗からの修復を可能にするファームウェアアーキテクチャを個別に提供する。
【０００７】
本発明は、アップグレードされるファームウェアを除去せずに、ファームウェアをアップグレードできるようにするファームウェアアーキテクチャを個別に提供する。
【０００８】
本発明の様々な例示的な実施形態では、ファームウェアを収容するシステムは、ブートストラッププログラムを格納するメモリを含む。このシステムは、少なくとも２つのファームウェア記憶スペースを有する不揮発性可変メモリを更に含む。ファームウェア記憶スペースのうち第１の記憶スペースは、現在のファームウェアプログラムを格納する。
【０００９】
そのファームウェアプログラムをアップグレードする際には、アップグレード用ファームウェアは、少なくとも２つの記憶スペースのうち第２の記憶スペースに受け取られて格納される。アップグレード用ファームウェアが第２記憶スペースに完全に受け取られて格納されると、第１記憶スペースの元のファームウェアは消去又はもはや有効でないとマークされる。これにより、有効なファームウェアは第２記憶スペースのアップグレードされたファームウェアのみとなる。ブートストラッププログラムは、有効なファームウェアを収容しているいずれかの記憶スペースにアクセスする。
【００１０】
本発明の方法及びシステムの様々な例示的な実施形態の、他の特徴及び長所は、以下に述べられ、又は添付の図面及び次の詳細説明から明らかとなる。
【００１１】
【発明の実施の形態】
本発明を、添付の図面に関して詳細に述べる。図中、同一参照番号は同一要素を示す。
【００１２】
図１は、ファームウェアデータソース１００を用いる、ファームウェアをアップグレードするためのシステムのブロック図である。ファームウェアデータソース１００は、第１リンク１２０を介して１つ以上のモデム２００と、第２リンク１３０を介してプリンタ３００と、第３リンク１４０を介してイメージスキャナ４００と、又は第４データリンク１５０を介してファームウェアデータソース１００に接続される一般的なファームウェアを含むデバイス５００等の公知の又は今後開発される任意のファームウェアを含むデバイスと接続され得る。新しい、アップグレード又は交換用ファームウェアを、ファームウェアデータソース１００から、リンク１１０乃至１５０を介して、ファームウェアを含む種々のデバイス２００乃至５００に転送できる。
【００１３】
ファームウェアデータソース１００は、ファームウェアを含むデバイス２００乃至５００に新しいファームウェアプログラムを供給する能力がある、公知の又は今後開発される任意のデータソースであってよい。同様に、リンク１２０乃至１５０は、それぞれ、ファームウェアを含むデバイス２００乃至５００をファームウェアデータソース１００に接続するための、シリアルバスやＳＣＳＩポート等の直接ケーブル接続、ワイドエリアネットワーク又はローカルエリアネットワークを介した接続、イントラネットや外部ネットを介した接続、インターネットを介した接続、又は他の任意の分散形処理ネットワーク又はシステムを介した接続を含む、公知の又は今後開発される任意の装置、ソフトウェアユーティリティ、又はシステムであってよい。
【００１４】
更に、ファームウェアデータソース１００及び個々のリンクは、共に、全体的又は部分的にファームウェアを含むデバイス５００に組み込まれていてもよい。例えば、ファームウェアデータソース１００が、ファームウェアを含むデバイスに組み込まれたフロッピーディスクドライブであり、個別のリンク１５０が、ディスクドライブコントローラ及び接続ケーブルハードウェアであってもよい。
【００１５】
図２は、ファームウェアを含むデバイス５００の例示的な一実施形態である。ファームウェアを含むデバイス５００は、コントローラ５１０と、任意の可変メモリ５２０と、任意の不変メモリ５３０と、不揮発性可変メモリ５４０と、周辺ハードウェア５５０とを含む。コントローラ５１０と種々のメモリ５２０乃至５４０及び周辺ハードウェア５５０との通信は、バス５１２を用いて行われる。
【００１６】
コントローラ５１０は、ファームウェアを含む特定のデバイス５００によって供給される、メモリ５２０乃至５５０の任意の１つに格納されているファームウェアに基く新しい又は交換用ファームウェアのダウンロードを含む様々な機能を実行する。任意の可変メモリ５２０は、プログラム及び一時的なデータの格納に一般的に用いられる揮発性の高速メモリである。任意の不変メモリ５３０は、時間が経っても更新の必要がなく電力を供給し続けられる必要がない、デフォルトシステム設定及び基本的入出力ルーチン等のデータ及びプログラムの格納に用いられる不揮発性メモリである。
【００１７】
不揮発性可変メモリ５４０もデータ及びプログラムを格納でき、可変であるとともに不揮発性である、即ち、電力が除去されても情報が失われないという長所を有する。
【００１８】
ファームウェアを含むデバイス５００は、周辺ハードウェア５５０及びデータリンク１５０を介して外部と接続される。
【００１９】
パワーアップ中に、コントローラ５１０は、不変メモリ５３０又は不揮発性可変メモリ５４０のいずれかに格納されている予めプログラムされた命令を用いて、リセット状態から周知の動作状態に遷移する。コントローラ５１０は、不変メモリ５３０又は不揮発性可変メモリ５４０からのプログラムを実行し続けてもよく、又は種々のプログラムを可変メモリ５２０に転送し、可変メモリ５２０に格納されたプログラムを実行してもよい。
【００２０】
一般的なファームウェアを含むデバイス５００のプログラムアップグレード操作中、ファームウェアデータソース１００は、リンク１５０を用いて、新しいプログラム及びデータをダウンロードする。コントローラ５１０によって新しいプログラムが受け取られると、それらは一時的な格納のために可変メモリ５２０に送られる。任意に、コントローラ５１０は、巡回冗長検査やチェックサムルーチン等の検証技術を用いて、新しいデータ及びプログラムに対する検証チェックを行ってもよい。新しいデータ及びプログラムが検証されると、コントローラ５１０は、新しい情報を格納するための適切なロケーションを見つけるために、不揮発性可変メモリ５４０を検査する。
【００２１】
図３は、本発明に従った図２の不揮発性可変メモリ５４０のアーキテクチャの例示的な一実施形態をより詳細に示す。
【００２２】
パワーアップ後にコントローラ５１０が操作を開始するデフォルトのロケーションとして、ブートコードスペース５４２が設けられている。しかしながら、ブートスペース部は、代わりに不変メモリ５３０の一部であってもよいことを認識されたい。２つのファームウェアコードスペース５４４及び５４６は、ファームウェアを含むデバイス５００によって用いられるファームウェアを格納するために確保されている。ファームウェアコードスペース５４４及び５４６の各々は、ファームウェアを含むデバイス５００の完全なファームウェアを収容するのに十分な大きさがある。ブートコードスペース５４６は第１又は第２のファームウェアスペース５４４及び５４６より小さく示されており、第１及び第２のファームウェアスペース５４４及び５４６は同じサイズで示されているが、これらのスペース５４２、５４４及び５４６は任意の相対的及び絶対的なサイズであってよい。
【００２３】
チェックサムメモリ部５４５及び５４７は、各々のファームウェアスペースのデータの有効性に対する信頼性の測度を与える。第１及び第２チェックサムメモリ部５４５及び５４７は任意のサイズであってよいが、本発明に従った不揮発性可変メモリの様々な例示的な実施形態では、第１及び第２チェックサム部５４５及び５４７は、少なくとも３２ビットのデータを格納するのに十分な大きさである。
【００２４】
本発明に従ったシステム及び方法の様々な例示的な実施形態は、チェックサムを用いて、個々のファームウェアスペース５４４及び５４６の正当性をチェックするが、公知の又は今後開発される任意の技術を用いて、第１チェックサムメモリ部５４５及び/又は第２チェックサムメモリ部５４２のデータを検証することができる。例えば、巡回冗長検査、多重チェックサム、及びマルコフモデルを用いる技術を用いることができる。
【００２５】
パワーアップ中に、コントローラ５１０はブートコードスペース５４２内の命令を用いて操作を開始する。この間、コントローラ５１０は種々のハードウェアを初期状態にし、２つのファームウェアスペース５４４又は５４６のどちらが有効なファームウェアを収容しているかを判定する。適切なファームウェアスペース５４４又は５４６を識別したら、コントローラ５１０は、ブートコードスペース５４２に格納されている命令からの指示を受けて、識別されたファームウェアスペース５４４又は５４６に格納されている命令を実行する。
【００２６】
新しいファームウェアを格納する前に、コントローラ５１０は、２つのファームウェアスペース５４４又は５４６のどちらが有効なファームウェアを収容しているかを判定しなければならない。ファームウェアスペース５４４又は５４６が、有効な又は現在のファームウェアをもはや収容していない場合は、そのファームウェアは一般的に消去されるか、無効である又はチェックサムに合わないとしてマークされる。或いは、コントローラ５１０は、コントローラ５１０が用いている現在のファームウェアスペースを、有効なファームウェアスペースとして定めてもよく、又は、ある記録保存スキームに基いて有効性を判定してもよい。第１及び第２ファームウェアスペース５４４又は５４６のどちらが有効なデータを収容しているかを識別する、公知の又は今後開発される任意の技術を用いることができることを認識されたい。第１及び第２ファームウェアスペース５４４又は５４６のどちらが有効なファームウェアを収容しているかを判定すると、コントローラ５１０は、有効なファームウェアを収容していないファームウェアスペース５４４又は５４６に新しいデータ及びプログラムをロードする。
【００２７】
図４は、本発明に従ったプログラム制御開始方法の例示的な第１実施形態の概要を示すフロー図である。制御はステップＳ１００で開始し、ステップＳ１１０に進み、そこで、ブートコードスペースのコードが実行される。次に、ステップＳ１２０で、ファームウェアを含むデバイスの種々のハードウェア要素が必要に応じて初期状態にされる。例えば、割込みコントローラ、ダイナミックＲＡＭコントローラ、種々の周辺機器及び種々のマイクロプロセッサレジスタを操作する必要があろう。次に、ステップＳ１３０で、第１ファームウェアスペースが消去されているか否かが判定される。第１ファームウェアスペースが消去されている場合は、制御はステップＳ１５０にジャンプし、消去されていない場合は、制御はステップＳ１４０に進む。
【００２８】
第１ファームウェアスペースが消去されていない場合は、ステップＳ１４０で、第１ファームウェアスペース内のデータが有効であるか否かが判定される。第１ファームウェアスペース内のデータが有効でない場合は、制御はステップＳ１５０に進む。有効である場合は、制御はステップＳ１６０にジャンプする。
【００２９】
ステップＳ１５０では、第１ファームウェアスペースのファームウェアが実行される。一方、ステップＳ１６０では、第２ファームウェアスペースに格納されているファームウェアが実行される。
【００３０】
図５は、本発明に従ったプログラム制御開始方法の例示的な第２実施形態の概要を示すフロー図である。制御はステップＳ２００で開始し、ステップＳ２１０に進み、そこで、ブートスペースのコードが実行される。次に、ステップＳ２２０で、種々のハードウェア要素が必要に応じて初期状態にされる。次に、制御はステップＳ２３０に進む。
【００３１】
ステップＳ２３０では、第１ファームウェアスペース５４４が消去されているか否かが判定される。第１ファームウェアスペースが消去されている場合は、制御はステップＳ２６０にジャンプする。消去されていない場合は、制御はステップＳ２４０に進む。第１ファームウェアスペース５４４が消去されていない場合は、ステップＳ２４０で、第１ファームウェアスペース５４４のデータの有効性がチェックされる。第１ファームウェアスペース５４４のデータが有効である場合は、制御はステップＳ２５０に進む。有効でない場合は、制御はステップＳ２６０にジャンプする。ステップＳ２５０では、第１ファームウェアスペースにファームウェアが存在するとともに有効であるので、第１ファームウェアスペース５４４のファームウェアが実行される。
【００３２】
第１ファームウェアスペース５４６が消去されている又は第１ファームウェアスペース５４６のデータが有効でない場合は、ステップＳ２６０が実行される。ステップＳ２６０では、第２ファームウェアスペース５４６が消去されているか否かが判定される。第２ファームウェアスペース５４６が消去されていない場合は、制御はステップＳ２７０に進む。消去されている場合は、制御はステップＳ２９０にジャンプする。
【００３３】
第２ファームウェアスペース５４６が消去されていない場合は、ステップＳ２７０で、第２ファームウェアスペース５４６のデータが有効であるか否かが判定される。第２ファームウェアスペース５４６のデータが有効である場合には、制御はステップＳ２８０に進む。有効でない場合には、制御はステップＳ２９０にジャンプする。
【００３４】
ステップＳ２８０では、第２ファームウェアスペース５４６にデータが存在するとともに有効であるので、第２ファームウェアスペース５４６のファームウェアが実行される。
【００３５】
第２ファームウェアスペース５４６が消去されている又は第２ファームウェアスペース５４６のデータが有効でない場合は、ステップＳ２９０が実行される。ステップＳ２９０では、エラーメッセージが表示又は出力される。出力されるエラーメッセージは、単純なライトの点滅や、問題を記述する詳細なテキストのメッセージを含む、どのような形態をとってもよい。エラーメッセージルーチンは、新しいファームウェアプログラムをダウンロードするための簡単なダウンロードルーチン等の他の機能を備えることもできる。次に、制御はステップＳ２９５に進み、そこで、このプログラム初期化方法は終了する。
【００３６】
図６及び図７は、本発明に従った、新しいプログラム及びデータ制御をロード及び格納するための１つの例示的な操作の概要を示すフロー図である。制御はステップＳ３００で開始してステップＳ３１０に進み、そこで、新しいファームウェアが取得される。次に、ステップＳ３２０で、新しいファームウェアが有効であるか否かが判定される。新しいファームウェアのデータが有効でない場合は、制御はステップＳ３３０に進む。有効である場合は、制御はステップＳ３４０にジャンプする。
【００３７】
ステップＳ３３０では、新しいファームウェアデータのデータが有効でないので、エラーメッセージが表示又は出力される。そして、制御はステップＳ４６０にジャンプする。
【００３８】
ステップＳ３４０では、新しいファームウェアデータが有効であるので、第１ファームウェアスペース５４４が消去されているか否かが判定される。第１ファームウェアスペース５４４が消去されている場合は、制御はステップＳ３８０にジャンプする。消去されていない場合は、制御はステップＳ３５０に進む。
【００３９】
ステップＳ３５０では、第１ファームウェアスペースが消去されていないので、第２ファームウェアスペースが消去されているか否かが判定される。第２ファームウェアスペースが消去されている場合は、制御はステップＳ４１０にジャンプする。消去されていない場合は、制御はステップＳ３６０に進む。
【００４０】
ステップＳ３６０では、第２ファームウェアスペースが消去されていないので、第１ファームウェアスペースが有効であるか否かが判定される。第１ファームウェアスペースが有効である場合は、制御はステップＳ３７０に進む。有効でない場合は、制御はステップＳ３８０にジャンプする。
【００４１】
ステップＳ３７０では、第１ファームウェアスペースが有効であるので、第２ファームウェアスペースが有効であるか否かが判定される。第２ファームウェアスペースが有効である場合は、制御はステップＳ４５０にジャンプし、有効でない場合は、制御はステップＳ４１０にジャンプする。
【００４２】
ステップＳ３８０では、第１ファームウェアスペースが消去されているか又は第１ファームウェアスペースが有効でないかの、いずれかであるので、新しいファームウェアが第１ファームウェアスペースにダウンロードされ、任意に、第１ファームウェアスペースが有効とマークされる。そして、ステップＳ３９０で、第２ファームウェアスペースが消去及び/又は無効とマークされる。次に、ステップＳ４００で、第１ファームウェア記憶スペースのファームウェアが実行される。
【００４３】
一方、ステップＳ４１０では、第２ファームウェアスペースが消去されているか又は第２ファームウェアスペースが有効でないかの、いずれかであるので、新しいファームウェアが第２ファームウェアスペースに格納され、任意に、第２ファームウェアスペースが有効とマークされる。そして、ステップＳ４２０で、第１ファームウェアスペースが消去及び/又は無効とマークされる。次に、ステップＳ４３０で、第２ファームウェアスペースのファームウェアが実行される。
【００４４】
ステップＳ４５０では、第２ファームウェアスペースが有効であるので、エラーメッセージが表示又は出力される。出力されるエラーメッセージは、単純なライトの点滅や、問題を記述する詳細なテキストのメッセージを含む、どのような形態をとってもよい。次に、制御はステップＳ４６０に進み、そこで、ファームウェアのロード及び格納方法は停止する。
【００４５】
図６及び図７に示されている、本発明に従ったファームウェアのロード及び格納方法のこの例示的な実施形態では、ステップＳ３４０及びステップＳ３５０はスキップされてもよい。この場合には、制御はステップＳ３２０から直接ステップＳ３６０に進む。消去されているファームウェアスペースが無効なファームウェアスペースとして見えるとすれば、ステップＳ３４０及びステップＳ３５０で実行される操作は、それぞれ、ステップＳ３６０及びステップＳ３７０で実行される操作に対して冗長である。或いは、第１ファームウェアスペース及び第２ファームウェアスペースの一方が前に消去されていれば、ステップＳ３６０及びステップＳ３７０がスキップされてもよい。
【００４６】
図１から図３の一般的なファームウェアを含むデバイス５００及び図４から図７の方法は、プログラムされたコントローラ５１０及び周辺集積回路素子を用いて実現できる。しかし、一般的なファームウェアを含むデバイス５００は、汎用コンピュータ、専用コンピュータ、ＡＳＩＣ若しくは他の集積回路、デジタル信号プロセッサ、ディスクリート素子等のハードワイヤード電子又は論理回路、又はＰＬＤ、ＰＬＡ、ＦＰＧＡ若しくはＰＡＬ等のプログラム可能論理デバイス等でも実現できる。概して、有限状態機械を実行でき、ひいては図１から図７のシステム又は方法を実現できる、任意のデバイスを用いることができる。
【００４７】
本発明は、概要を上述した例示的な実施形態とともに述べられてきたが、当業者には多くの代替、修正及び変更が明白であることは明らかである。従って、上述した本発明の例示的な実施形態は、説明を意図したものであり、限定するものではない。本発明の精神及び範囲を逸脱することなく、様々な変更がなされ得る。
【図面の簡単な説明】
【図１】ファームウェアデータソース及びファームウェアを含む種々のデバイスのブロック図である。
【図２】本発明に従ったファームウェアを含むデバイスの例示的な一実施形態のブロック図である。
【図３】図２の不揮発性可変メモリの例示的な一実施形態のブロック図である。
【図４】本発明に従ったプログラム制御開始方法の例示的な第１実施形態の概要を示すフロー図である。
【図５】本発明に従ったプログラム制御開始方法の例示的な第２実施形態の概要を示すフロー図である。
【図６】本発明に従ったファームウェアのアップグレード方法の例示的な実施形態の概要を示すフロー図である。
【図７】本発明に従ったファームウェアのアップグレード方法の例示的な実施形態の概要を示すフロー図である。
【符号の説明】
１００    ファームウェアデータソース
５１０    コントローラ
５４０    不揮発性可変メモリ
５４４    第１ファームウェアメモリスペース
５４６    第２ファームウェアメモリスペース
【図１】
0004771580.tif 000002
【図２】
0004771580.tif 000003
【図３】
0004771580.tif 000004
【図４】
0004771580.tif 000005
【図５】
0004771580.tif 000006
【図６】
0004771580.tif 000007
【図７】
0004771580.tif 000008