(57)【要約】【課題】本発明は、インサーキット・プログラミング・システムのための欠陥許容を与える方法及び装置を提供する。【解決手段】本発明は、もし、プログラミング・プロセスが失敗なら、プロセスは、保護されたメモリから再び開始されることができるように、保護されたメモリのインサーキットプログラミングプロセスを初期化するためにコードの最小限をストアすることによって動作させることができる。この形式の許容は、インサーキット・プログラミング・プロセスによって変更されるべきインサーキット・プログラミングを達成するコードを可能にするシステムにおいて重要である。本発明の一つの実施形態は、マルチプレックさ(110)を備え、正規のブートコードシーケンス(102)及び保護されるブートコードシーケンス(107)間で選択的にスイッチし、同時に、ウォッチドッグタイマー(122)を備え、プロセスが正しく進行しているか否かを判断するために、インサーキット・プログラミング・プロセスをモニターする。【選択図】図１
2008033951.tif 000002
【特許請求の範囲】
【請求項１】
再プログラム可能な不揮発性メモリと結合されたプロセッサを含むコンピュータシステムのインサーキット・プログラミング中にエラー回復を行なう方法であって、
第１のブートコードシーケンスを、前記再プログラム可能な不揮発性メモリにストアするステップであって、前記再プログラム可能な不揮発性メモリは、インサーキット・プログラム・プロセスによって、プログラム可能であり、且つ、前記第１のブートコードシーケンスは、システムの初期化資源を有しているステップと、
第２のブートコードシーケンスを、前記インサーキット・プログラミング・プロセスから保護されるメモリにストアするステップであって、前記第２のブートコードシーケンスは、前記第１のブートコードシーケンスにおける前記システムの初期化資源のサブセットを含み、且つ、前記資源は、データまたは命令をリモートソースから前記再プログラム可能な不揮発性メモリにロードするために、インサーキット・プログラミングをサポートするステップと、
データまたは命令を、前記再プログラム可能な不揮発性メモリにロードするために、前記プロセッサによって、前記インサーキット・プログラミング・プロセスを実行するステップと、
前記プロセッサによって、インサーキット・プログラミング状態を、前記インサーキット・プログラミング・プロセスが進行中であることを示す不完全な値にセットするステップと、
前記インサーキット・プログラミング・プロセスがデータまたは命令をロードするステップを完了したき、前記プロセッサによって、インサーキット・プログラミング状態を、前記インサーキット・プログラミング・プロセスが完了したことを示す完全な値にセットするステップと、
前記インサーキット・プログラミング・プロセスを用いてデータのブロックのダウンロードにおける遅延を検出するために、前記データまたは命令のソースの一方または前記プロセッサによって、前記インサーキット・プログラミング・プロセスをモニターするステップと、
もし、前記遅延がタイムアウト値を越えたら、前記モニタに応答して、前記プロセッサにより前記コンピュータシステムを再び初期化するステップと、
前記コンピュータシステムを再び初期化する間に、もし、前記インサーキット・プログラミング状態が完全な値を有するなら、前記プロセッサにより、前記第１のブートコードシーケンスを選択し、実行するステップであって、前記第１のブートコードシーケンスは前記インサーキット・プログラミング・プロセスを通してプログラム可能であり、且つ、もし、前記インサーキット・プログラミング状態が不完全な値を有するなら、前記プロセッサにより、前記第２のブートコードシーケンスを選択し、実行、且つ、前記インサーキット・プログラミング・プロセスを再開始するステップであって、前記第２のブートコードシーケンスは、データまたは命令を前記再プログラム可能な不揮発性メモリロードするために、前記インサーキット・プログラミング・プロセスの再開始をサポートする資源を含む、
ことを特徴とする方法。
【請求項２】
前記インサーキット・プログラミング・プロセスは、コードの一区分を前記再プログラム可能な不揮発性メモリにロードし、且つ、前記コードの一区分がロードされたことを検証するために、前記インサーキット・プログラミング・プロセスによってロードされたコードの一区分をテストするステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記タイムアウト値が遠隔ホストから２回ダウンロードされ、タイムアウト値が正しくダウンロードされたことを保証するために、２つの値が互いに比較され、それらが一致していることを検証することを特徴とする請求項１に記載の方法。
【請求項４】
第１のタイムアウト値が遠隔ホストからダウンロードされ、前記第１のタイムアウト値が少なくとも第２のタイムアウト値と同程度に大きいことを保証するために、コンピュータシステムに永久にストアされた第２のタイムアウト値と比較され、もし、同程度に大きくないなら、タイムアウト値として第２のタイムアウトを使用することを特徴とする請求項１に記載の方法。
【請求項５】
第２のブートコードシーケンスを実行するステップは、第２のブートコードシーケンスの開始を指示するブートベクトルへのジャンプ命令を実行するステップを有することを特徴とする請求項１に記載の方法。
【請求項６】
前記プロセッサへのデータのダウンロード中にシステム性能に基づいてインサーキット・プログラミング・プロセスを用いて、データのブロックをダウンロードするため前記タイムアウト値を判断するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記インサーキット・プログラミング状態が前記インサーキット・プログラミング・プロセスから保護されることを特徴とする請求項１に記載の方法。
【請求項８】
アドレスがインサーキット・プログラミング・プロセスから保護されるように、前記インサーキット・プログラミング・プロセスが遠隔ホストからデータをダウンロードする遠隔ホストのアドレスをストアするステップを有し、
前記第２のブートコードシーケンスにあるインサーキット・プログラミングをサポートする資源が、前記ストアされたアドレスを用いて遠隔ホストとのリンクを開始することを特徴とする請求項１に記載の方法。
【請求項９】
コンピュータシステムのインサーキット・プログラミング中にエラー回復を行なうための装置であって、
再プログラム可能な不揮発性メモリを含むメモリと結合されたプロセッサと、
前記メモリは、前記プロセッサによって実行するために、第１のブートコードシーケンスをストアし、前記第１のブートコードシーケンスは、システムの初期化資源を含んでおり、
前記メモリは、前記プロセッサによって実行するために、第２のブートコードシーケンスをストアし、前記第２のブートコードシーケンスは、前記第１のブートコードシーケンスにある前記システムの初期化資源のサブセットを含み、且つ、データまたは命令を前記プログラム可能な不揮発性メモリにロードするために、インサーキット・プログラミングの再開始をサポートする資源を含み、
前記メモリは、前記プロセッサによって実行するために、インサーキット・プログラミング・シーケンスをストアし、前記インサーキット・プログラミング・シーケンスは、データまたは命令を前記プログラム可能な不揮発性メモリにロードするために、インサーキット・プログラミング・プロセスのための前記プロセッサによって実行され、
前記プロセッサに接続されたインサーキット・プログラミング状態インジケータであって、インサーキット・プログラム・シーケンスの実行前または実行中は、前記プロセッサによって不完全な値にセットされ、且つ、前記インサーキット・プログラム・シーケンスの実行の完了を示すため、前記プロセッサによって完全な値にセットされるインサーキット・プログラミング状態インジケータと、
前記第１のブートコードシーケンスをストアするメモリと第２のブートコードシーケンスをストアするメモリに接続され、コンピュータシステムの初期化のためのブートコードシーケンスを選択するためのセレクター機構であって、もし、前記インサーキット・プログラミング状態インジケータが完全な値にセットされているなら、前記第１のブートコードシーケンスを選択し、もし、インサーキット・プログラミング状態インジケータが不完全な値にセットされているなら、前記第２のブートコードシーケンスを選択するためのセレクター機構と、
を有することを特徴とする装置。
【請求項１０】
前記第１のブートコードシーケンスと第２のブートコードシーケンスは、同じメモリモジュール内に含まれることを特徴とする請求項９記載の装置。
【請求項１１】
前記第１のブートコードシーケンスは、前記インサーキット・プログラミング・プロセスを介してプログラム可能であり、第２のブートコードシーケンスは、前記インサーキット・プログラミング・プロセスから保護されていることを特徴とする請求項９に記載の装置。
【請求項１２】
前記第１のブートコードシーケンスは、フラッシュメモリ内に存在し、前記第２のブートコードシーケンスは、リードオンリーメモリ内に存在することを特徴とする請求項９に記載の装置。
【請求項１３】
前記インサーキット・プログラミング状態は、前記インサーキット・プログラミング・プロセスから保護されることを特徴とする請求項９に記載の装置。
【請求項１４】
前記プロセッサに接続された遠隔ホストアドレスをストアするメモリ有し、前記遠隔ホストアドレスは、遠隔ホストのネットワークアドレスを有し、前記インサーキット・プログラミング・シーケンスは、前記遠隔ホストからデータまたは命令をダウンロードし、且つ、前記第２のブートコードシーケンスは、前記遠隔ホストとのリンクを確立するために資源を有することを特徴とする請求項９に記載の装置。
【請求項１５】
前記プロセッサに接続されたウオッチドッグタイマを有し、前記ウオッチドッグタイマは、前記インサーキット・プログラミング・プロセスをモニターすることを特徴とする請求項９に記載の装置。
【請求項１６】
前記プロセッサへのデータのダウンロード中にシステム性能に基づいてインサーキット・プログラミング・プロセスを用いて、データのブロックをダウンロードするため前記タイムアウト値を判断するステップを含むことを特徴とする請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおけるプロセッサによって実行する一連の命令をストアするための不揮発性メモリを有するコンピュータシステムに関し、特に、不揮発性メモリにストアされた一連の命令を更新し、変更するためのインサーキット・プログラミングのための障害の許容技術に関する。
【背景技術】
【０００２】
マイクロ制御装置によって実行されるべき一連の命令をストアするための集積回路に不揮発性メモリのアレイを含む集積回路のマイクロ制御装置が開発されている。一連の命令は、デバイスの製造過程でプログラムされなければならず、更新することができないリードオンリーメモリ（ＲＯＭ）にストアされる。また、一連の命令は、ＥＰＲＯＭアレイにもストアされる。しかし、このアプローチは、デバイスが回路に配置される前にＥＰＲＯＭアレイをプログラムするために、特別のハードウェアを必要とする。他のシステムにおいては、ＥＥＰＲＯＭメモリが命令をストアするために用いられる。ＥＥＰＲＯＭは、ＥＰＲＯＭより非常に早くプログラムすることができ、素早く変更することができるるという利点を有する。他のアプローチにおいて、フラッシュメモリが命令をストアするために用いられる。これは、不揮発性メモリの高密度化及び高スピードの再プログラミングを可能にする。デバイスが再プログラム可能な不揮発性メモリ、例えばＥＥＰＲＯＭまたはフラッシュメモリとマイクロ制御装置を結合すると、そのデバイスは、それが回路中にある限り、再プログラムされ、相互作用アルゴリズムに基づいてインサーキット・プログラミングを可能にする。
【０００３】
命令及びデータを離れたデバイスに相互にダウンロードする能力は、ネットワーク環境において非常に有用である。例えば、会社は、顧客に装置をサービスセンターに運ぶように要求することなく、顧客の装置をサービスすることができる。むしろ、会社は、インターネットや電話線のような通信チャネルを通して顧客の装置のインサーキット・プログラミング能力を用いて、診断機能を実行することができる。このように、ソフトウェアの修正が顧客の装置へダウンロードされ、そしてその装置は修正され、更新されたコードで再イネーブルされる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
インサーキット・プログラミング中に、信頼性が問題となる。インサーキット・プログラミング・プロセスが１０分間かかり、その時間中にデータ伝送エラーや記録エラーがあるかもしれない。これらのエラーは、外部世界（ハンドシェーキングコード）との通信を行なうコードがそれ自体インサーキット・プログラミング中に変化するならば、特に問題である。このコードが破損されるなら、インサーキット・プログラミングモジュールがそれ自体をリセットしたり、外部世界と通信したりすることなく残されることができる。
必要とされることは、外部世界と通信するために、たとえインサーキット・プログラミング・プロセスによって用いられるコードが正しくプログラムされなくても、インサーキット・プログラミング中に障害の許容度を与える方法である。
【課題を解決するための手段】
【０００５】
本発明は、インサーキット・プログラミング中に、障害の許容度を与えるための方法及び装置を提供する。本発明は、コンピュータシステムのブートコードの一部がインサーキット・プログラミングから保護されることを確実にすることによって動作する。その結果、コンピュータシステムのブートコードはインサーキット・プログラミング中に破損されることがない。本発明は、インサーキット・プログラミング・プロセスが進行しているとき不完全な値にセットされ、インサーキット・プログラミング・プロセスが終了した後完全な値にセットされる、インサーキット・プログラミング状態を維持する。もし、システムがインサーキット・プログラミング中にリセットされると、システムはブートコードの保護された部分からブートするであろう。さもなければ、システムは、インサーキット・プログラミング・プロセスによってプログラム可能である正規のブートコードをブートするであろう。本発明は、もし、インサーキット・プログラミング・プロセスがうまく終了するのに失敗したら、システムがそれ自体をリセットするウオッチドッグタイマーと共に動作する。
【０００６】
したがって、本発明は、インシステム・プログラミング・プロセスが進行中であることを示して、インサーキット・プログラミング状態を不完全な値にセットするステップ；インサーキット・プログラミング・プロセスを開始するステップ；インサーキット・プログラミング・プロセスが終了したとき、インサーキット・プログラミング・プロセスが完全であることを示して、インサーキット・プログラミング状態を完全な値にセットするステップ；及びシステムの初期化中に、もし、インサーキット・プログラミング状態が完全な値を有するならば、第１のブートコードシーケンスがインサーキット・プログラミング・プロセスによってプログラム可能である第１のブートコードシーケンスを実行し、且つ、もし、インサーキット・プログラミング状態が不完全な値を有するならば、第２のブートコードシーケンスがインサーキット・プログラミング・プロセスから保護される第２のブートコードシーケンスを実行するステプを有する、コンピュータシステムのインサーキット・プログラミング中にエラー回復を与える方法として特徴付けられることができる。
【０００７】
本発明の１つの特徴によれば、インサーキット・プログラミング・プロセスは、インサーキット・プログラミング・プロセスによってプログラムされるコードの一部をテストするステップを含む。
【０００８】
本発明の他の特徴によれば、インサーキット・プログラミング命令の伝送における遅延を検出するために、インサーキット・プログラミング・プロセスがモニターされる。もし、その遅延が特定のタイムアウト値を超えるならば、インサーキット・プログラミング・プロセスは再スタートされる。一つの実施形態においては、モニターは、遠隔ホストによって行なわれ、この遠隔ホストからインサーキット・プログラミング・コードがダウンロードされる。他の実施形態においては、モニターは、インサーキット・プログラミング・システムに結合されたウオッチドッグタイマーを用いて行なわれる。
【０００９】
本発明の他の特徴によれば、上述の方法は、遠隔ホストのアドレスをストアするステップを有し、この遠隔ホストからインサーキット・プログラミング・コードがダウンロードされる。
【００１０】
本発明は、プロセッサ；前記プロセッサに結合された第１のブートコードシーケンス；前記プロセッサに結合された第２のブートコードシーケンス；前記プロセッサに結合されたインサーキット・プログラミングの状態インジケータ、前記状態インジケータは、インサーキット・プログラミング中に不完全な値にセットされ、インサーキット・プログラミングが完全になった後、完全な値にセットされる；且つ前記第１及び第２のブートコードシーケンスに結合され、コンピュータシステムの初期化のためのブートコードシーケンスを選択するためのセレクター機構を有し、前記セレクター機構は、もし、インサーキット・プログラミングの状態インジケータが完全な値にセットされるならば、第１のブートコードシーケンスを選択し、もし、インサーキット・プログラミングの状態インジケータが不完全な値にセットされるならば、第２のブートコードシーケンスを選択する、コンピュータシステムのインサーキット・プログラミング中にエラー回復を与えるための装置として特徴付けられることができる。
【００１１】
本発明は、離れたホストからインサーキット・プログラミング命令の伝送における遅延を検出するために、進行中のインサーキットプログラムをモニターするステップ、及び前記遅延がタイムアウト値を越えたならば、インサーキット・プログラミング・プロセスを再スタートするステップを有する、コンピュータシステムのインサーキット・プログラミング中にエラー回復を与えるための方法として特徴付けられることができる。
【発明を実施するための最良の形態】
【００１２】
以下の説明は、この分野の通常の知識を有するものが本発明を作り、使用することができるように示され、特別な応用及びその要件のコンテクストに与えられる。好適な実施形態への種々の変更は、当業者に明らかであろう。また、ここに定義された一般原理は、本発明の精神及び請求の範囲から逸脱することなく他の実施形態及び応用に適用されよう。したがって、本発明は、ここに示された実施形態に限定されることを意図しないが、ここに開示された原理及び特徴と一致する最も広い範囲に及ぶべきである。
【００１３】
図１は、本発明の特徴によるインサーキット・プログラミング用の障害の許容システムの主な機能の幾つかの要素を示す。インサーキット・プログラミング・システムは、不揮発性メモリ１００、ＲＡＭ１０８、ＣＰＵ１１２、及び周辺機器１１４を含む。インサーキット・プログラミング・システムは、またジャンプブートベクトル１１６、マルチプレックサ（ＭＵＸ）１１０、ＩＣＰ状態レジスタ１１８、遠隔ホストアドレスレジスタ１２０及びＩＣＰウオッチドッグ１２２を含む障害の許容を具現化する要素も含む。
【００１４】
特に、ＣＰＵ１１２は、マイクロ制御装置、マイクロプロセッサ、またはメインフレーム計算システムを含む全ての形式の処理システムである。ＣＰＵ１１２は、ＣＰＵ１１２によって実行されるコード及びデータを含むランダムアクセスメモリであるＲＡＭ１０８に接続される。更に、ＣＰＵ１１２は、ＭＵＸ１１０を介して不揮発性メモリ１００に接続される。
【００１５】
不揮発性メモリ１００は、電源がシステムから除かれたとき、持続する全ての形式のメモリで、フラッシュメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びＲＯＭメモリを含む。不揮発性メモリ１００は、ブートプログラム１０２、ユーティリティプログラム１０４、ＩＣＰハンドラー１０６、及びミニブートコード１０７を含む。ブートプログラム１０２は、システムのハードウェアやソフトウェア資源を初期化するために、システムの初期化中に実行されるプログラムの集合を含む。ブートプログラム１０２が、インサーキット・プログラミング・プロセス中に変更されることができるプログラム可能なメモリにストアされる。
【００１６】
また、不揮発性メモリ１００は、システムの動作中にＣＰＵ１１２によって実行されるプログラムを含むユーティリティプログラム１０４を含む。また、ユーティリティプログラム１０４は、インサーキット・プログラミング・プロセスによってプログラムされることができるメモリ内に含まれる。また、不揮発性メモリ１００は、システムのインサーキット・プログラミング機能を果たし、インサーキット・プログラミング・プロセスによってプログラムされることができるメモリ内に含まれるＩＣＰハンドラー１０６を含む。
【００１７】
更に、不揮発性メモリ１００は、正規のブートプログラムの同じインサーキット・プログラミング・プロセス中に変更されることができない保護されたメモリ内に含まれるミニブートコード１０７を有する。ミニブートコード１０７は、ブートプログラム１０２の同じ機能の多くを行なうシステムの初期化命令の代わりのセットである。しかし、ブートプログラム１０２が、潜在的に破損され、使用することができないようにするインサーキット・プログラミング・プロセス中にエラーがあるとき、ミニブートコード１０７のみが働く。したがって、ミニブートコード１０７は、正規のブートプログラムの同じインサーキット・プログラミング・プロセス中に変更されることができないメモリにストアされなければならない。本発明の一つの実施形態では、ミニブートコード１０７は、マスクＲＯＭメモリにストアされ、一方、ブートプログラム１０２、ユーティリティプログラム１０４及びＩＣＰハンドラー１０６は、プログラム可能なフラッシュメモリにストアされる。
【００１８】
ＣＰＵ１１２は、更にインサーキット・プログラミング・プロセス中に障害の許容を容易にするハードウェア要素に接続される。ＣＰＵ１１２は、ＩＣＰ状態レジスタ１１８からの制御入力ばかりでなく、不揮発性メモリ１００及びジャンプブートベクトル１１６を入力として取りこむＭＵＸ１１０に接続されている。ＭＵＸ１１０は、ＩＣＰ状態レジスタ１１８の状態に依存して、ジャンプブートベクター１１６と不揮発性メモリ１００間でＣＰＵ１１２を選択的にスイッチする。もし、ＩＣＰ状態レジスタ１１８がダーティであるなら、これは、前のインサーキット・プログラミング動作が完了しなかったことを示しており、ＣＰＵ１１２は、システムの初期化中にミニブートコード１０７に指示するジャンプ命令を入力としてブートベクトル１１６へ取り込む。
【００１９】
一方、ＩＣＰ状態レジスタ１１８がクリーンであるなら、これはインサーキット・プログラミング動作が進行中でないことを示し、ＣＰＵ１１２は、システムの初期化中に不揮発性メモリ１００の最初の位置を入力として取りこむ。更に、ＣＰＵ１１２は、システムがインサーキット・プログラミング中にリセットされる場合、遠隔ホストアドレスのバックアップコピーを含む遠隔ホストアドレスレジスタ１２０に接続される。また、ＣＰＵ１１２は、読取り／書込みパス１３０及びリセットライン１３２を介してＩＣＰウオッチドッグ１２２に接続される。
【００２０】
ＩＣＰウオッチドッグ１２２は、整合ロジック１２８ばかりでなくタイムアウト期間レジスタ１２６とタイマー１２４を含む。タイムアウト期間レジスタ１２６とタイマー１２４は、読取り／書込みパス１３０を介してＣＰＵ１１２によって初期化されることができる。タイマー１２４の値がタイムアウト期間１２６と一致すると、整合ロジック１２８は、リセット信号がＣＰＵ１１２へ供給するリセットライン１２３を通って送られるようにする。一つの実施形態では、障害の許容を与える上述のハードウェア要素は、インサーキット・プログラミング・プロセスから保護されるプログラム可能なメモリ素子を含む。
【００２１】
更に、ＣＰＵ１１２は、周辺機器１１４の左側の二重矢印によって示されているシステムユーザと通信をするために用いられる入出力装置を含む周辺機器１１４に接続されている。周辺機器１１４は、周辺機器がインターネット１３４に結合されるインターフェースも有する。インターネット１３４は、それ自身遠隔ホスト１３６、１３８及び１４０に接続される。遠隔ホスト１３８は、インターネットを介してインサーキット・プログラミング・システムへダウンロードされるべき、新しいバージョンのブート及びユーティリティプログラムを含むディスクに接続される。
【００２２】
一般に、インサーキット・プログラミング・プロセスは、以下ように動作する。ＣＰＵ１１２は、周辺機器１１４を介してユーザ１４４と通信する。ユーザ１４４は、ＣＰＵ１１２がインサーキット・プログラミング・プロセスを始めるＩＣＰハンドラー１０６を実行し始めるようにする。ＩＣＰハンドラー１０６は、周辺機器１１４を介してインターネット１３４へ、及びインターネット１３４を介して遠隔ホスト１３８へ接続がなされるようにする。その後、遠隔ホスト１３８は、ディスク１４２からインターネット１３４を介して不揮発性メモリ１００へデータをダウンローディングし始める。同時に、データ転送が開始され、ＩＣＰウオッチドッグ１２２内でタイムアウト期間が評価された値にセットされ、タイマー１２４が開始される。
【００２３】
もし、インサーキット・プログラミング・プロセスがスムーズに進行するなら、本発明の障害の許容特徴は作動されない。一方、インサーキット・プログラミング・プロセスに過剰の遅延があると、タイマー１２４がタイムアウト期間１２６に最終的に一致し、リセット信号がリセットライン１３２を介してＣＰＵ１１２へ流れるようにする。これによって、ＣＰＵ１１２がブートシーケンスを開始する。もし、システムがインサーキット・プログラミング・プロセス中に再ブートされるなら、ＩＣＰ状態レジスタ１１８はダーティ値にセットされる。これによって、ＭＵＸ１１０は、ＣＰＵ１１２がブートプログラム１０２の代わりにミニブートコード１０７からブートするようにするＣＰＵ１１２へジャンプブートベクトル１１６を向けるようにする。もし、ＩＣＰ状態１１８がクリーン値にセットされるなら、これは、インサーキット・プログラミング・プロセスが完全であったことを意味し、ＭＵＸ１１０は、ＣＰＵ１１２がブートプログラム１０２からブートするようにする。
【００２４】
ミニブートコード１０７は、ＣＰＵが遠隔ホストアドレスレジスタ１２０から値を先ず読取ることによってインサーキット・プログラミング・プロセスを再び開始するようにし、そのために、どの遠隔ホストを接続するかを決定する。その後、インサーキット・プログラミング・プロセスが再び開始する。
【００２５】
図２Ａ、図２Ｂ、及び図２Ｃは、本発明の特徴による、インサーキット・プログラミング・システムのために障害の許容を与えるステップに含まれる動作のシーケンスを詳細に示すフローチャートである。このフローチャートは５つの欄（カラム）、即ち、ユーザ１４４、ブートプログラム１０２、ユーティリティプログラム１０４、ＩＣＰハンドラー１０６、及び遠隔ホスト１３８を有する。これらの欄のヘディングの下のボックスは、ユーザ１４４、ブートプログラム１０２、ユーティリティプログラム１０４、ＩＣＰハンドラー１０６、及び遠隔ホスト１３８の動作をそれぞれ示す。
【００２６】
このシステムは、システムがユーザによって電源が入れられ、又はリセットされるステップ２１０において開始するか、或いはシステムは、システムがウオッチドッグタイマーによってセルフリセットされるステップ２１２において開始する。次に、システムは、ステップ２１４へ進み、そのステップにおいて、システムはＩＣＰ状態レジスタがダーティ値にセットされているか否かを判断する。もし、ダーティ値にセットされているなら、システムはステップ２１８へ進む。もし、そうでないなら、システムはステップ２１６へ続く。
【００２７】
ステップ２１６では、ＩＣＰ状態レジスタはクリーンである。したがって、システムは、プログラムメモリのデフォルト位置から第１の命令をフェッチする。その後、システムはステップ２２０へ進む。ステップ２２０では、システムは、ブートプログラム１０２を実行することによって、システムのハードウェア及びソフトウェア資源を初期化する。次に、システムはステップ２２８へ進む。ステップ２２８では、システムは、要求されたユーティリティプログラムに対して必要なハードウェアとソフトウェアを割り付ける。
【００２８】
次に、システムは、ステップ２３０へ進む。ステップ２３０では、システムは、インサーキット・プログラミングが発生すべきであるか否かを判断する。もし、発生すべきでないならば、システムは、ステップ２３２へ進む。もし、発生すべきならば、システムは、ステップ２４０へ進む。ステップ２３２では、インサーキット・プログラミングは、目下のところ必要とされず、システムは、停止するか否かを判断する。もし、そうなら、システムは、終了状態であるステップ２３４へ進む。もし、そうでないなら、システムは、ステップ２２２へ進む。ステップ２２２では、システムは、要求されたユーティリティプログラムを走らせる。
【００２９】
その後、システムは、ステップ２２８へ戻って、要求されたユーティリティプログラムのためのハードウェアとソフトウェアを割り付ける。ステップ２２８において、システムは、割り付けるべき正しいハードウェアとソフトウェアを決めるために、ユーザ１４４と相互作用することができることに留意すべきである。
【００３０】
ステップ２１８では、ＩＣＰ状態レジスタがシステムブートアップに関してダーティであると判断された。レギュラーシステムのブートアップコードが破損される可能性があるので、システムは、インサーキット・プログラミング・プロセスによって変更されることができる保護されたメモリのデフォルト割付から第１の命令をフェッチする。次に、システムは、ステップ２２４へ進む。ステップ２２４では、システムは、保護されたメモリ内の特定のエントリーを指定するブートベクトルへのジャンプ命令を実行する。次に、システムはステップ２２６へ進む。ステップ２２６で、システムは、インサーキット・プログラミングのため最小限のシステム資源を初期化するミニブートコード１０７を実行する。次に、システムはステップ２３６へ進む。ステップ２３６では、システムは、遠隔ホストアドレスレジスタ１２０から遠隔ホストアドレスを再ストアする。次に、システムは、ステップ２４０へ進む。
【００３１】
ステップ２４０では、システムは、遠隔ホストとのリンクを開始し、遠隔ホストからインサーキット・プログラミング・コードがダウンロードされる。よって、ステップ２４２では、遠隔ホスト１３８はインサーキット・プログラミング・システムとリンクする。次に、システムはステップ２４４へ進む。ステップ２４４では、システムは遠隔ホストアドレスを遠隔ホストアドレスバッファ１２０へストアする。次に、システムは、ステップ２４６へ進む。ステップ２４６では、システムは評価されたタイムアウト値をタイムアウト期間レジスタ１２６へロードする。
【００３２】
次に、システムは、ステップ２４８へ進む。ステップ２４８で、システムは、ブートベクトルレジスタ１１６をセットして、ミニブートコード１０７の開始アドレスを指定する。次に、システムはステップ２５０へ進む。ステップ２５０では、システムは、ＩＣＰ状態レジスタをインサーキット・プログラミングが現在アクティブであることを示す不完全状態へセットする。次に、システムは、ステップ２５２へ進む。ステップ２５２では、システムは転送されたバイトの数をゼロにセットする。次に、システムはステップ２５４へ進む。ステップ２５４では、システムは、新しいブート及び／又はユーティリティプログラムを不揮発性メモリ１００へダウンロードするように続ける。
【００３３】
よって、ステップ２５５で、遠隔ホスト１３８は、新しいバージョンのブート及び／又はユーティリティプログラムを供給する。次に、システムはステップ２５６へ進む。ステップ２５６では、システムは、ＩＣＰプロセスが終了したか否かを判断する。もし、終了していないなら、システムはステップ２５８へ進む。もし、終了しているなら、システムはステップ２６４へ進む。ステップ２５８では、ＩＣＰプロセスは停止しないで、システムは、転送されたバイトの数が転送ブロックサイズに等しいか否かを聞く。もし、等しくないなら、システムは、より多くのコードをダウンロードするためにステップ２５４へ戻る。もし、等しいなら、システムはステップ２６０へ進む。ステップ２６０では、システムは、進行しているブロックのインサーキット・プログラミング・コードの転送中に、性能に基づいてタイムアウト値を再計算する。その後、システムはタイマー１２４がリセットされるステップ２６２へ進む。次に、システムは転送されたバイトの数がゼロにリセットされるステップ２５２へ戻る。
【００３４】
ステップ２６４において、インサーキット・プログラミングのためのデータ転送が完全であり、タイマー１２４が停止される。次に、システムはステップ２６６へ進む。ステップ２６６では、システムはＩＣＰ状態を完全な値にセットし、インサーキット・プログラミングが完全であることを示す。その後、システムはステップ２７０へ進む。ステップ２７０では、インサーキット・プログラミング・プロセスが完全であり、システムはリセットされる。
【００３５】
本発明の１つの特徴によると、インサーキット・プログラミング・プロセスは、タイムアウト期間によって支配される。このタイムアウト期間の間、データの一定量が遠隔ホストからインサーキット・プログラミング・システムへ転送されなければならない。一つの実施形態において、このタイムアウト期間は、遠隔ホストからプロセッサへ２回ダウンロードされ、２つのダウンロード値が互いに比較され、その値がタイムアウト期間として使用される前に、その値が正しくクダウンロードされたことを保証する。他の実施形態において、タイムアウト期間はインサーキット・プログラミング・システムに永久にストアされ、ダウンロードされた値が永久にストアされた値と比較され、ダウンロード値が少なくとも永久にストアされた値と同程度に大きいことを保証する。もし、大きくないなら、永久にストアされた値が用いられる。
【００３６】
本発明の好適な実施形態の上記の説明は、説明のみのためになされたものである。それらは、本発明を開示された正確な形状に限定されることを意図しない。
明らかに、多く変形や変更が所謂当業者には明らかであろう。本発明の範囲は、請求項によって定義され、それらの均等物に及ぶことを意図している。
【図面の簡単な説明】
【００３７】
【図１】本発明の特徴によるインサーキット・プログラミング用の障害の許容システムの主な機能の幾つかの要素を示す。
【図２Ａ】本発明の特徴による、インサーキット・プログラミング・システムのための障害の許容を与える動作のシーケンスを示すフローチャートである。
【図２Ｂ】本発明の特徴による、インサーキット・プログラミング・システムのための障害の許容を与える動作のシーケンスを示すフローチャートである。
【図２Ｃ】本発明の特徴による、インサーキット・プログラミング・システムのための障害の許容を与える動作のシーケンスを示すフローチャートである。
【図１】
2008033951.tif 000003
【図２Ａ】
2008033951.tif 000004
【図２Ｂ】
2008033951.tif 000005
【図２Ｃ】
2008033951.tif 000006
【外国語明細書】
2008033951.tif 000007
2008033951.tif 000008
2008033951.tif 000009
2008033951.tif 000010
2008033951.tif 000011
2008033951.tif 000012
2008033951.tif 000013
2008033951.tif 000014
2008033951.tif 000015
2008033951.tif 000016
2008033951.tif 000017
2008033951.tif 000018
2008033951.tif 000019
2008033951.tif 000020
2008033951.tif 000021
2008033951.tif 000022
2008033951.tif 000023
2008033951.tif 000024
2008033951.tif 000025
2008033951.tif 000026
2008033951.tif 000027