(57)【要約】【課題】回路内プログラミングを有する集積回路（１０）が回路内プログラミングの命令セット自体を動的に変更させる。【解決手段】構造は集積回路上のマイクロコントローラ（１１）に基づいており、集積回路は命令を記憶する不揮発性メモリアレイの２以上のバンクを有し、回路内プログラミング命令セット（４０）を含んでいる。デバイスは、そこに記憶された制御プログラムを使用して、相手との回路内プログラミング交換を確立し、必要な時に、回路内プログラミング命令セットを含むデータ及びソフトウェアを更新する。プロセッサとICPコードは回路内プログラミングの更新指令に応答し、第１メモリアレイ（１７）からの回路内プログラミングセットのコピーを第２メモリアレイ（１６）に書き込み、それを実行させ、外部ポートからのデータで第１メモリアレイの不揮発性メモリセルをプログラムする。【選択図】図１
2007328814.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによる実行のための命令を記憶すし、フローティングゲートメモリセルを含む不揮発性メモリセルを集積回路上に含み、第１メモリアレイをプログラミングするための回路内プログラミング命令セットを含む第１メモリアレイと、
前記プロセッサによる実行のための命令を記憶する不揮発性メモリセルを集積回路上に含む第２メモリアレイと、
データが外部の情報源から受け取られる集積回路上の外部ポートと、
回路内プログラム更新指令に応答し、第１メモリアレイから回路内プログラミング命令セットのコピーを第２メモリアレイに書き込むと共に、前記第１のメモリアレイに記憶された前記回路内プログラミング命令セットを少なくとも更新し、その後制御論理回路が前記第１のメモリアレイに記憶された前記更新された回路内プログラミング命令セットを前記プロセッサが実行することができるように、前記プロセッサに第２メモリアレイから前記回路内プログラミング命令セットを実行させて前記外部ポートからのデータで前記第１メモリアレイの不揮発性メモリセルをプログラムさせる制御論理回路とを含む、
ことを特徴とする命令のプログラムを実行するプロセッサを有する集積回路の回路内プログラミング用装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路上のプロセッサによる実行のための命令シーケンスを記憶する不揮発性メモリを有する集積回路に関し、より詳細には命令の記憶されたシーケンスを更新及び修正する回路内プログラミングを成し遂げる技術に関する。
【背景技術】
【０００２】
集積回路のマイクロコントローラは該マイクロコントローラにより実行される命令シーケンスを記憶するためチップ上に不揮発性メモリのアレイを含むものを開発した。命令シーケンスは読み出し専用メモリ（ＲＯＭ）に記憶されることができ、該ＲＯＭはデバイスの製作中にプログラムされなければならず、又更新することはできない。別のアプローチでは、命令はＥＰＲＯＭアレイに記憶されることができる。これらのタイプのデバイスはデバイスが回路に配置される前にＥＰＲＯＭアレイをプログラムするために使用される特別のプログラミングデバイスを必要とする。更なる他のシステムでは、ＥＥＰＲＯＭメモリが命令を記憶するために使用可能である。ＥＥＰＲＯＭはＥＰＲＯＭより非常に早くプログラムでき、作動中に修正することができる。また、フラッシュメモリが利用でき、命令を記憶する不揮発性メモリのより高密度で高速の再プログラミングを可能にする。不揮発性メモリがＥＥＰＲＯＭ又はフラッシュメモリのように再プログラム可能でマイクロコントローラに結合される時、デバイスが回路内にある間にデバイスの再プログラミングが成し遂げられ、対話式アルゴリズムに基づいて回路内プログラミングを可能にする。
【０００３】
例えば、インターネット環境では、リモートデバイスに命令セツト及びデータを対話式にダウンロードする能力は非常に貴重である。例えば、会社はサービスセンタに製品を戻すように顧客に要求することなしに顧客にサービスを提供することができる。それどころか、会社はインターネット又は電話線のような通信経路を通して、顧客のデバイスの回路内プログラミング能力を使用して診断機能を実行することができる。ソフトウェアの手直しは顧客にダウンロードさせることができ、製品は修正又は更新したコードで再度与えることができる。
【０００４】
この性能を有する従来のデバイスの例は、カリフォルニアのAtmel of San Joseにより製造されたAT89S8252マイクロコントローラ及びオランダのEindhovenのPhillps Semiconductorsにより製造されたP83CE558シングルチップマイクロコントローラを含んでいる。フィリップス（Phillps）のP83CE558マイクロコントローラの構造によれば、マスクＲＯＭは命令の回路内プログラミングＩＣＰセットのために利用され、チップのフラッシュメモリを更新するために使用されている。従って、フィリップスのマイクロコントローラは専用のマスクＲＯＭモジュールを必要とし各個人環境のため手直ししたＩＣＰコードを記憶する。特別の環境にＩＣＰコードを適合させるためには、マスクＲＯＭがコード化可能なようにデバイスの製造が完了する前に環境が知られなければならない。更に、ＩＣＰ通信経路はフィリップスのマイクロコントローラのシリアルRS232ポートに取り付けられている。シリアルポートへの制限はマイクロコントローラの使用を比較的狭い範囲の電位の使用に限定し、シリアルポートが更新されたソフトウェアの提供する通信経路とうまく一致しない動的な通信環境においてＩＣＰ機能を利用するのを困難にさせる。
【０００５】
アトメル（Atmel）のAT89S8252マイクロコントローラの構造によれば、チップ上の専用シリアル周辺インタフェース（ＳＰＩ）ポートは動的に変更可能な命令を記憶するフラッシュメモリの更新に使用される。プログラム論理はＳＰＩポートに結合され、そのため柔軟性がない。更に、回路内プログラミング技術の修正はＳＰＩポートへのハードウェア専用のため行うことができない。アトメルのチップの更なる不利な点は、ＩＣＰイニシエータとハンドシェイキングすると共にフラッシュメモリ用の消去／プログラム／確認の波形をエミュレートするために使用される複雑なハードウェアがチップに加えられなければならないこと、ＳＰＩバス制限が異なるシステムの適用に必ずしも最良の選択であるとは限らないこと、及び元のリセット回路を修正するために特別のシステム論理が要求され、回路内プログラミングアルゴリズムにより密接に結び付けられることである。更に、複合ＳＰＩドライバ及びレシーバ論理はアトメルのマイクロコントローラを使用するシステムのチップの外部で要求される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、回路内プログラミング構造はフラッシュメモリ又は他の動的に変更可能な不揮発メモリによって開発された。しかし、従来技術のアプローチは使用された回路内アルゴリズムで柔軟性がなかった。従って、通信の要求が変更可能で回路内プログラミングを使用するデバイスの使用が幅広い種類の環境を介して急激に増す動的なネットワーク環境において、より柔軟な回路内プログラミング性能を提供するのが好ましい。更に、回路内プログラミング性能は、電源がプロセス中に切られている場合でさえ、回路内プログラミングプロセス中に命令が失われることがないことを保証しなければならない。その技術は遠方の相手との対話型通信を可能にし回路内プログラミングプロセスを成し遂げる。これらの技術は、インテル／マイクロソフト／デジタル標準全体シリアルバス（ＵＳＢ）、フィリップ電子／コンピュータアクセス技術標準アクセスバス、アップルコンピュータ／ＩＢＭ／ＡＴ&Ｔ標準ゲオポート、アップルコンピュータ／テキサスインストルメンツ／ＮＣＲ標準1349ファイアワイア、インターネット、シリアルポート（RS232等）、及び他の環境を含む幅広い種類のメディアに渡って利用されているに違いない。
【０００７】
従って、集積回路での使用のためより柔軟な回路内プログラミング構造を提供するのが好ましい。
【課題を解決するための手段】
【０００８】
本発明は回路内プログラミングを支援する集積回路のための構造を提供し、チップに記憶された他のソフトウェアと同様に回路内プログラミング命令セット自体を動的に変更することを可能にする。これは回路内プログラミングデバイスの有用性を幅広い種類の通信環境に著しく拡大し、特定のシステムの要求に適合するようにシリアルポート、パラレルポート、電話通信、インターネット通信、及び他の通信プロトコルを支援する。本発明は命令を記憶する埋込み型不揮発性メモリアレイを有する集積回路のマイクロプロセッサ又は他の命令実行プロセッサに基づき、回路内プログラミング命令セットを含んでいる。デバイスに記憶された制御プログラムを使用して、デバイスは遠方の相手との回路内プログラミング交換局を対話式に確立し、必要な時に、回路内プログラミングシーケンスを含むデータ及びソフトウェアを更新する。例えば、自己更新アルゴリズムは本発明によると以下のように進められる。
１．デバイスは回路内プログラミング要求を受け取る。
２．イニシエータが確認される。
３．デバイスは識別子を要求のイニシエータに戻す。
４．パーティがうまく確認されると、情報交換が進行する。
５．回路内プログラミングを始めるため、プログラムの実行がチップの不揮発性メモリの回路内プログラムルーチンにジャンプする。
６．回路内プログラミングルーチンがそれ自身又は少なくともＩＣＰの核をチップのメモリの別のバンクに複製する。
７．回路内プログラミングソフトウェアはそれ自身を不能にし、複製されたＩＣＰシーケンスを起動する。
８．複製されたＩＣＰシーケンスは新しい回路内プログラミングソフトウェアを元のＩＣＰの位置にダウンロードする。
９．複製されたＩＣＰシーケンスはそれ自身を不能にし、元のフラッシュアレイの新しいＩＣＰソフトウェアで起動する。
１０．正常のプログラムの実行がその後再開される。
【０００９】
フラッシュメモリデバイスに記憶されたソフトウェアの他の部分用の新しい命令及びデータは、それが作動された後、元のＩＣＰコード、複製されたＩＣＰコード、又は新しいＩＣＰコードによって、シーケンスの多数の場所で実行することができる。
【００１０】
従って、本発明は命令のプログラムを実行するプロセッサを有する集積回路の回路内プログラミング用の装置として特徴を表すことができる。装置は第１メモリアレイを含み、プロセッサによる実行のための命令を記憶する集積回路上に、回路内プログラミング命令セットを含む、不揮発性メモリセルを含んでいる。
【００１１】
また、第２メモリアレイは好適なシステムで不揮発性メモリセルを含み、集積回路に提供される。１以上の外部ポートが集積回路上に提供され、それによりデータが外部の情報源から受け取られる。制御論理回路はプロセッサとＩＣＰコードの核を含み、回路内プログラミング更新指令に応答し、第１メモリアレイから回路内プログラミング命令セットのコピーを第２メモリアレイに書き込むと共に第２メモリアレイから回路内プログラミング命令セットをプロセッサに実行させ、第１メモリアレイの不揮発性メモリセルを外部ポートからのデータでプログラムする。
【００１２】
本発明の１つの特徴によれば、第１メモリアレイは不揮発性メモリセルの別々に消去可能な複数のブロックを含み、回路内プログラミング命令セットは特定のブロックに記憶されている。回路内プログラミング命令セットの実行中、特定のブロックは修正され新しい回路内プログラミング命令セットを生成する。その後、制御論理回路は第１メモリアレイから新しい回路内プログラミング命令セットをプロセッサに実行させる。
【００１３】
本発明の更なる別の特徴によると、集積回路は、１以上のシリアルポート、１以上のパラレルポート、及び潜在的に１以上の専用通信ポートのような、外部のデータ源への複数のポートを含んでいる。回路内プログラミング命令セットの実行中に外部ポートとして使用されるような複数のポート中のポートは、回路内プログラミング命令セット自身の命令により決定され、従って、本発明の１つの好適な実施例で動的に変更可能である。
【００１４】
本発明の別の特徴によれば、集積回路は、回路内プログラミング命令セットから独立して、第１メモリアレイ及びオプションとして第２メモリアレイをプログラムすると共に確認するためのデータ経路を含んでいる。従って、多重Ｉ／Ｏピン等を使用して、元のソフトウェアは製造中又はチップをシステムに取りつける前にデバイスにロードされることができる。元のコードを修正するためには、回路内プログラミングプロセスが利用される。
【００１５】
本発明は集積回路のコントローラとしての特徴を表し、プロセッサモジュールへの命令入力で受け取った命令を実行する集積回路のプロセッサを含んでいる。
不揮発性メモリセルの第１及び第２のメモリアレイは集積回路上に提供されている。第１メモリアレイは不揮発性セルの特定のブロックに回路内プログラミング命令セットを記憶する。外部ポートは集積回路上に提供され、それによりデータが外部の情報源から受け取られる。制御論理回路はＩＣＰコードにプロセツサと核を含み、回路内プログラミング更新指令に応答して、第１メモリアレイから回路内プログラミング命令セットのコピーを第２メモリアレイに書き込むと共に第２メモリから回路内プログラミング命令セットを第１メモリアレイの不揮発性メモリセルを外部ポートから受け取ったデータでプログラムさせる。集積回路のデータ経路は回路内プログラミング命令セットから独立して第１メモリアレイをプログラムすると共に確認するために提供される。別の実施例では、外部ポートはシリアルポートとパラレルポートを含んでいる。更なる別の実施例では、デバイス上の複数の外部ポートと、回路内プログラミングシーケンスが回路内プログラミングソフトウェア自体により指定されている間の使用のために選択されたものがある。
【００１６】
従って、命令のプログラムを実行するプロセッサを有する集積回路の回路内プログラムの方法が提供される。その方法は、
１．第１の消去可能でプログラム可能な読み出し専用メモリアレイと第２の消去可能でプログラム可能な読み出し専用メモリアレイを集積回路上に提供すること、
２．第１アレイに回路内プログラミング命令セットを記憶すること、
３．集積回路の外部のイニシエータから回路内プログラム指令を受け取ること、
４．回路内プログラム指令に応じて、第１アレイから回路内プログラミング命令セットを第２アレイにコピーし、第２アレイから回路内プログラミング命令セツトをプロセッサで実行すること、
５．回路内プログラミング命令セットの制御下で、少なくとも第１アレイの選択した部分を外部の情報源からのデータでプログラムすること、及び
６．第１アレイのその部分をプログラムした後、第１アレイから回路内プログラミング命令セットをプロセッサで実行すること、を含んでいる。
【００１７】
本発明の別の特徴によると、その方法は第１メモリアレイの選択した部分に回路内プログラミング命令セットを記憶することを含んでいる。二者択一的には、その方法は、回路内プログラミング指令により示された回路内プログラミングシーケンスが回路内プログラミング命令セットを修正することを含んでいるかどうかをイニシエータから決定する段階を含んでいる。シーケンスが修正を含んでいる場合には、その後コピー及び実行する段階が行われる。そうでなければ、その後コピー及び実行する段階はスキップされ、アルゴリズムは直接続行しメモリアレイの他の部分の命令及びデータをプログラムする。
【発明の効果】
【００１８】
要するに、本発明は回路内プログラミング技術を提供し、命令の回路内プログラミングシーケンスの動的変更を可能にする。これは幅広い種類の環境でのデバイスの使用を可能にし、環境を動的に変更する。例えば、通信ピロトコルが更新される場合、その後命令自体の回路内プログラミングシーケンスは修正を必要としてもよい。本発明によれば、通信プロトコルが改良されスピードが増加するに連れて、マイクロコントローラはフィールドに配置され動的に更新されることが可能である。更に、デバイスは幅広い種類の通信ポートに適合可能であり、回路内プログラミング性能でより広く行き渡ったマイクロコントローラの適用が可能である。
【００１９】
本発明の他の特徴及び利点は図面の概観、詳細な説明、及び後に続く特許請求の範囲で理解できる。
【発明を実施するための最良の形態】
【００２０】
本発明の好適な実施例の詳細な説明は図１，２Ａ〜２Ｃ，３及び４に関して提供され、図１はデバイスのハードウェアブロック図を提供する。
【００２１】
図１は集積回路１０に埋め込まれたマイクロプロセッサ１１のようなプロセッサを有する集積回路１０の簡略図である。マイクロコントローラ１１は複数のシリアルポート１２、複数のパラレルポート１３、割り込みピン１４、及び他のシングルピン１５を含んでいる。例えば、マイクロコントローラ１１は本技術分野で公知の標準8051マイクロコントローラ命令セットと互換性があってもよい。複数のポート１２及び１３が標準インターフェース技術を使用してデバイス上で実行される。別の設計はチップに特別の目的のポートを含んでいる。
【００２２】
本発明の回路内プログラミングの機能性を支援するため、不揮発性メモリの第１アレイ１６及び不揮発メモリの第２アレイは集積回路１０に埋め込まれている。好適な実施例によれば、第１アレイ１６はフラッシュＲＯＭセルを含み、該フラッシュＲＯＭセルは本技術分野で公知なようにフローティングゲートメモリセルを使用して実行される。第１アレイはフラッシュＲＯＭセルの複数のブロック、ブロックＮを通るブロック０を含み、バンク０と呼ばれる。また、第２アレイ１７はフラッシュＲＯＭを含み、セルの複数のブロック、ブロックＭを通るブロック０を含み、バンク１と呼ばれる。
【００２３】
集積回路は本技術分野で公知なように、アレイ１６及び１７の消去及びプログラミング用の正常経路２０と消去を確認すると共にプロセスをプログラミングする正常確認経路２１とを含んでいる。好適なシステムでは、正常経路２０及び２１は集積回路１０上でＩ／Ｏピンにより外部回路に接続されている。更に、集積回路上のこれらのＩ／Ｏピンはポート１２，１３、割り込み１４、及び他の信号１５を支援する他のピンで多重化される。従って、例えばテストモード又は製造モード中にＩ／Ｏチップの他の機能が不能の間、正常消去及びプログラム経路２０及び正常確認経路２１が使用可能である。多重化したＩ／Ｏピンを行う技術は本技術分野では常識である。
【００２４】
第１アレイ１６と第２アレイ１７はそれぞれの読み出しポート２４及び２５を含み、アレイに記憶された命令をマイクロコントローラ１１に提供する。従って、読み出しポート２４はコード入力多重装置２６に結合され、読み出しポート２５はコード入力多重装置２６に結合されている。同様の方法で、両方の読み出しポート２４及び２５は確認多重装置に結合され、アレイ１６とアレイ１７のデータが確認手続きの間に読み出される。
【００２５】
コード多重装置２６の出力はマイクロコントローラ１１のための命令入力２８に供給される。確認多重装置２７の出力はマイクロコントローラ１１の読み出し入力２９及び正常確認経路２１に供給される。
【００２６】
正常消去／プログラム経路２０は消去／プログラムセレクタ３０に接続されている。セレクタ３０への第２入力はマイクロコントローラ１１からの線３８上の消去及びプログラム信号を含んでいる。マイクロコントローラ１１は線３１及び３２で示したように多重装置２６及び多重装置２７を制御する。また、マイクロコントローラ１１は線３３で示されるようにセレクタ３０を制御する。
【００２７】
消去／プログラムセレクタ３０は線３５上の消去及びプログラムデータ及び信号を第１アレイ１６及び第２アレイ１７の消去／プログラムポート３６に供給する。消去／プログラムポート３６は、制御状態機械、高電圧発生機、負電圧発生機、タイマ等のように、アレイのための消去及びプログラム動作で使用される論理及び回路を含んでいる。好適な実施例では、共用の消去／プログラム回路が第１アレイ１６及び第２アレイ１７の両方のために使用される。代案では、別個の消去／プログラム回路が別個の不揮発性メモリセルのために使用される。別個の消去／プログラム回路の使用は、チップ領域の消費を犠牲にして、デバイスの実行を簡単にするために好まれる。
【００２８】
図１で示された実施例では、フラッシュＲＯＭセルの２つのバンクのみが示されている。別のシステムはフラッシュＲＯＭセルの２以上のバンクを含み、回路内プログラミング構造の設計及び実行で一層著しい柔軟性を可能にする。
【００２９】
図１に示されているように、メモリアレイ１６及び１７はマイクロコントローラ１１により実行される命令を記憶する。命令の１部分はＩＣＰの核を含み、命令４０の回路内プログラミング命令セットと呼ばれている。ＩＣＰの核は回路内プログラミングプロセス中に保存しなければならない本質的なＩＣＰコード及び又はシステムコードを含んでいる。図１に示された実施例では、回路内プログラミング命令セットはフラッシュアレイ１７のバンク１のブロックＭに記憶されている。回路内プログラミング命令セット４０は所定の実行のデバイスの特定のブロックに記憶されることができる。また、セグメント化したフラッシュ構造により、アレイ１６及び１７は別々に消去可能な複数のセルのブロックを含み、例えば、Yinらにより発明された「フラッシュＥＰＲＯＭの集積回路構造（FLASH EPROMINTEGRATED CIRCUIT ARCHITECTURE）」という表題の米国特許No.5,526,307で説明されている。別の実施例は第１アレイ１６の別個に消去可能な複数のブロックと第２アレイのシングルブロックを含んでいる。二者択一的に、シングルブロックが各アレイに記憶されていてもよい。メモリ構造の幅広い種類の組み合わせは特定のシステムの要求の適合するように行われることができる。
【００３０】
図１の構造を使用して、システムの設計者は回路内プログラミングコードをそれらの特定の環境に適合することを可能にする。従って、製造者は図１に示すように、それらの回路の実行のため集積回路を選択する。回路内プログラムコードが用意されていない場合、マイクロコントローラが利用され、チップ上で利用可能な多様な通信ポートが利用され、回路盤上で要求される特別の論理をマイクロコントローラで最小にし、描かれた特定の回路内プログラミング（ＩＣＰ）環境にシステムを一致させる。回路内プログラミングのための適切な接続とプロトコルが設計者により選択される。選択された環境用のＩＣＰコードか開発され改良されている。次に、ＩＣＰコードはプログラムに統合され、システムの正常動作中に実行される。正常消去及びプログラム経路２０を使用して、集積されたＩＣＰコード及びユーザーコードがフラッシュメモリアレイ１６及び１７に記憶されている。次に、正常確認経路２１を使用して、消去及びプログラム動作が確認される。集積されたＩＣＰコードを有する高性能のマイクロコントローラは、その後システム内部に配置される。ＩＣＰ手続きが行われテストされる。ＩＣＰコードかうまく動作すると、その後システムがテストされる。システムがうまく動作すると、その後システム製品は大量生産可能となる。ＩＣＰコードが修正を必要とする場合には、その後プロセスが対話式で行われ、ＩＣＰコードを最適化する。同様に、システムコードは同じ技術を使用して最適化される。従って、製造者により開発された本システムの最終ユーザーはマイクロコントローラに埋め込まれた頑強な回路内プログラミングコードを有し、本発明により、対話式の回路内プログラミング技術を使用して作動中に更新及び修正することが可能である。
【００３１】
図２Ａ〜図２Ｃは最終ユーザーにより実行される本発明に係る回路内プログラミング技術を示している。図２Ａ〜図２Ｃによると、論理はマイクロコントローラにより実行されるソフトウェアにより、専用の論理回路により、又はソフトウェアと専用の論理回路の組み合わせにより実行される。
【００３２】
点２００で示されているように、リモートイニシエータが、回路内プログラミング命令セット又は集積回路のフラッシュＲＯＭバンクの１つに記憶された他のソフトウェアを更新又は置換することを望む時、プロセスが図２Ａで始まる。
第１段階はイニシエータを含み、集積回路上のＩ／Ｏポートを介してＩＣＰ修正要求を送る（ブロック２０１）。マイクロコントローラはイニシエータの識別子を検査し、その要求を実行する（ブロック２０２）。識別子検査が失敗した場合、アルゴリズムは失敗の限界数が起きたかどうかを決定する（ブロック２０３）。テストが何回も失敗した場合、その後マイクロコントローラはイニシエータに認識の失敗応答を発行し（ブロック２０４）、図２Ｃの点Ｃに分岐する。ブロック２０２のテストが何回も失敗しなかった場合、その後マイクロコントローラはイニシエータにイニシエータの識別子の要求を発行し（ブロック２０５）、ブロック２０１に分岐する。ブロック２０２のイニシエータの識別子テストが合格した場合、マイクロコントローラのイニシエータは更新を確認する改訂番号を発行する（ブロック２０６）。次に、マイクロコントローラは次の段階でＩＣＰ修正要求を認識し確認する（ブロック２０７）。例えば、１つの実施例では、マイクロコントローラはＩＣＰ認識指令を発行し、ＩＣＰイニシエータに戻す。イニシエータは肯定応答で応答し、ＩＣＰ通信路を開放する。
【００３３】
次の段階では、マイクロコントローラはＩＣＰ修正要求が確認されたかどうかを決定する（ブロック２０８）。要求が確認されない場合、その後マイクロコントローラは正常のアクティビティを続行し（ブロック２０９）、シーケンスは終わる（ブロック２１０）。ＩＣＰ修正要求が確認されると、その後マイクロコントローラはＩＣＰコードにトラップを実行する（ブロック２１１）。従って、マイクロコントローラはその電流状態を保持し、正常のアクティビティを遮断し、ＩＣＰコードにジャンプし、回路内プログラミングシーケンスの準備を始める。プロセスは図２Ｂの点Ａに続く。
【００３４】
図２Ｂの第１段階はハンドシェイクプロトコルをイニシエータと関連させ、ＩＣＰ修正シーケンスの範囲を決定する（ブロック２１２）。例えば、ＩＣＰ修正シーケンスは集積回路の第１及び第２アレイに１個のブロック又は多数のブロックを含んでいる。また、ハンドシェイクプロトコルはＩＣＰコード自体が修正動作の対象であるかどうかを決定する。従って、次の段階はＩＣＰブロックが修正シーケンスに含まれるかどうかを決定する（ブロック２１３）。ＩＣＰブロックが修正シーケンスに含まれない場合には、その後アルゴリズムは示したように点Ｂに進み、図２Ｃで続けられる。ＩＣＰ修正シーケンスがＩＣＰブロックを含む場合、その後ＩＣＰ論理は複製されたＩＣＰコードを記憶するブロックを選択する（ＩＣＰコードが元来バンク１に記憶される実施例のバンク０のブロックｉ）。ＩＣＰコードを複製するブロックを選択して、選択したブロックは消去される（ブロック２１４）。次に、元のＩＣＰコードはバンク０の選択ブロックにプログラムされる（ブロック２１５）。
【００３５】
プログラムシーケンスの後、確認動作が実行される（ブロック２１６）。確認動作が失敗した場合、その後アルゴリズムはＩＣＰブロックのプログラムが何回も失敗したかどうかを決定する（ブロック２１７）。そうでなければ、その後ＩＣＰブロックのプログラムはブロック２１４にループすることにより再試行する。シーケンスが何回も失敗すると、その後論理はＩＣＰの失敗応答をイニシエータに発行し（ブロック２１８）、図２Ｃの点Ｃに分岐する。
【００３６】
ブロック２１６で確認手続きが終わると、その後コード多重装置（例えば図１の多重装置２６）は切り替えられ、複製されたＩＣＰコードが記憶されるバンクから命令を選択する（ブロック２１９）。複製されたＩＣＰコードが実行され、バンク１のブロックＭのためパラメータセットと共に更新ブロックルーチンへの呼出しがなされる（ブロック２２０）。更新ブロックルーチンは図３に示され、おそらく新しいＩＣＰコードでバンク１のブロックを更新することになる。段階２１５の後、コード多重装置は切り替えられ、元のバンクのバンク１に戻し、おそらく新しいＩＣＰコードを記憶する（ブロック２２１）。その後アルゴリズムは図２Ｃの点Ｂに進む。
【００３７】
図２Ｃでは、次の段階は、もしあれば、ＩＣＰ手続きのため別のブロックを選択することを含んでいる（ブロック２２３）。別のブロックを選択した後、更新ブロックはバンクｊのブロックｉのパラメータセットで呼び出され、選択したブロックを示す（ブロック２２４）。アルゴリズムは次に回路内プログラミングシーケンスの全てのブロックが完了したかどうかを決定する（ブロック２２５）。ＹＥＳの場合には、その後全てのプログラムされたブロックのため検査合計が計算される（ブロック２２６）。ブロック２２５でＮＯの場合には、その後アルゴリズムはブロック２２３にループする。ループは回路内プログラミング手続きの所定の範囲内の全てのブロックか完了するまで続く。ＩＣＰ手続きの完了後、全てのプログラムされたブロックのため検査合計が計算される（ブロック２２６）。プロトコルは始動し計算された検査合計をイニシエータにより提供された検査合計に突き合わせる（ブロック２２７）。一致した場合には、その後マイクロコントローラは改訂番号を記録し、ＩＣＰの完了応答をイニシエータに発行する（ブロツク２２８）。その後マイクロコントローラが正常動作に戻り（ブロック２２９）、アルゴリズムは終了する（ブロック２３０）。検査合計がブロック２２７で一致しない場合、その後アルゴリズムはＩＣＰシーケンスが何回も失敗したかどうかを決定する（ブロック２３１）。何回も失敗していない場合には、その後アルゴリズムは図２Ａの点Ａにループし、ＩＣＰシーケンスを再試行する。ＩＣＰシーケンスが何回も失敗した場合には、その後アルゴリズムはＩＣＰの失敗応答をイニシエータに発行し（ブロック２３２）、手続きが終了する（ブロック２３０）。
【００３８】
更新ブロック手続きが図３に示されている。従って、更新ブロック手続きはパラメータセット、例えばバンクｋのブロックｊと共に呼び出される（ブロック３００）。シーケンスは確認多重装置を設定し確認経路のためバンクｋを選択する（ブロック３０１）。バンクｋの次のブロックｊはＩＣＰ消去経路を使用して消去される（ブロック３０２）。消去プロセスの後、確認シーケンスが実行される（ブロック３０３）。確認が失敗すると、その後消去手続きが何回も失敗したかどうかを決定する（ブロック３０４）。もしそうでなければ、その後アルゴリズムはブロツク３０２にループバックし消去を再試行する。それが何回も失敗した場合には、その後エラーが返送される（ブロック３０５）。ブロック３０３から首尾よく確認した後、データがＩＣＰイニシエータから検索される（ブロック３０６）。ＩＣＰイニシエータからのデータは１バイト以上のデータでもよく、ユーザーに選択されたＩＣＰプロトコルによる。
【００３９】
ＩＣＰイニシエータからのデータを検索後、アルゴリズムはＩＣＰプログラム経路を介してバンクｋのブロックｊをプログラムする（ブロック３０７）。プログラムシーケンス後、確認動作が実行される（ブロック３０８）。プログラム確認が失敗すると、その後それは失敗が何回も起きたかどうかを決定する（ブロック３０９）。それが何回も失敗した場合には、その後エラーが返送される（ブロック３１０）。確認が何回も失敗した場合には、その後プログラムはブロック３０７にループすることにより再試行される。ブロック３０８で確認が成功すると、その後ＩＣＰシーケンスがバンクｋのブロックｊにプログラムするためのデータをもっと含んでいるかどうか決定する（ブロック３１１）。ＹＥＳの場合には、その後アルゴリズムはブロック３０６にループし、プログラミングのためのデータの次のシーケンスを検索する。それ以上バイトが残っていない場合には、その後アルゴリズムは戻る（ブロック３１２）。
【００４０】
図４は本発明の使用環境を示している。本発明はプリント回路板４０１又は他のシステム手段に配置される集積回路４００で実行される。マイクロコントローラ４００はそれが利用されるシステムの複数の集積回路４０２，４０３，４０４及び又は４０５に結合されている。チップ４０５はＩＣＰプログラミングが成し遂げられる通信路を渡るブリッジを提供する。チップ４０５は単純ネットワークポートを含んでもよく、又は特別グルー(glue)論理を含んでもよく、存在するシステムの動きにＩＣＰの解釈を明白にする。ポートチップ４０５の特性は異なる適用において相違するであろう。チップ４０５は種々のＩＣＰ通信路に結合され、データ率、エラー率、及び複雑さの異なるレベルを有してもよい。例えば、１実施例では、通信路４０６はインターネットプロトコルを含んでいる。通信路４０６はパーソナルコンピュータ又はワークステーションのようなＩＣＰイニシエータ４０７に結合されている。ワークステーション４０７はネットワーク又は他の通信路４０８により大規模記憶装置４０９に結合されている。例えば、ワークステーション４０７は通信路４０６のインターネットを介してアクセスされたワールドワイドウェブサイトであってもよい。二者択一的には、他のシステムにおいて、ワークステーション４０７はダイアル呼出しモデムリンクを横切るイニシエータとして動作する。別の代案では、通信リンク４０６はパーソナルコンピュータの通信バスであり、回路内ソフトウェアはバス４０６を渡ってロードされ、システム４０１へのアップグレードがフロッピディスクの最終ユーザーに分散し、又はさもなければパーソナルコンピュータ４０７を介してロードされるようになっている。
【００４１】
従って、本発明は高性能で柔軟性のあるフラッシュメモリを基本にしたマイクロコントローラ構造を提供し、種々の回路内プログラミングの適用を可能にする。本発明によると、例えば、テレビ又はビデオモニター、デジタルビデオディスク又はＣＤ‐ＲＯＭ、遠隔制御装置、又は移動電話が回路内プログラミング構造を有するマイクロコントローラを含んでいてもよい。その後更新されたＩＣＰコードのいろいろな情報源が本発明の柔軟な構造を使用して各デバイスにロード可能である。本発明の単一回路内プログラミング構造は幅広い種類の適用において利用可能である。回路内プログラミング構造を支援するため、グルー論理はほとんど又は全く必要とされない。更に、回路内プログラミングに結合したマイクロコントローラの力は柔軟性を増加させると共に所定の環境のためＩＣＰプロトコルに特注するために影響を与えることが可能である。
【００４２】
本発明の好適な実施例の前述した説明は図解又は説明の目的のため表されたものである。本発明を開示された正確な形式に徹底又は限定することを意図するものではない。明らかに、この技術分野の熟練した実務家にとって多くの修正及び変更が明白であろう。本発明の範囲は以下の特許請求の範囲及びそれらの同等物により定義されることを意図している。
【図面の簡単な説明】
【００４３】
【図１】図１は集積回路のマイクロコントローラの概略ブロック図であり、本発明の回路内プログラミング構造を含んでいる。
【図２Ａ】図２Ａ〜図２Ｃは本発明による好適な回路内プログラミングプロセスのフローチャートである。
【図２Ｂ】図２Ａ〜図２Ｃは本発明による好適な回路内プログラミングプロセスのフローチャートである。
【図２Ｃ】図２Ａ〜図２Ｃは本発明による好適な回路内プログラミングプロセスのフローチャートである。
【図３】図３は図２Ａ〜図２Ｃのプロセスで呼び出される更新ブロックルーチンのフローチャートである。
【図４】図４は本発明の適用の環境を示している。
【符号の説明】
【００４４】
１０  集積回路
１１  マイクロプロセッサ１１
１２  シリアルポート
１３  パラレルポート
１４  割り込みピン
１５  シングルピン
１６  不揮発性メモリの第１アレイ
１７  不揮発メモリの第２アレイ
２０  プログラミング正常経路
２１  正常確認経路
２４  読み出しポート
２５  読み出しポート
２６  コード入力多重装置
２８  命令入力
２７  確認多重装置
２９  読み出し入力２９
３０  消去／プログラムセレクタ
３１  線
３２  線
３５  線
３６  消去／プログラムポート
３８  線
４０  回路内プログラミング命令セット
４００  集積回路
４０１  プリント回路板
４０２  集積回路
４０３  集積回路
４０４  集積回路
４０５  集積回路
４０６  通信路
４０７  ＩＣＰイニシエータ（ワークステーション、パーソナルコンピュータ）
４０８  通信路
４０９  大規模記憶装置
【図１】
2007328814.tif 000003
【図２Ａ】
2007328814.tif 000004
【図２Ｂ】
2007328814.tif 000005
【図２Ｃ】
2007328814.tif 000006
【図３】
2007328814.tif 000007
【図４】
2007328814.tif 000008