私の組み込みプロジェクトでは、JTAG インターフェイスを使用してコードをダウンロードし、ダウンロードしたアプリケーションをデバッグしていますが、JTAG セットアップ内で何が起こっているのかわかりません。
私の開発システムをよりよく理解するのに本当に役立つJTAGセットアップの基本的なアイデア/フロー(ハイレベルビュー)を教えてください。
__関羽
私の組み込みプロジェクトでは、JTAG インターフェイスを使用してコードをダウンロードし、ダウンロードしたアプリケーションをデバッグしていますが、JTAG セットアップ内で何が起こっているのかわかりません。
私の開発システムをよりよく理解するのに本当に役立つJTAGセットアップの基本的なアイデア/フロー(ハイレベルビュー)を教えてください。
__関羽
クリフォードの答えに追加するために、ここにいくつかの写真があります:
http://www.fpga4fun.com/JTAG2.html
タップ コントローラーのステート マシンは、公開されてうんざりするようなものです。それは本当にJTAGの鍵です。Clifford が言ったように、オンチップ デバッグ レジスタにアクセスします。タップ コントローラー ステート マシンは、JTAG をサポートするすべてのデバイスに共通ですが、レジスターのアドレス、長さなどは JTAG を介して取得できます。また、何か役に立つことを行うために読み書きする必要がある順序は、ベンダーごとに大きく異なります。たとえば、一部の ARM テクニカル リファレンス マニュアル (さまざまなコア用) には、デバッグ TAP コントローラーの章があり、この図と、レジスターまたはメモリの読み取りと書き込み、またはプロセッサの停止などの手順に関する詳細な情報が含まれています。
プロセッサ デバッグに適用する場合 (JTAG はより一般的にバウンダリ スキャン テスト インターフェイスとして使用されるため)、JTAG は単にデバイスのオンチップ デバッグ ブロックおよびメモリ インターフェイスと通信する手段にすぎません。
JTAG 自体は単純な同期シリアル データ バスです。「JTAGチェーン」上のJTAGデバイスは、必要なデータがレジスタに入るまで、シフトレジスタを介してデータをクロックするだけです。オンチップ デバッグ レジスタにデータを取得するために必要なクロック数は、シフト レジスタの長さと、同じデバッグ チェーン上の前のデバイスのレジスタの長さによって異なります。JTAG はループで動作するため、チェーンの合計ビット長に等しい遅延でデータ出力がデータ入力に一致します。