(57)【特許請求の範囲】
【請求項１】
再プログラミング可能なターゲットデバイスであって、
外部ポートを含むコネクタと、
ロジックを含むポートコントローラと、
前記ポートコントローラとは別のホストプロセッサと、
前記外部ポート及び前記ポートコントローラに結合されたマルチプレクサと、
を備え、
前記ロジックは、
前記外部ポートを介してデバッグモード要求を検出し、
前記デバッグモード要求に応えて前記外部ポートと前記ポートコントローラとの間のプログラムパスをアクティブ化し、
前記プログラムパスを介して受信された１又は複数のコマンドを処理し、
前記プログラムパスは、前記ホストプロセッサを迂回し、
前記ロジックは、ルーティング信号を前記マルチプレクサへ送信して、前記マルチプレクサに接続された前記プログラムパスをアクティブ化する
ターゲットデバイス。
【請求項２】
前記１又は複数のコマンドは、前記ターゲットデバイスの外部にある電力を用いて処理される、請求項１に記載のターゲットデバイス。
【請求項３】
前記ポートコントローラに関連付けられた不揮発性メモリをさらに備え、
前記ロジックは、
前記プログラムパスを介してコードを受信し、前記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち１又は複数を含み、
前記コードを前記不揮発性メモリへ格納する、
請求項１または２に記載のターゲットデバイス。
【請求項４】
前記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、請求項１から３のいずれか一項に記載のターゲットデバイス。
【請求項５】
ポートコントローラを動作させる方法であって、
前記ポートコントローラで、コネクタの外部ポートを介してデバッグモード要求を検知する段階と、
前記デバッグモード要求に応えて前記外部ポートと前記ポートコントローラとの間のプログラムパスを前記ポートコントローラによってアクティブ化する段階と、
前記ポートコントローラで、前記プログラムパスを介して受信された１又は複数のコマンドを処理する段階と、
を備え、
前記プログラムパスは、前記ポートコントローラを含むターゲットデバイスの、前記ポートコントローラとは別のホストプロセッサを迂回し、
前記プログラムパスをアクティブ化する段階は、ルーティング信号を前記外部ポートに結合されたマルチプレクサへ送信して、前記マルチプレクサに接続された前記プログラムパスをアクティブ化する段階を有する
方法。
【請求項６】
前記１又は複数のコマンドは、前記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、請求項５に記載の方法。
【請求項７】
前記プログラムパスを介してコードを前記ポートコントローラによって受信する段階であって、前記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち１又は複数を含む、段階と、
前記コードを前記ポートコントローラに関連付けられた不揮発性メモリへ前記ポートコントローラによって格納する段階と、
をさらに備える、請求項５または６に記載の方法。
【請求項８】
前記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、請求項５から７のいずれか一項に記載の方法。
【請求項９】
ポートコントローラに、
コネクタの外部ポートを介してデバッグモード要求を検出することと、
前記デバッグモード要求に応えて前記外部ポートと前記ポートコントローラとの間のプログラムパスをアクティブ化することと、
前記プログラムパスを介して受信された１又は複数のコマンドを処理することと、
ルーティング信号を前記外部ポートに結合されたマルチプレクサへ送信して、前記マルチプレクサに接続された前記プログラムパスをアクティブ化することと、
を実行させ、
前記プログラムパスは、前記ポートコントローラを含むターゲットデバイスの、前記ポートコントローラとは別のホストプロセッサを迂回する
プログラム。
【請求項１０】
前記１又は複数のコマンドは、前記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、請求項９に記載のプログラム。
【請求項１１】
前記プログラムパスを介してコードを受信することと、
前記コードを前記ポートコントローラに関連付けられた不揮発性メモリへ格納することと、
を前記ポートコントローラに実行させ、
前記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち１又は複数を含む、請求項９または１０に記載のプログラム。
【請求項１２】
前記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、請求項９から１１のいずれか一項に記載のプログラム。
【請求項１３】
請求項９から１２のいずれか一項に記載のプログラムを格納する、少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
本出願は、２０１４年１２月２６日に出願された米国非仮特許出願１４／５８３，２１８号に基づく優先権の利益を主張する。
【０００２】
実施形態は、概してポートコントローラのアップデートに関する。より具体的には、実施形態は、ポートコントローラ自身の外部ポートを介してポートコントローラを再プログラミングすることに関する。
【背景技術】
【０００３】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）Ｔｙｐｅ‐Ｃ（例えば、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ  Ｔｙｐｅ−Ｃ  Ｃａｂｌｅ  ａｎｄ  Ｃｏｎｎｅｃｔｏｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖ．１．０，Ａｕｇｕｓｔ  １１，２０１４，ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ）インタフェースのようなインタフェースは、様々なコンピューティングコンポーネントがお互いに情報及び電力を交換することを可能にし得る。典型的なＵＳＢ  Ｔｙｐｅ‐Ｃインタフェースは、ポートコントローラチップ及びコネクタを含み得、コネクタは、ポートコントローラチップに電気的に結合されたピンのサブセットを有する（例えば、コネクタを含むデバイスに対して）外側に面する外部ポート／レセプタクルを有し得る。そのようなインタフェースをアップグレードすることは、ポートコントローラチップを新しいファームウェアで再プログラミングすることを伴い得る。アップグレードを行うことに対する従来のアプローチは、特定の状況下で適切であり得るが、かなりの改善の余地が残っている。
【０００４】
例えば、一つのアプローチは、側面に面していて、インタフェースを含むデバイスの筐体の内部に位置付けられているＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）ポートに特化されたツールをプラグ接続することを含み得、ツールは、新しいファームウェアをポートコントローラチップにプログラミングするアプリケーションソフトウェアを実行し得る。このような解決手段は、ＪＴＡＧポートにアクセスすべくデバイス筐体を開ける処理に起因して、時間がかかり、不便であり、及びコストがかかり得る。別のアプローチは、デバイス自体のホストプロセッサ上でデバイスファームウェアアップデート（ＤＦＵ）ソフトウェアアプリケーションを動作し得、ＤＦＵソフトウェアアプリケーションは、新しいファームウェアをポートコントローラチップにプログラミングする。しかしながら、デバイスが起動不可能である場合、電力が不足している場合又はマルウェアで感染された場合、このような解決手段は不適切であり得る。
【図面の簡単な説明】
【０００５】
当業者が以下の明細書及び添付の特許請求の範囲を読むことにより、並びに以下の図面を参照することにより、実施形態の様々な利点が明らかとなるであろう。
【図１】実施形態に係るポート再プログラミング構成の例のブロック図である。
【図２】実施形態に係る再プログラミング可能なターゲットデバイスの例の概略図である。
【図３Ａ】実施形態に係るメモリセクションの例の図である。
【図３Ｂ】実施形態に係るメモリセクションの例の図である。
【図３Ｃ】実施形態に係るメモリセクションの例の図である。
【図３Ｄ】実施形態に係るメモリセクションの例の図である。
【図４】実施形態に係るポートコントローラを動作させる方法の例のフローチャートである。
【図５】実施形態に係るデバッグツールの例の概略図である。
【図６】実施形態に係るデバッグツールを動作させる方法の例のフローチャートである。
【発明を実施するための形態】
【０００６】
ここで図１を参照すると、ポート再プログラミング構成が示されており、ここでは、ポートコントローラ１４を再プログラミングするのにデバッグツール１０及びデバッグコンピューティングシステム１２が用いられる。概して、ポートコントローラ１４は、マザーボード１６又は他の適切な回路基板及び／又は、再プログラミング可能なターゲットデバイス２０（例えば、サーバ、デスクトップコンピュータ、ノートブックコンピュータ、タブレット型コンピュータ、コンバーチブル型タブレット、スマートフォン、携帯情報端末／ＰＤＡ、モバイルインターネットデバイス／ＭＩＤ、メディアプレイヤー、ウェアラブルコンピュータ、など）の筐体１８の中に含まれるサブシステム上に搭載され得る。図示されている例において、ポートコントローラ１４は、ターゲットデバイス２０から外側に面する外部ポート２２（例えば、レセプタクル）に電気的に結合され、ターゲットデバイス２０の筐体１８を開けることなくデバッグツール１０によってアクセス可能である。一例において、外部ポート２２及びポートコントローラ１４は、ＵＳＢ  Ｔｙｐｅ‐Ｃインタフェースを構成する。
【０００７】
より詳細に説明されるように、デバッグツール１０は、ターゲットデバイスの外部ポート２２及びデバッグコンピューティングシステム１２の外部ポート２４に容易に結合され得、デバッグコンピューティングシステム１２のシステムオンチップ（ＳｏＣ）２６（例えば、ホストプロセッサ、チップセット、入力／出力モジュール）上で動作するデバイスファームウェアアップデート（ＤＦＵ）アプリケーションが、デバッグツール１０及び外部ポート２２を介してポートコントローラ１４の再プログラミングを命令／制御し得る。したがって、図示されているアプローチは、筐体１８を開けること又はターゲットデバイス２０のＳｏＣ２８上でＤＦＵを動作させることを伴わないポートコントローラ１４を再プログラミングする高速で、便利で、及び安価な解決手段を提供し得る。デバッグツール１０はまた、筐体１８を開けることなくＳｏＣ２８及び／又はターゲットデバイス２０の他のサブシステムを診断するのに用いられ得る。
【０００８】
図２は、ターゲットデバイス２０の一例をより詳細に示す。図示されている例において、外部ポート２２は、コンフィギュレーションチャネルコンタクト（例えば、ＣＣ１、ＣＣ２）のセット３４、電圧バスコンタクト３６（例えば、Ｖｂｕｓ）及びケーブル方向マルチプレクサ３０（ＭＵＸ）に結合された残りのコンタクトのセット３２を含む。動作中、ポートコントローラ１４は、ターゲットデバイス２０が外部ポート２２で接合された別のポート（例えば「ポートパートナー」、不図示）に対して「ホスト」して振る舞うか「デバイス」として振る舞うかどうかを判断すべく、アナログデジタル（Ａ／Ｄ）変換及び／又は電圧コンパレーター（不図示）を用いて、コンフィギュレーションチャネルコンタクトのセット３４を監視し得る。ポートコントローラ１４はまた、コンフィギュレーションチャネルコンタクトのセット３４を用いてポートパートナーの方向を判断し得、及びケーブル方向選択信号３８を用いてケーブル方向マルチプレクサ３０を制御し得、これにより、残りのコンタクトのセット３２は、例えば、ＳｏＣ２８のようなマルチプレクサ３０上の回路に対して「正しい側が上に」現れる。特に注目すべきなのは、図示されている例において、残りのコンタクトのセット３２がポートコントローラ１４で終端しないことである。
【０００９】
オルタネートモードマルチプレクサのセット４０（４０ａ‐４０ｄ）が、ケーブル方向マルチプレクサ３０に結合され得、オルタネートモードマルチプレクサのセット４０は、概してポリシーエンジン４４からのオルタネートモード選択信号４２及び／又はポートコントローラ１４からのオーディオアクセサリー選択信号４３に基づいて残りのコンタクトのセット３２からＳｏＣ２８（２８ａ‐２８ｄ）のコンポーネントへ信号をルーティングし得る。例えば、第１ＳｏＣコンポーネント２８ａは、ＵＳＢコントローラホストポートを含むかもしれなく、第２ＳｏＣコンポーネント２８ｂは、ＤＩＳＰＬＡＹＰＯＲＴコントローラソースポートを含み得、第３ＳｏＣコンポーネント２８ｃは、オーディオコーデックを含むかもしれなく、第４ＳｏＣコンポーネント２８ｄは、ホストプロセッサを含み得る等々あり、通常の動作中、ターゲットデバイス２０とポートパートナーとの間の通信は、オルタネートモード選択信号４２及び／又はオーディオアクセサリー選択信号４３に応じてＳｏＣのコンポーネントの様々な組み合わせを伴い得る。 
【００１０】
ポリシーエンジン４４は、代替的にポートコントローラ１４に埋め込まれ得る。そのようなアプローチは、ポリシーエンジン４４とポートコントローラ１４との間の通信リンク４５の除去を可能にし得、ＳｏＣ２８上で動作しているかもしれないマルウェアからのポリシーエンジン４４の隔離を提供し得る。ポリシーエンジン４４の図示されている配置は、一方で、ＳｏＣ２８上で動作するソフトウェアによるリアルタイムポリシー制御／修正を可能にし得る。
【００１１】
さらに、ターゲットデバイス２０は、電力アイランド分割線５０によってパーティショニングされ得、これにより、線５０より下の全ての回路は、回路がターゲットデバイス２０の筐体１８（図１）内に配置された内部電源によって又は例えば、外部ポート２２の電圧バスコンタクト３６上で提供されるデバッグツールの外部電源よって提供されるいずれかの電力から電源を入れることを可能にする専用の電圧レギュレータ（不図示）を有する。したがって、図示されているポートコントローラ１４は、たとえターゲットデバイス２０が内部電力（例えば、バッテリー切れ）を欠いている場合であっても、電源を入れること、動作すること及び再プログラミングされることができる。この点において、ポートコントローラ１４はまた、電流がマザーボード１６（図１）内に又は外へ流れることを可能にすべく、電力選択信号５２を電力スイッチ５４へアサートし得る。ターゲットデバイス２０はまた、外部電源によって分割線５０より上の回路が電力を供給されることを可能にすべく、適切な電力レール５５のルーティング及び／又は、電圧レギュレーションで構成され得る。
【００１２】
図示されている例において、ポートコントローラ１４は、外部ポート２２とポートコントローラ１４との間のプログラムパス４８をアクティブ化すべく、外部ポート２２を介してデバッグモード要求を検出し、ルーティング信号４６をオルタネートモードマルチプレクサ４０ｂへアサートする。したがって、ポートコントローラ１４は、プログラムパス４８を介してコマンド及び／又はコードを選択的に受信し得、プログラムパス４８は、第４ＳｏＣコンポーネント２８ｄ（例えば、ホストプロセッサ）及びＳｏＣ２８の他のコンポーネントを迂回する。コマンドは、例えば、再プログラムコマンド、リセットコマンド、診断用コマンドなどを含み得、コードは、ランタイムファームウェアイメージ、デバッグブートローダなどを含み得る。より詳細に説明されるように、ポートコントローラ１４は、コードをポートコントローラ１４に関連付けられた不揮発性メモリ（ＮＶＭ）５６へ格納し得る。
【００１３】
ここで図３Ａから３Ｄを参照すると、不揮発性メモリセクションが、様々な異なるコンフィギュレーションで示されている。図示されているメモリセクションのそれぞれは、ＮＶＭ５６（図２）の代わりに容易に用いられ得る。概して、ポートコントローラの不揮発性メモリ（例えば、フラッシュ）は、「セクション」と称される非オーバーラップ領域に分割され得、それらのセクションは連続的であっても不連続的であってもよい。それぞれのセクションは、開始アドレス（例えば、それがメモリのどこで開始するのか）、長さ（例えば、それがメモリのどれくらいのバイトを占領するか）、アクセス権（例えば、ソフトウェアによってセクションがどのように使用され得るかを制御する）などを含むがこれらに限定されない属性を有し得る。
【００１４】
セクションのアクセス権は、読み込み（例えば、ＤＦＵソフトウェアが、セクションのコンテンツを読み出し得る）、書き込み（例えば、ＤＦＵソフトウェアが、セクションのコンテンツを再プログラミングし得る）、実行（例えば、セクションが、実行され得る有効コードを含む）などを含み得るがこれらに限定されない。さらに、ポートコントローラプロトコルは、「ｒｗｘ」（読み込み、書き込み、実行）のようなこれらアクセス権の簡略表現を用い得、いずれの利用不可能なアクセス権も、「ｒｗ‐」（読み込み、書き込み、実行不可能）のようにハイフンで置き換えられ得る。
【００１５】
特に図３Ａを参照すると、ポートコントローラは、リセット６０を検知したことに応じてアドレス０Ｋから実行を開始し得る。図示されているメモリは、ブートローダセクション６２及びランタイムイメージセクション６４の２つのセクションに分割される。ブートローダセクション６２は、リセット６０後、最初に実行され得る。ランタイムイメージセクション６４は、ポートコントローラを（例えば、インタフェースの仕様にしたがって）動作させるファームウェアを含む。
【００１６】
図４は、ポートコントローラを動作させる方法６６を示す。方法６６は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、ファームウェア、フラッシュメモリなどのような機械可読記憶媒体又はコンピュータ可読記憶媒体、例えば、プログラマブルロジックアレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複合プログラマブルロジックデバイス（ＣＰＬＤ）のような構成可能なロジック、例えば、特定用途向け集積回路（ＡＳＩＣ）、相補型金属酸化物半導体（ＣＭＯＳ）又はトランジスタ‐トランジスタロジック（ＴＴＬ）技術のような回路技術を用いる固定機能ロジックハードウェア、又はこれらの任意の組み合わせに格納されたロジック命令のセットとして１又は複数のブートローダモジュールにおいて実装され得る。例えば、方法６６で示されている動作を実行するコンピュータプログラムコードは、ＪＡＶＡ（登録商標）、ＳＭＡＬＬＴＡＬＫ（登録商標）、Ｃ＋＋又は同様のもののようなオブジェクト指向プログラミング言語及びＣプログラミング言語又は類似のプログラミング言語のような従来の手続き型のプログラミング言語を含む１又は複数のプログラミング言語の任意の組み合わせで書き込まれ得る。
【００１７】
図示されているブロック６７で、例えば、コンフィギュレーションチャネルコンタクトのセット３４（図２）のようなコンフィギュレーションチャネルコンタクト上で所定の電圧及び／又は抵抗を検知すること及び例えば、プログラムパス４８（図２）のようなプログラムパスを外部ポートとポートコントローラとの間でアクティブ化することを提供する。より詳細に説明されるように、所定の電圧は、特定の抵抗（例えば、Ｒｄ）がポートパートナーでコンフィギュレーションチャネルコンタクトのそれぞれに結合されていることを示し得る。ブロック６８で、外部ポートのイネーブルピン／コンタクトを調べ得る。ブロック７０で、イネーブル信号がイネーブルピン上でアサートされると判断される場合、ポートコントローラは、デバッグモード要求がポートパートナーによって発行されていることを判断し得る。そのような場合、ブロック７２で、プログラムパスでコマンドを受け取り得、ブロック７４でコマンドが、処理され得る。コマンドは、例えば、再プログラムコマンド、リセットコマンド、診断用コマンドなど又はこれらの任意の組み合わせを含み得る。再プログラムコマンドは、例えば、書き込みアクセスを有する任意のセクションを修正することを提供し得る。一例において、ブートローダセクションは、「‐‐ｘ」というアクセス権を有し、したがって、実行され得るが、読み込み又は書き込みされない。
【００１８】
ブロック７６で、コマンドがリセットコマンドであるかとうかに関する判断がされ得る。結果が否定的な場合、図示されているブロック７２で、次のコマンドが、プログラムパスで受け取られる。そうでなければ、方法６６は、ブロック６８へ戻り得、イネーブルピンを調べ得る。ブロック７０で、イネーブル信号がイネーブルピン上でアサートされない（例えば、ポートパートナーが再プログラミング／診断を完了した）と判断される場合、ブロック７８で、実行可能なランタイムイメージセクションへのジャンプが、実行され得る。ランタイムイメージセクションは、通常の動作中にポートコントローラによって用いられるファームウェアを含み得る。一例において、ランタイムイメージセクションは、「ｒｗｘ」というアクセス権を有し、したがって、読み込まれ（例えば、バックアップコピーを作成するために）、書き込まれ（例えば、再プログラミングされ）、実行され得る。
【００１９】
ここで図３Ｂに戻って、実行は、リセットベクトル８０と称されるアドレスにおいて代替的に開始し得、リセットベクトル８０は、リセット及び割り込みベクトルセクション８２の一部である。リセットベクトル８０は、実行が継続するアドレス（又は「ジャンプ」命令及びアドレス）、この場合、ブートローダセクション８４の先頭、を含み得る。ブートローダセクション８４は、例えば、既に説明された方法６６（図４）のような方法を実装し得る。したがって、イネーブル信号がアサートされる場合、ランタイムイメージセクション８６のコンテンツが、再プログラミングされ得る。そうでなければ、ブートローダセクション８４は、ランタイムイメージセクション８６の開始点へ実行をジャンプし得る。したがって、この例は、ブートローダセクション８４をランタイムイメージセクション８６から分け隔てる未使用領域８８によって示されているように、いくつかのセクションが不連続であり得ることを示す。
【００２０】
図３Ｃは、ブートローダ自体が再プログラミング可能（例えば、「‐‐ｘ」の代わりに「‐ｗｘ」というアクセス権を有する）であり得、この場合、ブートローダが（例えば、新たな機能又はエラッタ訂正に起因して）アップグレードされる必要があることを明示する。ブートローダを破損する（例えば、再プログラミングの最中で電力故障が生じる）ことを防ぐべく、「ブートローダＡ」セクション９０及び「ブートローダＢ」セクション９２と称される２つの別個のコピーが定義され得る。最初は、リセット及び割り込みベクトルセクション９４は、アクセス権‐ｗｘを有するブートローダＡセクション９０を指し得、アクセス権‐ｗ‐（例えば、実行不可能）を有するブートローダＢセクション９２を指さない。 
【００２１】
ブートローダがアップグレードされる必要がある場合、新たなブートローダイメージがブートローダＢセクション９２にプログラミングされ得る。この段階中に破損が生じる場合、復帰可能である有効で実行可能なコードが、ブートローダＡセクション９０内にまだ存在する。成功した／完了した／検証された再プログラミング後のみ、ブートローダＢセクション９２が、アクセス権「‐ｗｘ」でマーキングされ得、ブートローダＡセクション９０が、アクセス権「‐ｗ‐」で再マーキングされ得、及びリセットベクトルが、ブートローダＡの代わりにブートローダＢを指すようアップデートされ得る。ここで、ブートローダＡセクション９０はまた、再プログラミングされ得る。この段階中に破損が生じる場合、有効で実行可能なコードが、動作するブートローダＢセクション９２内に既に存在する。
【００２２】
ここで図３Ｄを参照すると、「セキュアなＤＦＵ」シナリオが示されている。図示されている例において、アクセス権「‐‐ｘ」を有するトラストルートセクション９６は、ＪＴＡＧを用いてのみシステム製造者によってインストール可能であり得る。したがって、トラストルートセクション９６は、ブートローダＡセクション９８、ブートローダＢセクション１００、及び／又はランタイムイメージセクション１０２のようなプログラミングされるそれぞれのセクションに関連付けられたデジタル署名を検証し得るコードを含み得る。セキュアなＤＦＵモデルにおいて、任意のセクションの再プログラミングは、アクセス権が書き込み可能であり、かつ、新たなイメージが有効なデジタル署名を有する場合のみ許可され得る。（複数の）ブートローダは、実際の署名検証を実行するようセキュアなコード関数呼び出しをトラストルートセクション９６に対して用い得る。いくつか実施形態において、トラストルートセクション９６は、例えば、トラステッド プラットフォーム モジュール（ＴＰＭ）のような別個の周辺デバイスに物理的に配置され得る。
【００２３】
いくつか実施形態において、ポートコントローラの製造者は、ＤＦＵブートローダの代わりにベンダ独自ブートローダを提供し得る。ベンダのブートローダは、多くの場合、「マスキングされたＲＯＭ」のような再プログラミング不可能なメモリ内にある。ベンダは、例えば、ＵＳＢ、Ｉ^2 Ｃ（相互集積回路、例えば、Ｉ^2 Ｃ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ＵＭ１０２０４，Ｒｅｖ．０３，Ｊｕｎｅ  １９，２００７，ＮＸＰ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒｓ）、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）などのような予期されるインタフェースポートのタイプを定め得る。このような場合、デバッグツール１０（図１）は、ベンダによって提供されるツール又は単にデバッグコンピューティングシステム１２（図１）に戻るようルーティングされた適切なケーブルで取り替えられ得る。
【００２４】
図５は、デバッグツール１０の一例をより詳細に示す。概して、デバッグツール１０は、デバッグポート１０４及びデバッグポート１０４を介してデバッグモード要求を例えば、ターゲットデバイス２０（図１および２）のようなターゲットデバイスの外部ポートへ送信するロジックを有するコントローラ１０６を含み得る。より具体的には、コントローラ１０６のロジックは、デバッグポート１０４へのイネーブルコンタクト１０８を介してイネーブル信号をアサートし得、所定の抵抗をデバッグポート１０４に加え得、及び電力をデバッグポート１０４に加え得る。例えば、第１のスイッチ１１０は、デバッグポート１０４の第１コンフィギュレーションチャネル（ＣＣ１）コンタクト１１２に結合され得、第１の抵抗１１４（例えば、Ｒｄ）は、第１のスイッチ１１０に結合され得、コントローラ１０６のロジックは、第１のスイッチ１１０をアクティブ化（例えば、プルダウン）して所定の抵抗をデバッグポート１０４に加え得る。同様に、第２のスイッチ１１６は、第２コンフィギュレーションチャネル（ＣＣ２）コンタクト１１８に結合され得、第２の抵抗１２０（例えば、Ｒｄ）は、第２のスイッチ１１６に結合され得、コントローラ１０６のロジックは、第２のスイッチ１１６をアクティブ化（例えば、プルダウン）して所定の抵抗をデバッグポート１０４に加え得る。
【００２５】
図示されているデバッグツール１０はまた、デバッグポート１０４の電圧バスコンタクト１２４に結合されたパワートランジスタのセット１２２及びパワートランジスタのセット１２２に結合された電力ポート１２６を含む。したがって、電力ポート１２６が電源に結合される場合、コントローラ１０６のロジックは、パワートランジスタのセット１２２をアクティブ化して電力をデバッグポート１０４に加え得る。したがって、電力をデバッグポート１０４に加えることによって、デバッグツール１０が例えば、既に説明された分割線５０（図２）のようなターゲットデバイスのパワーアイランド分割線より下の回路を動作するのに十分な電力を駆動することを可能にし得る。コントローラ１０６のロジックはまた、デバッグポート１０４のシリアルデータコンタクト１２８（例えばＤＦＵ＿ＳＤＡ）を介して１又は複数のコマンド及び／又はコード（例えば、ランタイムファームウェアイメージ、デバッグブートローダ）をターゲットデバイスの外部ポートへ送信し得、１又は複数のコマンドは、再プログラムコマンド、診断用コマンドなど又はこれらの任意の組み合わせを含み得る。さらに、コントローラ１０６のロジックは、デバッグポート１０４のリセットコンタクト１３０（例えば、ＤＦＵ＿ＲＥＳＥＴ＃）を介してリセットコマンドをターゲットデバイスの外部ポートへ送信し得る。コマンドは、外部ポート１３２を介して例えば、システム１２（図１）のようなデバッグコンピューティングシステムから受信され得る。代替的に、デバッグツール１０は、既に言及したようにデバッグコンピューティングシステム中に組み込まれ得る。
【００２６】
ここで図６を参照すると、デバッグツールを動作させる方法１３４が示されている。方法１３４は、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ファームウェア、フラッシュメモリなどのような機械可読記憶媒体又はコンピュータ可読記憶媒体、例えば、ＰＬＡ、ＦＰＧＡ、ＣＰＬＤのような構成可能なロジック、例えば、ＡＳＩＣ、ＣＭＯＳ又はＴＴＬ技術のような回路技術を用いる固定機能ロジックハードウェア、又はこれらの任意の組み合わせに格納されたロジック命令のセットとして１又は複数のデバッグコントローラモジュールにおいて実装され得る。図示されている処理ブロック１３６では、イネーブル信号をデバッグツールのデバッグポートへアサートすることを提供し、ブロック１３８では所定の抵抗がデバッグポートに加えられ得る。さらに、図示されているブロック１４０では、電力をデバッグポートに加える。したがって、ブロック１３６、１３８および１４０では、デバッグモード要求をターゲットデバイスの外部ポートへ送信することを提供し得る。
【００２７】
ブロック１４２では、任意のｐｉｎｇコマンドがデバッグポートへ送信され得、図示されているブロック１４４では、ｐｉｎｇコマンドがターゲットデバイスによって受信確認されているかどうかを判断する。結果が否定的な場合、ブロック１４２ではｐｉｎｇコマンドが再送信され得る。そうでなければ、通信プログラムパスをポートコントローラへ開けることが検証され、ブロック１４６では、コマンドをデバッグポートへ送信し得る。コマンドは、例えば、再プログラムコマンド、診断用コマンドなど又はこれらの任意の組み合わせを含み得る。したがって、コマンドは、例えば、他のコンポーネントチップ内のレジスタの読み込み／書き込み、メモリの調査、ブレークポイントの設定、シングルステップなどのような様々なデバッグアクションを提供し得る。図示されているブロック１４８では、コマンド送信シーケンスがされるかどうかを判断する。結果が否定的な場合、ブロック１４６では次のコマンドがデバッグポートへ送信され得る。コマンド送信シーケンスが完了した場合、ブロック１５０では、イネーブル信号をデアサートし得、図示されているブロック１５２では、リセットコマンドをデバッグポートへ送信する。追加の留意点及び例
【００２８】
例１は、再プログラミング可能なターゲットデバイスであって、外部ポートを含むコネクタと、ロジックを含むポートコントローラと、を備え、上記ロジックは、上記外部ポートを介してデバッグモード要求を検出し、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化し、上記プログラムパスを介して受信された１又は複数のコマンドを処理する、デバイス、を含み得る。
【００２９】
例２は、上記外部ポート及び上記ポートコントローラに結合されたマルチプレクサをさらに備え、上記ロジックは、ルーティング信号を上記マルチプレクサへ送信して上記プログラムパスをアクティブ化する、例１に記載のデバイス、を含み得る。
【００３０】
例３は、ホストプロセッサをさらに備え、上記プログラムパスは、上記ホストプロセッサを迂回する、例１に記載のデバイス、を含み得る。
【００３１】
例４は、上記１又は複数のコマンドは、上記デバイスの外部にある電力を用いて処理される、例１に記載のデバイス、を含み得る。
【００３２】
例５は、上記ポートコントローラに関連付けられた不揮発性メモリをさらに備え、上記ロジックは、上記プログラムパスを介してコードを受信し、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち１又は複数を含み、上記コードを上記不揮発性メモリへ格納する、例１に記載のデバイス、を含み得る。
【００３３】
例６は、上記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、例１から５のいずれか一例に記載のデバイス、を含み得る。
【００３４】
例７は、デバッグポートと、コントローラと、を備え、上記コントローラは、上記デバッグポートを介してデバッグモード要求をターゲットデバイスの外部ポートへ送信するロジックを有する、デバッグツール、を含み得る。
【００３５】
例８は、上記デバッグモード要求を送信すべく、上記ロジックは、イネーブル信号を上記デバッグポートへアサートし、所定の抵抗を上記デバッグポートに加え、電力を上記デバッグポートに加える、例７に記載のデバッグツール、を含み得る。
【００３６】
例９は、上記デバッグポートの第１のコンフィギュレーションチャネルコンタクトに結合された第１のスイッチと、上記第１のスイッチに結合された第１の抵抗と、上記デバッグポートの第２のコンフィギュレーションチャネルコンタクトに結合された第２のスイッチと、上記第２のスイッチに結合された第２の抵抗と、をさらに備え、上記ロジックは、上記第１のスイッチ及び上記第２のスイッチをアクティブ化して、上記所定の抵抗を上記デバッグポートに加える、例８に記載のデバッグツール、を含み得る。
【００３７】
例１０は、上記デバッグポートの電圧バスコンタクトに結合されたパワートランジスタのセットと、上記パワートランジスタのセットに結合された電力ポートと、をさらに備え、上記ロジックは、上記パワートランジスタのセットをアクティブ化して、電力を上記デバッグポートに加える、例７に記載のデバッグツール、を含み得る。
【００３８】
例１１は、上記ロジックは、上記デバッグポートを介して１又は複数のコマンドを上記ターゲットデバイスの上記外部ポートへ送信し、上記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、例７から１０のいずれか一例に記載のデバッグツール、を含み得る。
【００３９】
例１２は、上記ロジックは、上記デバッグポートを介してコードを上記ターゲットデバイスの上記外部ポートへ送信し、上記コードは、ランタイムファームウェアイメージ又はデバッグブートローダのうちの１つを含む、例７から１０のいずれか一例に記載のデバッグツール、を含み得る。
【００４０】
例１３は、ポートコントローラを動作させる方法であって、上記ポートコントローラで、コネクタの外部ポートを介してデバッグモード要求を検知する段階と、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化する段階と、上記ポートコントローラで、上記プログラムパスを介して受信された１又は複数のコマンドを処理する段階と、を備える、方法、を含み得る。
【００４１】
例１４は、上記プログラムパスをアクティブ化する段階は、ルーティング信号を上記外部ポートに結合されたマルチプレクサへ送信する段階を有する、例１３に記載の方法、を含み得る。
【００４２】
例１５は、上記プログラムパスは、上記ポートコントローラを含むターゲットデバイスのホストプロセッサを迂回する、例１３に記載の方法、を含み得る。
【００４３】
例１６は、上記１又は複数のコマンドは、上記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、例１３に記載の方法、を含み得る。
【００４４】
例１７は、上記プログラムパスを介してコードを受信する段階であって、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち１又は複数を含む、段階と、上記コードを上記ポートコントローラに関連付けられた不揮発性メモリへ格納する段階と、をさらに備える、例１３に記載の方法、を含み得る。
【００４５】
例１８は、上記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、例１３から１７のいずれか一例に記載の方法、を含み得る。
【００４６】
例１９は、ポートコントローラによって実行される場合、コネクタの外部ポートを介してデバッグモード要求を検出することと、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化することと、上記プログラムパスを介して受信された１又は複数のコマンドを処理することと、を上記ポートコントローラにさせる命令のセットを備える、少なくとも１つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【００４７】
例２０は、上記命令は、実行される場合、ルーティング信号を上記外部ポートに結合されたマルチプレクサへ送信して上記プログラムパスをアクティブ化することを上記ポートコントローラにさせる、例１９に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【００４８】
例２１は、上記プログラムパスは、上記ポートコントローラを含むターゲットデバイスのホストプロセッサを迂回する、例１９に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【００４９】
例２２は、上記１又は複数のコマンドは、上記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、例１９に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【００５０】
例２３は、上記命令は、実行される場合、上記プログラムパスを介してコードを受信することと、上記コードを上記ポートコントローラに関連付けられた不揮発性メモリへ格納することと、を上記ポートコントローラにさせ、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち１又は複数を含む、例１９に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【００５１】
例２４は、上記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、例１９から２３のいずれか一例に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【００５２】
例２５は、上記ポートコントローラで、コネクタの外部ポートを介してデバッグモード要求を検知する手段と、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化する手段と、上記ポートコントローラで、上記プログラムパスによって受信された１又は複数のコマンドを処理する手段と、を備える、デバッグツール、を含み得る。
【００５３】
例２６は、上記プログラムパスをアクティブ化する上記手段は、ルーティング信号を上記外部ポートに結合されたマルチプレクサへ送信する手段を有する、例２５に記載のデバッグツール、を含み得る。
【００５４】
例２７は、上記プログラムパスは、上記ポートコントローラを含むターゲットデバイスのホストプロセッサを迂回する、例２５に記載のデバッグツール、を含み得る。
【００５５】
例２８は、上記１又は複数のコマンドは、上記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、例２５に記載のデバッグツール、を含み得る。
【００５６】
例２９は、上記プログラムパスを介してコードを受信する手段であって、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち１又は複数を含む、手段と、上記コードを上記ポートコントローラに関連付けられた不揮発性メモリへ格納する手段と、をさらに備える、例２５に記載のデバッグツール、を含み得る。
【００５７】
例３０は、上記１又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち１又は複数を含む、例２５から２９のいずれか１つに記載のデバッグツール、を含み得る。
【００５８】
実施形態は、全てのタイプの半導体集積回路（「ＩＣ」）チップでの使用のために適用可能である。これらのＩＣチップの例は、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ（ＰＬＡ）、メモリチップ、ネットワークチップ、システムオンチップ（ＳｏＣ）、ＳＳＤ／ＮＡＮＤコントローラＡＳＩＣ、及び同様のものを含むが、これらに限定されない。加えて、図面のいくつかにおいて、信号線が線で表されている。いくつかは、信号線を構成するより多くの信号経路を示すよう異なり得、信号線を構成する多くの成分信号経路を示すよう番号ラベルを有し得、及び／又は、情報の主たるフロー方向を示すよう１又は複数の端で矢印を有し得る。しかしながら、これは、限定的な態様に解釈すべきではない。むしろ、そのような付加された詳細は、より容易な回路の理解を容易にするべく１又は複数の例示的な実施形態に関連して用いられ得る。任意の表された信号線は、追加的な情報を有していてもいなくても、複数の方向に移動し得、任意の好適なタイプの信号スキーム、例えば、差動対、光学ファイバ線及び／又はシングルエンド線で実装されるデジタル又はアナログ線、で実装され得る１又は複数の信号を実際に含み得る。
【００５９】
実施形態は、同一のサイズ／モデル／値／範囲に限定されないが、例示的なサイズ／モデル／値／範囲が与えられ得る。製造技術（例えば、フォトリソグラフィ）が時間の経過と共に成熟するにつれ、より小さいサイズのデバイスが製造され得ることが予期される。加えて、ＩＣチップ及び他のコンポーネントへの周知の電力／接地接続は、例示及び検討の簡略のため及び実施形態の特定の態様を不明瞭にしないように図中で示されてもよく、示されていなくてもよい。さらに、実施形態を不明瞭にすることを回避すべく、そしてまた、ブロック図の配置の実装に関連する詳細は、実施形態が実装されるプラットフォームに強く依存する、すなわち、そのような詳細は、十分に当業者の範囲内であるだろう、という事実を考慮して、配置はブロック図の形式で示され得る。具体的な詳細（例えば、回路）が、例示的な実施形態を説明すべく明記される場合には、実施形態が、これら具体的な詳細の変更を伴わず又は伴って実施され得ることは、当業者には明らかだろう。したがってこの説明は、限定的ではなく例示的なものとみなされるべきである。
【００６０】
「結合される」という用語は、対象のコンポーネント間の直接的又は間接的な、任意のタイプの関係を指すのに本明細書で用いられてよく、電気、機械的、流体、光学、電磁、電気機械又は他の接続に適用され得る。加えて、「第１」、「第２」などの用語は、検討を容易にするためにのみ本明細書で使用され得、別段の指示がない限り、特定の時間的又は経時的な意義をもっていない。
【００６１】
当業者は、実施形態の幅広い技術が様々な形式で実装されることができることを、前述の説明から理解するだろう。したがって、実施形態がこれらの特定の例に関連して説明されている一方、他の修正が、図面、明細書及び以下の請求項の検討の際に当業者に明らかになるであろうから、実施形態の真の範囲は、そのように制限されるべきではない。
【図１】
0006790325.tif 000002
【図２】
0006790325.tif 000003
【図３Ａ】
0006790325.tif 000004
【図３Ｂ】
0006790325.tif 000005
【図３Ｃ】
0006790325.tif 000006
【図３Ｄ】
0006790325.tif 000007
【図４】
0006790325.tif 000008
【図５】
0006790325.tif 000009
【図６】
0006790325.tif 000010