(58)【調査した分野】(Int.Cl.,DB名)
前記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、請求項1から3のいずれか一項に記載のターゲットデバイス。
前記プログラムパスを介してコードを前記ポートコントローラによって受信する段階であって、前記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち1又は複数を含む、段階と、
前記コードを前記ポートコントローラに関連付けられた不揮発性メモリへ前記ポートコントローラによって格納する段階と、
をさらに備える、請求項5または6に記載の方法。
前記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、請求項5から7のいずれか一項に記載の方法。
前記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、請求項9から11のいずれか一項に記載のプログラム。
【発明を実施するための形態】
【0006】
ここで
図1を参照すると、ポート再プログラミング構成が示されており、ここでは、ポートコントローラ14を再プログラミングするのにデバッグツール10及びデバッグコンピューティングシステム12が用いられる。概して、ポートコントローラ14は、マザーボード16又は他の適切な回路基板及び/又は、再プログラミング可能なターゲットデバイス20(例えば、サーバ、デスクトップコンピュータ、ノートブックコンピュータ、タブレット型コンピュータ、コンバーチブル型タブレット、スマートフォン、携帯情報端末/PDA、モバイルインターネットデバイス/MID、メディアプレイヤー、ウェアラブルコンピュータ、など)の筐体18の中に含まれるサブシステム上に搭載され得る。図示されている例において、ポートコントローラ14は、ターゲットデバイス20から外側に面する外部ポート22(例えば、レセプタクル)に電気的に結合され、ターゲットデバイス20の筐体18を開けることなくデバッグツール10によってアクセス可能である。一例において、外部ポート22及びポートコントローラ14は、USB Type‐Cインタフェースを構成する。
【0007】
より詳細に説明されるように、デバッグツール10は、ターゲットデバイスの外部ポート22及びデバッグコンピューティングシステム12の外部ポート24に容易に結合され得、デバッグコンピューティングシステム12のシステムオンチップ(SoC)26(例えば、ホストプロセッサ、チップセット、入力/出力モジュール)上で動作するデバイスファームウェアアップデート(DFU)アプリケーションが、デバッグツール10及び外部ポート22を介してポートコントローラ14の再プログラミングを命令/制御し得る。したがって、図示されているアプローチは、筐体18を開けること又はターゲットデバイス20のSoC28上でDFUを動作させることを伴わないポートコントローラ14を再プログラミングする高速で、便利で、及び安価な解決手段を提供し得る。デバッグツール10はまた、筐体18を開けることなくSoC28及び/又はターゲットデバイス20の他のサブシステムを診断するのに用いられ得る。
【0008】
図2は、ターゲットデバイス20の一例をより詳細に示す。図示されている例において、外部ポート22は、コンフィギュレーションチャネルコンタクト(例えば、CC1、CC2)のセット34、電圧バスコンタクト36(例えば、Vbus)及びケーブル方向マルチプレクサ30(MUX)に結合された残りのコンタクトのセット32を含む。動作中、ポートコントローラ14は、ターゲットデバイス20が外部ポート22で接合された別のポート(例えば「ポートパートナー」、不図示)に対して「ホスト」して振る舞うか「デバイス」として振る舞うかどうかを判断すべく、アナログデジタル(A/D)変換及び/又は電圧コンパレーター(不図示)を用いて、コンフィギュレーションチャネルコンタクトのセット34を監視し得る。ポートコントローラ14はまた、コンフィギュレーションチャネルコンタクトのセット34を用いてポートパートナーの方向を判断し得、及びケーブル方向選択信号38を用いてケーブル方向マルチプレクサ30を制御し得、これにより、残りのコンタクトのセット32は、例えば、SoC28のようなマルチプレクサ30上の回路に対して「正しい側が上に」現れる。特に注目すべきなのは、図示されている例において、残りのコンタクトのセット32がポートコントローラ14で終端しないことである。
【0009】
オルタネートモードマルチプレクサのセット40(40a‐40d)が、ケーブル方向マルチプレクサ30に結合され得、オルタネートモードマルチプレクサのセット40は、概してポリシーエンジン44からのオルタネートモード選択信号42及び/又はポートコントローラ14からのオーディオアクセサリー選択信号43に基づいて残りのコンタクトのセット32からSoC28(28a‐28d)のコンポーネントへ信号をルーティングし得る。例えば、第1SoCコンポーネント28aは、USBコントローラホストポートを含むかもしれなく、第2SoCコンポーネント28bは、DISPLAYPORTコントローラソースポートを含み得、第3SoCコンポーネント28cは、オーディオコーデックを含むかもしれなく、第4SoCコンポーネント28dは、ホストプロセッサを含み得る等々あり、通常の動作中、ターゲットデバイス20とポートパートナーとの間の通信は、オルタネートモード選択信号42及び/又はオーディオアクセサリー選択信号43に応じてSoCのコンポーネントの様々な組み合わせを伴い得る。
【0010】
ポリシーエンジン44は、代替的にポートコントローラ14に埋め込まれ得る。そのようなアプローチは、ポリシーエンジン44とポートコントローラ14との間の通信リンク45の除去を可能にし得、SoC28上で動作しているかもしれないマルウェアからのポリシーエンジン44の隔離を提供し得る。ポリシーエンジン44の図示されている配置は、一方で、SoC28上で動作するソフトウェアによるリアルタイムポリシー制御/修正を可能にし得る。
【0011】
さらに、ターゲットデバイス20は、電力アイランド分割線50によってパーティショニングされ得、これにより、線50より下の全ての回路は、回路がターゲットデバイス20の筐体18(
図1)内に配置された内部電源によって又は例えば、外部ポート22の電圧バスコンタクト36上で提供されるデバッグツールの外部電源よって提供されるいずれかの電力から電源を入れることを可能にする専用の電圧レギュレータ(不図示)を有する。したがって、図示されているポートコントローラ14は、たとえターゲットデバイス20が内部電力(例えば、バッテリー切れ)を欠いている場合であっても、電源を入れること、動作すること及び再プログラミングされることができる。この点において、ポートコントローラ14はまた、電流がマザーボード16(
図1)内に又は外へ流れることを可能にすべく、電力選択信号52を電力スイッチ54へアサートし得る。ターゲットデバイス20はまた、外部電源によって分割線50より上の回路が電力を供給されることを可能にすべく、適切な電力レール55のルーティング及び/又は、電圧レギュレーションで構成され得る。
【0012】
図示されている例において、ポートコントローラ14は、外部ポート22とポートコントローラ14との間のプログラムパス48をアクティブ化すべく、外部ポート22を介してデバッグモード要求を検出し、ルーティング信号46をオルタネートモードマルチプレクサ40bへアサートする。したがって、ポートコントローラ14は、プログラムパス48を介してコマンド及び/又はコードを選択的に受信し得、プログラムパス48は、第4SoCコンポーネント28d(例えば、ホストプロセッサ)及びSoC28の他のコンポーネントを迂回する。コマンドは、例えば、再プログラムコマンド、リセットコマンド、診断用コマンドなどを含み得、コードは、ランタイムファームウェアイメージ、デバッグブートローダなどを含み得る。より詳細に説明されるように、ポートコントローラ14は、コードをポートコントローラ14に関連付けられた不揮発性メモリ(NVM)56へ格納し得る。
【0013】
ここで
図3Aから3Dを参照すると、不揮発性メモリセクションが、様々な異なるコンフィギュレーションで示されている。図示されているメモリセクションのそれぞれは、NVM56(
図2)の代わりに容易に用いられ得る。概して、ポートコントローラの不揮発性メモリ(例えば、フラッシュ)は、「セクション」と称される非オーバーラップ領域に分割され得、それらのセクションは連続的であっても不連続的であってもよい。それぞれのセクションは、開始アドレス(例えば、それがメモリのどこで開始するのか)、長さ(例えば、それがメモリのどれくらいのバイトを占領するか)、アクセス権(例えば、ソフトウェアによってセクションがどのように使用され得るかを制御する)などを含むがこれらに限定されない属性を有し得る。
【0014】
セクションのアクセス権は、読み込み(例えば、DFUソフトウェアが、セクションのコンテンツを読み出し得る)、書き込み(例えば、DFUソフトウェアが、セクションのコンテンツを再プログラミングし得る)、実行(例えば、セクションが、実行され得る有効コードを含む)などを含み得るがこれらに限定されない。さらに、ポートコントローラプロトコルは、「rwx」(読み込み、書き込み、実行)のようなこれらアクセス権の簡略表現を用い得、いずれの利用不可能なアクセス権も、「rw‐」(読み込み、書き込み、実行不可能)のようにハイフンで置き換えられ得る。
【0015】
特に
図3Aを参照すると、ポートコントローラは、リセット60を検知したことに応じてアドレス0Kから実行を開始し得る。図示されているメモリは、ブートローダセクション62及びランタイムイメージセクション64の2つのセクションに分割される。ブートローダセクション62は、リセット60後、最初に実行され得る。ランタイムイメージセクション64は、ポートコントローラを(例えば、インタフェースの仕様にしたがって)動作させるファームウェアを含む。
【0016】
図4は、ポートコントローラを動作させる方法66を示す。方法66は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなどのような機械可読記憶媒体又はコンピュータ可読記憶媒体、例えば、プログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブルロジックデバイス(CPLD)のような構成可能なロジック、例えば、特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)又はトランジスタ‐トランジスタロジック(TTL)技術のような回路技術を用いる固定機能ロジックハードウェア、又はこれらの任意の組み合わせに格納されたロジック命令のセットとして1又は複数のブートローダモジュールにおいて実装され得る。例えば、方法66で示されている動作を実行するコンピュータプログラムコードは、JAVA(登録商標)、SMALLTALK
(登録商標)、C++又は同様のもののようなオブジェクト指向プログラミング言語及びCプログラミング言語又は類似のプログラミング言語のような従来の手続き型のプログラミング言語を含む1又は複数のプログラミング言語の任意の組み合わせで書き込まれ得る。
【0017】
図示されているブロック67で、例えば、コンフィギュレーションチャネルコンタクトのセット34(
図2)のようなコンフィギュレーションチャネルコンタクト上で所定の電圧及び/又は抵抗を検知すること及び例えば、プログラムパス48(
図2)のようなプログラムパスを外部ポートとポートコントローラとの間でアクティブ化することを提供する。より詳細に説明されるように、所定の電圧は、特定の抵抗(例えば、Rd)がポートパートナーでコンフィギュレーションチャネルコンタクトのそれぞれに結合されていることを示し得る。ブロック68で、外部ポートのイネーブルピン/コンタクトを調べ得る。ブロック70で、イネーブル信号がイネーブルピン上でアサートされると判断される場合、ポートコントローラは、デバッグモード要求がポートパートナーによって発行されていることを判断し得る。そのような場合、ブロック72で、プログラムパスでコマンドを受け取り得、ブロック74でコマンドが、処理され得る。コマンドは、例えば、再プログラムコマンド、リセットコマンド、診断用コマンドなど又はこれらの任意の組み合わせを含み得る。再プログラムコマンドは、例えば、書き込みアクセスを有する任意のセクションを修正することを提供し得る。一例において、ブートローダセクションは、「‐‐x」というアクセス権を有し、したがって、実行され得るが、読み込み又は書き込みされない。
【0018】
ブロック76で、コマンドがリセットコマンドであるかとうかに関する判断がされ得る。結果が否定的な場合、図示されているブロック72で、次のコマンドが、プログラムパスで受け取られる。そうでなければ、方法66は、ブロック68へ戻り得、イネーブルピンを調べ得る。ブロック70で、イネーブル信号がイネーブルピン上でアサートされない(例えば、ポートパートナーが再プログラミング/診断を完了した)と判断される場合、ブロック78で、実行可能なランタイムイメージセクションへのジャンプが、実行され得る。ランタイムイメージセクションは、通常の動作中にポートコントローラによって用いられるファームウェアを含み得る。一例において、ランタイムイメージセクションは、「rwx」というアクセス権を有し、したがって、読み込まれ(例えば、バックアップコピーを作成するために)、書き込まれ(例えば、再プログラミングされ)、実行され得る。
【0019】
ここで
図3Bに戻って、実行は、リセットベクトル80と称されるアドレスにおいて代替的に開始し得、リセットベクトル80は、リセット及び割り込みベクトルセクション82の一部である。リセットベクトル80は、実行が継続するアドレス(又は「ジャンプ」命令及びアドレス)、この場合、ブートローダセクション84の先頭、を含み得る。ブートローダセクション84は、例えば、既に説明された方法66(
図4)のような方法を実装し得る。したがって、イネーブル信号がアサートされる場合、ランタイムイメージセクション86のコンテンツが、再プログラミングされ得る。そうでなければ、ブートローダセクション84は、ランタイムイメージセクション86の開始点へ実行をジャンプし得る。したがって、この例は、ブートローダセクション84をランタイムイメージセクション86から分け隔てる未使用領域88によって示されているように、いくつかのセクションが不連続であり得ることを示す。
【0020】
図3Cは、ブートローダ自体が再プログラミング可能(例えば、「‐‐x」の代わりに「‐wx」というアクセス権を有する)であり得、この場合、ブートローダが(例えば、新たな機能又はエラッタ訂正に起因して)アップグレードされる必要があることを明示する。ブートローダを破損する(例えば、再プログラミングの最中で電力故障が生じる)ことを防ぐべく、「ブートローダA」セクション90及び「ブートローダB」セクション92と称される2つの別個のコピーが定義され得る。最初は、リセット及び割り込みベクトルセクション94は、アクセス権‐wxを有するブートローダAセクション90を指し得、アクセス権‐w‐(例えば、実行不可能)を有するブートローダBセクション92を指さない。
【0021】
ブートローダがアップグレードされる必要がある場合、新たなブートローダイメージがブートローダBセクション92にプログラミングされ得る。この段階中に破損が生じる場合、復帰可能である有効で実行可能なコードが、ブートローダAセクション90内にまだ存在する。成功した/完了した/検証された再プログラミング後のみ、ブートローダBセクション92が、アクセス権「‐wx」でマーキングされ得、ブートローダAセクション90が、アクセス権「‐w‐」で再マーキングされ得、及びリセットベクトルが、ブートローダAの代わりにブートローダBを指すようアップデートされ得る。ここで、ブートローダAセクション90はまた、再プログラミングされ得る。この段階中に破損が生じる場合、有効で実行可能なコードが、動作するブートローダBセクション92内に既に存在する。
【0022】
ここで
図3Dを参照すると、「セキュアなDFU」シナリオが示されている。図示されている例において、アクセス権「‐‐x」を有するトラストルートセクション96は、JTAGを用いてのみシステム製造者によってインストール可能であり得る。したがって、トラストルートセクション96は、ブートローダAセクション98、ブートローダBセクション100、及び/又はランタイムイメージセクション102のようなプログラミングされるそれぞれのセクションに関連付けられたデジタル署名を検証し得るコードを含み得る。セキュアなDFUモデルにおいて、任意のセクションの再プログラミングは、アクセス権が書き込み可能であり、かつ、新たなイメージが有効なデジタル署名を有する場合のみ許可され得る。(複数の)ブートローダは、実際の署名検証を実行するようセキュアなコード関数呼び出しをトラストルートセクション96に対して用い得る。いくつか実施形態において、トラストルートセクション96は、例えば、トラステッド プラットフォーム モジュール(TPM)のような別個の周辺デバイスに物理的に配置され得る。
【0023】
いくつか実施形態において、ポートコントローラの製造者は、DFUブートローダの代わりにベンダ独自ブートローダを提供し得る。ベンダのブートローダは、多くの場合、「マスキングされたROM」のような再プログラミング不可能なメモリ内にある。ベンダは、例えば、USB、I^2 C(相互集積回路、例えば、I^2 C Specification UM10204,Rev.03,June 19,2007,NXP Semiconductors)、SPI(Serial Peripheral Interface)、UART(Universal Asynchronous Receiver/Transmitter)などのような予期されるインタフェースポートのタイプを定め得る。このような場合、デバッグツール10(
図1)は、ベンダによって提供されるツール又は単にデバッグコンピューティングシステム12(
図1)に戻るようルーティングされた適切なケーブルで取り替えられ得る。
【0024】
図5は、デバッグツール10の一例をより詳細に示す。概して、デバッグツール10は、デバッグポート104及びデバッグポート104を介してデバッグモード要求を例えば、ターゲットデバイス20(
図1および2)のようなターゲットデバイスの外部ポートへ送信するロジックを有するコントローラ106を含み得る。より具体的には、コントローラ106のロジックは、デバッグポート104へのイネーブルコンタクト108を介してイネーブル信号をアサートし得、所定の抵抗をデバッグポート104に加え得、及び電力をデバッグポート104に加え得る。例えば、第1のスイッチ110は、デバッグポート104の第1コンフィギュレーションチャネル(CC1)コンタクト112に結合され得、第1の抵抗114(例えば、Rd)は、第1のスイッチ110に結合され得、コントローラ106のロジックは、第1のスイッチ110をアクティブ化(例えば、プルダウン)して所定の抵抗をデバッグポート104に加え得る。同様に、第2のスイッチ116は、第2コンフィギュレーションチャネル(CC2)コンタクト118に結合され得、第2の抵抗120(例えば、Rd)は、第2のスイッチ116に結合され得、コントローラ106のロジックは、第2のスイッチ116をアクティブ化(例えば、プルダウン)して所定の抵抗をデバッグポート104に加え得る。
【0025】
図示されているデバッグツール10はまた、デバッグポート104の電圧バスコンタクト124に結合されたパワートランジスタのセット122及びパワートランジスタのセット122に結合された電力ポート126を含む。したがって、電力ポート126が電源に結合される場合、コントローラ106のロジックは、パワートランジスタのセット122をアクティブ化して電力をデバッグポート104に加え得る。したがって、電力をデバッグポート104に加えることによって、デバッグツール10が例えば、既に説明された分割線50(
図2)のようなターゲットデバイスのパワーアイランド分割線より下の回路を動作するのに十分な電力を駆動することを可能にし得る。コントローラ106のロジックはまた、デバッグポート104のシリアルデータコンタクト128(例えばDFU_SDA)を介して1又は複数のコマンド及び/又はコード(例えば、ランタイムファームウェアイメージ、デバッグブートローダ)をターゲットデバイスの外部ポートへ送信し得、1又は複数のコマンドは、再プログラムコマンド、診断用コマンドなど又はこれらの任意の組み合わせを含み得る。さらに、コントローラ106のロジックは、デバッグポート104のリセットコンタクト130(例えば、DFU_RESET#)を介してリセットコマンドをターゲットデバイスの外部ポートへ送信し得る。コマンドは、外部ポート132を介して例えば、システム12(
図1)のようなデバッグコンピューティングシステムから受信され得る。代替的に、デバッグツール10は、既に言及したようにデバッグコンピューティングシステム中に組み込まれ得る。
【0026】
ここで
図6を参照すると、デバッグツールを動作させる方法134が示されている。方法134は、RAM、ROM、PROM、ファームウェア、フラッシュメモリなどのような機械可読記憶媒体又はコンピュータ可読記憶媒体、例えば、PLA、FPGA、CPLDのような構成可能なロジック、例えば、ASIC、CMOS又はTTL技術のような回路技術を用いる固定機能ロジックハードウェア、又はこれらの任意の組み合わせに格納されたロジック命令のセットとして1又は複数のデバッグコントローラモジュールにおいて実装され得る。図示されている処理ブロック136では、イネーブル信号をデバッグツールのデバッグポートへアサートすることを提供し、ブロック138では所定の抵抗がデバッグポートに加えられ得る。さらに、図示されているブロック140では、電力をデバッグポートに加える。したがって、ブロック136、138および140では、デバッグモード要求をターゲットデバイスの外部ポートへ送信することを提供し得る。
【0027】
ブロック142では、任意のpingコマンドがデバッグポートへ送信され得、図示されているブロック144では、pingコマンドがターゲットデバイスによって受信確認されているかどうかを判断する。結果が否定的な場合、ブロック142ではpingコマンドが再送信され得る。そうでなければ、通信プログラムパスをポートコントローラへ開けることが検証され、ブロック146では、コマンドをデバッグポートへ送信し得る。コマンドは、例えば、再プログラムコマンド、診断用コマンドなど又はこれらの任意の組み合わせを含み得る。したがって、コマンドは、例えば、他のコンポーネントチップ内のレジスタの読み込み/書き込み、メモリの調査、ブレークポイントの設定、シングルステップなどのような様々なデバッグアクションを提供し得る。図示されているブロック148では、コマンド送信シーケンスがされるかどうかを判断する。結果が否定的な場合、ブロック146では次のコマンドがデバッグポートへ送信され得る。コマンド送信シーケンスが完了した場合、ブロック150では、イネーブル信号をデアサートし得、図示されているブロック152では、リセットコマンドをデバッグポートへ送信する。追加の留意点及び例
【0028】
例1は、再プログラミング可能なターゲットデバイスであって、外部ポートを含むコネクタと、ロジックを含むポートコントローラと、を備え、上記ロジックは、上記外部ポートを介してデバッグモード要求を検出し、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化し、上記プログラムパスを介して受信された1又は複数のコマンドを処理する、デバイス、を含み得る。
【0029】
例2は、上記外部ポート及び上記ポートコントローラに結合されたマルチプレクサをさらに備え、上記ロジックは、ルーティング信号を上記マルチプレクサへ送信して上記プログラムパスをアクティブ化する、例1に記載のデバイス、を含み得る。
【0030】
例3は、ホストプロセッサをさらに備え、上記プログラムパスは、上記ホストプロセッサを迂回する、例1に記載のデバイス、を含み得る。
【0031】
例4は、上記1又は複数のコマンドは、上記デバイスの外部にある電力を用いて処理される、例1に記載のデバイス、を含み得る。
【0032】
例5は、上記ポートコントローラに関連付けられた不揮発性メモリをさらに備え、上記ロジックは、上記プログラムパスを介してコードを受信し、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち1又は複数を含み、上記コードを上記不揮発性メモリへ格納する、例1に記載のデバイス、を含み得る。
【0033】
例6は、上記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、例1から5のいずれか一例に記載のデバイス、を含み得る。
【0034】
例7は、デバッグポートと、コントローラと、を備え、上記コントローラは、上記デバッグポートを介してデバッグモード要求をターゲットデバイスの外部ポートへ送信するロジックを有する、デバッグツール、を含み得る。
【0035】
例8は、上記デバッグモード要求を送信すべく、上記ロジックは、イネーブル信号を上記デバッグポートへアサートし、所定の抵抗を上記デバッグポートに加え、電力を上記デバッグポートに加える、例7に記載のデバッグツール、を含み得る。
【0036】
例9は、上記デバッグポートの第1のコンフィギュレーションチャネルコンタクトに結合された第1のスイッチと、上記第1のスイッチに結合された第1の抵抗と、上記デバッグポートの第2のコンフィギュレーションチャネルコンタクトに結合された第2のスイッチと、上記第2のスイッチに結合された第2の抵抗と、をさらに備え、上記ロジックは、上記第1のスイッチ及び上記第2のスイッチをアクティブ化して、上記所定の抵抗を上記デバッグポートに加える、例8に記載のデバッグツール、を含み得る。
【0037】
例10は、上記デバッグポートの電圧バスコンタクトに結合されたパワートランジスタのセットと、上記パワートランジスタのセットに結合された電力ポートと、をさらに備え、上記ロジックは、上記パワートランジスタのセットをアクティブ化して、電力を上記デバッグポートに加える、例7に記載のデバッグツール、を含み得る。
【0038】
例11は、上記ロジックは、上記デバッグポートを介して1又は複数のコマンドを上記ターゲットデバイスの上記外部ポートへ送信し、上記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、例7から10のいずれか一例に記載のデバッグツール、を含み得る。
【0039】
例12は、上記ロジックは、上記デバッグポートを介してコードを上記ターゲットデバイスの上記外部ポートへ送信し、上記コードは、ランタイムファームウェアイメージ又はデバッグブートローダのうちの1つを含む、例7から10のいずれか一例に記載のデバッグツール、を含み得る。
【0040】
例13は、ポートコントローラを動作させる方法であって、上記ポートコントローラで、コネクタの外部ポートを介してデバッグモード要求を検知する段階と、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化する段階と、上記ポートコントローラで、上記プログラムパスを介して受信された1又は複数のコマンドを処理する段階と、を備える、方法、を含み得る。
【0041】
例14は、上記プログラムパスをアクティブ化する段階は、ルーティング信号を上記外部ポートに結合されたマルチプレクサへ送信する段階を有する、例13に記載の方法、を含み得る。
【0042】
例15は、上記プログラムパスは、上記ポートコントローラを含むターゲットデバイスのホストプロセッサを迂回する、例13に記載の方法、を含み得る。
【0043】
例16は、上記1又は複数のコマンドは、上記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、例13に記載の方法、を含み得る。
【0044】
例17は、上記プログラムパスを介してコードを受信する段階であって、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち1又は複数を含む、段階と、上記コードを上記ポートコントローラに関連付けられた不揮発性メモリへ格納する段階と、をさらに備える、例13に記載の方法、を含み得る。
【0045】
例18は、上記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、例13から17のいずれか一例に記載の方法、を含み得る。
【0046】
例19は、ポートコントローラによって実行される場合、コネクタの外部ポートを介してデバッグモード要求を検出することと、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化することと、上記プログラムパスを介して受信された1又は複数のコマンドを処理することと、を上記ポートコントローラにさせる命令のセットを備える、少なくとも1つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【0047】
例20は、上記命令は、実行される場合、ルーティング信号を上記外部ポートに結合されたマルチプレクサへ送信して上記プログラムパスをアクティブ化することを上記ポートコントローラにさせる、例19に記載の少なくとも1つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【0048】
例21は、上記プログラムパスは、上記ポートコントローラを含むターゲットデバイスのホストプロセッサを迂回する、例19に記載の少なくとも1つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【0049】
例22は、上記1又は複数のコマンドは、上記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、例19に記載の少なくとも1つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【0050】
例23は、上記命令は、実行される場合、上記プログラムパスを介してコードを受信することと、上記コードを上記ポートコントローラに関連付けられた不揮発性メモリへ格納することと、を上記ポートコントローラにさせ、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち1又は複数を含む、例19に記載の少なくとも1つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【0051】
例24は、上記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、例19から23のいずれか一例に記載の少なくとも1つの非一時的なコンピュータ可読記憶媒体、を含み得る。
【0052】
例25は、上記ポートコントローラで、コネクタの外部ポートを介してデバッグモード要求を検知する手段と、上記デバッグモード要求に応えて上記外部ポートと上記ポートコントローラとの間のプログラムパスをアクティブ化する手段と、上記ポートコントローラで、上記プログラムパスによって受信された1又は複数のコマンドを処理する手段と、を備える、デバッグツール、を含み得る。
【0053】
例26は、上記プログラムパスをアクティブ化する上記手段は、ルーティング信号を上記外部ポートに結合されたマルチプレクサへ送信する手段を有する、例25に記載のデバッグツール、を含み得る。
【0054】
例27は、上記プログラムパスは、上記ポートコントローラを含むターゲットデバイスのホストプロセッサを迂回する、例25に記載のデバッグツール、を含み得る。
【0055】
例28は、上記1又は複数のコマンドは、上記ポートコントローラを含むターゲットデバイスの外部にある電力を用いて処理される、例25に記載のデバッグツール、を含み得る。
【0056】
例29は、上記プログラムパスを介してコードを受信する手段であって、上記コードは、ランタイムファームウェアイメージと、デバッグブートローダとのうち1又は複数を含む、手段と、上記コードを上記ポートコントローラに関連付けられた不揮発性メモリへ格納する手段と、をさらに備える、例25に記載のデバッグツール、を含み得る。
【0057】
例30は、上記1又は複数のコマンドは、再プログラムコマンドと、リセットコマンドと、診断用コマンドとのうち1又は複数を含む、例25から29のいずれか1つに記載のデバッグツール、を含み得る。
【0058】
実施形態は、全てのタイプの半導体集積回路(「IC」)チップでの使用のために適用可能である。これらのICチップの例は、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASIC、及び同様のものを含むが、これらに限定されない。加えて、図面のいくつかにおいて、信号線が線で表されている。いくつかは、信号線を構成するより多くの信号経路を示すよう異なり得、信号線を構成する多くの成分信号経路を示すよう番号ラベルを有し得、及び/又は、情報の主たるフロー方向を示すよう1又は複数の端で矢印を有し得る。しかしながら、これは、限定的な態様に解釈すべきではない。むしろ、そのような付加された詳細は、より容易な回路の理解を容易にするべく1又は複数の例示的な実施形態に関連して用いられ得る。任意の表された信号線は、追加的な情報を有していてもいなくても、複数の方向に移動し得、任意の好適なタイプの信号スキーム、例えば、差動対、光学ファイバ線及び/又はシングルエンド線で実装されるデジタル又はアナログ線、で実装され得る1又は複数の信号を実際に含み得る。
【0059】
実施形態は、同一のサイズ/モデル/値/範囲に限定されないが、例示的なサイズ/モデル/値/範囲が与えられ得る。製造技術(例えば、フォトリソグラフィ)が時間の経過と共に成熟するにつれ、より小さいサイズのデバイスが製造され得ることが予期される。加えて、ICチップ及び他のコンポーネントへの周知の電力/接地接続は、例示及び検討の簡略のため及び実施形態の特定の態様を不明瞭にしないように図中で示されてもよく、示されていなくてもよい。さらに、実施形態を不明瞭にすることを回避すべく、そしてまた、ブロック図の配置の実装に関連する詳細は、実施形態が実装されるプラットフォームに強く依存する、すなわち、そのような詳細は、十分に当業者の範囲内であるだろう、という事実を考慮して、配置はブロック図の形式で示され得る。具体的な詳細(例えば、回路)が、例示的な実施形態を説明すべく明記される場合には、実施形態が、これら具体的な詳細の変更を伴わず又は伴って実施され得ることは、当業者には明らかだろう。したがってこの説明は、限定的ではなく例示的なものとみなされるべきである。
【0060】
「結合される」という用語は、対象のコンポーネント間の直接的又は間接的な、任意のタイプの関係を指すのに本明細書で用いられてよく、電気、機械的、流体、光学、電磁、電気機械又は他の接続に適用され得る。加えて、「第1」、「第2」などの用語は、検討を容易にするためにのみ本明細書で使用され得、別段の指示がない限り、特定の時間的又は経時的な意義をもっていない。
【0061】
当業者は、実施形態の幅広い技術が様々な形式で実装されることができることを、前述の説明から理解するだろう。したがって、実施形態がこれらの特定の例に関連して説明されている一方、他の修正が、図面、明細書及び以下の請求項の検討の際に当業者に明らかになるであろうから、実施形態の真の範囲は、そのように制限されるべきではない。