(57)【要約】  本発明によれば、フラッシングが開始されると、フラッシュコードを、再プログラム可能な不揮発性記憶媒体のフラッシュ専用領域にアップロードすることができる（３１０）。次いで、上記フラッシュコードが上記フラッシュ専用領域に正しくアップロードされたかが検証される（３２０）。上記フラッシュコードが正しくアップロードされなかった場合、該フラッシュコードは上記フラッシュ専用領域に再度アップロードされる（３１０）。上記フラッシュコードが正しくアップロードされた場合は、次のステップにおいて、前記再プログラム可能な不揮発性記憶媒体のコードセグメントを、新たなコードでフラッシュすることができる（３３０）。その後、該新たなコードが上記コードセグメントに正しく書き込まれたかが検証される（３４０）。該コードが上記コードセグメントに満足の行くように書き込まれなかった場合、該コードセグメントは再びフラッシュされる（３３０）。
2008504628.tif 000002
【特許請求の範囲】
【請求項１】
再プログラム可能な不揮発性記憶媒体をフラッシュする方法において、該方法が、
前記記憶媒体のフラッシュ専用領域にフラッシュコードをアップロードするステップと、
前記フラッシュコードが正しくアップロードされたかを検証し、もしそうなら、前記記憶媒体のコードセグメントをフラッシュするステップと、
前記コードセグメントが正しく書き込まれたかを検証し、もし正しく書き込まれなかったら、該コードセグメントを再度フラッシュするステップと、
を有する方法。
【請求項２】
請求項１に記載の方法において、該方法が、前記フラッシュコードが正しくアップロードされなかったら、
前記フラッシュコードを前記フラッシュ専用領域に再度アップロードするステップ、
を更に有することを特徴とする方法。
【請求項３】
請求項１又は請求項２に記載の方法において、該方法が、前記コードセグメントが正しく書き込まれたなら、
前記フラッシュ専用領域内の前記フラッシュコードを消去するステップ、
を更に有することを特徴とする方法。
【請求項４】
請求項１ないし３の何れか一項に記載の方法において、該方法が、前記フラッシュコードをアップロードするステップの間又は前記フラッシュコードが正しくアップロードされたかを検証するステップの間に中断された後に、
コードの通常の実行を再開するステップ、
を更に有することを特徴とする方法。
【請求項５】
請求項１ないし４の何れか一項に記載の方法において、該方法が、前記コードセグメントをフラッシュするステップの間又は前記コードセグメントが正しく書き込まれたかを検証するステップの間に中断された後に、
コードの通常の実行を再開するステップと、
前記コードセグメントが完全なコードを有するかを検証し、もし完全なコードを有しないなら、前記コードセグメントの新たなフラッシングのために前記フラッシュコードを起動するステップと、それ以外の場合に、
前記コードの通常の実行を進めるステップと、
を有することを特徴とする方法。
【請求項６】
請求項５に記載の方法において、前記コードセグメントが完全なコードを有するかを検証するステップが、
前記コードセグメントにおける完全性チェックコードを、該完全性チェックコードが壊れていない場合は実行し、これにより、前記コードセグメントに含まれる前記コードの完全性をチェックするステップと、
前記コードセグメントが完全なら、ウォッチドッグレジスタを有効な値に設定するステップと、
前記コードの通常の実行を再開するステップの後の所定の時間内に前記ウォッチドッグレジスタをチェックするステップと、
を有することを特徴とする方法。
【請求項７】
請求項６に記載の方法において、該方法が、
前記ウォッチドッグレジスタが有効である場合に前記コードの通常の実行を進めるステップと、
それ以外の場合に、前記コードセグメントの新たなフラッシングのために前記フラッシュコードを起動するステップと、
を更に有することを特徴とする方法。
【請求項８】
請求項６又は請求項７に記載の方法において、前記コードセグメントに含まれる前記コードの完全性をチェックするステップが、
前記コードセグメントに含まれる前記コードに対してチェックサムを計算するステップと、
このチェックサムを、完全なコードを示す所定の値と比較するステップと、
を有することを特徴とする方法。
【請求項９】
請求項１に記載の方法において、該方法が、前記フラッシュコードをアップロードするステップの前に、
前記コードセグメントが完全なコードを有するかを検証し、完全でない場合は、前記フラッシュコードを起動して前記コードセグメントをフラッシュするステップ、
を更に有することを特徴とする方法。
【請求項１０】
請求項９に記載の方法において、前記コードセグメントが完全なコードを有するかを検証するステップが、
前記コードセグメントに含まれる前記コードに対してチェックサムを計算するステップと、
このチェックサムを、完全なコードを示す所定の値と比較するステップと、
を有することを特徴とする方法。
【請求項１１】
請求項９又は請求項１０に記載の方法において、該方法が、
前記コードセグメントが正しく書き込まれたかを検証し、もしそうでないなら、前記コードセグメントを再度フラッシュするステップ、
を更に有することを特徴とする方法。
【請求項１２】
請求項１１に記載の方法において、前記コードセグメントが正しく書き込まれたかを検証するステップが、
前記コードセグメントに書き込まれるべきコードを有する他の記憶媒体に含まれる該コードを、前記コードセグメントに書き込まれたコードと比較するステップ、
を有することを特徴とする方法。
【請求項１３】
請求項１１又は請求項１２に記載の方法において、該方法が、前記コードセグメントが正しく書き込まれた場合に、
前記フラッシュ専用領域における前記フラッシュコードを消去するステップ、
を更に有することを特徴とする方法。
【請求項１４】
請求項９に記載の方法において、該方法が、前記コードセグメントが完全なコードを有する場合に、
前記コードの通常の実行を進めるステップ、
を有することを特徴とする方法。
【請求項１５】
請求項９ないし１４の何れか一項に記載の方法において、該方法が、中断された後に、
請求項９に記載の方法における前記コードセグメントが完全なコードを有するかを検証するステップで、
再開することを特徴とする方法。
【請求項１６】
請求項１ないし１５の何れか一項に記載の方法において、前記フラッシュコードが正しくアップロードされたかを検証するステップが、
前記フラッシュ専用領域にアップロードされるべきコードを有する他の記憶媒体に含まれる該コードを、前記フラッシュ専用領域にアップロードされたフラッシュコードと比較するステップ、
を有することを特徴とする方法。
【請求項１７】
請求項１ないし１６の何れか一項に記載の方法において、前記コードセグメントが正しく書き込まれたかを検証するステップが、
前記コードセグメントに書き込まれるべきコードを有する他の記憶媒体に含まれる該コードを、前記コードセグメントに書き込まれたコードと比較するステップ、
を有することを特徴とする方法。
【請求項１８】
請求項１６又は請求項１７に記載の方法において、前記比較するステップが、
バイト毎の比較を実行するステップ、
により実行されることを特徴とする方法。
【請求項１９】
請求項１６又は請求項１７に記載の方法において、前記比較するステップが、
前記他の記憶媒体内の前記コードに対して第１チェックサムを計算するステップと、
前記不揮発性記憶媒体内のコードに対して第２チェックサムを計算するステップと、
前記第１及び第２チェックサムを比較するステップと、
により実行されることを特徴とする方法。
【請求項２０】
請求項１６又は請求項１７に記載の方法において、前記比較するステップが、
前記不揮発性記憶媒体内のコードに対してチェックサムを計算するステップと、
該チェックサムを、前記不揮発性記憶媒体に書き込まれるべきコードを示す所定の値と比較するステップと、
により実行されることを特徴とする方法。
【請求項２１】
請求項１ないし２０の何れか一項に記載の方法において、前記中断が電源遮断であることを特徴とする方法。
【請求項２２】
コンピュータに請求項１ないし２１の何れか一項に記載の方法を実行させるようなプログラム命令を有するコンピュータ読み取り可能なプログラム。
【請求項２３】
コンピュータに請求項１ないし２１の何れか一項に記載の方法を実行させるようなコンピュータ実行可能な命令を有するコンピュータ読み取り可能なプログラムを有する担体。
【請求項２４】
請求項２３に記載の担体において、前記担体がファームウエア、記録媒体、コンピュータメモリ、読取専用メモリ又は電気キャリア信号であることを特徴とする担体。
【請求項２５】
請求項２３に記載の担体において、前記担体が再プログラム可能な不揮発性記憶媒体であることを特徴とする担体。
【請求項２６】
請求項２５に記載の担体において、前記再プログラム可能な不揮発性記憶媒体がＥＰＲＯＭ、ＥＥＰＲＯＭ又はフラッシュＲＯＭであることを特徴とする担体。
【請求項２７】
入力手段、出力手段、記憶手段及び処理手段を有し、前記処理手段が請求項２２に記載のコンピュータ読み取り可能なプログラムを実行するように構成されていることを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広くは記憶媒体のフラッシングの分野に関する。特に、本発明は、再プログラム可能な不揮発性記憶媒体を安全な態様でフラッシングする分野に関する。更に、本発明は、フラッシング動作が中断された場合、例えばフラッシング動作の間に電源が遮断した場合にフラッシングを回復する分野に関する。本発明は、フラッシングすることが可能な記憶媒体を使用する如何なるコンピュータシステムにおいても利用されることを意図するものである。特に、本発明は光学ドライブにおいて利用することができる。
【背景技術】
【０００２】
本明細書及び請求項を通して使用される場合、コンピュータなる用語は、データを記憶し、取り出し及び処理することが可能な如何なる電子装置をも指すものとされることを強調すべきであろう。従って、コンピュータシステムなる用語を参照する場合、この用語は、処理手段、記憶手段、入力手段、出力手段及び電源を有する如何なるシステムをも指すとされる。従って、コンピュータシステムなる用語は、これらが処理手段、記憶手段、入力手段、出力手段及び電源を有する場合、如何なるタイプのコンピュータ、パーソナルコンピュータ、携帯電話、スマートフォン、パーソナル・デジタル・アシスタント（ＰＤＡ）、電子装置、台所、清掃及び屋外使用のための知的電子機器及び装置、消費者向け電子機器、例えばカメラ等の画像化装置、等々を含むことを意図するものである。
【０００３】
更に、この明細書及び請求項を通して記憶媒体は複数のセグメントを有することが強調されるべきであろう。そして、各セグメントは複数のブロックを有し、各ブロックは８Ｋバイト、１６Ｋバイト、３２Ｋバイト、６４Ｋバイト等のサイズである。
【０００４】
更に、以下の明細書及び請求項において、有する／有しているなる用語は、"含んでいるが、限定されるものではない"と解釈されるべきである。即ち、本明細書及び請求項を通して使用される場合、この用語は、述べられたフィーチャ、完全体、構成要素又はステップの存在を指すものとされるが、１以上のフィーチャ、完全体、構成要素又はステップの存在又は追加を排除するものではない。
【０００５】
基本的コンピュータシステムにおけるハードウェアは、５つの構成要素、即ち主メモリ手段、処理手段、二次メモリ手段、入力手段及び出力手段を含むと言うことができる。上記主メモリ手段及び処理手段は、時にはＣＰＵ（中央処理ユニット）と呼ばれる中央処理手段を一緒に形成する。ＣＰＵはコンピュータシステムの最も重要な部分であり、この部分においてプログラム及びデータの処理が実行される。コンピュータシステムの部分を形成する他のハードウェアは、時には周辺機器と呼ばれる。
【０００６】
コンピュータシステムは、記憶媒体とも呼ばれる種々のタイプの記憶手段を含んでいる。幾つかの記憶媒体は揮発性であり、記憶媒体上に記憶されたコード又はデータは、該記憶媒体に対する電源が一旦オフされると失われることを意味する。１つの良く知られたタイプの揮発性記憶媒体は読取／書込メモリ（ＲＷＭ）である。ＲＷＭは、ユーザに対してプログラム又はデータを変更し又はメモリのデータ領域の変更を行う可能性を提供する。
【０００７】
他の記憶媒体は不揮発性であり、これら記憶媒体は、該記憶媒体に対する電源がオフされたとしてもコード又はデータを保持することを意味する。
【０００８】
記憶媒体は種々の目的に使用される。例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、又はもっと特定的には同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）等の揮発性記憶媒体は、典型的には、コンピュータの主システムメモリとして使用される。ブート（開始）すると、コンピュータのオペレーティングシステムが該主システムメモリにコピーされ、プロセッサにより該メモリから実行される。ユーザがアプリケーションを開く場合も、各アプリケーションは、当該アプリケーションが永久的に記憶された記憶ドライブ（例えば、ハードドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤドライブ、ブルーレイディスクドライブ）から上記主システムメモリに実行のためにコピーされる。主システムメモリは、データ、コンフィギュレーション情報及び当該コンピュータが動作の間に使用し得る他のタイプの情報を一時的に記憶するためにも使用される。
【０００９】
不揮発性記憶媒体は、コンピュータが電源投入される毎に実行し得る実行可能コードを記憶するために有用である。斯様なコードは"ファームウエア"と呼ばれる。ファームウエアは、ハードウェアとソフトウェアとの間の何処かに位置するので、そのように呼ばれる。ファームウエアは記録可能型記憶媒体上に記憶されたマイクロプログラム、プログラム及びルーチンを含む。例示として、殆どのコンピュータは、ＢＩＯＳ（基本入力／出力システム）と呼ばれる何らかの組の実行可能なルーチンを含み、斯かるルーチンは例えばＣＤ−ＲＯＭドライブ、フロッピー（登録商標）ディスクドライブ及びディスプレイ等の種々の入力／出力手段に対するアクセスを提供する。ＢＩＯＳコードは、通常は、ＲＯＭ（読取専用メモリ）、ＥＰＲＯＭ（消去可能プログラム可能読取専用メモリ）又はＥＥＰＲＯＭ（電子的に消去可能プログラム可能読取専用メモリ）等の不揮発性記憶媒体に永久的に記憶される。命令は、ＲＯＭよりＲＡＭの方から大幅に速く取り込むことができる。従って、コンピュータのブートアップ処理の間においては、ＢＩＯＳコードはＲＯＭから当該コンピュータの主システムメモリにコピーされ、必要なら、該主システムメモリから実行される。
【００１０】
他の変更可能な記憶媒体はフラッシュメモリ（例えば、フラッシュＲＯＭ）である。このタイプのメモリは、メモリのシステム内再プログラミングを可能にする。コンピュータシステムがＥＥＰＲＯＭ又はフラッシュメモリ等の再プログラミング可能な不揮発性メモリをプロセッサと組み合わせると、該コンピュータシステムは動作中に再プログラムすることができる。
【００１１】
コンピュータシステムに対して命令セットを対話的にアップグレード及び／又はアップデート（即ち、再プログラム）する能力は、非常に有用であり得る。例えば、会社は、ファームウエアが再プログラムされるべき都度に、顧客にコンピュータシステムを認可サービスセンタに運ぶことを要することなしに、斯かる顧客にサービスすることができる。
【００１２】
再プログラム可能な不揮発性メモリの再プログラミングは、"フラッシング"として知られている。メモリのフラッシングはファームウエアが置換されるのを可能にし、これは該ファームウエアが新しいコード又はデータでアップグレード及び／又はアップデートされるのを可能にする。当業技術では、メモリのフラッシングはメモリ領域に含まれる全てのコード又はデータを先ず消去することにより実行されることが知られている。これは、当該メモリ領域の全ビットがデジタルの"１"にされることを意味し、これはメモリを消去する場合の標準の行為である。他の例として、全ビットをデジタル"０"にすることもできる。全ビットをデジタル"１"にした後に、当該メモリ領域は空であると見なされる。該メモリのアップデート及び／又はアップグレードは、次いで新たなコード又はデータを上記メモリ領域に書き込むことにより達成される。
【００１３】
メモリのフラッシングに関して問題が観察された。フラッシング処理は、消去及び後続の書き込みを実行するための実行可能なコードを必要とする。フラッシュを実行するために必要な斯かるコードは、通常は、フラッシュされるべきメモリに含まれるファームウエアの一部として含まれている。再書き込みされる前に、当該ファームウエア内に存在する上記コードは消去されねばならない。
【００１４】
結果的に、フラッシュ処理の間における電源の喪失又は如何なるタイプの中断も、当該記憶媒体を使用不可能にさせ得、かくして当該コンピュータシステムを使用不可能にさせ得る。例示として、例えばフラッシュＲＯＭのフラッシングの間に電源が遮断した場合、フラッシュ処理は最初に当該フラッシュＲＯＭを消去しているので、該フラッシュＲＯＭに最初に記憶されていたコードは失われる。この時点で、アップグレード又はアップデートされるべきコードは当該ファームウエアからなくなっており、該コードがフラッシュを実行するのに必要な命令を含んでいたので、フラッシュを実行するメカニズムも失われることになる。
【００１５】
このような問題を受けたフラッシュＲＯＭは、売り手の工場へ再出荷されねばならず、該工場において所要の専用装置が使用されて、当該フラッシュＲＯＭを再プログラムするか、又は該フラッシュＲＯＭを新たなコードを含むフラッシュＲＯＭと交換する。この筋書は、顧客にとり非常に望ましくなく、且つ、不便である。更に、これは顧客にとり出費の増加を意味する。
【００１６】
当業技術においては、電源遮断（power failure）の場合に回復することができるようなフラッシング処理を保証する簡単な方法は、フラッシュＲＯＭの何らかの部分を常にそのまま維持すること、即ち該フラッシュＲＯＭの何らかの部分を非消去可能に保つことであることが知られている。このようにして、非消去可能な上記部分は新たなコード又はデータにより決して書き換えられることはないであろう。従って、フラッシュＲＯＭのこの部分は保護される。該非消去可能な部分は、更に、実行されると当該メモリの残部を重ね書きするようなコードを含んでいる。言い換えると、上記非消去可能なブロックは、フラッシュを実行するために必要な命令を含んでいる。
【００１７】
従来のフラッシュ部品又はメモリは、異なるサイズのブロックで設計されるという意味で、非対称であり得る。データは斯様なフラッシュ部品又はメモリにブロック毎に書き込まれる。例えば、２つの８Ｋバイトブロック、１つの１６Ｋバイトブロック、１つの３２Ｋバイトブロック及び複数の６４Ｋバイトブロックが存在し得る。上記８Ｋバイトブロックのうちの１つは、製造者に関する情報（ロゴタイプ、コンピュータのモデル番号、等々のような）を含むことができる。上記１６Ｋバイトは通常は保護されたブートコードを含み、該ブートコードは実行に際して当該メモリの残部を重ね書きするコードを含んでいる。
【００１８】
メモリの如何なる特定のセグメントにアクセスする手段も、当業者にとっては既知である。例えば、書き換えのために特定のセグメントにアクセスする１つの可能性のある方法は、ユーザがアップデート又はアップグレードされるべき特定のセグメントにおける如何なるアドレスロケーションに対しても特別な消去コマンドバイトを開始することである。例えば、この特別な消去コマンドは、当該メモリのフラッシュイネーブル（FLASH ENABLE）ピンが該ピンに或る電圧（例えば、４Ｖ等）を供給することにより可能化されるのと同時に開始される。次いで、特定のセグメントに対する書き込みを可能にするために同様の処理が実行される。即ち、上記フラッシュイネーブルピンを可能にしながら、上記特定のセグメントに対して特別な書き込みコマンドバイトを開始する。フラッシングのためにメモリの特定のセグメントを選択する他の可能性のある方法も従来から知られており、ここではこれ以上議論しない。それにも拘わらず、斯かる方法が製造者から製造者へと変化するということに言及するのは価値がある。
【００１９】
上記例において、フラッシング処理に必要なブートコードを含む前記１６Ｋバイトブロックは典型的には触らない部分である。言い換えると、このブロックは典型的には再プログラミングには利用可能ではない。
【００２０】
米国特許第6,308,265号に説明されているように、非対称なフラッシュ部品又はメモリは典型的には対称なものよりも製造するために一層費用が掛かる。即ち、複数の６４Ｋブロックのみを有するフラッシュ部品は、異なるサイズのブロックを有するフラッシュ部品よりも製造するが安価である。しかしながら、"保護"されるべき所要のブートコードは典型的には約１６Ｋバイトであるので、フラッシュ部品又はメモリを製造する場合に考慮しなければならない非常に重要な取引が存在する。非対称なフラッシュ部品又はメモリを製造する場合、保護されねばならないブートコードのみを含む１６Ｋバイトブロックを特別仕立てすることは可能である。かくして、浪費されるメモリ空間は発生しないであろう。しかしながら、先に説明したように、非対称フラッシュ部品又はメモリは高価である。一方、例えば６４Ｋバイトサイズのブロック等の複数のブロックのみを備える安価で対称なフラッシュ部品又はメモリを製造する場合、斯かるブロックのうちの１つは、保護されるべき１６Ｋバイトサイズのブートコードを格納しなければならない。ブートブロックコードが斯かる６４Ｋバイトブロックに設けられた場合、該ブートブロックコードは消去し次いで再書き込みすることはできないので、該ブロックは消去し次いで再書き込みすることができないような他のコードも含んで、利用可能なメモリ領域の使用を最大化しなければならない。他の例として、該６４Ｋバイトブロックの残りのメモリ領域は、空で従って利用されないままとすることもできる。従って、上記ブートブロックコードが１６Ｋバイトのサイズであった場合、上記６４Ｋバイトブロックの残りの領域（即ち、４８Ｋバイト）は、不使用（即ち、空）としなければならないか又はアップデートすることができないコードを備えるかの何れかである。
【００２１】
先に述べたブートブロックコードは、ＢＩＯＳコードのうちのアップデート不可能部分と考えることができる。アップデート可能なコードは、典型的には、アップデート不可能なブートブロックコードと連続的に配置される。非常に頻繁にはアップデートされないＢＩＯＳコードの部分は存在し得るが、斯かるコードでさえも時にはアップデートするのが望ましいであろう。従って、フラッシュＢＩＯＳ処理の間にＢＩＯＳに対するアップデートを許可しながら、ブートブロックコードを保護するための１つの可能性のある方法が、米国特許第6,308,265号に提案されている。該ブートブロックコードはフラッシュ部品のブートブロック又はブート領域に記憶される。この場合、該ブートブロックコードのコピーが該フラッシュ部品の他の領域に書き込まれる。該他の領域におけるブートブロックコードのイメージは、その後、上記ブートブロックにおけるブートブロックコードと比較される。一致が存在する場合、ブートブロック領域は保護が解かれ、これにより、ブートブロックにおけるブートコードのアップデートを許可する。上記ブートブロック領域におけるフラッシュ入力されたＢＩＯＳイメージ内のブートブロックコードは、前記他の領域におけるブートブロックコードのコピーと比較され、一致が存在するなら、該ブートブロック領域におけるコードは保護される。一致が存在しないか、又は電源が遮断した場合、当該システムは前記他の領域におけるブートブロックコードを使用してブート（即ち、リスタート）される。
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、米国特許第6,308,265号に記載された装置には幾つかの不利な点がある。米国特許第6,308,265号によれば、新しい及び古いブートコードの比較があり、これは新しいコードが決して古いコードと異なり得ないことを意味する。言い換えると、該ブートコードは完全にはアップデート可能ではない。更に、該装置はフラッシング処理の間にのみ保護を可能にする。更に、フラグが必要とされ、これは余分なブロックのコード（例えば、８Ｋバイト又はそれ以上）を必要とすることを意味し得る。結果として、何らかの状況においては、ＥＥＰＲＯＭ等の余分な記憶媒体を必要とし得る。また、米国特許第6,308,265号に記載された装置の更なる問題点は、フラッシュ部品の或る領域をフラッシング処理専用に保持する必要がある点である。この専用の領域は、コピー処理を達成するために、少なくともブートブロックと等しいサイズのものでなければならない。
【００２３】
かくして、改善されたフラッシングする方法に対する需要が存在する。好ましくは、改善されたフラッシングする方法は、再プログラム可能なメモリにおけるファームウエアの簡単、高速且つ一層効率的な方法によるアップデート及び／又はアップグレードを可能にすると同時に、例えば電源遮断等の中断の場合にフラッシングを回復することができるという点で安全なフラッシングを可能にするようにする。好ましくは、改善されたフラッシングする方法は、所要のブートコードを必ずしも触らないように維持する必要はないようにする。結果として、改善されたフラッシングする方法は、好ましくは、ブートコードのアップデートも可能にする。また、完全な重ね書きによる安全なフラッシングを達成することも望ましいであろう。更に、改善されたフラッシングする方法は、好ましくは、非対称的又は対称的メモリであるかに拘わらず如何なる種類のメモリと一緒に使用されても、費用効果的であるものとする。
【００２４】
本発明の目的は、再プログラム可能な不揮発性記憶媒体の改善されたフラッシングを提供することにある。
【課題を解決するための手段】
【００２５】
この目的は、再プログラム可能な不揮発性記憶媒体をフラッシュする方法の提供により達成された。該方法は、フラッシュコードを前記記憶媒体のフラッシュ専用領域にアップロードするステップと、次いで上記フラッシュコードが正しくアップロードされたかを検証するステップとを有する。上記フラッシュコードが正しくアップロードされたなら、前記記憶媒体のコードセグメントがフラッシュされる。次いで、該コードセグメントが正しく書き込まれたかが検証される。上記コードセグメントが正しく書き込まれない場合は、該コードセグメントは再度フラッシュされる。
【００２６】
前記目的は、コンピュータに上述したフラッシュする方法を実行させるプログラム命令を有するようなコンピュータ読み取り可能なプログラムの提供によっても達成された。更に、前記目的は、コンピュータに上述したフラッシュする方法を実行させるコンピュータ実行可能なプログラム命令を有するような、コンピュータ読み取り可能なプログラムを有する担体の提供によっても達成された。最後に、前記目的は、入力手段、出力手段、記憶手段及び処理手段を有するコンピュータシステムであって、上記処理手段が上述したコンピュータ読み取り可能なプログラムによりコンピュータ読み取り可能なプログラムを実行するように構成されているようなコンピュータシステムの提供によっても達成された。
【００２７】
本発明の利点は、添付請求項から明らかとなるであろう。例えば、本発明の１つの大きな利点は、中断の場合に回復することができるような安全なフラッシングを提供することであることが明らかであろう。更に、例えば電源遮断等の中断が何時発生するかに拘わらず、常に前記再プログラム可能な不揮発性記憶媒体を"再フラッシュ"することができることが明らかになるであろう。更なる利点は、本発明がフラッシュを実行するために必要な命令のアップデート及び／又はアップグレードも可能にすることである。本発明による更に他の利点は、完全な重ね書きによる、即ちフラッシュされるべき完全な不揮発性記憶媒体の重ね書きによる安全なフラッシングを提供することである。本発明による更に他の利点は、従来技術に比較して一層効率的で且つ益々安全なフラッシングを可能にすることである。最後に、当該フラッシングは、非対称的又は対称的なメモリであるかに拘わらず如何なる種類のメモリと一緒に使用される場合にも費用効果的である。
【発明を実施するための最良の形態】
【００２８】
以下、本発明を好ましい実施例に関連して添付図面を参照して更に詳細に説明する。
【００２９】
図１は、基本的コンピュータシステム１０の概要を示している。データ及びプログラム情報が入力装置１１１から供給され、先ず二次メモリ手段１２、１３に記憶される。次いで、上記プログラムはＣＰＵ１４により取り込まれ、該ＣＰＵは情報の流れを該プログラムに従って指示する。例えば、データは計算ユニット１４に供給して処理することができ、次いで結果は再び二次メモリ手段１２、１３に記憶される。このような順次の処理が完了すると、処理結果は制御ユニット１４からの命令により二次メモリ手段１２、１３から出力装置１１２に送ることができる。データバス１５、制御バス１６及びアドレスバス１７は、図１に示すように、当該コンピュータシステム１０の異なるモジュール１１、１２、１３及び１４の間で相互接続すると共にデータを伝送する。これらのバスは、８ビット、１６ビット、３２ビット、６４ビット等のサイズにより区別することができる。コンピュータシステムのコンフィギュレーションは非常に複雑であり、多くの電子部品及びサブシステムを有する。しかしながら、本特定の明細書及び請求項は、如何なるコンピュータシステムにおいても使用することが可能な記憶媒体のフラッシングに主に関係するものである。このように、コンピュータシステムの構成及び動作原理は、ここではこれ以上詳細には説明しない。更に、当業者であれば斯様なコンピュータシステムの基本的構成及び動作原理は知っていることを強調しておく。
【００３０】
以下、本発明を、限定するものではないが、２つの異なる実施例に関連して説明する。更に、解説目的のみのため、本発明はフラッシュＲＯＭに関連して説明する。尚、本発明は例えばＥＰＲＯＭ又はＥＥＰＲＯＭ等の他のタイプの再プログラム可能な不揮発性記憶媒体にも適用することができることを強調しておく。
【００３１】
ここで、本発明の第１実施例を説明する。図２は、本発明の第１実施例によるフラッシュＲＯＭ２０のコンフィギュレーションを示す。該フラッシュＲＯＭ２０はコードセグメント２０１とフラッシュ専用領域２０２とを有している。コードセグメント２０１は、処理手段１４により実行可能なブートコードを伴うブロック及び通常の動作のためのコードを伴う少なくとも１つのブロックを有している。更に、該コードセグメントは第１フラッシュコードを有し、該第１フラッシュコードは処理手段１４により当該フラッシングＲＯＭのフラッシングを可能にするために実行することができる。該第１実施例によれば、コードセグメント２０１は更に完全性チェックコードを伴うブロックも有し、該完全性チェックコードはコードセグメント２０１の完全性をチェックするように構成されている。前記ブートコードを伴うブロックは通常はコードセグメント２０１の始めに配置され、上記完全性チェックコードを伴うブロックは有利にはコードセグメント２０１の終わりに配置することができる。フラッシュ専用領域２０２は特別なフラッシュ専用ファームウエアを有するように構成される。このファームウエアは処理手段１４により起動することができる。更に、該ファームウエアはフラッシング動作の開始を可能にするための最小限の機能のみを受容するように構成されている。そのようであるので、該ファームウエアは当該フラッシュＲＯＭ２０のフラッシングを可能にする第２フラッシュコードを有することができる。該フラッシュ専用領域は、フラッシング動作が例えば電源遮断等により中断された場合のリスタートに際してのみ使用されるように構成されていると理解されるべきである。該フラッシュ専用領域が必要でない場合は、該領域はクリアすることが、即ち該領域を消去することにより空にすることができる。これは、従来一般的に知られている如何なる消去技術により達成することもできる。該フラッシュ専用領域を設けたことは、結果的に、何時中断が発生するかに無関係に、当該フラッシュＲＯＭのフラッシングが回復されるのを可能にする。
【００３２】
該第１実施例によれば、処理手段１４は、フラッシング動作を開始するために少なくとも上記コードセグメントにおける第１フラッシュコードを実行するようにコンフィギュレーションされる。更に、処理手段１４は、フラッシング動作の間において中断が発生した場合は、他のアドレスにジャンプすることにより当該フラッシュＲＯＭの再フラッシングを可能にするようにコンフィギュレーションされる。このように、中断が終わり、電源が供給された場合に、上記処理手段は第２フラッシュコードを起動し、これにより当該フラッシュＲＯＭのフラッシングを可能にするようにコンフィギュレーションされている。該第１実施例によれば、処理手段１４は更に後に説明するウォッチドッグレジスタを有している。
【００３３】
図３は、本発明の第１実施例によるフラッシュする方法を記載したフローチャートである。処理手段１４は、通常は、フラッシュＲＯＭ２０のコードセグメント２０１内に位置する固定のアドレスにおいて前記ブートコードの実行を開始する。当該フラッシュＲＯＭのフラッシング動作（仮定として、該フラッシュＲＯＭのファームウエアをアップグレード及び／又はアップデートするための）が、前記第１フラッシュコードを実行することにより開始されると、第２フラッシュコードが第１ステップ３１０においてフラッシュ専用領域２０２にアップロードされる。第２フラッシュコードをフラッシュ専用領域２０２にアップロードする場合、即ちフラッシングする場合、該第２フラッシュコードはフラッシュ専用領域２０２に書き込まれ、これがコードセグメント２０１のフラッシングを可能にする。ステップ３２０において、上記第２フラッシュコードがフラッシュ専用領域２０２に正しくアップロードされたかが検証される。ステップ３０１において第２フラッシュコードが正しくアップロードされなかった場合、該第２フラッシュコードはフラッシュ専用領域２０２に再度アップロードされる。言い換えると、フラッシュ専用領域２０２に第２フラッシュコードをアップロードするステップは、該第２フラッシュコードのアップロード処理が成功するまで再試行される。一方、ステップ３２０において上記第２フラッシュコードが正しくアップロードされていた場合、コードセグメント２０１はステップ３３０において新しいコードでフラッシュすることができる。ステップ３４０において、該新コードがコードセグメント２０１に正しく書き込まれたかが検証される。上記コードがコードセグメント２０１に満足のゆくように書き込まれなかった場合、該コードセグメント２０１は再びフラッシュされる。言い換えると、コードセグメント２０１をフラッシュする上記ステップは、該コードセグメント２０１のフラッシングが成功するまで再試行される。上記コードがコードセグメント２０１に満足のゆくように書き込まれた場合、フラッシュ専用領域２０２に含まれる上記第２フラッシュコードは最終的にステップ３５０において消去することができる。結果として、本方法は、フラッシュの完了の後、当該フラッシュＲＯＭの全てのコードは書き換えられているという点で完全な重ね書きによるフラッシングを提供する。
【００３４】
以下の議論では、複数の中断の筋書を図４Ａ及び図４Ｂに関連して説明する。図４Ａを参照すると、電源遮断等の中断がステップ３１０又は３２０の間に、即ち第２フラッシュコードをフラッシュ専用領域２０２にアップロードするステップの間、又は第２フラッシュコードが正しくアップロードされたかを検証するステップの間に発生した場合、フラッシング動作の実行は中断されるであろう。該中断が終わり、電源が供給されると、コードの通常の実行がステップ４０１で開始するであろう。これは、コードセグメント２０１は変更されていないからであり、該コードセグメント２０１に含まれるコードが、通常の動作に必要な唯一のコードであるからである。この様に、フラッシング動作はステップ３１０において再開することができる。
【００３５】
図４Ｂを参照して、中断がステップ３３０又は３４０において、即ちコードセグメント２０１のフラッシングの間に、又はコードセグメント２０１が正しく書き込まれたかが検証されるステップの間に発生した場合、当該フラッシュ動作は中断されるであろう。中断が終了し、電源が供給された場合、コードの通常の実行がステップ４１１において開始するであろう。ステップ４１２においては、コードセグメント２０１が完全なコードを有するかが検証される。コードセグメント２０１が完全なコードを有する場合、ステップ４１３においてコードの通常の実行が進行するであろう。この様にして、フラッシングはステップ３１０において再び開始することができる。一方、コードセグメント２０１が壊れたコードを有する場合、上記コードセグメントの新たなフラッシングのための第２フラッシュコードがステップ４１４において起動されるであろう。このようにして、フラッシュ処理はステップ３１０において再開することができる。
【００３６】
第１実施例の好ましい態様によれば、ステップ４１２におけるコードセグメント２０１が完全なコードを有するかの検証は、完全性チェックコード自体が壊れていない場合に、コードセグメント２０１に含まれている該完全性チェックコードを実行するステップを有する。コードセグメント２０１が完全である場合、即ち該セグメントに含まれるコードが壊れていない場合、前記ウォッチドッグレジスタが有効な値に設定されるであろう。更に、該ウォッチドッグレジスタは処理手段１４によりチェックすることができ、該ウォッチドッグレジスタが有効な値に設定されない場合、上記コードセグメントは壊れているものと推定される。該ウォッチドッグレジスタをチェックするステップは、更に、ステップ４１１の後の、即ちコードの通常の実行を開始するステップの後の所定の時間内に実行される。上記所定の時間は、有利には、１秒未満に選定される。例えば０．５〜２．５秒等の、１秒以外の上記所定の時間の値も、本発明の範囲内で勿論可能である。結果として、ウォッチドッグレジスタが処理手段１４によりチェックされる前に該ウォッチドッグレジスタが上記有効な値に設定されなかった場合、コードセグメント２０１は壊れたコードを有すると推定されるであろう。従って、コードの新たなフラッシングのための第２フラッシュコードが、ステップ４１４において起動されるであろう。一方、上記ウォッチドッグレジスタが時間内に上記有効な値に設定された場合は、コードセグメント２０１は完全なコードを有すると推定され、かくして、コードの通常の実行がステップ４１３において進行する。
【００３７】
上記第１実施例の一態様によれば、コードセグメント２０１の完全性チェックは、先ずコードセグメント２０１に含まれるコードに対するチェックサムを計算し、その後該チェックサムを完全なコードを示す所定の値と比較することにより達成することができる。上記チェックサムが上記所定の値に等しい場合は、コードセグメント２０１が完全なコードを有すると推定される。他の例として、チェックサムは、コードセグメント２０１の一部のみ又はコードセグメント２０１の選択された（例えば、最後の４バイト）部分に対して計算し、その後該計算されたチェックサムを完全なコードを示す所定の値と比較することもできる。
【００３８】
例示として、中断がステップ３３０において、即ちコードセグメント２０１のフラッシングのステップの間において発生した場合、コードセグメント２０１には、最早、完全なコードは存在しない。従って、前記ウォッチドッグレジスタは時間内に、即ち処理手段１４が該ウォッチドッグレジスタをチェックする前に有効な値に設定されることはない。結果として、処理手段１４はフラッシュ専用領域２０２内の第２フラッシュコードを起動し、フラッシング動作が結果的に再開される。中断がステップ３４０において、即ちコードがコードセグメント２０１に正しく書き込まれたかを検証するステップの間において発生した場合、２つの可能性のある筋書きが存在する。上記コードセグメントが満足のゆくようにフラッシュされていた場合は、コードの通常の実行が開始されるであろう。この場合、前記完全性チェックが実行されるであろう。コードセグメント２０１は完全なコードを有するので、前記ウォッチドッグレジスタは時間内に有効な値に設定され、次いで当該コードの通常の実行が進行することができる。従って、フラッシング動作をステップ３１０において再開することができる。一方、コードセグメント２０１が壊れたコードを有する場合、前記完全性チェックコードには到達しないであろう。従って、上記ウォッチドッグレジスタは有効な値に設定されることはなく、かくして、第２フラッシュコードが起動される。数バイトしか壊れていなかった場合は、上記完全性チェックコードに到達するかも知れない。しかしながら、その場合、コードセグメント２０１が壊れたコードを有することが発見されるであろう。この場合、上記ウォッチドッグレジスタは有効な値に設定されず、第２フラッシュコードが起動されるであろう。結果として、フラッシング動作は回復することができ、これによりコードセグメント２０１の再フラッシングを可能にする。上記した筋書は、何時電源遮断があったか又は他の如何なる中断にも拘わらず、常にフラッシングを回復することができることを示している。
【００３９】
次に、本発明の第２実施例を説明する。図５は、本発明の第２実施例によるフラッシュＲＯＭ５０のコンフィギュレーションを示している。該フラッシュＲＯＭ５０はコードセグメント５０１と、フラッシュ専用領域５０２とを有している。コードセグメント５０１は、処理手段１４により実行可能なブートコードを伴うブロックと、通常の動作のためのコードを伴う少なくとも１つのブロックとを有している。更に、該コードセグメントは、当該フラッシュＲＯＭのフラッシングを可能にするために処理手段１４により実行され得るような第１フラッシュコードを有している。しかしながら、第１実施例とは反して、該コードセグメント５０１は完全性チェックコードを持つブロックは有していない。第１実施例における場合と同様に、該フラッシュＲＯＭはフラッシュ専用領域５０２も有している。該フラッシュ専用領域５０２は特別なフラッシュ専用ファームウエアを有するように構成されている。このファームウエアは処理手段１４により起動することができる。更に、該ファームウエアはフラッシング動作の開始を可能にするための最小限の機能のみを受容するように構成される。そのようであるので、該ファームウエアは当該フラッシュＲＯＭのフラッシングを可能にするための第２フラッシュコードを有することができる。該フラッシュ専用領域は、フラッシング動作が例えば電源遮断等により中断された場合のリスタートに際してのみ使用されるように構成されていると理解されるべきである。該フラッシュ専用領域が必要でない場合は、該領域はクリアすることが、即ち該領域を消去することにより空にすることができる。フラッシュ専用領域５０２の斯様な消去は、従来一般的に知られている如何なる消去技術により達成することもできる。該フラッシュ専用領域を設けたことは、何時中断が発生するかに無関係に、当該フラッシュＲＯＭのフラッシングが回復されるのを可能にする。
【００４０】
該第２実施例によれば、処理手段１４はコードセグメント５０１の完全性をチェックするように構成される。該処理手段は、これを、例えば上記コードセグメントに含まれるコードに対してチェックサムを計算し、このチェックサムを完全なコードを示す所定の値と比較することにより実行することができる。一致が存在する場合、即ち上記チェックサムが上記所定の値に等しい場合、上記コードセグメントは完全なコードを有すると推定される。他の例として、上記チェックサムは、コードセグメント５０１の一部分のみに対して、又はコードセグメント５０１の選択された部分（例えば、最後の４バイト）に対して計算することができる。更に、処理手段１４は、フラッシング動作を開始するために上記コードセグメント内の第１フラッシュコードを実行するように構成される。更に、本発明の第１実施例における場合と同様に、処理手段１４は、前のフラッシング動作の間に中断が発生した場合に、他のアドレスにジャンプすることにより当該フラッシュＲＯＭの再フラッシングを可能にするよう構成される。かくして、中断が終了し、電源が供給された場合、上記処理手段は第２フラッシュコードを起動するようにコンフィギュレーションされ、これにより当該フラッシュＲＯＭのフラッシングを可能にする。
【００４１】
図６及び図７は、上記第２実施例によるフラッシュする方法を記載した２つのフローチャートである。通常は、処理手段１４はコードセグメント５０１内に位置する固定アドレスにおいてブートコードの実行を開始する。しかしながら、該第２実施例によれば、処理手段１４は最初にステップ６０１においてコードセグメント５０１が完全なコードを有するかを検証する。
【００４２】
ステップ６１０において、コードセグメント５０１が完全なコードを有することが検証された場合は、ステップ６２０において当該コードの通常の実行が進む。図７を参照すると、この場合、フラッシングはステップ７１０から開始することができる。結果として、フラッシュＲＯＭ５０のフラッシング（仮定として、該フラッシュＲＯＭ５０のファームウエアをアップグレード及び／又はアップデートするための）が、例えば第１フラッシュコードを実行することにより後に開始される場合、ステップ７１０において第２フラッシュコードがフラッシュ専用領域５０２にアップロードされる。第２フラッシュコードをフラッシュ専用領域５０２にアップロード、即ちフラッシュする場合、該第２フラッシュコードはフラッシュ専用領域５０２に書き込まれ、これがコードセグメント５０１のフラッシングを可能にする。ステップ７２０において、第２フラッシュコードがフラッシュ専用領域５０２に正しくアップロードされたかが検証される。ステップ７１０において第２フラッシュコードが正しくアップロードされなかった場合、該第２フラッシュコードはフラッシュ専用領域５０２に再びアップロードされる。言い換えると、第２フラッシュコードをフラッシュ専用領域５０２にアップロードするステップは、該第２フラッシュコードのアップロードが成功するまで再試行される。第２フラッシュコードが正しくアップロードされた場合、コードセグメント５０１はステップ７３０において新たなコードでフラッシュすることができる。次いで、ステップ７４０において、上記新たなコードがコードセグメント５０１に正しく書き込まれたかが検証される。上記コードがコードセグメント５０１に満足のゆくように書き込まれなかった場合、コードセグメント５０１は再度フラッシュされる。言い換えると、コードセグメント５０１をフラッシュするステップは、該コードセグメントのフラッシングが成功するまで再試行される。上記コードがコードセグメント５０１に満足のゆくように書き込まれた場合、フラッシュ専用領域５０２に含まれる第２フラッシュコードは、最終的に、ステップ７５０において消去することができる。
【００４３】
ステップ６１０において、コードセグメント５０１が不完全なコード、即ち壊れたコードを有することが検証された場合、該コードの通常の実行は進行しないであろう。代わりに、ステップ６３０において第２フラッシュコードが起動され、続いてコードセグメント５０１がステップ６４０においてフラッシュされる。続くステップ６５０においては、上記フラッシュが満足の行くものであったかが、即ちコードセグメント５０１にコードが正しく書き込まれたかが検証される。コードがコードセグメント５０１に正しく書き込まれなかった場合、該コードセグメント５０１は再度フラッシュされる。言い換えると、コードセグメント５０１をフラッシュするステップは、該コードセグメント５０１のフラッシングが成功するまで再試行される。コードがコードセグメント５０１に満足のゆくように書き込まれたことが検証された場合、フラッシュ専用領域５０２に含まれる第２フラッシュコードはステップ６６０において最終的に消去することができる。
【００４４】
該第２実施例の好ましい態様によれば、ステップ６５０におけるコードセグメント５０１が正しく書き込まれたかの検証は、コードセグメント５０１に書き込まれるべきコードを有する他の記憶媒体に含まれる該コードを、コードセグメント５０１に書き込まれたコードと比較することにより達成することができる。上記他の記憶媒体は好ましくはＲＡＭとすることができる。上述した議論からは、本発明の第２実施例も、フラッシングの完了の後にフラッシュＲＯＭ５０の全てのコードが書き換えられているという点で、完全な重ね書きによるフラッシングを提供するということは明らかである。
【００４５】
以下の議論においては、複数の中断の筋書を説明する。
【００４６】
もし中断が、ステップ６３０又は６４０において、即ちフラッシュコードの起動の間又はコードセグメント５０１のフラッシングの間に発生した場合、当該フラッシング動作の実行は中断されるであろう。該中断が終了し、電源が供給された場合、処理手段１４はステップ６１０においてリスタートし、完全性チェックを介してコードセグメント５０１が壊れていることを検出するであろう。従って、第２フラッシュコードがステップ６３０において起動され、これによりステップ６４０においてコードセグメント５０１のフラッシングを可能にする。
【００４７】
中断が、ステップ６５０、即ちコードセグメント５０１が正しく書き込まれたかを検証するステップにおいて発生した場合、当該フラッシング動作の実行は中断されるであろう。ここでは、２つの可能性がある。上記中断が終了し、電源が供給された場合、当該処理はステップ６１０における完全性チェックで開始するであろう。コードセグメント５０１が満足の行くようにフラッシュされていた場合、コードの通常の実行がステップ６２０で開始するであろう。何故なら、コードセグメント５０１は完全なコードを有するからである。結果的に、当該フラッシングはステップ７１０から再開することができる。もし、コードセグメント５０１が満足の行くようにフラッシュされなかった場合、ステップ６３０において第２フラッシュコードが起動され、これによりステップ６４０においてコードセグメント５０１のフラッシングを可能にする。
【００４８】
中断が、ステップ７１０又は７２０の間に、即ちフラッシュ専用領域５０２への第２フラッシュコードのアップロードの間に又は第２フラッシュコードが正しくアップロードされたかを検証している間に発生した場合、当該フラッシング動作の実行は中断されるであろう。該中断が終了し、電源が供給された場合、処理手段１４はステップ６１０における完全性チェックでリスタートする。ステップ６１０においては、コードセグメント５０１が完全なコードを有すると判定されるであろう。これは、コードセグメント５０１は変更されていないからである。従って、当該コードの通常の実行がステップ６２０に従って進行する。このようにして、フラッシングはステップ７１０から再開することができる。
【００４９】
中断が、ステップ７３０、即ちコードセグメント５０１をフラッシュするステップにおいて発生した場合、フラッシング動作の実行は中断されるであろう。該中断が終了し、電源が供給された場合、当該処理はステップ６１０における完全性チェックでリスタートする。ステップ６１０においては、コードセグメント５０１が壊れたコードを有すると判定されるであろう。結果的に、第２フラッシュコードがステップ６３０において起動され、これにより、ステップ６４０においてコードセグメント５０１のフラッシングを可能にする。
【００５０】
中断が、ステップ７４０、即ちコードセグメント５０１にコードが正しく書き込まれたかを検証するステップにおいて発生した場合、当該フラッシング動作の実行は中断されるであろう。該中断が終了し、電源が供給された場合、当該処理はステップ６１０における完全性チェックで開始するであろう。ここでは、２つの可能性が存在する。コードセグメント５０１がステップ７３０において満足の行くようにフラッシュされた場合、ステップ６２０において当該コードの通常の実行が開始するであろう。何故なら、コードセグメント５０１は完全なコードを有するからである。結果として、当該フラッシングはステップ７１０から再開することができる。コードセグメント５０１が満足の行くようにフラッシュされなかった場合、即ちコードセグメント５０１が壊れたコードを有する場合、ステップ６１０において、コードセグメント５０１が壊れていることが検証されるであろう。従って、ステップ６３０において、フラッシュ専用領域５０２に含まれる第２フラッシュコードが起動され、これにより、本発明の第２実施例によりステップ６４０においてコードセグメント５０１のフラッシングを可能にする。
【００５１】
上述した筋書は、電源遮断又は如何なる他の中断が存在するかに無関係に、第２実施例によりフラッシングを回復することが常に可能であることを示している。
【００５２】
本発明の或る態様によれば、フラッシュコードが正しくアップロードされたかを検証する前記ステップは、前記フラッシュ専用領域にアップロードされるべきコードを有する例えばＲＡＭ等の他の記憶媒体に含まれる該コードを、上記フラッシュ専用領域にアップロードされたフラッシュコードと比較することにより達成される。
【００５３】
本発明の更に他の態様によれば、前記コードセグメントが正しく書き込まれたかを検証する前記ステップは、上記コードセグメントに書き込まれるべきコードを有する例えばＲＡＭ等の他の記憶媒体に含まれる該コードを、該コードセグメントに書き込まれたコードと比較することにより達成される。
【００５４】
先に述べた比較するステップは、好ましくは、バイト毎の比較を実行することにより達成することができる。これは、二進ワードを比較し、比較されたバイトが互いに等しいか否かを判定することにより達成することができる。上記バイトが互いに等しい場合、上記他の記憶媒体内のコードは当該不揮発性記憶媒体内のコードに一致すると推定される。他の例として、上記他の記憶媒体内のコードに対する第１チェックサム及び当該不揮発性記憶媒体内のコードに対する第２チェックサムを計算することも可能である。その後、これらのチェックサムは比較される。上記チェックサムが互いに等しい場合は、上記他の記憶媒体内のコードは当該不揮発性記憶媒体内のコードに一致すると推定される。更に他の代替例は、当該不揮発性記憶媒体内のコードに対してチェックサムを計算し、このチェックサムを該不揮発性記憶媒体に書き込まれるべきコードを示す所定の値と比較することである。
【００５５】
完全な開示のために、上記議論は本発明の２つの好ましい実施例に焦点を合わせるようにしたが、添付請求項は斯様に限定されるべきものではなく、当業者が想到し得るような、ここで述べた基本内に充分に入る全ての変形例及び代替構成を利用するものと見なされるべきである。例えば、コンピュータに本明細書で述べた方法を実行させるプログラム命令を有するようなコンピュータプログラムも、本開示の範囲内に入ると見なされるべきである。また、コンピュータに本明細書で述べた方法を実行させるコンピュータ実行可能な命令を有するようなコンピュータプログラムを有する種々の種類の担体も、本開示の範囲内に入ると見なされるべきである。従って、ファームウエア、記録媒体、コンピュータメモリ、読取専用メモリ又は電気キャリア信号も、本開示の範囲内に入ると見なされるべきである。上記記載はフラッシュＲＯＭに焦点を合わせているが、本発明は、例えばＥＰＲＯＭ又はＥＥＰＲＯＭ等の他の再プログラム可能な不揮発性記憶媒体と共に使用することもできる。
【００５６】
本発明は、特に光学ドライブに使用すべき／使用することができる。有利には、本発明はフィリップス・セミコンダクタ社の"dataref5"基準設計で使用することができる。本発明を使用すべき／使用することができる多くの可能性のあるアプリケーションが存在する。例えば、本発明は、再プログラム可能な不揮発性メモリを使用する場合、パーソナルコンピュータ、携帯電話、スマートフォン、パーソナル・デジタル・アシスタント（ＰＤＡ）、電子装置、台所、清掃及びアウトドア使用の知的電子機器及び装置、消費者用電子機器、例えばデジタルカメラ等の画像化装置、等々のアプリケーションに使用すべき／使用することができる。従って、入力手段、出力手段、記憶手段及び処理手段を有し、上記処理手段が当該アプリケーションに本明細書に記載した方法を実行させるプログラム命令を有するコンピュータプログラムを実行するように構成されているような、全てのアプリケーションは、本開示の範囲内に入ると見なされるべきである。最後に、添付請求項を通して使用される符号は、本発明の範囲を限定するものと見なしてはならないことを強調しておく。
【図面の簡単な説明】
【００５７】
【図１】図１は、基本的コンピュータシステムの構成を図示する。
【図２】図２は、本発明の第１実施例によるフラッシュＲＯＭの構成を図示する。
【図３】図３は、本発明の第１実施例によるフラッシュする方法を記載したフローチャートを図示する。
【図４Ａ】図４Ａは、本発明の第１実施例による異なる中断の筋書を図示する。
【図４Ｂ】図４Ｂは、本発明の第１実施例による異なる中断の筋書を図示する。
【図５】図５は、本発明の第２実施例によるフラッシュＲＯＭの構成を図示する。
【図６】図６は、本発明の第２実施例によるフラッシュする方法を記載したフローチャートを図示する。
【図７】図７は、本発明の第２実施例によるフラッシュする方法の更なるステップを記載したフローチャートを図示し、このフローチャートはコードセグメントが完全なコードを有する場合に適している。
【図１】
2008504628.tif 000003
【図２】
2008504628.tif 000004
【図３】
2008504628.tif 000005
【図４Ａ】
2008504628.tif 000006
【図４Ｂ】
2008504628.tif 000007
【図５】
2008504628.tif 000008
【図６】
2008504628.tif 000009
【図７】
2008504628.tif 000010
【国際調査報告】
2008504628.tif 000011
2008504628.tif 000012
2008504628.tif 000013