(57)【要約】  第１のセクタ１の未使用部分にアプリケーションコードＡ１を書き込む前に、ブートストラップローダコードＢが第１のセクタ１から第２のセクタ２へコピーされ、ついで第１のセクタ１の全ての内容が消去され、その後ブートストラップローダコードＢが第２のセクタ２から第１のセクタ１へ再コピーされる。
2008533574.tif 000002
【特許請求の範囲】
【請求項１】
セクタ単位での消去が可能であり、第１のセクタ（１）にブートストラップローダコード（Ｂ）が含まれている
半導体メモリ手段（１０）の第１のセクタへの再書き込み方法において、
ａ）ブートストラップローダコード（Ｂ）を第１のセクタ（１）から第２のセクタ（２）へコピーするステップ、
ｂ）第１のセクタ（１）の全ての内容を消去するステップ、
ｃ）ブートストラップローダコード（Ｂ）を第２のセクタ（２）から第１のセクタ（１）へ再コピーするステップ、および、
ｄ）アプリケーションコード（Ａ）を第１のセクタの未使用部分へ書き込むステップ
を有する
ことを特徴とする半導体メモリ手段の第１のセクタへの再書き込み方法。
【請求項２】
第１のセクタ（１）に記憶されたブートストラップローダコードの第１のチェックサムと第２のセクタ（２）にコピーされたブートストラップローダコードの第２のチェックサムとを第１のセクタの消去前に計算して比較する、請求項１記載の方法。
【請求項３】
再コピーされたブートストラップローダコードの第３のチェックサムを計算し、第１のチェックサムと比較する、請求項２記載の方法。
【請求項４】
第１のセクタ（１）の消去前に、消去からブートストラップローダコード（Ｂ）の再コピーまでの全てのステップを処理するのに充分な電力を供給できるよう第２の電源（１３）を準備する、請求項１から３までのいずれか１項記載の方法。
【請求項５】
アプリケーションコード（Ａ１）はアプリケーションソフトウェアのうち第１のセクタ（１）の未使用部分を充填するように選択された部分である、請求項１から４までのいずれか１項記載の方法。
【請求項６】
当該の半導体メモリ手段はフラッシュメモリまたはＥＥＰＲＯＭである、請求項１から５までのいずれか１項記載の方法。
【請求項７】
第２のセクタ（２）は当該のメモリ手段のセクタであるかまたは別に設けられた第２のメモリ手段のセクタである、請求項１から６までのいずれか１項記載の方法。
【請求項８】
セクタ単位での消去の可能な半導体メモリ手段（１０）および該メモリ手段に接続されたコントローラ（１１）が設けられており、
該コントローラにより、ブートストラップローダコード（Ｂ）の送受信、メモリ手段（１０）のいずれかのセクタへのアプリケーションコード（Ａ１〜Ａｎ）の送信、および、いずれかのセクタの消去命令、読み出し命令および書き込み命令の送信が行われる
ことを特徴とする半導体メモリ手段の第１のセクタへの再書き込み装置。
【請求項９】
当該の装置は第２の電源（１３）を有する、請求項８記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
従来技術
本発明は、セクタ単位での消去が可能であり、第１のセクタにブートストラップローダコードが含まれている半導体メモリ手段の第１のセクタへの再書き込み方法、および、この方法を実行する装置に関する。
【０００２】
本発明を、コントローラのフラッシュメモリに記憶されたアプリケーションコードを更新するケースに則して説明する。ただし本発明はこうしたケースに限定されるものではなく、セクタ単位での消去の可能な半導体メモリ手段の第１のセクタへ再書き込みを行うあらゆるケースに適用可能である。
【０００３】
コントローラは自身の実行すべき基本ルーチンおよびアプリケーションコードの記憶に不揮発性のメモリデバイスを用いている。第１のセクタ（基本セクタ）のメモリ空間のうち、アドレス０ｘ００に位置する小さな部分が通常ブートストラップローダコードのためにリザーブされている。起動中にコントローラは必要な全ての命令を含むブートストラップローダコードを探索し、自身のハードウェア、例えばインタフェースをセットアップし、アプリケーションコードがこれを利用できるようにする。ブートストラップローダコードが欠損すると、コントローラ全体が機能不全に陥る。この場合、特別な機器を使用しないと、コントローラをデフォルトモードまたはブートストラップローダコードの再プログラミングモードへリセットできない。したがってブートストラップローダコードの欠損はぜひとも防止しなければならない。
【０００４】
不揮発性の標準的な半導体メモリデバイスは、データの書き換えに２つのステップを要する。つまり、書き込みステップは１ビットを１つの論理レベルにセットするかまたはこれを変更しないままとするかのみであり、まずメモリを第２の論理レベルへセットする消去ステップを行わなければならないのである。ここで、書き込みステップはメモリデバイスの仕様に応じて１ビットごと、１バイトごとまたは１ワードごとに適用されるが、消去ステップはセクタ全体に及ぶ。１つのセクタ内の小さな一部のみを変更すればよいだけの場合であっても、消去ステップにより全ての内容が影響を受け、失われてしまう。このため、たいていの装置では、書き込みルーチンは第１のセクタへのアクセスを行わない。
【０００５】
ブートストラップローダコードの記憶に必要なメモリ空間は従来の不揮発性のメモリデバイスのセクタより格段に小さい。未使用の空間はアプリケーションコードによって利用されうるはずである。しかし、アプリケーションコードの更新または改良と第１のセクタの書き換えとは、必要があるにもかかわらず、ブートストラップローダコードの欠損をまねくため、従来技術の手法では同時に成立させることができなかった。よって第１のセクタの未使用部分すなわちブートストラップローダコードの記憶に用いられていない部分は空いたままとされてきたのである。
【０００６】
最近、ブートストラップローダコードは標準的なメモリデバイスの第１のセクタの１／２さえ占めないほど小さくなっており、大きなメモリ空間が無駄になっている。そうかと云って、小さなセクタサイズを有するメモリデバイスはメモリ空間へのアドレシングに高次の論理デバイスまたは長い命令コードを要するので不利である。
【０００７】
またほかには、将来の更新が必要ないであろうと考えられる第１のセクタにアプリケーションコードの一部分を書き込む手法も存在する。しかし、当該のアプリケーションコードの部分を識別することはほぼ不可能である。
【０００８】
これらのことから、本発明の基礎とする課題は、第１のセクタに記憶されているブートストラップローダコードを不変のまま保護しつつ、第１のセクタの空き部分を有効データまたは有効コードによって充填する方法を提供し、しかもこれらの有効データまたは有効コードをいつでも変更できるようにすることである。
【０００９】
本発明の利点
この課題は本発明の請求項１の特徴部分に記載された構成により解決される。
【００１０】
本発明の着想は次のようである。すなわち、第１のセクタの未使用部分にアプリケーションコードを書き込む前に、ブートストラップローダコードを第１のセクタから第２のセクタへコピーし、ついで第１のセクタの全ての内容を消去し、その後ブートストラップローダコードを第２のセクタから第１のセクタへ再コピーする。
【００１１】
ブートストラップローダコードのコピーおよび再コピーにより、メモリ手段への新たなアプリケーションコードの書き込みに備えて第１のセクタ全体を消去し、しかもブートストラップローダコードを不変のまま保護することができる。
【００１２】
本発明の有利な実施形態によれば、第１のセクタに記憶されたブートストラップローダコードの第１のチェックサムと第２のセクタにコピーされたブートストラップローダコードの第２のチェックサムとが第１のセクタの消去前に計算され比較される。チェックサムの比較によりブートストラップローダコードが安全にコピーされたことを確認できる。さらに有利には、再コピーされたブートストラップローダコードの第３のチェックサムが計算され、第１のチェックサムと比較される。
【００１３】
本発明の有利な実施形態によれば、第１のセクタの消去前に、消去からブートストラップローダコードの再コピーまでの全てのステップを処理するのに充分な電力を供給できるよう第２の電源が準備される。このようにしておけば、第１の電源が欠落しても、第２の電源への切り換えによってブートストラップローダコードの欠損を回避できる。
【００１４】
本発明の有利な実施形態によれば、アプリケーションコードはアプリケーションソフトウェアのうち第１のセクタの未使用部分に合う大きさに選択された部分である。これによりメモリ空間の未使用部分が最小化される。
【００１５】
本発明の有利な実施形態によれば、第２のセクタは当該のメモリ手段のセクタであるかまたは別に設けられた第２のメモリ手段のセクタである。前者の場合には付加的なメモリ手段を省略できるし、後者の場合には第２のメモリ手段をブートストラップローダコードの一時記憶に用いていっそうの処理の高速化および消費電力の節約を実現することができる。
【００１６】
本発明はさらに半導体メモリ手段の第１のセクタへの再書き込み装置に関しており、この装置はセクタ単位での消去の可能な半導体メモリ手段およびこのメモリ手段に接続されたコントローラを有しており、このコントローラにより、ブートストラップローダコードの送受信、メモリ手段のいずれかのセクタへのアプリケーションコードの送信、いずれかのセクタの消去命令、読み出し命令および書き込み命令の送信が行われる。本発明の有利な実施形態によれば、この装置は第２の電源を有する。
【００１７】
本発明の有利な実施形態によれば、半導体メモリ手段はフラッシュメモリまたはＥＥＰＲＯＭである。
【００１８】
以下に添付図を参照しながら本発明の実施例を詳細に説明する。
【００１９】
図面
図１ａ〜図１ｅには本発明の方法の実施例の各段階が示されている。図２には本発明の方法を実行する装置が示されている。
【００２０】
実施例の詳細な説明
図中、ことわりのないかぎり、同じ素子または同じ機能を有する素子には相応する参照番号を付してある。
【００２１】
本発明の方法の有利な実施例を図１ａ〜図１ｅに則して詳細に説明する。
【００２２】
第１の実施例では不揮発性のメモリデバイスはフラッシュメモリ１０であり、図１ａにこれが概略的に示されている。フラッシュメモリ１０は複数のセクタ１，２，…，ｎへ分割されており、これらのセクタはそれぞれ独立に消去可能である。フラッシュメモリ１０の書き込み動作および読み出し動作には小さな単位、すなわちワード、バイトまたはビットなどが用いられる。
【００２３】
コントローラは起動に際して当該のフラッシュメモリ１０の第１のセクタの部分１ａのアドレス０ｘ００に記憶された命令を探索する。この命令は、他の全ての演算およびアプリケーションコードＡ１，Ａ２，…，Ａｎの実行のためのコントローラのセットアップに必要なブートストラップローダコードＢである。アプリケーションコードＡ１，Ａ２，…，Ａｎは、当該のフラッシュメモリのうち、例えば第２のセクタ２および第ｎのセクタｎの空き空間と第１のセクタ１の未使用部分（ブートストラップローダコードＢによって占有されていない部分）１ｂとに記憶されている。
【００２４】
アプリケーションコードを改良するケースを考察する。この場合、第２のセクタ２および第ｎのセクタｎに記憶されたアプリケーションコードＡ２，Ａｎの部分は消去され、新たなアプリケーションコードによって上書きされる。このときセクタ２，ｎは完全に消去され、新たなコードがこれらのセクタに書き込まれる。
【００２５】
こうした単純な方法は第１のセクタ１には適用できない。なぜならこのようにするとブートストラップローダコードＢが欠損し、フラッシュメモリ１０を含むコントローラが破壊されてしまうからである。したがって、第１のステップで第２のセクタ２および第ｎのセクタｎの一方を消去し、ブートストラップローダコードＢを第１のセクタ１からいずれかのセクタへコピーする。図１ｂではブートストラップローダコードＢは第２のセクタ２へコピーされている。第２のセクタはブートストラップローダコードＢの全体を記憶するのに充分な空間を有するものと理解されたい。次に第２のステップで、第１のセクタ１の全ての内容を消去する。このとき第１のセクタでは古いアプリケーションコードＡ１もブートストラップローダコードＢも消去され、図１ｃに示されているようになる。第３のステップでは、ブートストラップローダコードＢが第２のセクタから第１のセクタの部分１ａの以前のアドレスへ、図１ｄに示されているようにコピーされる。最後のステップで、新たなアプリケーションコードＡ１が第１のセクタ１のうちブートストラップローダコードＢによって使用されていない部分１ｂへ図１ｅに示されているように書き込まれる。付加的に、第２のセクタを消去して、アプリケーションコードの他の部分を書き込むこともできる。
【００２６】
ブートストラップローダコードＢが変化しないことが重要であるので、本発明では、ブートストラップローダコードを第２のセクタ２へコピーする前にチェックサムが計算される。第１のセクタ１から第２のセクタ２へのブートストラップローダコードのコピーは、コピーされたブートストラップローダコードについて計算されたチェックサムが第１のセクタ１のオリジナルのブートストラップローダコードのチェックサムに一致するまで反復される。このステップはブートストラップローダコードが第２のセクタから第１のセクタへ再コピーされる際にも適用可能である。
【００２７】
電源のエラーに起因する問題を回避するために、第２の電源１３が図２に示されているように設けられる。第２の電源は、第１のセクタ１が消去された後ブートストラップローダコードが再コピーされるまでのあいだに図示されていない第１の電源が欠落してしまったとき、メモリデバイス１０およびコントローラ１１へ電力を供給する。第１のセクタ１の消去からブートストラップローダコードのコピーまでの各ステップは短時間（２秒未満）で終了するので、第２の電源は小さなものでよく、コントローラそのものに設けられたキャパシタで足りる。有利には、第２の電源の充電状態が第１のセクタ１の消去前に検査される。
【００２８】
第２の実施例として、ランダムアクセスメモリＲＡＭ１２がブートストラップローダコードＢの一時記憶に用いられるケースを考察する。ＲＡＭの書き込みおよび読み出しは、一般に、フラッシュメモリのセルを利用する場合に比べて高速かつ小さい消費電力で行われる。チェックサムによってコピーエラーが示されたためにコピーを複数回行わなければならない場合、ブートストラップローダコードのコピーおよび再コピーにかかる時間を低減すれば、より小さな第２の電源１３を使用することができるうえ、第１のセクタ１の再プログラミング中にハザードイベントが発生する確率も低減することができる。
【００２９】
コントローラ１１はネットワークシステム２０またはインタネットを介してディストリビュータから新たなアプリケーションコードをロードすることができる。
【図面の簡単な説明】
【００３０】
【図１ａ】本発明の方法の第１の段階を示す図である。
【図１ｂ】本発明の方法の第２の段階を示す図である。
【図１ｃ】本発明の方法の第３の段階を示す図である。
【図１ｄ】本発明の方法の第４の段階を示す図である。
【図１ｅ】本発明の方法の第５の段階を示す図である。
【図２】本発明の方法を実行する装置を示す図である。
【図１ａ】
2008533574.tif 000003
【図１ｂ】
2008533574.tif 000004
【図１ｃ】
2008533574.tif 000005
【図１ｄ】
2008533574.tif 000006
【図１ｅ】
2008533574.tif 000007
【図２】
2008533574.tif 000008
【国際調査報告】
2008533574.tif 000009
2008533574.tif 000010