(57)【要約】本発明の一実施例は、組み込みメモリ（４６）と、プログラマブルプロセッサ（３２）と、テストインターフェース（３４）とを含む。メモリ（４６）はテストインターフェース（３４）を介してアクセス可能である。このマイクロコントローラ（３０）のリセットに応答して、カウンタが始動され、テストインターフェース（３４）がディセーブル状態に初期設定されるとともに、開始プログラムが実行される。カウンタが所定の値に到達する前に、プロセッサによる開始プログラムコードの実行によってその後のマイクロコントローラの動作中にディセーブル状態が付与されないかぎり、カウンタの所定値到達時に、テストインターフェース（３４）がイネーブル状態に変更されてテストインターフェースを介する埋め込みメモリへのアクセスが許可される。
2009505303.tif 000002
【特許請求の範囲】
【請求項１】
組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラをリセットするステップと、
前記リセットに応答して、前記テストインターフェースを介する前記メモリへのアクセスをディセーブルするステップと、
前記ディセーブル後に、前記メモリに格納されているリセットコードの実行を前記プロセッサで開始させ、前記リセットコードの実行によってその後のマイクロコントローラ動作に対して前記テストインターフェースのディセーブルの続行が設定されない限り、前記テストインターフェースを介する前記メモリへのアクセスをイネーブルにするステップとを備えることを特徴とするメモリ保護方法。
【請求項２】
前記リセットコードの実行が開始される前にカウンタを始動させるステップを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記カウンタの出力値を所定値と比較し、前記カウンタの出力値が前記所定値に到達するまで前記イネーブルを遅らせるステップを含むことを特徴とする請求項２記載の方法。
【請求項４】
前記ディセーブルの続行は、前記メモリの内容をその後のマイクロコントローラ動作中前記テストインターフェースを介して読み出されないように保護する前記リセットコードの実行によって設定することを特徴とする請求項１記載の方法。
【請求項５】
前記テストインターフェースを介するメモリアクセスを得るために前記メモリの内容をその後のマイクロコントローラ動作中に変更するステップを含むことを特徴とする請求項４記載の方法。
【請求項６】
前記メモリ内容を変更するステップは、前記メモリを消去するステップ及び、外部メモリポートを介して前記メモリに異なる内容を格納するステップの少なく一つを含むことを特徴とする請求項５記載の方法。
【請求項７】
前記テストインターフェースはイネーブル時にＪＴＡＧオペレーションを実行することを特徴とする請求項１記載の方法。
【請求項８】
組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラの動作を開始させるステップと、
前記動作の開始に応答して、カウンタを始動させ、前記テストインターフェースを初期ディセーブル状態に設定して前記テストインターフェースを介する前記メモリへのアクセスをディセーブルし、開始コードを前記プロセッサで実行させるステップと、
前記カウンタが所定のカウント状態に到達したとき、前記開始コードの実行によって、前記カウンタが所定のカウント状態に到達する前に、その後のマイクロコントローラ動作に対して前記ディセーブルの続行が設定されない限り、前記テストインターフェースを前記メモリへのアクセスをイネーブルにするイネーブル状態に変化させるステップとを備えることを特徴とするメモリ保護方法。
【請求項９】
前記カウンタはタイマであり、前記所定のカウント状態は所定の時間量であり、前記初期ディセーブル状態の設定は、前記開始コードの実行前に前記マイクロコントローラのオペレーティングロジックにより実行されることを特徴とする請求項８記載の方法。
【請求項１０】
ＪＴＡＧプログラムに従って、前記テストインターフェースに結合された外部装置で前記マイクロコントローラにアクセスするステップを含むことを特徴とする請求項８記載の方法。
【請求項１１】
前記ディセーブルの続行は、前記メモリの内容をその後のマイクロコントローラ動作中に前記テストインターフェースを介して読み出されないように保護する前記開始コードの実行によって設定することを特徴とする請求項８記載の方法。
【請求項１２】
前記テストインターフェースを介するメモリアクセスを得るために前記メモリの内容をその後のマイクロコントローラ動作中に変更するステップを含むことを特徴とする請求項１１記載の方法。
【請求項１３】
前記メモリ内容を変更するステップは、前記メモリを消去するステップ及び外部メモリポートを介して前記メモリに異なる内容を格納するステップの少なくとも一つを含み、前記開始コードは前記メモリの所定の部分に格納され、前記メモリは不揮発性であることを特徴とする請求項１２記載の方法。
【請求項１４】
前記メモリへのアクセスは、前記メモリに開始コードが格納されていないときに、前記カウンタの所定のカウント状態への到達に応答してイネーブルにされることを特徴とする請求項１３記載の方法。
【請求項１５】
プロセッサと、前記プロセッサに動作可能に結合された組み込みメモリと、前記プロセッサおよび前記メモリに動作可能に結合されたマイクロコントローラテストインターフェースとを含むマイクロコントローラ集積回路を備える装置であって、
前記マイクロコントローラは、リセット信号に応答してリセットオペレーティングロジックを実行して、前記テストインターフェースを介する前記メモリへのアクセスを阻止する前記テストインターフェースの初期ディセーブル状態をセットするとともに、カウンタを始動し、
前記プロセッサは、前記初期ディセーブル状態中に、前記メモリに格納されたリセット開始コードを実行して、リセット後のマイクロコントローラ動作に対して前記メモリアクセスディセーブルの続行を選択的に設定し、
前記リセットオペレーティングロジックは、前記カウンタが前記所定のカウント状態に到達する前に、前記プロセッサによる前記開始コードの実行によって前記メモリアクセスディセーブルの続行状態が設定されない限り、前記所定のカウント状態への到達に応答して前記テストインターフェースのイネーブル状態を設定して、リセット後のマイクロコントローラ動作中前記テストインターフェースを介するメモリアクセスを可能にすることを特徴とする装置。
【請求項１６】
前記リセットオペレーティングロジックは前記プロセッサによる前記開始コードの実行前に、前記初期ディセーブル状態を設定することを特徴とする請求項１５記載の装置。
【請求項１７】
前記マイクロコントローラは、入力及び出力オペレーションを前記外部装置によってＪＴＡＧプロセッサに従って実行する手段を含むことを特徴とする請求項１５記載の装置。
【請求項１８】
前記マイクロコントローラは、前記メモリアクセスディセーブルの続行状態が設定された後に、一以上の外部しに応答して、前記メモリの内容を変更し、前記テストインターフェースを介するメモリへのアクセスをイネーブルすることを特徴とする請求項１５記載の装置。
【請求項１９】
前記マイクロコントローラは、前記開始コードの実行によって前記ディセーブルの続行状態が設定された後に、前記メモリの内容を変更する手段を含むことを特徴とする請求項１５記載の装置。
【請求項２０】
前記メモリは不揮発性フラッシュ型であることを特徴とする請求項１５記載の装置。
【請求項２１】
組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラの初期動作を開始させるステップと、
前記マイクロコントローラの初期動作中に、前記テストインターフェースを、前記テストインターフェースを介する前記メモリへのアクセスをディセーブルする初期ディセーブル状態に設定するステップと、
前記初期ディセーブル状態中に、前記メモリに格納されている開始コードの少なくとも一部分を前記プロセッサで実行させ、前記テストインターフェースのディセーブル続行状態を選択的に設定するステップと、
前記ディセーブル続行状態が前記開始コードに実行により設定されない限り、前記初期動作後も前記テストインターフェースを介するメモリアクセスをマイクロコントローラ動作のためにイネーブルするステップとを備え、
前記ディセーブル続行状態は前記初期動作後の前記マイクロコントローラ動作中も前記テストインターフェースを介するメモリアクセスをディセーブルすることことを特徴とするメモリ保護方法。
【請求項２２】
前記初期ディセーブル状態は前記マイクロコントローラの専用のオペレーティングロジックにより実行されることを特徴とする請求項２１記載の方法。
【請求項２３】
前記マイクロコントローラの前記初期動作中、カウンタを動作させるステップを含むことを特徴とする請求項２２記載の方法。
【請求項２４】
前記ディセーブル続行状態は、前記カウンタが所定のカウント状態に到達する前に前記開始コードを実行することによって設定されるセキュリティ設定で前記イネーブルを禁止ことによって与えられることを特徴とする請求項２３記載の方法。
【請求項２５】
前記開始コードは第１部分と第２部分を含み、前記初期ディセーブル状態の設定は前記第１部分を実行することによって達成され、前記開始コードの実行は前記第２部ブロックの実行を含むことを特徴とする請求項２１記載の方法。
【請求項２６】
組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラをリセットするステップと、
前記リセットに応答して、前記メモリに格納されているリセットコードを実行し、前記メモリの内容をリセット後のマイクロコントローラ動作中保護すべく前記テストインターフェースを介する前記メモリへのアクセスをディセーブルするステップと、
リセット後のマイクロコントローラ動作中、前記テストインターフェースを解する前記メモリへのアクセスをイネーブルにすべく前記メモリの内容を変更するステップとを備えることを特徴とするメモリ保護方法。
【請求項２７】
前記リセットコードの実行前に、前記リセットに応答して、前記テストインターフェースの初期ディセーブル状態を設定するステップを含むことを特徴とする請求項２６記載の方法。
【請求項２８】
前記リセットコードの実行前に、前記リセットに応答して、カウンタを始動させるステップを含むことを特徴とする請求項２６記載の方法。
【請求項２９】
前記メモリを内容するステップは前記メモリの内容を消去することを特徴とする請求項２６記載の方法。
【請求項３０】
前記メモリの内容を変更するステップは前記メモリに異なる内容を格納することを特徴とする請求項２６記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子デバイスに関し、特にＪＡＴＧポートを介するマイクロコントローラの組み込みメモリへのアクセスの制御に関するものであるが、これに限定されない。
【背景技術】
【０００２】
集積回路がセキュリティコンシャスアプリケーションにますます適用されるにつれて、集積回路のセキュリティに関心が高まっている。このようなアプリケーションのいくつかの例は、スマートカード、携帯電話及び他の無線通信デバイス、インターネット通信システムなどである。集積回路の一つ以上の部分への不正アクセスを保護する必要がしばしばある。これらのデバイス内のプログラミングコンテンツ又は他のメモリコンテンツへの不正アクセスは特に多くのアプリケーション／プログラムデベロッパが懸念している。
【０００３】
同時に、集積回路に対する情報の入力及び出力に関する許可に関心がもたれている。多くの場合、所定の集積回路をテストし、エミュレートし、デバグするために情報の入力／出力（Ｉ／Ｏ）が必要とされる。集積回路のデバグ、エミュレーション及び／又はテスト目的に使用される一つの共通標準はＪＴＡＧ（Joint Test Action Group）IEEE (Institute of Electrical and Electronic Engineers) 1194.1 test access port and boundary scan architectureである。標準ＪＡＴＧインターフェースに加えて、集積回路用の種々の他のデバグ、エミュレーション及び／又はテストインターフェースがある。残念ながら、ＪＴＡＧ又は他の所望のインターフェースのための入力／出力端子は集積回路への不正アクセスパスを与える。その結果、集積回路へのアクセスを保護する必要性と、デバグ、エミュレーション及び／又はテスト機能を提供する必要性が競合する場合がしばしばある。従って、この技術分野には更なる改善が要求されている。
【発明の開示】
【０００４】
本発明の一つの態様は、集積回路へのアクセスを保護するユニークな技術である。本発明の他の態様は、集積回路の組み込みメモリへのアクセスを制御するデバイス、方法、システム及び装置である。
【０００５】
一つの実施態様では、組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラをリセットする。このリセットに応答して、テストインターフェースを介する前記メモリへのアクセスをディセーブルし、その後、前記メモリに格納されているコード（以後リセットコードという）の実行を前記プロセッサで開始させる。リセットコードの実行がその後のマイクロコントローラ動作に対してテストインターフェースのディセーブルの続行を設定しない限り、テストインターフェースを介する前記メモリへのアクセスをその後可能にする。
【０００６】
本発明の他の実施態様では、組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラの動作を開始させ、
前記動作の開始に応答して、カウンタを始動させ、前記テストインターフェースを初期ディセーブル状態に設定して前記テストインターフェースを介する前記メモリへのアクセスをディセーブルし、開始コードを前記プロセッサで実行させ、
前記カウンタが所定のカウント状態に到達したとき、前記開始コードの実行によって、前記カウンタが所定のカウント状態に到達する前に、その後のマイクロコントローラ動作に対して前記ディセーブルの続行が設定されない限り、前記テストインターフェースをイネーブル状態に変化させてメモリアクセスを許可する。
【０００７】
本発明の更に他の実施態様は、プロセッサと、前記プロセッサに動作可能に結合された組み込みメモリと、前記プロセッサおよび前記メモリに動作可能に結合されたマイクロコントローラテストインターフェースとを含むマイクロコントローラ集積回路を備える装置である。前記マイクロコントローラは、リセット信号に応答して、リセットオペレーティングロジックを実行して前記テストインターフェースの初期ディセーブル状態をセットするとともに、カウンタを始動する。前記初期ディセーブル状態は、前記テストインターフェースを介する前記メモリへのアクセスを阻止する。前記プロセッサは、前記初期ディセーブル状態中に、前記メモリに格納されたリセット開始コードを実行して、リセット後のマイクロコントローラ動作に対して前記メモリアクセスディセーブルの続行を選択的に設定することができる。前記リセットオペレーティングロジックは、前記カウンタが前記所定のカウント状態に到達する前に、前記プロセッサによる前記開始コードの実行によって前記メモリアクセスディセーブルの続行状態が設定されない限り、前記所定のカウント状態への到達に応答して前記テストインターフェースのイネーブル状態を設定して、リセット後のマイクロコントローラ動作中前記テストインターフェースを介するメモリアクセスを可能にする。
【０００８】
本発明の更に他の実施態様では、組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラの初期動作を開始させるステップと、
前記マイクロコントローラの初期動作中に、前記テストインターフェースを、前記テストインターフェースを介する前記メモリへのアクセスをディセーブルする初期ディセーブル状態に設定し、
前記初期ディセーブル状態中に、前記メモリに格納されている開始コードの少なくとも一部分を前記プロセッサで実行させ、前記テストインターフェースのディセーブル続行状態を選択的に設定し、
前記ディセーブル続行状態が前記開始コードに実行により設定されない限り、前記初期動作後も前記テストインターフェースを介するメモリアクセスをマイクロコントローラ動作のためにイネーブルし、
前記ディセーブル続行状態は前記初期動作後の前記マイクロコントローラ動作中も前記テストインターフェースを介するメモリアクセスを許可しない。一例では、前記開始コードは第１部分と第２部分を含み、前記初期ディセーブル状態の設定は前記第１部分を実行することによって達成され、前記開始コードの実行は前記第２部ブロックの実行を含む。
【０００９】
本発明の更に他の実施態様では、組み込みメモリと、プログラマブルプロセッサと、前記メモリおよびプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラをリセットし、
前記リセットに応答して、前記メモリに格納されているリセットコードを実行し、前記メモリの内容をリセット後のマイクロコントローラ動作中保護すべく前記テストインターフェースを介する前記メモリへのアクセスをディセーブルし、
リセット後のマイクロコントローラ動作中、前記テストインターフェースを介する前記メモリへのアクセスをイネーブルにすべく前記メモリの内容を変更する。
【００１０】
本発明の一つの目的は集積回路の組み込みメモリの内容へのアクセスを制御するユニークなデバイス、方法、システム又は装置を提供することにある。
【００１１】
本発明の他の目的、実施例、形態、特徴及び利点は本明細書及び図面の記載から明らかになる。
【発明を実施するための最良の形態】
【００１２】
本発明は種々の形態に具体化できるが、本発明の原理の理解を促進するために、本発明の原理を、図面に示す実施例について、特定の用語を用いて以下に説明するが、この説明は本発明の範囲を何ら限定するものではない。ここに記載される実施例における種々の代替及び本発明の原理の他の応用が当業者に可能である。
【００１３】
本発明の一実施例は、プロセッサと、プロセッサに動作可能に結合された埋め込みメモリと、プロセッサ及びメモリに動作可能に接続されたマイクロコントローラテストインターフェースとを含むマイクロコントローラ集積回路を備える。マイクロコントローラは、リセット信号に応答して、リセット開始コードを実行し、このリセット開始コードは、テストインターフェースのリセットディセーブル状態を設定すること、及び自由選択（オプション）でテストインターフェースの更なるディセーブル状態（即ちディセーブル状態の続行）を設定することを含む。マイクロコントローラは、リセット開始コードの実行によってディセーブル状態の続行が前もって設定されない限り、その後の動作中テストインターフェースの状態をテストインターフェースを介するメモリアクセスについてイネーブル状態にする。
【００１４】
図１は、集積回路システム２０の形態の別の実施例を示す。システム２０は集積回路２４に動作可能に結合されたテスト装置２２を含む。集積回路２４はマイクロコントローラ３０を提供するように構成される。マイクロコントローラ３０はプロセッサ３２とテストインターフェース３４を含む。ここで使用する「テストインターフェース」は、一以上の設定されたプロトコルに従って試験やデバグやエミュレーション又はそれらの組み合わせを提供する任意の集積器回路インターフェースを広く示す。所定のテストインターフェースは専用の端子を介してアクセスでき、また対応する集積回路の一以上の他のインターフェース、デバイスなどと共通の端子を介してアクセスできる。一実施例では、インターフェース３４はＪＴＡＧ標準に準拠する。その代わりに、またはそれに加えて、異なるテストインターフェースプロトコルを使用できる。フィリップスセミコンダクターズモデルＬＰＣ２１１４及びＬＰＣ２１２４はＪＴＡＧＡ及びエミュレーショントレースポート機能を有するマイクロコントローラデバイスの例であるが、これらに限定されない。
【００１５】
マイクロコントローラ３０へのバイナリリセット入力３６も図１に示されている。対応するリセット信号はマイクロコントローラ３０の動作をリセットし、所定のデフォルトをプロンプトし、所定のブートアップメモリ位置で開始するプログラムの実行を指示する。リセット状態に応答して、マイクロコントローラ３２は図２に関連して後述するリセット初期化を実行する。この初期化はプログラミング命令、ハードウエア、又はそれらの組み合わせで実施できる。
【００１６】
プロセッサ３２はさらにローカルパス４０に結合され、組み込みスタティックランダムアクセスメモリ（ＳＲＡＭ）４２および埋め込み不揮発性フラッシュメモリ４４への双方向アクセスを提供する。バス４０はＳＲＡＭメモリ４２及び／又はフラッシュメモリ４４にメモリ制御ロジック（図示せず）などを介して結合できる。メモリ４４は、通常マイクロコントローラの動作中にプロセッサ３２で実行されるプログラム命令を格納するのに使用される。メモリ４４は、一以上の入力ポート（例えばシリアル通信ポート）を介してプログラムされ、バルク消去コマンドに応答してその内容を消去するように構成されている。メモリ４４の消去は、種々の実施例において、外部信号、内部信号またはその両方に応答させることができる。ＳＲＡＭ４２は必要に応じデータ及びコードストレージに使用される。ＳＲＡＭ４２とメモリ４４はまとめて埋め込みマイクロコントローラメモリ４６という。
【００１７】
マイクロコントローラ３０は、種々の入力デバイス、出力デバイス、入力／出力（Ｉ／Ｏ）デバイス及び／又は種々の専用内部デバイスを含み、これらはまとめて５２で示されている。高速内部バス５０がプロセッサ３２及びデバイス５２に結合され、それらの間の選択的な双方向通信を提供している。一つの特定の例では、デバイス５２はインターフェースブリッジ(図示せず)を介してバス５０に結合される。デバイス５２は、一以上のタイマ、リアルタイムクロック、アナログ−ディジタル（Ａ／Ｄ）コンバータ、ディジタル−アナログ（Ｄ／Ａ）コンバータ、汎用Ｉ／Ｏピン（ＧＰＩＯ）、汎用非同期送受信回路（ＵＡＲＴ）インターフェース及び／又は種々の他のシリアル通信ポート、外部割込みパス、パルス幅変調出力などを含むことができる。バス５０には割り込み制御ロジック５４も結合される。割り込み制御ロジック５４はマイクロコントローラ３０と関連する内部及び外部割込みを管理する。
【００１８】
テスト装置２２は、マイクロコントローラ３０のインターフェース３４を介して適切な試験、デバグ及び／又はエミュレーションを行うように構成されたタイプのものである。例えば、ＪＴＡＧ形態のインターフェース３４の場合、テスト装置２２は多数の標準タイプのＪＴＡＧデバイスの任意のものとすることができる。テスト装置２２を介するマイクロプロセッサ３０へのアクセスは多くの場合初期製造中、試験中及び開発中に必要とされるが、メモリ４２及び／又は４４に格納されたデータ（例えばプログラム）への不正アクセスは多くの場合プログラム部分が消費者への製品に設けられてからの心配事である。実際には、競争者がこのようなプログラム部分の読み出し又はこのようなプログラム部分へのアクセスをできなくする手段を講じることが多くの場合望ましい。従って、マイクロコントローラ３０は、リセット時に適切なオペレーティングロジックによって、プログラム開発者にメモリへのアクセスをディセーブルするかしないかのオプションを与えるように構成される。このオプションはユーザ定義プログラムにより実行されるため、テストインターフェースを介するメモリアクセスのディセーブルは、所望の試験／デバグ／エミュレーションが未プログラム部分の製造者及び／又はサプライヤの満足のいくように実行されるまで、実施する必要はない。
【００１９】
マイクロコントローラ３０のテストインターフェース３４をオプションでディセーブルし得る一つの非限定的な実施例を図２のフローチャートに示す手順１２０と関連して説明する。この特定の実施例では、テストインターフェース３４はＪＴＡＧプロトコルに準拠するが、他の実施例では、その代わりに又はそれに加えて、異なるプロトコルを提供できることを理解すべきである。手順120と関連する処理の少なくともいくつかはマイクロコントローラ３０のオペレーティングロジックにより実行され、このオペレーティングロジックは、専用ハードウエアの形で、ハードウエア又はファームウエアマイクロコントローラ命令の形で、変更可能なメモリ格納マイクロコントローラ命令の形で、及び／又は、当業者に考えられる他の形で設けることができる。
【００２０】
手順１２０は処理１２２で始まり、この処理ではリセット状態が開始される。処理１２２では、リセット入力３６における対応する変化によってバイナリロジックリセット信号がセットされアクティブになる。非限定的な例として、リセット信号は、パワーダウン／パワーオンサイクルから生じるもの（パワーオンリセットＰＯＲ）、又は節電状態中に起こるような、電源電圧が所定のしきい値以下になるときに生じるもの（節電リセットＢＯＲ）がある。
【００２１】
リセットが処理１２２で開始されると、手順１２０は処理１２４に続き、この処理は、対応するリセット信号が「開放」される前、即ちリセット信号がその不活性状態に戻る前に実行される。処理１２４では、インターフェース３４のＪＴＡＧタイプに対応して、論理ＪＴＡＧディセーブルフラグＤＩＳ−ＪＴＡＧがセットされ、ＤＩＳ−ＪＴＡＧ＝１になる。処理１２４でこのフラグがセットされると（ＤＩＳ−ＪＴＡＧ＝１）、インターフェース３４のＪＴＡＧ機能が最初にディセーブルされる。この機能をディセーブルすることにより、マイクロコントローラ３０のＪＴＡＧ制御が阻止され、インターフェース３４を介してメモリ４２又はメモリ４４へアクセスすることができなくなる。この初期ディセーブル状態は、リセット状態に応答してマイクロコントローラ３０のオペレーティングロジックにより達成され、さもなければリセット中に生じるかもしれないメモリ読み出しウインドウが除去される。
【００２２】
処理１２４から、手順１２０は条件判断１２６に続く。条件判断１２６は、リセット信号が開放されたか否かを検査する。リセット信号が開放されていない場合には、検査の否定（誤）出力に応答して、条件判断１２６はループバックして、肯定（真）出力が生じるまで繰り返す。肯定結果が生じたら、手順１２０は処理１２８で始まるリセット開始に入る。処理１２８では、マイクロコントローラ３０のための初期リセット期間を計測するディジタルカウンタＣＮＴＲが始動される。
【００２３】
処理１２８から、手順１２０は処理１３０に続く。処理１３０では、プロセッサ３２がメモリ４４内の予約されたリセット開始位置を指示する。自由選択（オプション）の「ブートブロック」のプログラム命令(コード)がメモリ４４内のこの予約位置から適切に格納されている場合、その実行が処理１３０で行われる。このコードはプロセッサ３２で実行されるリセット開始を規定する。このようなリセット開始コードは、図示の実施例では指定されたメモリアドレス範囲に対応する連続するメモリ位置の「ブロック」として格納される。代案として、コードはメモリ４２及び／又はメモリ４４内の予約された又は予約されてない２つ以上の不連続な位置に格納することもできる。非限定的な例として、予め決められたリセット開始位置を間接アドレッシングなどで格納リセットルーチンを指示することもできる。一般に、リセット開始コードはマイクロコントローラ３０のＯＥＭ（相手先商標製品製造会社）により指定される。
【００２４】
リセット開始コードの実行中は、手順１２０の条件判断１３２が時々実行され、処理１２８で始動されたカウンタＣＮＴＲが所定のカウント状態に到達したか検査する。この所定の状態は、リセット開始コード（存在するとき）の実行時間の少なくとも初期部分に相当するリセット遅延を与えるように選択された期間に対応する。一例では、この所定のカウント状態は、条件判断１３２の各実行中におけるカウンタＣＮＴＲのディジタル出力に匹敵するディジタル決定値である。カウンタＣＮＴＲは、数例を挙げると、ハードウエアデバイス又は論理ソフトウエアの形で、マイクロコントローラ３０内のタイマ（例えばデバイス５２内に含まれるタイマ又はユーザアクセス不能の専用ハードウエア及び／又はソフトウエアタイマ）の形で、又は外部計数装置又はマイクロコントローラ３０に供給されるカウンタ信号として設けることができる。処理１２８および条件判断１３２は図示の実施例ではマイクロコントローラのオペレーティングロジックによって実行される。
【００２５】
条件判断１３２の検査が否定（誤）であり、カウンタＣＮＴＲが所定のカウント状態に到達していない場合、条件判断１３２はループバックして、カウンタＣＮＴＲが所定のカウント状態に到達するまで繰り返す。この状態に到達すると、条件判断１３２の検査が肯定(真)となり、手順１２０は条件判断１３４に続く。条件判断１３４は、カウンタＣＮＴＲが所定のカウント状態に到達する前の処理１３０の間に、ブートブロックコード(存在するとき)又はリセット開始の実行によってセキュリティフラグＥＮ−ＳＥＣＵＲＩＴＹがセットされたかを検査する。セキュリティフラグＥＮ−ＳＥＣＵＲＩＴＹのセット（ＥＮ−ＳＥＣＵＲＩＴＹ＝１）はコードデベロッパにより規定されるリセット開始コードの実行により設定されるオプションである。一般に、このコードの開発はマイクロコントローラコンポーネントのＯＥＭにより実行される。リセット開始コードの実行中に、セキュリティフラグＥＮ−ＳＥＫＵＲＩＴＹは多数の技術の何れかでセットでき、例えば外部信号入力、指定されたメモリ位置の内容、いくつかのメモリ位置のチェックサム、又は安全な他の処理／機能によりセットできる。
【００２６】
条件判断１３４の検査が否定(誤)である場合、即ち条件判断１３２が真になるまでの処理１３０のブートブロックの実行中に、セキュリティフラグＥＮ＿ＳＥＣＵＲＩＴＹがセットされなかった場合（Ｅｎ＿ＳＥＣＵＲＩＴＹ＝０）、手順１２０は処理１３６に続く。処理１３６では、インターフェース３４のＪＴＡＧ機能がイネーブルされ、このテストインターフェースポートを介してメモリ４２及び／又はメモリ４４をアクセスする能力がイネーブルされる。処理１３６におけるインターフェース１３４のこのイネーブル状態は、処理１２４でセットされたインターフェース３４の初期ディセーブル状態を有効に除去する。このとき、マイクロコントローラ３０はステージ１３８においてリセット手順１２０からノーマル動作に進む又は戻る。
【００２７】
他方、条件判断１３４の検査が肯定(真)である場合、即ち条件判断１３２が真になるまでの処理１３０のブートブロックの実行中に、セキュリティフラグＥＮ＿ＳＥＣＵＲＩＴＹがイネーブルになった場合（Ｅｎ＿ＳＥＣＵＲＩＴＹ＝１）、手順１２０は処理１３６を迂回して直接ステージ１３８に進む、処理１３６がバイアスされるために、インターフェース３４のディセーブル状態はステージ１３８からの次のマイクロコントローラ動作中持続する。従って、手順１２０は、セキュリティフラグＥＮ＿ＳＥＣＵＲＩＴＹの肯定設定に対して、メモリアクセスを拒否するインターフェース３４の更なるディセーブル状態（即ちディセーブル状態の続行）を設定することによって応答する。条件判断１３４および処理１３６は図示の実施例ではマイクロコントローラのオペレーティングロジックにより実行される。
【００２８】
処理１３８は、テスト／デバグインターフェース３４がディセーブルにされたマイクロコントローラ３０のその後の公称動作に対応する。手順１２０は処理１３６からも処理１３８を続け、対応するインターフェース３４がイネーブル状態にあるマイクロコントローラ３０のノーマル動作モードに戻り、ノーマル動作を開始する。
【００２９】
上述したテストインターフェース３４及び／又はメモリアクセスのシステム又はイネーブル状態の設定は、設定される所定の状態に変化を与えることにより、又は対応する処置を省くことにより状態を存続させたり変えたりできるようにすることによって達成できる。手順１２０の特徴は、リセット時にインターフェース３４を介するアクセスをディセーブルにしてリセット状態中にインターフェース３４を介する不正アサーションを阻止することにある。初期ディセーブル状態は、手順１２０と関連して記載した実施例ではマイクロコントローラ３０のオペレーティングロジックにより与えられるが、これはユーザコード（例えばユーザ指定リセットコード）により又は種々の方法で他の形で与えることができる。カウンタＣＮＴＲで遅延期間を設定することによって、ユーザ指定リセットプログラムブロックをインターフェース３４のディセーブルの続行を選択的に開始させることができ、このようなイニシアティブがとられない場合にはインターフェース３４はカウンタ遅延後にデフォルトでイネーブルにされる。リセット開始コードがない場合には、インターフェース３４のこのデフォルト使用可能性もある。従って、リセット開始コードがない限り、及び／又はリセット開始コードがあってもセキュリティフラグＥＮ＿ＳＥＣＵＲＩＴＹがセットされない限り、マイクロコントローラ３０の制御及び／又はアクセスを製造中、テスト中及び開発中にインターフェース３４を介してＪＴＡＧオペレーションにより得ることができる。
【００３０】
まれではあるが、ＥＮ＿ＳＥＣＵＲＩＴＹが予めセットされ（ＥＮ＿ＳＥＣＵＲＩＴＹ＝１）インターフェース３４を介するアクセスが名目上阻止されている、予めプログラムされたマイクロインターフェース３０のテスト、デバグ、エミュレーションなどを実行することが望まれる場合がある。例えば、この望みは、プログラムされたマイクロコントローラ３０が故障解析のためにプロダクト／コードデベロッパによりＯＥＭへ戻されることに関連して生じる。この場合には、インターフェース３４の続行されるディセーブル状態により保護されているメモリ内容を変更することによって、インターフェース３４を介するアクセスを再設定することができる。非限定的な一例では、この変更はメモリ位置の内容を破壊するバルク消去コマンド又は入力信号により達成され、従ってこのような内容は不正アクセスから保護される。その代わりに、又はそれに加えて、この変更は、処理１３０中に格納されているリセット開始コードの一部分及び／又は関連する任意のメモリ位置を書き変えてセキュリティフラグＥＮ＿ＳＥＣＵＲＩＴＹをセットすることができる。ある場合においては、デバイス５２に含まれるシリアル通信デバイスはメモリ４２及びメモリ４４に書き込み専用アクセスを提供し、このアクセスによりこのような変更を行うことができる。このようにすると、デバイスのテスト及びデバグが必要とされる間の任意の時間まで、メモリ４２及びメモリ４４の内容をプログラマの自由選択で保護でき、この場合にもテストインターフェースアクセスをイネーブルにするために必要とされる変更は、同時に、保護すべき内容を変更するため、保護が続くことになる。
【００３１】
本発明の多くの他の実施例が想定される。例えば、本発明の教示はマイクロコントローラ以外の他のタイプの集積回路に適用できる。その代わりに又はそれに加えて、他のタイプのメモリアクセス制御を使用できる。別の例は、組み込みメモリと、プログラマブルプロセッサと、前記メモリ及びプロセッサに動作可能に結合されたテストインターフェースとを含むマイクロコントローラを備える装置である。このマイクロコントローラは、更に、初期動作中前記テストインターフェースを介するメモリへのアクセスをディセーブルにすべく前記テストインターフェースの初期ディセーブル状態を設定する手段と、初期ディセーブル状態中に前記テストインターフェースのディセーブル状態の続行を自由選択で設定するために前記メモリに格納されているリセットコードの少なくとも一部分をプロセッサで実行する手段と、前記ディセーブル状態の続行が前記リセットコードの実行により設定されていない限り、前記初期動作後のマイクロコントローラ動作に対して前記テストインターフェースを介するメモリアクセスをイネーブルにする手段とを含む。前記ディセーブル状態の続行は、初期動作後のマイクロコントローラ動作中、メモリアクセスをイネーブルする。一例では、リセットコードは第１部分及び第２部分を含み、前記初期ディセーブル状態は第１部分を実行することにより達成され、前記リセットコード実行手段は第２部分を実行する。
【００３２】
更に別の例は、組み込みメモリと、プログラマブルプロセッサと、前記メモリ及びプロセッサに動作可能に結合されたテストインターフェースとを有するマイクロコントローラを含む装置である。このマイクロコントローラは、マイクロコントローラのリセット時に前記メモリに格納されているリセット開始コードをプロセッサで実行する手段を含む。前記開始コードは、リセット後のマイクロコントローラ動作中メモリ内容を保護するために、前記テストインダクタンスを介するメモリへのアクセスをディセーブルにするものである。マイクロコントローラは、更に、リセット後のマイクロコントローラ動作に対して前記テストインターフェースを介するメモリへのアクセスをイネーブルにするために前記メモリの内容を変更する手段を含む。
【００３３】
他の例では、装置は組み込みメモリと、プログラマブルプロセッサと、前記メモリ及びプロセッサに動作可能に結合されたテストインターフェースとを有するマイクロコントローラを含む。このマイクロコントローラは、マイクロコントローラの動作をリセットする手段と、前記リセット手段に応答してカウンタを始動させるとともに、開始プログラムを前記マイクロコントローラにより実行しながら前記テストインターフェースをリセットディセーブル状態に設定する手段手段と、前記カウンタが所定値に到達する前に前記マイクロコントローラがディセーブル状態の続行を設定するプログラムコードを実行しない限り、前記カウンタが所定値に到達する時、前記テストインターフェースをその後のマイクロコントローラ動作に対してイネーブル状態に変更する手段とを含む。
【００３４】
更に他の例では、装置は組み込みメモリと、プログラマブルプロセッサと、前記メモリ及びプロセッサに動作可能に結合されたテストインターフェースとを有するマイクロコントローラを含む。このマイクロコントローラは、リセット手段と、前記リセット手段に応答して前記テストインターフェースを介する前記メモリへのアクセスをディセーブル手段と、前記テストインターフェースがディセーブル手段でディセーブルされた後に前記メモリに格納されたリセット開始コードをプロセッサで実行する手段と、前記リセット開始プログラムの実行によってその後のマイクロコントローラ動作に対して前記テストインターフェースのディセーブルの続行が設定されない限り、前記テストインターフェースを介するメモリアクセスをイネーブルにする手段とを含む。
【００３５】
ここに述べたセオリー、動作メカニズム、プルーフ及び発見事項は本発明の理解を更に高めるためであり、本発明はこのようなセオリー、動作メカニズム、プルーフ及び発見事項に限定されるものではない。本発明は図面に示され発明の詳細な説明において詳細に説明されているが、これらの説明は単なる例示であって、本発明を限定するものではなく、選択された実施例が示され、説明されているに過ぎず、ここに特定される又は添付の特許請求の範囲で特定される本発明の範囲に含まれるすべての等価例、変更例及び変形例も保護されるべきである。
【図面の簡単な説明】
【００３６】
【図１】テスト装置に結合されたマイクロコントローラを含む集積回路システムの概略図である。
【図２】図１のシステムで実行できる本発明の方法の一つの手順を示すフローチャートである。
【図１】
2009505303.tif 000003
【図２】
2009505303.tif 000004
【国際調査報告】
2009505303.tif 000005
2009505303.tif 000006