(57)【要約】  信頼されたサブシステム中の一実施例におけるデバッグ動作中に、選択された領域へのアクセスをイネーブルおよびディセーブルにするために、かつ異なるエンティティによって相互に排他的にアクセスするために、パスワードが使用される。別の実施例では、プログラム可能なユニットは、どのアクセス領域がデバッグ動作のために選択されるかを定義するために使用される。
2007509441.tif 000002
【特許請求の範囲】
【請求項１】
第１パスワードの入力に応答して、メモリ中の第１セットのコードをデバッグするために、第１セットの資源へのアクセスを許可する第１回路と、
第２パスワードを含む格納構造と、
前記第１回路および前記格納構造に結合され、前記第２パスワードの入力に応答して、前記メモリ中の第２セットのコードをデバッグするために、第２セットの資源へのアクセスを許可する第２回路と、
を含むことを特徴とする装置。
【請求項２】
前記第２セットの資源へのアクセスは、デバッグ・インターフェイスを介することを特徴とする請求項１記載の装置。
【請求項３】
前記第２セットのコードを前記第１セットのコードと実質的に異なる前記メモリの部分に置くために適合していることを特徴とする請求項２記載の装置。
【請求項４】
前記格納構造は、連想記憶装置を含むことを特徴とする請求項１記載の装置。
【請求項５】
前記第２パスワードの入力に応答する前記アクセスがイネーブルにされる場合、前記第１パスワードの入力に応答する前記アクセスを阻止し、前記第１パスワードの入力に応答する前記アクセスがイネーブルにされる場合、前記第２パスワードの入力に応答する前記アクセスを阻止する回路をさらに含むことを特徴とする請求項１記載の装置。
【請求項６】
前記格納構造は、プログラム可能な格納構造を含むことを特徴とする請求項１記載の装置。
【請求項７】
前記第１セットの資源は、前記メモリの第１部分を含み、前記第２セットの資源は、前記第１部分と異なる前記メモリの第２部分を含むことを特徴とする請求項１記載の装置。
【請求項８】
前記第２セットの資源は、実質的に前記第１セットの資源のサブセットであることを特徴とする請求項１記載の装置。
【請求項９】
揮発性の第１メモリと、
実行用のコードを含む前記第１メモリに結合された第２メモリと、
前記コードを実行するために前記第２メモリに結合されたプロセッサと、
前記プロセッサに結合され、第１パスワードを含む第１格納構造と、
前記プロセッサに結合され、第２パスワードを含む第２格納構造と、
前記第１パスワードの入力に応答して、前記第２メモリ中の第１セットのコードをデバッグする第１セットの資源へのアクセスを許可し、前記第１セットの資源へのアクセスをディセーブルし、前記第２パスワードの入力に応答して、前記第２メモリ中の第２セットのコードをデバッグするために、第２セットの資源へのアクセスをイネーブルにする、回路と、
を含むことを特徴とするシステム。
【請求項１０】
前記第１および第２アクセスは、デバッグ・インターフェイスを介すること特徴とする請求項９記載のシステム。
【請求項１１】
前記第２格納構造は、連想記憶装置であることを特徴とする請求項９記載のシステム。
【請求項１２】
前記回路は、前記第１パスワードの入力に応答するアクセスおよび前記第２パスワードの入力に応答するアクセスを相互排他的に行なうために、適合していることを特徴とする請求項９記載のシステム。
【請求項１３】
第１セットのコード・デバッグ動作を行なうことをイネーブルにする第１パスワードをディセーブルにする段階と、
第２パスワードを格納する段階と、
第２セットのコード・デバッグ動作を行なうことをイネーブルにする前記第２パスワードを入力する段階と、を含み、
前記第１セットのコード・デバッグ動作の実行をイネーブルにすることおよび前記第２セットのコード・デバッグ動作の実行をイネーブルにすることは、相互に排他的であることを特徴とする方法。
【請求項１４】
前記第２セットのコード・デバッグ動作の実行をイネーブルにすることは、前記第１セットのコード・デバッグ動作のサブセットを行なうことをイネーブルにすることを含むことを特徴とする請求項１３記載の方法。
【請求項１５】
前記第１および第２セットのコード・デバッグ動作は、デバッグ・インターフェイスを介して行なわれることを特徴とする請求項１３記載の方法。
【請求項１６】
前記第１パスワードをディセーブルする段階は、前記第２パスワードを格納する段階に起因することを特徴とする請求項１３記載の方法。
【請求項１７】
前記第１セットのコード・デバッグ動作を行なう段階を再イネーブルする第３パスワードをイネーブルにする段階をさらに含むことを特徴とする請求項１３記載の方法。
【請求項１８】
コンピューティング・プラットフォームによって実行されたときに、前記コンピューティング・プラットフォームに以下の動作を実行させる命令を提供する機械読取り可能な媒体において、
第１デバッグ・ステージ中に第１セットのコードのデバッグをイネーブルにする第１パスワードを受け取り、
前記第１デバッグ・ステージ中にデバッグ活動を阻止するために、前記第１パスワードをディセーブルにし、
第２パスワードを格納し、
第２デバッグ・ステージ中に第２セットのコードのデバッグをイネーブルにするために、前記第２パスワードを受け取る、
ことを特徴とする機械読取り可能な媒体。
【請求項１９】
前記第１パスワードをディセーブルにする動作は、前記第２デバッグ・ステージ中に前記第１セットのコードへのアクセスを阻止することを特徴とする請求項１８記載の媒体。
【請求項２０】
前記第２パスワードを格納する動作は、前記第１パスワードをディセーブルにする結果となることを特徴とする請求項１８記載の媒体。
【請求項２１】
前記動作は、前記第１セットのコードの前記デバッグを再イネーブルするために、第３パスワードを使用することをさらに含むことを特徴とする請求項１８記載の媒体。
【請求項２２】
デバッグ・モード中に命令を実行するプロセッサと、
制御ビットを含む回路と、
前記プロセッサおよび前記第１回路に結合され、前記制御ビットの状態に基づいて、前記装置中で許可されるデバッグ・アクセスのレベルを判断する回路と、
を含むことを特徴とする装置。
【請求項２３】
制御ビットを含む前記回路は、１セットのプログラム可能なヒューズを含むことを特徴とする請求項２２記載の装置。
【請求項２４】
前記デバッグ・アクセスを提供するために、前記プロセッサに結合されたインターフェイスをさらに含むことを特徴とする請求項２２記載の装置。
【請求項２５】
デバッグ・アクセスのレベルを判断する前記回路は、
少なくとも１つの前記命令が位置するアドレス範囲、
どの命令が実行されるか、および
前記実行の結果、アクセスされる資源、
の少なくとも１つに対する制限を判断することを特徴とする請求項２２記載の装置。
【請求項２６】
前記デバッグ・アクセスが前記制限の少なくとも１つに違反する結果となるとき、前記デバッグ・アクセスを終了させる回路をさらに含むことを特徴とする請求項２５記載の装置。
【請求項２７】
デバッグ・モードで命令を実行するプロセッサと、
前記プロセッサに結合された揮発性メモリと、
制御ビットの少なくとも１つの状態に基づいて、前記デバッグ・モード中に許可されるデバッグ・アクセスのレベルを示す１セットの制御ビットを含む回路と、
前記実行が前記デバッグ・アクセスのレベルによって定義された制限に違反するかどうかを判断する回路と、
を含むことを特徴とするシステム。
【請求項２８】
前記制御ビットの前記状態は、前記回路の製造後に変更不可能であることを特徴とする請求項２７記載のシステム。
【請求項２９】
前記実行が前記制限に違反しない場合、前記実行の結果をデバッグ・インターフェイスに提示し、前記実行が前記制限に違反する場合、前記実行の結果を前記デバッグ・インターフェイスに提示しない回路をさらに含むことを特徴とする請求項２７記載のシステム。
【請求項３０】
前記結果を提示する前記回路は、前記実行が前記制限に違反する場合、前記デバッグ・モードを終了させる回路を含むことを特徴とする請求項２９記載のシステム。
【請求項３１】
前記実行が前記制限に違反するかどうかを判断する前記回路は、少なくとも１つの命令の予め定められたグループの実行後に前記判断を行なうために適合していることを特徴とする請求項２７記載のシステム。
【請求項３２】
１セットの制御ビットに基づいて、許可されたデバッグ・アクセスの現在のレベルを判断する段階と、
デバッグ・モードの動作中に信頼されたサブシステムで少なくとも１つの命令を実行する段階と、
前記実行が許可されたデバッグ・アクセスの前記現在のレベルによって定義された制限に違反する場合、前記実行の結果を提示しない段階と、
を含むことを特徴とする方法。
【請求項３３】
前記提示しない段階は、前記デバッグ・モードの動作を終了する段階を含むことを特徴とする請求項３２記載の方法。
【請求項３４】
前記実行がデバッグ・アクセスの前記現在のレベルによって定義された前記制限に違反しない場合、前記実行の結果を提示する段階をさらに含むことを特徴とする請求項３２記載の方法。
【請求項３５】
前記制限は、
特定のメモリ・アドレス範囲にある前記少なくとも１つの命令のアドレス、
予め定められた命令のリストにある前記少なくとも１つの命令、および
予め定められた資源のリストにある、前記実行によってアクセスされたすべての資源、
の少なくとも１つに基づくことを特徴とする請求項３２記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム中の信頼されたコンポーネントのデバッグに関する。
【背景技術】
【０００２】
より多くの製品が一連の異なる製造業者または付加価値を与える再販売業者によって生み出されてきており、製造中のセキュリティの維持がますます重要な問題になっている。これは、プロセッサ・コードが複数の製造業者によってインストールされる場合、特に問題となる。例えば、ある製造業者は、携帯電話の基本的な動作のためのコードを含むプロセッサ・チップを生産し、次に、特定のタイプの通信技術に特有のコードをインストールするために別の製造業者へ渡し、その後、それを携帯電話の特定の商標およびモデルに特有の機能のためのコードをインストールするために第３製造業者へ渡す。特定の製造業者は、他の製造業者が（故意にまたは不注意に）修正することを好まず、さらにその所有者コード見ることすら好まなし、さらに他の製造業者がそれ以前に機能していたコードと相互運用上の問題を引き起こすコードを形成することを好まない。加えて、同じデバッグ・インターフェイスが信頼できる領域および信頼できない領域へのアクセスのために使用されることがある。
【０００３】
歴史上、セキュリティ機能は、完成品の動作中に完成品のコードを変更する可能性を低減させることに集中した。しかしながら、委託された製造業者が前の製造業者によってインストールされたコードへアクセスするので、様々な製造業者が他の業者に対してセキュリティを維持することを可能にするアプローチはほとんど行われていない。これらの問題は、自由に修正できる領域および修正から保護される領域の両方を含むチップ内の資源に、現在の製造業者がデバッグ・インターフェイスによって深くアクセスすることを可能にするとき、コード・デバッグ動作中特に問題となる。
【０００４】
本発明は、本発明の実施例を図示するために使用される下記の説明および添付図面を参照することにより理解される。
【発明の開示】
【０００５】
下記記述では、多くの特定の詳細事項が述べられる。しかしながら、本発明の実施例は、これらの特定の詳細事項がなくても実施できることを理解すべきである。他の実施例では、周知の方法、構造および技術は、この記述の理解を不明瞭にしないために詳細には示されていない。
【０００６】
他に特に述べられない限り、次の議論から明らかなように、「処理する」、「演算する」、「計算する」、「判断する」などのような用語を利用する議論は、明細書全体にわたって、コンピュータ、コンピュータ・システムまたは類似の電子計算機装置の動作または処理に関連するものであり、それはコンピュータ・システムのレジスタおよび／またはメモリ内の電子、量子などの物理量として表わされるデータをコンピュータ・システムのレジスタおよび／またはメモリあるいは他の情報格納、伝送または表示装置内の物理量として同じように表わされる他のデータへ操作または変換することとして理解される。
【０００７】
同様に、「プロセッサ」なる用語は、任意の装置またはレジスタおよび／またはメモリから電子データを処理し、その電子データを他の電子データに変形するあらゆる装置または装置の一部に関するものである。「コンピューティング・プラットフォーム」は、１またはそれ以上のプロセッサを含んでいてもよい。
【０００８】
「一実施例」、「実施例」、「実施の例」、「様々な実施例」などの表示は、本発明の実施例が特定の機能、構造または特性を含むが、あらゆる実施例がその特定の機能、構造または特性を必ず含むとは限らないことを示す。さらに、「ある実施例において」なる句の繰り返しの使用は必ずしも同じ実施例を参照するものではない。
【０００９】
「第１」、「第２」、「第３」などの形容詞の使用は、類似の対象の異なる例が引用されていることを単に示すに過ぎず、その対象が一時的にも、空間的に、格付的にも、あるいは他の方法においても、与えられた順序でなければならないことを意図するものではない。
【００１０】
「結合された」、「接続された」なる用語がそれらの派生語と共に使用される。これらの用語は、互いに同義語として意図されていないことに理解しなければならない。むしろ、特定の実施例では、「接続された」は、２またはそれ以上の要素が互いに物理的または電気的な直接の接触にあることを示すために使用される。「結合された」は、２またはそれ以上の要素が物理的または電気的な直接の接触にあるか、または２またはそれ以上の要素が互いに直接の接触にはないが互いに協動して相互作用を及ぼしている状態のいずれかを意味する。
【００１１】
本発明の実施例は、動作を行なうための装置を含む。装置は、所望の目的のために特に構成され、あるいは、意図した動作を行なうために選択的に起動され、構成され、プログラムされ、あるいは他に適合した汎用装置を含んでいてもよい。
【００１２】
本発明のいくつかの実施例は、サブシステム内の選択された資源に対するデバッグ動作のために排他的にアクセスすることを可能にする１またはそれ以上のパスワードを使用することができ、それにより開発中の特定ステージで特定のエンティティ（要素）によるそのデバッグ・アクセスが制限され、および／または、可能（イネーブル）になりおよび無効（ディセーブル）になる。様々なパスワードによるアクセスは、相互に排他的であり、その結果、１つのエンティティだけが一度に選択された資源にアクセスすることができる。いくつかの実施例では、サブシステムは信頼されたサブシステムである。信頼されたサブシステムは、プロセッサ、プロセッサによる実行のためのコード、および様々なサポート回路からなり、その一部またはすべては許可されていない変更から保護されるように意図され、また許可されていないモニタリングから保護されるように意図される。
【００１３】
本発明の他の実施例は、１またはそれ以上の命令がデバッグ動作中に実行される場合、デバッグ動作が許可されていない動作を行ない、および／または、許可されていない領域にアクセスするかどうかを判断するためにプログラムされたインディケータを使用してもよい。
【００１４】
図１は、本発明の実施例に従って、異なるエンティティによる複数のデバッグ・プロセスを連続して行なう方法のフローチャートを示す。フローチャート１００を参照して、１１０で、第１エンティティ（entity）は、パッケージにされた部分内のコードを実行することでデバッグ動作を行なう。ある実施例において、パッケージにされた部分はプログラムされた集積回路を含み、また第１エンティティは実際に集積回路を製作する関係者（パーティ）であるが、しかし、他の実施例は異なる集団（例えば、第１エンティティは別のエンティティからプログラムされていない集積回路を受け取り、次に、それにコードをインストールする）を有していてもよい。いくつかの実施例では、ここに言及された「エンティティ」は会社であるが、他の実施例は他の集団（例えば、エンティティは、示された動作を行なう会社の部分集合、会社連合、研究組織、人、人の集団などであってもよいが、しかしそれらに制限されることはない。）を有していてもよい。
【００１５】
まだ開発中であるコードを含む実施例では、デバッグ・プロセスは、そのコードがその内部動作を首尾よく実行するかどうかを判断するためにそのコードを試験することができ、また信頼されたサブシステムの境界外の資源と適切に相互作用するかどうかを試験することができる。前に開発されデバッグされたコードを含む他の実施例では、相互作用だけが試験される必要がある。関連する側面では、このコードに対するデバッグ・アクセスは制限される一方、同じデバッグ・アクセスよる他のコード（例えば、異なるプロセッサによって実行されるコード）へのデバッグ・アクセスが許可されてもよい。
【００１６】
コード実行におけるあらゆる問題の詳細を判断するためにデバッグ・プロセスが使用されてもよいが、本発明の範囲はこの点に制限されることはない。ある実施例において、デバッグ・プロセスは、個々の命令あるいは命令のグループを実行することができ、その後予測される方法に影響されるかどうかを決めるために１組の資源（例えば、レジスタ、指定されたメモリ場所、カウンタ、割込みステータスなど）をテストするために休止してもよい。影響されない場合、そのコードは修正され、その修正済のコードは再びデバッグ・プロセスに向けられる。これは、正確に動作するコードを生成するために必要とされる回数だけ、コードの複数の部分をテストし再テストする反復プロセスである。ある実施例において、デバッグ・プロセスはパッケージにされた部分の外部のシステムによって制御され、そのシステムはデバッグ目的のためにのみ使用される特別のテスト・インターフェイスを通ってキーとなる内部資源へのアクセスを獲得するが、本発明の範囲はこの点に制限されることはない。
【００１７】
第１エンティティによるデバッグ・プロセスが完了すると、１２０で、デバッグ・プロセスによるアクセスはディセーブルにされる。ある実施例において、これは、テスト・インターフェイスによるパッケージにされた部分内の特定の領域のみへのアクセスを禁止する一方、テスト・インターフェイスによる他の領域へのアクセスが依然許可されることにより達成される。いくつかの実施例では、そのパッケージにされた部分は、テストおよび／またはデバッグのためにインストールされた最初のコードを備える信頼されたサブシステムを含む。いくつかの実施例では、信頼されたサブシステムへのデバッグ・アクセスだけが１２０でディセーブルにされる一方、パッケージにされた部分内の他の領域へのデバッグ・アクセスが依然許可されている。
【００１８】
１３０で、パッケージにされた部分は、さらに先への動作のために別のエンティティに転送される。ある実施例において、第２エンティティは、第１エンティティと異なる会社であり、それは信頼されたサブシステム内に付加的なコードを置き、その付加的なコードをデバッグする。第１エンティティは、第１エンティティが有していたメモリ・アドレスの全領域および他の資源へのデバッグ・アクセスを第２エンティティが阻止するることにより、その前にデバッグされたコードを保護することを所望してもよく、それゆえ、第２エンティティが実質的にまたは完全に以前第１エンティティにアクセスがイネーブルだった資源のサブセットである資源だけにアクセスするか、あるいは以前に第１エンティティに利用可能だった資源と実質的に異なるセットにアクセスすることをイネーブルにしてもよいが、本発明はこの点に制限されることはない。このような異なるレベルのアクセスは、第２エンティティに第１エンティティによって使用された別のメカニズムを通るデバッグ・アクセスを与えることにより達成される。いくつかの実施例では、第２エンティティは、第１エンティティによって使用されないパスワードを通してデバッグ・アクセスを獲得する。
【００１９】
特定の実施例では、第２エンティティは、それ自身のパスワードを決定し、信頼されたサブシステムへの将来のデバッグ・アクセスを制御するように、１４０で信頼されたサブシステム内にそのパスワードをプログラムする。いくつかの実施例では、第１エンティティは、１２０でそれ自身のパスワードをディセーブルにしないが、第２パスワードが１４０で第２エンティティによってプログラムされると、その第１エンティティのパスワードはむしろ自動的にディセーブルになる。
【００２０】
反復デバッグ・プロセスの１つの実施例は、不正パスワードを扱う他のループ１５５，１５７とともに、プロセス・ループ１５０，１６０，１７０によって図１中に図示されるが、本発明の範囲はこの点に制限されることはない。コードがテストされることになっているとき、信頼されたサブシステムへのデバッグ・アクセスを獲得するために、以前に決定したパスワードが１５０で入力され、それにより、そのコードが実行され、またその結果がモニタされることをイネーブルにする。もし無効パスワードが入力される場合、１５５で判断されるように、プロセスは１５７で予め定める期間の間休止し、別のパスワードが入力されることをイネーブルにする。ある実施例において、パスワードはおよそ１２８ビットの長さであり、またその休止は約２秒の長さであり、単に可能なパスワードの組合せをすべて試みることにより、誰かが無許可アクセスを獲得することを相対的に実行不可能にする。他の実施例は、これら２つのパラメータの一方または両方に対する他の値を有している。
【００２１】
入力されたパスワードが有効な場合、コードの一部は、１６０でそれを実行することによりテストされ、その結果はそのコードが予想通りに実行したかどうかを判断するために検討されるが、本発明の範囲はこの点に制限されることはない。そのコードの実行が受け入れがたいと判断される場合、そのコードは１７０で修正され、そのテスト・プロセスが再び実行される。ある実施例において、そのコードがデバッグ・アクセスを獲得するために修正された後、再びパスワードを入力しなければならないが、他の実施例では他の技術を使用してもよい（例えば、一度パスワードが入力されれば、パスワードが故意にディセーブルにされるまで、アクセスが連続的に許可されるようにしてもよい）。
【００２２】
いくつかの動作では、第２エンティティはそれ自身のパスワードをプログラムしてもよく、それ自身のデバッグ・プロセスを排他的に行なうためにそのパスワードを使用してもよい。他の動作では、第２エンティティは、パッケージにされた部分およびパスワードを配布することにより、そのデバッグ・プロセスを、デバッグを行なうためにそのパスワードを使用する第３エンティティに委託してもよい。複数のパスワードが複数のエンティティに使用されてもよい。いくつかの実施例では、異なるパスワードは、予め定義されたものと異なる範囲の資源へのアクセスを許し、その結果、与えられたエンティティは、それが作用すると想定されるシステムの部分にだけアクセスすることができる。
【００２３】
デバッグ・プロセスが完了し、そのコードが受理可能であると考えられた後、そのパッケージにされた部分を続いて扱う他のエンティティによってデバッグ・インターフェイスを通してさらにアクセスするのを阻止するために、１８０でそのパスワードはディセーブルにされる。いくつかの動作では、その部分を次のデバッグのために第１エンティティに戻ることは望ましく、したがって、１９０で、第１エンティティによるアクセスが再度イネーブルになる。いくつかの実施例では、これは、特にこの目的のために作成された再イネーブル・パスワードを入力することにより達成される。
【００２４】
図２は、本発明の実施例に従って図１に図示された方法の一部を実行するための回路の論理図を示す。図２の回路は、様々なパスワードを格納するための格納構造２１０，２２０，２３０を含み、それが回路に提示されたとき、比較器２４０，２５０，２６０によって決定される１またはそれ以上の選択された領域のデバッグ・アクセスをイネーブルにする。特定の実施例では、図２の回路は、以下の段落に説明されるように動作するが、本発明の範囲はこの点に制限されることはない。
【００２５】
第１エンティティによるアクセスの制御を許すために、パスワードは格納構造２１０に格納される。ある実施例において、格納構造２１０は、フラッシュ・メモリのようなプログラム可能な不揮発性格納構造であるが、他の実施例は他の技術（例えば、パスワードはヒューズを切ることにより作成されてもよく、パスワードは製造中に配線されてもよい）を使用することができる。第１エンティティが初めからデバッグ動作を行なうとき、デバッグ・アクセスは、ＰＷＤ  ＩＮＰＵＴで第１エンティティのためのパスワードを示すことによりイネーブルになる。ある実施例において、パスワードは１２８ビットの２進数であるが、他のフォーマットが使用されてもよい。提示されたパスワードが格納構造２１０に格納されたパスワードと一致する場合、比較器２４０の出力が起動される。ディセーブル回路２８０は、最初比較器２４０の起動された出力が信号1st ENTITY ACCESS（第１エンティティ・アクセス）として通過できるように設定されている。
ある実施例において、ディセーブル回路２８０は、単純なＡＮＤゲートまたはＯＲゲートであり、その一方で再イネーブル制御回路２７０は、制御可能な不揮発性レジスタであるが、他の回路が使用されてもよい。第１エンティティ・アクセスの起動は、デバッグ・プロセスをイネーブルにするために他の回路（図示せず）をトリガし、さらにそのようなデバッグ・プロセスのためにどの資源が到達できるかを定義する。デバッグ・プロセスが第１エンティティによって終了するとき、第１エンティティは、再イネーブル制御回路２７０の状態を変更することにより、それ自身のアクセスをディセーブルにし、その結果ディセーブル回路２８０の出力は、比較器２４０の出力にかかわらず非活性化される。
【００２６】
パッケージにされた部分が第２エンティティによって受け取られると、第２エンティティは、選択された領域へのデバッグ・アクセスを許可するために１またはそれ以上のパスワードを作成し、これらのパスワードを格納構造２３０へ格納する。パスワードがパスワード入力に提示さ、それが格納構造２３０に格納されたパスワードと一致する場合、比較器２６０は信号2nd ENTITY ACCESS（第２エンティティ・アクセス）を起動する。第２エンティティ・アクセスの起動は、デバッグ・プロセスをイネーブルにするために他の回路（図示せず）をトリガし、さらにそのようなデバッグ・プロセスのためにどの資源が到達できるかを定義する。異なるパスワードは、パッケージにされた部分の異なる領域のデバッグをイネーブルにし、および／または、異なる領域へのアクセスの制限を可能にする。ある実施例において、選択された領域に対する全面的な制限は、製造中または第１エンティティがパッケージにされた部分のコントロールを有する場合に、そのパッケージにされた部分に組み込まれるが、他の実施例では、第２エンティティがその全面的な制限に対するコントロールを有していてもよい。ある実施例において、格納構造２３０は連想記憶装置（ＣＡＭ）であるが、他のタイプの回路（例えば、不揮発性レジスタのシリーズ、１つのパスワードだけが格納されることになっている場合の単一の不揮発性レジスタなど）が使用されてもよい。その部分が次の作業のために第１エンティティに続いて戻される可能性を考慮に入れるために、第２エンティティは、第１エンティティのためのデバッグ・アクセスを再イネーブルするために使用される再イネーブル・パスワードを作成し、その再イネーブル・パスワードを格納構造２２０に格納する。ある実施例において、第２エンティティによって作成されたその再イネーブル・パスワードを含む別のパスワードは、いつでも作成され格納されるが、同時にすべてが作成される必要はなく、他の実施例では他の配列（例えば、第２エンティティによって作成されたパスワードはすべて、それらのパスワードのいずれかが最初に使用される前に、作成されなければならない、など）であってもよい。
【００２７】
様々な実施例において、１またはそれ以上の第２エンティティ・パスワードのうちの１つによって許可されたアクセスは、第１エンティティ・パスワードによって許可されたアクセスとは部分的に、実質的にまたは完全に異なる。例えば、メモリに制限されないが、第２エンティティ・パスワードのうちの１つによってアクセス可能である資源は、実質的なサブセット、実質的なスーパーセット、または第１エンティティ・パスワードによってアクセス可能な資源と実質的に異なっていてもよい（メモリの実質的に異なる部分のように）。いくつかの実施例では、アクセスにおける差異は、異なる特権レベルの形式であってもよい。これらの例は、アクセス・レベルで様々な可能な差異を表わすが、しかし、本発明は与えられた例に制限されることはない。
【００２８】
図３は、本発明の実施例に従って、図２のシステムに類似する回路を含む信頼されたサブシステムのブロック図を示す。図示する実施例では、サブシステム３００は、マイクロコントローラ３１０、機能ユニット３２０、機能ユニット用レジスタ３３０、内部ランダム・アクセス・メモリ（ＲＡＭ）３４０、内部リード・オンリ・メモリ（ＲＯＭ）３５０、アクセス制御レジスタ３６０、デバッグ・ダンプ・レジスタ３７０、ダイレクト・メモリ・アクセス（ＤＭＡ）入力３８０、ＤＭＡ出力３８５およびデバイス・アクセス・レベル制御３９０を含むが、本発明の範囲はこの点に制限されることはない。ある実施例において、マイクロコントローラ３１０は、信頼されたサブシステムが実行するように意図される動作を効率的に行なうために特別に設計されるが、他の実施例は他の構成（例えば、マイクロコントローラ３１０は汎用目的のＣＰＵなどと全て同じ設計を有していてもよい。）であってもよい。
【００２９】
機能ユニット３２０は、ある動作の実行をより効率的に行なうための回路を含む。ある実施例において、機能ユニット３２０は、頻繁に使用される暗号／解読アルゴリズム、例えばリベスト−シャミル−アドレマン（ＲＳＡ）、セキュア・ハッシュ・アルゴリズム（ＳＨＡ）、高度暗号標準規格（ＡＥＳ）などを行なうための回路を含む。レジスタ３３０は、機能ユニット３２０によって、入力データ、出力データ、中間結果などのために使用される一時格納を含む。内部ＲＯＭ３５０は、マイクロコントローラ３１０によって使用される変更不可能な命令および／またはデータを提供する一方で、内部ＲＡＭ３４０は、データおよび／または命令のためにスクラッチパッド領域および／または再利用可能な領域として使用されてもよい。ＤＭＡ入力３８０およびＤＭＡ出力３８５は、信頼されたサブシステム３００の外部の装置と内部ユニット３３０，３４０および任意の他の領域との間でデータを転送するために使用される。ある実施例において、ＤＭＡ入力３８０およびＤＭＡ出力３８５は、信頼されたサブシステム３００へ、またはそのサブシステムからデータを転送するただ一つの方法であり、特定の実施例では、マイクロコントローラ３１０は、ＤＭＡ入力３８０およびＤＭＡ出力３８５を完全に制御し、従って外部装置が無許可のデータを信頼されたサブシステム３００へ／から転送することを防止し、それによって、どのようなセキュリティ機能が信頼されたサブシステム３００へ設計されるべきかを調整するが、本発明の範囲はこの点に制限されることはない。
【００３０】
アクセス制御レジスタ３６０は、与えられたデバッグ・プロセスがどの領域アクセスを許可されているかを定義するために使用されてもよい一方、デバッグ・ダンプ・レジスタ３７０は、信頼されたサブシステム３００からデバッグ・ダンプ・データを転送するデバッグ・ダンプ・ルーチンのアドレスを指定するために使用されていてもよい。いくつかの実施例では、デバッグ・ダンプ・レジスタ３７０は、実際のデバッグ・ダンプ・データを含んでいてもよい。いくつかの実施例では、デバイス・アクセス・レベル制御３９０は、外部装置が信頼されたサブシステム３００内にアクセスするアクセスのレベルを定義するために使用されてもよい。単一のレベルのみが定義されたある実施例では、デバイス・アクセス・レベル制御３９０はそのレベルを定義し、アクセス制御レジスタ３６０が省略されてもよい。複数のレベルが定義されたアクセスを備える別の実施例では、アクセス制御レジスタ３６０は様々なレベルを定義し、また、デバイス・アクセス・レベル制御３９０が省略されてもよい。別の実施例では、デバイス・アクセス・レベル制御３９０は、最も広いアクセスのレベルを定義し、その一方でアクセス制御レジスタ３６０はより多くの制限されたレベルのアクセスを定義してもよい。さらに他の実施例が他の構成を使用してもよい。
【００３１】
図４は、本発明の実施例に従って、信頼されたサブシステムを含むシステムを示す。図示する実施例では、システム４００は、ホスト・プロセッサ４１０、システム・メモリ４２０、信頼されたサブシステム３００、他の周辺装置４３０、通信パス４４０、デバッグ・インターフェイス４５０およびプログラム可能なユニット４６０を含むが、本発明の範囲はこの点に制限されることはない。ある実施例において、ホスト・プロセッサ４１０は、システム４００のための汎用プロセッサであってもよく、その一方でシステム・メモリ４２０はホスト・プロセッサ４１０のためのメインメモリである。ある実施例において、システム・メモリ４２０は、動的なランダム・アクセス・メモリ（ＤＲＡＭ）のような揮発性メモリを含み、別の実施例においては、システム・メモリ４２０はフラッシュ・メモリのような不揮発性メモリを含み、他の実施例では、システム・メモリ４２０は、揮発性および不揮発性メモリの組合せを含む。他の周辺装置４３０は、特定の動作のために必要とされる他の装置および／またはシステムのデバイスコントローラを含み、例えばディスク制御装置、グラフィック・アクセラレータ、ネットワーク・インターフェイス、音響入力／出力、表示制御装置、キーボード制御装置などであるが、これらに制限されることはない。
【００３２】
通信パス４４０は、ホスト・プロセッサ４１０、システム・メモリ４２０、信頼されたサブシステム３００および他の周辺装置４３０間の通信用経路を提供する。通信パス４００は、様々なタイプの通信装置、例えば、バス、複数のバス、ブリッジ、直接の接続などを含むが、これらに制限されることはない。
【００３３】
外部接続については、デバッグ・インターフェイス４５０は、外部デバッグ・システム（図示せず）と、ホスト・プロセッサ４１０、システム・メモリ４２０、他の周辺装置４３０および通信パス４４０のようなシステム４００の様々な内部構成との間のインターフェイスを提供する。プログラム可能なユニット４６０は、どのようなアクセスのレベルがデバッグ動作中に許可されるかのインディケータをプログラムする外部方法を提供する。ある実施例において、プログラム可能なユニット４６０は製造中に設定され、次に、後続の変更を防ぐためにシールされる。別の実施例では、プログラム可能なユニット４６０は製造後にプログラム可能である。特定の実施例では、プログラム可能なユニット４６０は、切断されるヒューズを含み、他の実施例では他の技術（例えば、不揮発性レジスタなど）が使用される。一度プログラムされると、そのデバッグ・インターフェイス４５０に接続された外部装置がどのレベルのアクセスが許されているかを示すために、プログラム可能なユニット４６０のビットは、信頼されたサブシステム３００内の回路（図示せず）によって読取られる。
【００３４】
図５は、本発明の実施例に従って、デバッグ動作を行なう方法のフローチャートを示す。フローチャート５００の開始は、デバッグ動作が既に設定され、デバッグ装置はデバッグ・インターフェイス４５０（図４を参照）に接続され、システム４００は一度に１つの命令を実行するか、あるいは予め定義された命令シーケンスを実行するために設定され、それに続いてデバッグ・インターフェイスを通ってそのデバッグ装置に定義された位置のセット（例えば、レジスタなど）のコンテンツをダンプするために休止すると仮定する。しかしながら、本発明の範囲はこの点に制限されることはない。
【００３５】
５１０から開始して、次の命令が取り出され、および／または、実行のための位置に入れられる間、休止があってもよい。その命令は、５２０で、ステップ・モードで実行される。判断ブロック５３０では、デバッグ・ダンプを停止するか行なうか、あるいはシーケンス中の別の命令を実行するかどうかを判断する。それとも、べきであるか。デバッグ・ダンプ・インディケータがセットされない場合、シーケンス中の次の命令を実行するために、処理は５２０へ戻る。デバッグ・ダンプ・インディケータがセットされる場合、前述の位置のコンテンツが今ダンプされることになり、その結果、命令実行の影響が調べられることを示して、その後処理は５４０へ移動する。実行は、５４０で、デバッグ・ダンプ・ルーチンへ分岐する。デバッグ・ダンプ・ルーチンのアドレスは、デバッグ・ダンプ・レジスタ３７０（図３参照）の特定のレジスタに含まれている。
【００３６】
デバッグ・ダンプ・ルーチンは、５５０で、どのアクセスのレベルがそのデバッグ動作のために許可されているか決めるためにプログラム可能ユニットをチェックする。ある実施例において、このレベルは、どのレジスタが修正されるのか、どのメモリ・レンジでアクセスされるのか、どの命令が実行されるのか、どの資源がアクセスされるのか、などや、様々なレジスタや記憶場所に置かれるコンテンツなどに対する制限を定義するが、他の実施例は、より多くの、よりわずかの、および／または、別の制限を含んでいてもよい。その実行がこれらの制限、すなわちデバッグ・プロセスが予め定められたセキュリティ制限を越えたことを示す制限を違反する場合、デバッグ・プロセスは５７０で中断されるか終了（アボート）される。ある実施例において、プロセスをアボートすることには、デバッグ・インターフェイスをディセーブルこと、信頼されたサブシステムへのアクセスをすべて拒否すること、エラーメッセージをホスト・プロセッサなどを通って生成すること、などを含むが、これらに制限されることはない。
【００３７】
制限違反が５５０で検出されない場合、デバッグ・ダンプ・データは、デバッグ・インターフェイス４５０を介して外部デバッグ装置に転送される。ある実施例では、デバッグ・ダンプ・データがいくつかのレジスタ３７０中に含まれていることがあり、そしていくつかのレジスタ３７０からダンプされてもよい。別の実施例では、そのデバッグ・ダンプ・データは、内部ＲＡＭ３４０からＤＭＡ出力を介して通信パス４４０に、そしてそこからデバッグ・インターフェイス４５０を介してデータを転送することによりダンプされる（図３、図４参照）。他の実施例は、他の技術を使用してもよい。
【００３８】
デバッグ・データをダンプした後、５８０で、その動作は次の指示のために待機するか、または、別の命令の実行または命令シーケンスを開始するために５１０へ戻ってもよい。
【００３９】
本発明の実施例は、ハードウェア、ファームウェアおよびソフトウェアの１つまたはそれらの組合せで実現される。本発明の実施例はまた、機械読取り可能な媒体上またはその中に格納された命令として実装されてもよく、それはここに説明された動作を行なうために少なくとも１つのプロセッサによって読取られ実行される。機械読取り可能な媒体は、マシン（例えば、コンピュータ）によって読取り可能な形式で情報を格納するか伝送するためのあらゆるメカニズムを含む。例えば、機械読取り可能な媒体は、リード・オンリ・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、磁気ディスク格納媒体、光格納媒体、フラッシュ・メモリ装置、電気的、光学的、音響的、あるいは他の形式の伝播信号（例えば、搬送波、赤外線信号、電気的なデジタル信号など）を含むが、これらに制限されることはない。
【００４０】
図６および図７は、本発明の実施例に従って、機械読取り可能な媒体上またはその中に格納された命令の実行により実現される方法のフローチャートを示す。しかしながら、本発明の範囲はこの点に制限されることはない。
【００４１】
図６のフローチャート６００では、６１０で、デバッグ・パスワードは、信頼されたサブシステムへのデバッグ・アクセスを許可することに対する制限として後続の使用のために格納される。デバッグ・プロセスが開始することであるとき、ユーザは、６１５で受け取られたアクセス・パスワードを示すことによりデバッグ・アクセスを求める。６２０で、そのアクセス・パスワードが以前に格納されたデバッグ・パスワードと一致しない場合、デバッグ・アクセスのリクエストは６２５で否定される。いくつかの実施例では、その後、システムは、（図示のように）６１５で提示される別のパスワードを許可してもよいが、他の実施例では、いくつかのエラー処理（図示せず）の形式が実行されてもよい（例えば、エラーメッセージを生成すること、前もって定めた時間の間デバッグ・アクセスをロックする、など）。そのアクセス・パスワードが以前に格納されたデバッグ・パスワードと一致する場合、デバッグ・アクセスのためのリクエストが６３０で付与される。このポイントで、デバッグ動作は、図６に含まれていないコードおよびプロセスを使用して行なわれる。
【００４２】
一旦ユーザのデバッグ動作が完了し、そのユーザがそれらをさらに使用する必要が確かにないということが合理的であるとするならば、デバッグ・パスワードは６３５でディセーブルにされる。ある実施例において、ディセーブルにすることはそのパスワードをその格納位置から削除することを含み、他の実施例では他の技術が使用されてもよい（例えば、格納位置への読取りアクセスをブロックすること、格納位置上に書き込むこと、など）。
【００４３】
次のデバッグ動作（例えば、別のエンティティによる）が意図される場合、６４０で再イネーブル・パスワードが格納される。別のデバッグ・プロセスが始まる場合、別のユーザは６４５で受け取られたアクセス・パスワードを提示することにより、そのデバッグ・インターフェイスを介してアクセスを要求する。６５０で、アクセス・パスワードが以前に格納された再イネーブル・パスワードと一致しない場合、６５５でデバッグ・アクセスのリクエストは否定される。いくつかの実施例では、その後、本システムは、６４５で（図示のように）示される別のパスワードを許可してもよいが、他の実施例では、いくつかのエラー処理（図示せず）の形式が実行される（例えば、エラーメッセージを生成すること、前もって定めた時間の間デバッグ・アクセスをロックする、など）。そのアクセス・パスワードが以前に格納されたデバッグ・パスワードと一致する場合、デバッグ・アクセスのためのリクエストが６６０で付与される。このポイントで、デバッグ動作は、図６に含まれていないコードおよびプロセスを使用して行なわれる。いくつかの実施例では、６２０で付与されたデバッグ・アクセス、および、６６０で付与されたデバッグ・アクセスは、異なる領域および資源へのアクセスを認める。
【００４４】
図７のフローチャート７００では、７１０で、デバッグ・モードの動作が入力され、動作は図７の残余の部分に続くが、本発明の範囲はこの点に制限されることはない。いくつかの実施例では、このような入力は、既に説明されたパスワード・プロセスを通じて、または説明されていない別のプロセスを通じて制御されるが、他の実施例はこのようなデバッグ動作へのアクセスを制限しなくてもよい。７１５で、１またはそれ以上の命令シーケンスがステップ・モードで実行され、７２０でデータを収集するために休止する実行を伴う。このようなデータは様々なレジスタおよび／またはメモリ位置のコンテンツ、レジスタおよび／またはメモリ位置のアドレス、様々なステータス・ビットの状態、実行された命令の識別などの含むが、これらに制限されることはない。
【００４５】
７２３で、７２０で収集されたデータに関するいくつかの制限を指定するパラメータが得られる。このようなパラメータは、デバッグ動作に対する制限を課すために使用されてもよい。このような制限は、デバッグ動作を、指定されたメモリの範囲内に、指定されたレジスタに、指定されたタイプの命令などに制限するために使用されてもよい。ある実施例において、パラメータは、介在する回路および／またはコードでヒューズのような前にプログラムされたビット・セットから推断され、そのビットを実際のパラメータに変換するが、他の実施例は他の技術（例えば、プログラムされた位置から直接パラメータを読んで、そのビットをマイクロコードを介してパラメータに変換する、など）を使用する。
【００４６】
７２５で、データが示された範囲内であるかどうか決めるために、収集されたデータは、制限パラメータと比較される。そのような範囲は、実行された命令が存在する一連のアドレス、書き込まれまたは読み出されるメモリ位置の一連のアドレス、実行された命令、実行が許された命令のタイプ、実行されたコードがアクセスすることを許される他の資源など（例えば、レジスタ、装置など）を含むが、これらに制限されることはない。定義された範囲を超過している場合、フローはエラールーチンを処理するために７３０へ移動する。そのようなエラールーチンは、エラーメッセージを示すこと、他の情報を獲得するためにデバッグ・プロセスを中断すること、デバッグ・プロセスを終了させることなどを含むが、これらに制限されることはない。
【００４７】
定義された範囲を超過していない場合、デバッグ・インターフェイスを介して関連するデータをダンプするために、フローは７３５へ移る。この方法でダンプされたデータは、その制限が７２５で調べられたのと同じデータであるか、その制限が７２５で調べられなかったのと異なるデータであるか、あるいは、両方の全てのまたは部分的な組合せである。
【００４８】
決定は、７４５でデバッグ動作を止めるべきか、７１５で１またはそれ以上の次の命令シーケンスを実行することにより、デバッグ動作を再開するべきであるかどうかに判断が、７４０で行なわれる。デバッグ・テスト・インターフェイスを介して有用な量のデバッグ・データを集めるために、そのような多くのシーケンスが、デバッグ動作を止める前に連続して実行される。
【００４９】
前述の説明は、例示する意図であり、制限するためではない。変変更は、想起されるであろう。それらの変更は本発明の様々な実施例に含まれるように意図されており、それは添付された請求項の思想および範囲によってのみ制限されるものである。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施例に従って、異なるエンティティによる複数のデバッグ・プロセスを連続して行なう方法を示すフローチャートである。
【図２】本発明の実施例に従って、図１中に示された方法の一部を実行する回路の論理図を示す。
【図３】本発明の実施例に従って、図２の回路に類似する回路を含む信頼されたサブシステムのブロック図を示す。
【図４】本発明の実施例に従って、信頼されたサブシステムを含むシステムを示す。
【図５】本発明の実施例に従って、デバッグ動作を行なう方法を示すフローチャートである。
【図６】本発明の様々な実施例に従って、機械読取り可能な媒体上、またはその中に含まれる命令を実行することにより実施される方法を示すフローチャートである。
【図７】本発明の様々な実施例に従って、機械読取り可能な媒体上、またはその中に含まれる命令を実行することにより実施される方法を示すフローチャートである。
【図１】
2007509441.tif 000003
【図２】
2007509441.tif 000004
【図３】
2007509441.tif 000005
【図４】
2007509441.tif 000006
【図５】
2007509441.tif 000007
【図６】
2007509441.tif 000008
【図７】
2007509441.tif 000009
【国際調査報告】
2007509441.tif 000010
2007509441.tif 000011
2007509441.tif 000012