JTAG ICE(JTAGデバッガ)

JTAG ICEの背景やアクセス等を記載します。


JTAG ICEの背景

高性能なマイコンはJTAG I/F(IEEE1149.1)をサポートしています。もともとJTAGはバウンダリ・スキャンといって、マイコンとプリント基板の実装状態(マイコンがプリント基板にちゃんと「はんだ付け」されているか)を確認する機能から始まった。その後、マイコンの高速化が進むにつれ、2000年頃から、JTAGを介したソフトウェアのデバッグ機能が追加。マイコンにJTAG ICEと呼ばれるJTAGデバッガを接続すると、JTAGを介して、プログラムの途中にブレイク・ポイントを設定して(プログラムを止めて)、マイコン内のレジスタや外部メモリのデータが意図した値かを確認できるようになった(図1)。なお、図1の赤線はレジスタへのアクセスになるが、外部メモリのRAMへも同様にアクセスできる。

JTAG ICEのI/F(端子)

・JTCLK(JTAGクロック入力。~40MHz)
・JTMS(JTAG制御入力。JTCLKの立上りでマイコンに取り込まれる)
・JTDI(JTAGデータ入力。JTCLKの立上りでマイコンに取り込まれる)
・JTDO(JTAGデータ出力。JTCLKの立下りでマイコンから出力)
・JTRST#(JTAGリセット入力)
補足…マイコンによっては、JTAG ICEからのブレイクを許可するJTAGブレイク信号(入力端子)を持つものもある。またJTAG I/Fではないが、マイコンが実行した命令やデータを吐き出すトレースI/Fもある。

図1:JTAG ICEとマイコン

JTAG ICEのアクセス

JTAGはTAPコントローラ(図2)で動作している。下記説明は図2と一緒に確認頂きたい。
・ステートが「Run-Test/Idle」にあり、32bitの命令を実行させたい場合、JTMS=1で「Select-DR-Scan」、JTMS=1で「Select-IR-Scan」、JTMS=0で「Capture-IR」、JTMS=0で「Shift-IR」にして32回のJTMS=0後、JTMS=1で「Exit-IR」、JTMS=1で「Update-IR」にして命令実行、JTMS=0で「Run-Test/Idle」に戻る。
・マイコンがJTRST#端子を実装していなくても、最大5回、JTMS=1をマイコンに入力すれば、JTAGはリセットされる。
例えば、「Run-Test/Idle」にいる場合、JTMS=1で「Select-DR-Scan」、JTMS=1で「Select-IR-Scan」、JTMS=1で「Test-Logic-Reset」に移動し、3回でJTAGリセットになる。このようにTAPコントローラ内のどのステートにいても最大5回でJTAGはリセットされる。

図2:TAPコントローラ

この記事が気に入ったらサポートをしてみませんか?