私は組み込みシステムにかなり慣れていないので、この用語が常に使われているのを見続けていますが、それが何であるかをよく理解できません。オンラインでクイック検索すると、ウィキペディアのページhttps://en.wikipedia.org/wiki/Joint_Test_Action_Groupが表示されます。このページでは、デバッグ用のプロトコルとして説明されています。しかし、他のコンテキストでは、プログラマのようにチップのメモリをプログラムできるように使用していました。それは何ですか?
私は組み込みシステムにかなり慣れていないので、この用語が常に使われているのを見続けていますが、それが何であるかをよく理解できません。オンラインでクイック検索すると、ウィキペディアのページhttps://en.wikipedia.org/wiki/Joint_Test_Action_Groupが表示されます。このページでは、デバッグ用のプロトコルとして説明されています。しかし、他のコンテキストでは、プログラマのようにチップのメモリをプログラムできるように使用していました。それは何ですか?
回答:
USB、SPI、I2C、およびその他の「バス」に似ており、多くの一般的な用途があります。
特に、各部品に多すぎる投資をする前のシリコンのテストです。たとえば、チップがウェーハ上にある間に、ほとんどの部品を確認できます。ウェーハのダイシングが許可されると損傷が発生する可能性があるため、再度テストする必要がありますが、梱包前、後などにテストすることもできます。
これを使用して、ボードで境界スキャンを実行できます。生産ラインでボードを取ることができます(ボードを正しく設計する必要があり、チップの一部はこれをサポートする必要があります)が、低速接続テストを実行し、トレースの一端のピンを刺激し、他をスキャンできますボードの設計に従って、接続されているかどうかを確認します。
チップには既にこれらの専用ピンがあるため、プロセッサでは、同じインターフェイスをオンチップデバッガ(OCD)と通信する方法として使用し、プロセッサに何かを設計し、jtagを介して通信できるようにします。
これは、一連のビットを送信したり、一連のビットを取得したりするチェーン上のものを分離するための汎用的な方法です。小さい数字から大きい数字までのビット数。デバッガの場合、当然、チップ内のレジスタサイズのもの(16ビットレジスタまたは32ビット)に対して書き込みまたは読み取りが行われます。しかし、シリコンまたはボードのテストでは、スキャンチェーンは数十ビットになる場合があります。必要に応じて、対処する個々の物のサイズは、他の物とは異なる場合があり、比較的少数のピンを備えた非常に用途の広いバスになり、これらのタイプのユースケースに適しています。
おそらくソフトウェアデバッグの人気のために、マイクロコントローラのピン数を節約するための2つのピンソリューションがあり、おそらく他のソリューションは採用しないでしょう。
JTAGはもともと、アセンブリ後にPCBをテストするために使用されるインターフェイスでした。チップ上のIOラインは、JTAGポートを介して制御および読み取りでき、ボードテストシーケンスを実行できます。その後、プログラミングおよびデバッグインターフェイスとしても使用されるようになりました。JTAGを介して利用できる機能は、対象の特定のICによって異なります。
他のほとんどのプログラミングインターフェイスに対するJTAGの利点の1つは、デバイスをデイジーチェーン接続できることです。そのため、1つのJTAGポートが複数のデバイスのプログラム/デバッグ/テストに使用できます(ただし、異なるブランドのチップを異なるチェーンに分割できるようにシステムを設計することをお勧めしますが、低レベルのJTAGプロトコルは残念ながら必要なツールをかなり標準化しています)チップはプログラム/デバッグできません)。
JTAGはやや奇妙な用語です。まず、この用語は、クロック信号(TCK)、モード選択(TMS)、およびデータ入出力(TDI / TDO)で構成される特定のコネクタとプロトコルを指定できます。これはデバイスのネットワークで構成され、各デバイスのTDOは、いわゆるスキャンチェーンで次のデバイスのTDIに接続されます。TMSは、すべてのデバイスを同時にさまざまなモードにするために使用されます。
スキャンチェーン上のデバイスは、通常、個々のデバイスのレジスタで構成される1つの大きなシフトレジスタとして接続されます。デバイスがSHIFT_IRまたはSHIFT_DR状態にあるとき、それらは命令チェーンとデータレジスタの2つの一時レジスタの1つをスキャンチェーンに接続します。
値がシフトインされると、TCKを切り替えながらTMSを適切に設定することにより、UPDATE_IRまたはUPDATE_DRモードをアクティブにできます。この時点で、レジスタにシフトされた値は「有効になります」。たとえば、さまざまなシーケンスをFPGAのIRにシフトし、UPDATE_IRに移行すると、FPGAはコンフィギュレーション、リードバック、通常のランタイムなどのさまざまなモードに入り、デザインでインスタンス化された特定のユーザーレジスタおよびJTAG固有のプリミティブにアクセスします。
同様に、キャプチャ状態を使用してデバイスから値を「読み取り」、IRまたはDRに入れ、TDOを介してシフトアウトし、最終的にJTAGプログラマーが読み取ります。
JTAGは、複雑なIC内の内部レジスタへのアクセスを許可するために、シリアルプロトコルといくつかのコマンドを定義します。これにより、テスターは少数のピンを使用して標準的な方法で可観測性と制御性を得ることができます。
元の用途は「境界スキャン」で、すべてのI / Oピンを読み取り、チップを囲む大きなシフトレジスタで駆動できました。ただし、メモリを含むチップの内部にアクセスするためのシフトレジスタを追加するために、すぐに拡張されました。
JTAGをビットバンすることはめったにありません。通常は、ICメーカーが提供し、テストシステムとテストアクセスアダプターが使用するライブラリ(別名ドライバー)を介してアクセスします。
JTAGには「意味」があり、JTAGには「意味」があります。他の人がJTAG指摘したようにように、試験を製造するための業界標準バス・インタフェース「である」J OINT T EST A ction Gの競売を。
組み込みソフトウェア開発者にとってJTAGが「意味する」ことは、チップ上で実行されている組み込みソフトウェアの外部デバッグ用のSoC /マイクロプロセッサ上のデバッグインターフェイスです。市場のほぼすべてのCPU / SoCは、製造テストだけでなく、ソフトウェアデバッグサポートのためにJTAGインターフェイスを使用しています。サーバークラスのx86 CPUから50ドル未満のホームWiFiルーターまで、すべてにJTAGインターフェイスがあります。適切なインターフェイスハードウェアと適切なソフトウェアにより、これらのインターフェイスはメモリの読み取り/書き込み、ブレークポイントの設定、およびシングルステップコードの機能を付与します。
もちろん重要なのは、適切なハードウェアとソフトウェアを入手することです。基本的なJTAGインターフェイスは標準化されていますが、デバイスで使用可能な特定のソフトウェアデバッグ機能は標準化されていない場合があります。JTAGはTCP / IPに似ています。アプリケーションスタックの中央に存在します。機器と通信するには適切な物理層が必要です(つまり、このものが10-Base-2を使用しているという意味ですか?!?!?)。また、その上に適切なアプリケーションソフトウェアが必要です(つまり、Gopherが必要です)クライアント?!?!?!)。ただし、ARMエコシステムの強さにより、ある程度の標準化が進んでいます(OpenOCDを参照)。
また、JTAGを使用してフラッシュをプログラムすることについても質問しました。はい、一部のソフトウェアはその目的にも使用します。SoCは、JTAG機能を提供してCPUメモリアドレス空間の読み取り/書き込みを行い、フラッシュコントローラーへの直接アクセスを提供し、少なくともJTAGはチップのエッジのI / Oピンへの生の低レベルアクセスを提供します(これはJTAGの本来の目的。製造テスト中のチップ間相互接続の連続性テスト、つまり「JTAGバウンダリスキャン」を有効にします。これらの機能はいずれも、デバイスが誤って「ブリック」された場合に、フラッシュチップを再プログラムするために必要な信号を駆動するために、賢いプログラマーによって使用できます。