(57)【要約】マイクロコントローラ（３０）は、プロセッサ（３２）と、このプロセッサ（３２）に動作的に結合された埋設式メモリ（４６）と、プロセッサ（３２）及びメモリ（４６）に動作的に結合されたマイクロコントローラテストインタフェース（３４）とを有する。マイクロコントローラ（３０）は、リセット信号に応答してリセット開始を実行し、このリセット開始によりテストインタフェース（３４）の最初の無効化状態を設定するとともに、プロセッサ（３２）によりリセット開始コードを実行する。このリセット開始コードの実行により随意に、更なる無効化状態を確立する。マイクロコントローラ（３０）は、メモリ（４６）のアクセスの更なる無効化がリセット開始コードの実行により確立されない場合には、リセット開始に続くマイクロコントローラ（３０）の動作中にテストインタフェース（３４）を介するメモリ（４６）のアクセスに対しテストインタフェースを有効化状態にする。
2009505304.tif 000002
【特許請求の範囲】
【請求項１】
埋設式メモリと、プログラマブルプロセッサと、これら埋設式メモリ及びプログラマブルプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラのリセット開始動作を確立する工程と、このマイクロコントローラのリセット開始動作中に前記テストインタフェースの第１の無効化状態を確立して、このテストインタフェースを介する前記埋設式メモリへのアクセスを無効化する工程と、前記埋設式メモリ内に記憶されたリセットプログラミングをプロセッサにより実行し、前記第１の無効化状態中に前記テストインタフェースの第２の無効化状態を随意的に確立する工程と、前記リセットプログラミングの実行により前記第２の無効化状態が確立されない場合に、前記リセット開始動作後のマイクロコントローラの動作に対する前記テストインタフェースを介する前記埋設式メモリへのアクセスを有効化する工程とを有し、前記第２の無効化状態が、前記リセット開始動作後のマイクロコントローラの動作中に前記テストインタフェースを介する前記埋設式メモリへのアクセスを無効化するようにする方法。
【請求項２】
請求項１に記載の方法において、前記第１の無効化状態を前記リセットプログラミングにより確立する方法。
【請求項３】
請求項１に記載の方法において、この方法が、前記リセットプログラミングの実行による前記第２の無効化状態の随意の確立に応答して、前記埋設式メモリへのアクセスの有効化を禁止する工程を有する方法。
【請求項４】
請求項３に記載の方法において、この方法が、前記リセット開始動作後のマイクロコントローラの動作中に前記埋設式メモリの内容を変更し、前記テストインタフェースを介する前記埋設式メモリへのアクセスを得るようにする内容変更工程を有する方法。
【請求項５】
請求項４に記載の方法において、前記内容変更工程が、外部メモリポートを介して、前記埋設式メモリを消去する工程と前記埋設式メモリ内に異なる内容を記憶させる工程との少なくとも一方の工程を行う方法。
【請求項６】
請求項１に記載の方法において、前記第１の無効化状態の確立を、リセット信号に応答する動作論理に応じて行う方法。
【請求項７】
請求項１に記載の方法において、前記テストインタフェースが、有効化時にＪＴＡＧ動作を実行するように動作しうるようにする方法。
【請求項８】
埋設式メモリと、プログラマブルプロセッサと、これら埋設式メモリ及びプログラマブルプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラをリセット処理する工程と、このリセット処理に応答して、このリセット処理に続くマイクロコントローラの動作中に前記テストインタフェースを介する前記埋設式メモリへのアクセスを無効化して前記埋設式メモリの内容を保護するようにする、前記埋設式メモリ内に記憶されたリセット開始コードを実行する工程と、前記リセット処理に続くマイクロコントローラの動作中に、前記埋設式メモリの内容を変更して前記テストインタフェースを介する前記埋設式メモリへのアクセスを有効化する工程とを有する方法。
【請求項９】
請求項８に記載の方法において、前記埋設式メモリへのアクセスを無効化するのに、前記テストインタフェースの最初の無効化状態及び更なる無効化状態を前記リセット開始コードにより確立する工程が含まれ、前記最初の無効化状態は、前記リセット処理中の前記埋設式メモリへのアクセスを拒否し、前記更なる無効化状態は、前記リセット処理に続くマイクロコントローラの動作中の前記テストインタフェースを介する前記埋設式メモリへのアクセスの有効化を禁止して前記埋設式メモリの内容が前記テストインタフェースを介して読み出されないようにする方法。
【請求項１０】
請求項８に記載の方法において、前記リセット処理に続く前記マイクロコントローラの動作中に前記埋設式メモリの内容を変更するのに、前記埋設式メモリの内容の少なくとも一部分を消去して、前記テストインタフェースを介する前記埋設式メモリへのアクセスを得るようにする工程が含まれるようにする方法。
【請求項１１】
請求項８に記載の方法において、前記リセット処理に続く前記マイクロコントローラの動作中に前記埋設式メモリの内容を変更するのに、前記埋設式メモリの少なくとも一部分に異なる内容を記憶して、前記テストインタフェースを介する前記埋設式メモリへのアクセスを得るようにする工程が含まれるようにする方法。
【請求項１２】
請求項８に記載の方法において、前記埋設式メモリの内容を変更するのに、前記埋設式メモリを消去する工程及び前記埋設式メモリに異なる内容を記憶する工程の少なくとも一方の工程が含まれ、前記リセット開始コードを前記埋設式メモリの予め規定した部分内に記憶させ、前記埋設式メモリを不揮発性とする方法。
【請求項１３】
請求項８に記載の方法において、この方法が、前記リセット開始コードの実行を完了させる前の前記リセット処理に応答して前記テストインタフェースの第１の無効化状態を達成する工程と、前記リセット開始コードの実行により前記テストインタフェースの第２の無効化状態を確立する工程とを有する方法。
【請求項１４】
請求項８に記載の方法において、第１の無効化状態を前記マイクロコントローラの動作論理に応答させて設定する方法。
【請求項１５】
プロセッサと、埋設式メモリと、これらプロセッサ及び埋設式メモリに動作的に結合されたマイクロコントローラテストインタフェースとを有するマイクロコントローラの集積回路を具える装置であって、前記マイクロコントローラはリセット信号に応答してリセット開始を実行するようになっており、このリセット開始は、前記テストインタフェースを介する前記埋設式メモリへのアクセスに対し最初の無効化状態を設定するとともに、この最初の無効化状態中に前記プロセッサによりリセット開始コードを実行して、前記テストインタフェースを介する前記埋設式メモリへのアクセスに対し更なる無効化状態を随意に確立するように動作しうるようになっており、前記マイクロコントローラは、前記リセット開始コードの実行により前記更なる無効化状態が確立されない場合に、前記リセット開始に続くマイクロコントローラの動作中に前記テストインタフェースを介する前記埋設式メモリへのアクセスを有効化するようになっている装置。
【請求項１６】
請求項１５に記載の装置において、前記マイクロコントローラが、ＪＴＡＧプロトコルに応じて外部機器により前記テストインタフェースを介して入出力動作を実行する手段を有している装置。
【請求項１７】
請求項１５に記載の装置において、前記マイクロコントローラは、前記更なる無効化状態が設定された後に前記埋設式メモリの内容を変更させる１つ以上の信号に応答して前記埋設式メモリの内容を変更させるとともに、前記テストインタフェースを介する前記埋設式メモリへのアクセスを有効化させるようになっている装置。
【請求項１８】
請求項１５に記載の装置において、前記マイクロコントローラは、前記更なる無効化状態が前記テスト開始コードの実行により設定された後に、前記埋設式メモリの内容を変更する手段を有している装置。
【請求項１９】
請求項１５に記載の装置において、前記埋設式メモリが不揮発性フラッシュメモリ型であり、前記リセット開始コードが、少なくとも１つの予約メモリ位置に対して前記埋設式メモリ内に記憶されている装置。
【請求項２０】
請求項１５に記載の装置において、前記リセット開始コードが、前記テストインタフェースの前記最初の無効化状態を設定するように実行可能となっている装置。
【請求項２１】
請求項１５に記載の装置において、前記マイクロコントローラは、前記リセット開始コードの実行が開始される前に、リセット開始に応答して前記最初の無効化状態を設定するように構成されている装置。
【請求項２２】
埋設式メモリと、プログラマブルプロセッサと、これら埋設式メモリ及びプログラマブルプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラをリセット処理する工程と、このリセット処理に応答して、前記埋設式メモリ内に記憶されたリセット開始コードを実行する工程と、この実行中に前記テストインタフェースの最初の無効化状態を確立して、このテストインタフェースを介するアクセスから前記埋設式メモリの内容を保護するとともに、随意に前記テストインタフェースの更なる無効化状態を確立する工程と、前記リセット開始コードの実行後に、このリセット開始コードの実行により前記更なる無効化状態が確立されない場合に、その後のマイクロコントローラの動作中に前記テストインタフェースを介する前記埋設式メモリの内容へのアクセスを有効化する前記テストインタフェースの有効化状態を確立する工程とを有する方法。
【請求項２３】
請求項２２に記載の方法において、この方法が、リセットプログラミングの実行による前記更なる無効化状態の随意の確立に応答して、前記埋設式メモリへのアクセスの有効化を禁止する工程を有する方法。
【請求項２４】
請求項２３に記載の方法において、この方法が、前記リセット処理後のマイクロコントローラの動作中に、前記埋設式メモリの内容を変更して前記テストインタフェースを介する前記埋設式メモリへのアクセスを得る工程を有する方法。
【請求項２５】
請求項２４に記載の方法において、前記埋設式メモリの内容を変更するのに、外部メモリポートを介して、前記埋設式メモリを消去する工程と前記埋設式メモリ内に異なる内容を記憶させる工程との少なくとも一方の工程を行う方法。
【請求項２６】
請求項２４に記載の方法において、前記テストインタフェースを、有効化時にＪＴＡＧ動作を実行するように動作させ、前記埋設型メモリを不揮発性とし、前記開始コードを、１つ以上の予め規定したメモリ位置に対して前記埋設式メモリ内に記憶させる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置に関するものであり、特に、排他的でなく、ＪＴＡＧポートを介してマイクロコントローラの埋設式メモリに対するアクセスを制御することに関するものである。
【背景技術】
【０００２】
集積回路に対する安全性は、これら集積回路が安全性をより一層意識的とする分野に適用されるにつれ、一層重要となってきている。このような分野の幾つかの例は、スマートカードや、携帯電話及びその他のワイヤレス通信装置や、インターネット通信システム等である。集積回路の１つ以上の部分に対する不正なアクセスから守ることがしばしば望まれている。このような装置におけるプログラミング又はその他のメモリ内容に対する不正なアクセスは、適用業務／プログラムの多くの開発者にとって特に関心事となっている。
【０００３】
これと同時に、情報を集積回路に入力させたり、集積回路から出力させたりすることに関心が持たれている。実際に、情報の入出力（Ｉ／Ｏ）は、所定の集積回路のテスト（検査）、エミュレーション及びデバッギングを行うのにしばしば望まれている。集積回路のデバッギング、エミュレーション及びテスト目的の何れか又はこれらの任意の組み合わせを達成するのに用いられる１つの一般的な標準規格は、ＪＴＡＧ（Joint Test Action Group ）ＩＥＥＥ（Institute of Electrical and Electronic Engineers）1194.1のテストアクセスポート及びバウンダリスキャンアーキテクチュアである。標準のＪＴＡＧインタフェースに加えて、種々の他のデバッグ、エミュレーション及びテストインタフェースの何れか又は任意の組み合わせが集積回路に用いられている。不都合なことに、ＪＴＡＧ又はその他の所望のインタフェースに対する入出力端子は、集積回路に対する不正アクセス用の経路を生じてしまう。その結果、集積回路へのアクセスを安全にしたいという要望と、デバッグ、エミュレーション及びテストの何れか又は任意の組み合わせの能力を提供することとの間でしばしば矛盾が生じる。従って、この技術分野には、更なる改良を行う要求が存在する。
【０００４】
本発明の一例は、集積回路へのアクセスを安全にする独特な技術である。本発明の他の例には、集積回路の埋設式メモリへのアクセスを制御する独特なデバイス、方法、システム及び装置が含まれる。
【０００５】
本発明の更なる例は、埋設式メモリと、プログラマブルプロセッサと、これらメモリ及びプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラのリセット開始（イニシエーション）動作を確立する工程と、このリセット開始動作中に、テストインタフェースの最初の無効化状態を確立して、テストインタフェースを介するメモリへのアクセスを無効化（ディスエーブリング）する工程と、メモリ内に記憶された、リセットプログラミングとも称される最初の、すなわち起動のプログラミングシーケンスをプロセッサにより実行し、最初の無効化状態中にテストインタフェースの更なる無効化状態を随意的に確立する工程と、リセットプログラミングの実行により更なる無効化状態が確立されない場合に、開始動作後のマイクロコントローラの動作に対するテストインタフェースを介するメモリアクセスを有効化（イネーブリング）する工程とを有する。更なる無効化状態は、開始動作に続くマイクロコントローラの動作中にテストインタフェースを介するメモリアクセスを拒否する。一形態では、更なる無効化状態をリセットプログラミングにより確立するか、又はリセット信号に応答する動作論理により最初の無効化状態を実行するか、又はこれらの双方を行う。
【０００６】
他の例は、埋設式メモリと、プログラマブルプロセッサと、これらメモリ及びプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラを４リセット処理する工程と、このリセット処理に応答して、このリセット処理に続くマイクロコントローラの動作中にテストインタフェースを介するメモリアクセスを無効化してメモリ内容を保護するようにする、メモリ内に記憶されたリセット開始コードを実行する工程と、リセット処理に続くマイクロコントローラの動作中に、メモリの内容を変更してテストインタフェースを介するメモリへのアクセスを有効化する工程とを有する。一形態では、このメモリの内容を変更する工程は、メモリを消去する工程と、メモリに異なる内容を記憶させる工程との少なくとも一方を有し、リセット開始コードは、メモリの予め規定した部分内に記憶し、メモリは不揮発性とする。上述したことに代え又は加えて、本例は、リセット開始コードの実行を完了させる前のリセット処理に応答してテストインタフェースの最初の無効化状態を達成する工程と、リセット開始コードの実行によりテストインタフェースの更なる無効化状態を確立する工程とを有し、この場合、最初の無効化状態は、マイクロコントローラの動作論理に応答して、又はリセット開始コードの実行により、又はこれらの双方により設定される。
【０００７】
更に他の例は、プロセッサと、このプロセッサに動作的に結合された埋設式メモリと、前記プロセッサ及びメモリに動作的に接続されたマイクロコントローラテストインタフェースとを有するマイクロコントローラ集積回路を具えている。マイクロコントローラは、リセット信号に応答して、リセット開始を実行し、これによりテストインタフェースの最初の無効化状態を設定するとともに、リセット無効化状態中にプロセッサによりリセット開始コードを実行して更なるメモリアクセス無効化状態を随意に確立する。この更なるメモリアクセス無効化状態がリセット開始コードの実行により確立されない場合には、リセット開始に続くマイクロコントローラの動作中に、このマイクロコントローラは、テストインタフェースを通るメモリアクセスに対し有効化状態にする。
【０００８】
本発明の更に他の例は、埋設式メモリと、プログラマブルプロセッサと、これらメモリ及びプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラを４リセット処理する工程と、メモリ内に記憶されたリセット開始コードを実行する工程と、リセット処理に応答してテストインタフェースの最初の無効化状態を確立して、テストインタフェースを介するアクセスからメモリ内容を保護するとともに、リセット開始コードの実行中に随意にテストインタフェースの更なる無効化状態を確立する工程と、リセット開始コードの実行後に、このリセット開始コードの実行により更なる無効化状態が確立されない場合に、その後のマイクロコントローラの動作中にテストインタフェースを介するメモリの内容へのアクセスを許容するテストインタフェースの有効化状態を確立する工程とを有する。
【０００９】
本発明の１つの目的は、集積回路へのアクセスを安全にする独特な技術を提供することにある。
【００１０】
本発明の他の目的は、集積回路の埋設式メモリの内容へのアクセスを制御する独特なデバイス、方法、システム又は装置を提供することにある。
【００１１】
本発明の更なる目的、実施例、構造、特徴、利点は以下の図面に関する説明から明らかとなるであろう。
【発明を実施するための最良の形態】
【００１２】
本発明は種々の異なる形態で構成しうるが、本発明の原理の理解を促進する目的で、図示の実施例を参照し、これを説明するために特定の用語を用いる。しかしながら、本発明の範囲は、この実施例に限定されるものではないことを理解すべきである。ここで説明する実施例のいかなる変形例及び変更や、ここで説明する本発明の原理のいかなる他の適用も、当業者にとって通常行われるものとみなすべきものである。
【００１３】
本発明の一実施例は、プロセッサと、このプロセッサに動作的に結合された埋設式メモリと、前記プロセッサ及びメモリに動作的に接続されたマイクロコントローラテストインタフェースとを有するマイクロコントローラ集積回路を具えている。マイクロコントローラは、リセット信号に応答して、テストインタフェースのリセット無効化状態を設定する処理と、テストインタフェースの更なる無効化状態を動作的に確立する処理とを含むリセット開始を実行する。この更なる無効化状態が予めリセット開始コードの実行により確立されない場合には、次の動作中にこのマイクロコントローラは、テストインタフェースを通るメモリアクセスに対しテストインタフェースを有効化状態にする。
【００１４】
図１は、集積回路システム２０の形態の他の実施例を示す。このシステム２０は、集積回路２４に動作的に結合されたテスト装置２２を有する。この集積回路２４は、マイクロコントローラ３０が得られるように構成されている。このマイクロコントローラ３０は、プロセッサ３２及びテストインタフェース３４を有する。ここで用いている用語“テストインタフェース”は、テスト、デバッギング、エミュレーション又はこれらの組み合わせを、確立された１つ以上のプロトコルに応じて実行するように構成した如何なる集積回路インタフェースをも広く意味するものである。所定のテストインタフェースは、専用の端子を介してアクセスしうるか、又は対応する集積回路の１つ以上の他のインタフェース又はデバイス等と共用する端子を介してアクセスしうる。一実施例では、インタフェース３４がＪＴＡＧ標準規格に適合している。これに代えて又はこれに加えて、異なるテストインタフェースプロトコルを用いることができる。フィリップス社の型番ＬＰＣ２１１４及びＬＰＣ２１２４の半導体は、ＪＴＡＧ及びエミュレーショントレースポート能力を有するマイクロコントローラデバイスの例であるが、これらの例に限定されるものではない。
【００１５】
図１には、マイクロコントローラ３０に対する二進リセット入力端３６をも示す。対応するリセット信号が、ある初期設定（デフォルト）を指示するとともに予め規定したブートアップメモリ位置で起動するプログラムの実行を指示するマイクロコントローラ３０の動作をリセットする。マイクロコントローラ３０は、リセット状態に応答して、図２に関連して後に更に説明するように、リセット初期化を実行する。この初期化は、プログラミング命令又はハードウェア、或いはこれらの組み合わせで実行しうる。
【００１６】
プロセッサ３２は更に、ローカルバス４０に結合され、埋設式のスタティックランダムアクセスメモリ（ＳＲＡＭ）４２と埋設式の不揮発性フラッシュメモリ４４とに対する双方向アクセスを達成するようにする。バス４０は、メモリ制御論理回路（図示せず）等を介してＳＲＡＭ４２とフラッシュメモリ４４との双方又は何れか一方に結合することができる。メモリ４４は代表的に、マイクロコントローラの動作中にプロセッサ３２により実行されるプログラミング命令を記憶するのに用いられる。このメモリ４４は、１つ以上の入力ポート（例えば、直列通信ポート）を介してプログラミングされるように構成されており、その内容を消去するバルク消去命令に応答する。種々の実施例では、メモリ４４の消去が外部信号又は内部信号又はこれらの双方に応答しうる。ＳＲＡＭ４２とメモリ４４とを合成して、埋設式のマイクロコントローラメモリ４６とする。
【００１７】
マイクロコントローラ３０は、種々の入力デバイスと、出力デバイスと、入出力（Ｉ／Ｏ）デバイスと、種々の異なる専用の内部デバイスとの何れか又は任意の組み合わせを有しており、これらを集合的に符号５２で示してある。高速内部バス５０はプロセッサ３２及びデバイス５２に結合され、これらの間で選択性の双方向通信が達成されるようになっている。１つの特定の形態では、デバイス５２をインタフェースブリッジ（図示せず）を介してバス５０に結合させる。デバイス５２は、１つ以上のタイマ、実時間クロック、アナログ‐デジタル（Ａ／Ｄ）変換器、デジタル‐アナログ（Ｄ／Ａ）変換器、汎用のＩ／Ｏピン（ＧＰＩＯ）、万能非同期受信機／送信機（ＵＡＲＴ）インタフェースポート及び種々の他の直列通信ポートの双方又は何れか一方、外部インタラプト経路、パルス幅変調出力端等を有しうる。バス５０にはインタラプト制御論理回路５４を結合することもできる。このインタラプト制御論理回路５４は、マイクロコントローラ３０と関連する内部及び外部インタラプトを管理する。
【００１８】
テスト装置２２は、マイクロコントローラ３０のインタフェース３４を介して適切なテスト、デバッギング、エミュレーションのいずれか又はこれらの任意の組み合わせを行うように構成した種類のものとする。例えば、ＪＴＡＧ形態のインタフェース３４の場合、テスト装置２２は、種々の標準形式のＪＴＡＧデバイスのうちの何れにもすることができる。テスト装置２２を介するマイクロコントローラ３０に対するアクセスは、しばしば、最初の製造、テスト及び開発に際し望まれるが、プログラミングした部分が一旦、適切な消費者に対する製品に与えられた場合に、（プログラミングのような）メモリ４２及び４４の双方又は何れか一方に記憶されたデータに対する不正アクセスがしばしば心配事項となることを銘記すべきである。実際には、競合他社が読み取りを行えないようにする、或いはこのような部分のプログラミングに対するアクセスができないようにする手段をとることがしばしば望まれる。従って、マイクロコントローラ３０は、リセット時に、プログラム開発者に、メモリに対する所望のアクセスか否かの選択肢を与える、適切な動作論理を以て構成する。この動作は、ユーザ定義のプログラミングにより実行される為、何らかの所望のテスト／デバッギング／エミュレーションが、プログラミングされていない部分の製造者及び供給者の双方又は何れか一方が満足するように実行されるまで、メモリに対するテストインタフェースのアクセスを無効化するのを実行する必要がない。
【００１９】
マイクロコントローラ３０のテストインタフェース３４を随意にディスエーブリングするための一実施例を、図２の流れ図に示す手順２２０につき説明するが、本発明はこの実施例に限定されるものではない。この特定の実施の場合、テストインタフェース３４がＪＴＡＧプロトコルに適合するが、他の実施例では、このプロトコルに代え又はこのプロトコルに加え他のプロトコルを適用することができることを銘記すべきである。手順２２０と関連して説明する動作のうちの少なくとも幾つかは、マイクロコントローラ３０の専用の動作論理を介して実行される。この動作論理は、専用のハードウェアの形態、又は配線マイクロコントローラ命令の形態、又はメモリに記憶された変更可能なマイクロコントローラ命令の形態、又は当業者にとって既知のその他の形態、或いはこれらの任意の組み合わせで提供しうる。
【００２０】
手順２２０は、リセット入力端３６における状態変化によりアクティブ論理状態に予め設定された二進論理リセット信号が釈放されたか否か、すなわち、リセット信号がそのインアクティブ状態に復帰したか否かをテストする状態質問（コンディショナル）工程２２２で開始される。限定されることのない一例では、リセット信号は、電源オフ／電源オンサイクル（パワーオンリセット：ＰＯＲ）又は電圧低下状態（ブラウンアウトリセット：ＢＯＲ）中に生じるおそれのある、予め決定したしきい値以下の電源電圧降下から生ぜしめることができる。
【００２１】
状態質問工程２２２でのテスト結果が否定（偽）である場合には、手順２２０は元に戻り、対応するテスト結果が肯定となるまで状態質問工程２２２を繰り返す。状態質問工程２２２におけるテスト結果が肯定（真）となると、手順２２０は動作工程２２４に進む。この動作工程２２４では、プロセッサ３２がメモリ４４における予約したリセット開始位置に向かう。リセットプログラミング（リセット開始コード）の随意の“ブートブロック”がこの位置に対し予め記憶されている場合には、その実行がプロセッサ３２に対し動作工程２２４で開始される。このリセットプログラミングは、本例に対し特定されたメモリアドレスレンジに対応する連続メモリ位置の“ブロック”として記憶されている。或いはまた、リセット開始コードをメモリ４２及びメモリ４４の双方又は何れか一方の内部に、予約又は非予約式の不連続位置に記憶しうる。限定されることのない一例では、リセット開始位置が、間接アドレス指定等によりリセットルーチンの少なくとも一部を指示しうるようにする。リセット開始プログラミングは代表的に、マイクロコントローラ３０の相手先ブランド製品の製造会社（ＯＥＭ）により特定される。
【００２２】
動作工程２２４におけるブートブロックコードの実行により、テストインタフェース３４の最初に無効化された状態が設定される。この最初の無効化状態中、マイクロコントローラ３０を制御するテストインタフェース３４のＪＴＡＧの機能性の利用が阻止され、これにはテストインタフェース３４を介するメモリ４２又はメモリ４４へのアクセスを拒否することが含まれる。従って、リセット開始コードの実行の開始でテストインタフェース３４の無効化状態を設定することにより、状態のリセット信号変化によるテストインタフェース３４を通る不正アクセスを阻止する。
【００２３】
テストインタフェースの最初の無効化状態が継続している間、リセットプログラミング（ブートブロック）の実行が持続し、この実行には随意であるが、テストインタフェースの更なる無効化状態の確立が含まれる。状態質問工程２２６は、ブートブロックコード（存在する場合）の実行が、その終了後に動作工程２２４中の更なる無効化状態の設定に対応するユーザの安全要求を見いだしたか否かをテストする。テストインタフェース３４のこの更なる無効化状態の設定は、アプリケーションプログラミングコードの開発者により規定される選択肢である。代表的に、アプリケーションプログラミングの開発はマイクロコントローラ３０の所定の製品用途に対するものであり、マイクロコントローラの構成要素の相手先ブランド製品の製造会社（ＯＥＭ）以外の関係者により行われている。リセットプログラミングが実行されている為、この随意の更なる無効状態は、外部信号入力、特定のメモリ位置の内容、幾つかのメモリ位置の内容のチェックサム又は許容しうる程度に安全な他の動作／機能のような多数の技術の何れによっても設定しうる。
【００２４】
状態質問工程２２６におけるテスト結果が否定（偽）である、すなわち、更なる無効状態が設定されない場合には、手順２２０は動作工程２２８に進む。この動作工程２２８では、テストインタフェース３４のＪＴＡＧ動作が有効化され、ブートブロックコードにより設定された、最初に無効化された状態を終了させる。これに対応して、メモリ４２及び４４へのアクセスを含むＪＴＡＧ制御が、工程２３０における通常のマイクロコントローラの動作の復帰／開始により表される後のマイクロコントローラの動作に対し動作工程２２８で行われる。
【００２５】
一方、状態質問工程２２６におけるテスト結果が肯定である、すなわち、テストインタフェース３４の更なる無効状態がリセットプログラミングにより設定されている場合には、手順２２０は動作工程２２８を迂回する。その結果、リセットプログラミングにより設定された、最初に無効化された状態に応答して得られたテストインタフェース３４の無効化状態は維持される。その理由は、この無効化状態は動作工程２２８の実行により与えられていない為である。その代わり、手順２２０は、状態質問工程２２６から、工程２３０で示すような、リセット処理状態に続くマイクロコントローラの動作に直接進む。工程２３０は、阻止されたテストインタフェース３４に対するマイクロコントローラ３０の後の通常の動作に対応する。
【００２６】
前述した種類のメモリアクセスと、テストインタフェース３４の無効化又は有効化との双方又は何れか一方の確立は、所定の状態を設定する変化を与える処置を講じるか、又は所定の対応する処置を省略することにより状態を持続又は変化させることにより実行しうる。手順２２０の特徴には、リセット状態中に、インタフェース３４を介する制御の不正判定を阻止するためにリセット時にインタフェース３４を介するアクセスを無効化する特徴が含まれていることを銘記すべきである。更に、随意のリセットプログラミングが存在しない場合には、インタフェース３４の有効化が初期設定により生じることを理解すべきである。従って、マイクロコントローラ３０に対する制御及びアクセスの双方又は何れか一方は、リセットプログラミングが存在しないか、又はこのようなプログラミングが存在する場合には、このリセットプログラミングにより更なる無効化状態を確立しない限り、製造、テスト及び開発中にインタフェース３４を介するＪＴＡＧ動作により得ることができる。
【００２７】
希な場合ではあるが、インタフェース３４を介するアクセスを名目上阻止するために、更なる無効化状態が予め設定されている、予めプログラミングされたマイクロコントローラ３０の内部テスト、デバッギング、エミュレーション等を実行するのが望ましい場合がある。例えば、製品／コード開発者によりＯＥＭ（供給者）に戻された１つ以上のプログラミングされたマイクロコントローラ３０の故障解析が望まれる場合がある。このような場合、インタフェース３４を介するアクセスを、インタフェース３４の更なる無効化状態により保護されるメモリ内容を変更することにより回復させることができる。限定されない一例では、この変更は、メモリ位置の内容を破壊し、従って、不正アクセスからのメモリ内容の保護を継続するバルク消去命令又は入力信号により達成される。上述したことに代え或いは加えて、上述した変更は、動作工程２２４中にテストインタフェース３４の更なる無効化状態を設定するのに用いた何れかのメモリ位置及び記憶したリセット開始コードの少なくとも一部分の双方又は何れか一方を書き換えることにより行うことができる。ある場合では、デバイス５２に含まれる直列通信デバイスにより、書き込み専用アクセスを、上述した変更を行うことのできるメモリ４２及び４４に行う。このようにすることにより、デバイスのテスト及びデバッギングが更に必要となる時（この時があれば）まで、メモリ４２及び４４の内容をプログラマーの選択で保護するようにでき、この場合この保護が継続される。その理由は、テストインタフェースのアクセスを可能にするのに必要な変更により同時に、保護される内容を変化させる為である。
【００２８】
手順２２０の幾つかの動作工程及び状態質問工程はリセットプログラミングにより実行されるが、他の実施例では、これら動作工程の１つ以上を、マイクロコントローラ３０に特有の専用動作論理により実行しうることを明記すべきである。限定されることのない一例では、テストインタフェース３４の最初の無効化状態を、上述したことに代え又は加えて、専用のハードウェア又は（ファームウエアのような）通常ユーザが規定するものではないマイクロコントローラ命令により確立させることができる。
【００２９】
本発明の多くの他の実施例が考えられる。例えば、本発明の技術開示は、マイクロコントローラ以外の他の種類の集積回路に適用しうる。上述したことに代え又は加えて、他の種類のメモリアクセス制御を用いたり、他の種類のメモリを保護したり、これらの双方を行ったりすることができる。他の例では、埋設式メモリと、プログラマブルプロセッサと、これらメモリ及びプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラが含まれる。このマイクロコントローラは、リセット開始動作中にテストインタフェースを介するメモリに対するアクセスを無効化するために、テストインタフェースの最初の無効化状態を確立する手段と、最初の無効化状態中にテストインタフェースの更なる無効化状態を随意に確立するために、メモリに記憶されたリセットプログラミングをプロセッサにより実行するようにする手段と、リセットプログラミングの実行により更なる無効化状態が確立されない場合に、開始動作後のマイクロコントローラの動作に対するテストインタフェースを介するメモリアクセスを有効化する手段とを有する。この更なる無効化状態は、開始動作後のマイクロコントローラの動作中にテストインタフェースを介するメモリアクセスを無効化する。一形態では、最初の無効化状態を、リセットプログラミング及び専用のマイクロコントローラの動作論理の双方又は何れか一方により確立する。
【００３０】
本発明の更に他の実施例は、埋設式のメモリと、プログラマブルプロセッサと、これらメモリ及びプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラを具えている。このマイクロコントローラは、リセットに続くマイクロコントローラの動作中にテストインタフェースを介するメモリアクセスを無効化してメモリ内容を保護するようにする、メモリ内に記憶されたリセット開始コードをプロセッサにより実行する手段と、リセットに続くマイクロコントローラの動作中に、メモリの内容を変更してテストインタフェースを介するメモリへのアクセスを有効化する手段とを有する。一形態では、このメモリの内容を変更する手段は、メモリを消去する手段と、メモリに異なる内容を記憶させる手段との少なくとも一方を有する。上述したことに代え又は加えて、マイクロコントローラは、リセット開始コードの実行を完了させる前のリセットに応答してテストインタフェースの最初の無効化状態を達成する手段と、リセット開始コードの実行によりテストインタフェースの更なる無効化状態を確立する手段とを有し、この場合、最初の無効化状態は、マイクロコントローラの動作論理に応答して、又はリセット開始コードの実行により、又はこれらの双方により設定される。
【００３１】
本発明の更に他の実施例は、埋設式のメモリと、プログラマブルプロセッサと、これらメモリ及びプロセッサに動作的に結合されたテストインタフェースとを有するマイクロコントローラを具えている。このマイクロコントローラは、このマイクロコントローラをリセットするのに応答して、メモリ内に記憶されたリセット開始コードを実行する手段と、テストインタフェースを介するアクセスからメモリの内容を保護するためにテストインタフェースの最初の無効化状態を確立するとともに、随意ではあるがリセット開始コードの実行中テストインタフェースの２回目の無効化状態を確立する手段と、リセット開始コードの実行により２回目の無効化状態が確立されない場合に、後続のマイクロコントローラの動作中にテストインタフェースを介するメモリの内容へのアクセスを有効化するテストインタフェースの有効化状態を確立する手段とを有する。
【００３２】
上述したいかなる理論、動作機構、証明又は結論も本発明の理解を助けるためのものであり、このような理論、動作機構、証明又は結論に本発明を限定するものではない。本発明を図面において詳細に説明したが、これは例示にすぎず、上述した及び特許請求の範囲の精神に入るあらゆる等価な変形例も保護されるべきものである。
【図面の簡単な説明】
【００３３】
【図１】図１は、テスト装置に結合されたマイクロコントローラを有する集積回路システムを示すブロック線図である。
【図２】図２は、図１のシステムにより実行しうる１つの手順を示す流れ図である。
【図１】
2009505304.tif 000003
【図２】
2009505304.tif 000004
【国際調査報告】
2009505304.tif 000005
2009505304.tif 000006
2009505304.tif 000007
2009505304.tif 000008