JTAGって、そもそもナニ?

はじめに

みなさんは「JTAG(ジェイタグ)」という言葉を聞いたことがありますか?電子工作やマイコン開発をしていると、回路図やチップのデータシートに出てくるあの4本(または5本)ピン ―― TDI / TDO / TCK / TMS /(TRST)
でも、「なんかデバッグ用のやつでしょ?」くらいで止まっている人も多いかもしれません。

今日はそんな JTAG の正体を、なるべくわかりやすく覗いてみましょう。

JTAGは「テスト」が出発点

JTAGは「Joint Test Action Group」の略です。これは1980年代に、各国の企業や団体が「電子基板のテストをもっと簡単にしよう!」と作ったグループの名前でした。やがて、そのグループが作った仕組みそのものが「JTAG」と呼ばれるようになったのです。

では、何を“テスト”するのか?
それは 基板に載っているIC同士がちゃんとつながっているか? ということ。
昔は、プローブをピンに押し当てて通電を調べていましたが、集積度が上がるとそんな方法では手が届きません。そこで登場したのが、「チップの中にテスト回路を仕込んでおく」というアイデアです。

チップの中に「自己診断用の通路」がある

JTAG対応のICには、「バウンダリスキャンチェイン」という特殊な回路が埋め込まれています。
簡単に言えば、各ピンの入出力状態をずらっと鎖のようにつないで、外部から1ビットずつ読み書きできる仕組みです。

この“鎖”にデータを送り込むための入口と出口が、冒頭に出てきた4本ピン:

ピン名意味(ざっくり)
TDIテストデータの入口(Test Data In)
TDOテストデータの出口(Test Data Out)
TCKテスト用クロック(Test Clock)
TMSモード選択信号(Test Mode Select)
TRST(オプション)リセット信号(Test Reset)

これらを専用ツールで制御することで、ピンの状態を読んだり、擬似的に信号を出したりできます。
つまり、外から基板を触らなくても“中身を診断”できるわけですね。

いつのまにか「デバッグ用」にも使われるように

当初は“テスト用”だったJTAGですが、マイコンやFPGAなどの高度なICが登場するにつれ、「これ、CPUの中身(レジスタやメモリ)にもアクセスできるようにしたら便利じゃない?」という流れに。

こうしてJTAGは、開発者が「プログラムの書き込み」や「ステップ実行(デバッグ)」を行うための標準インタフェースとしても広まりました。
たとえば、ARMコアを使ったマイコンでは、JTAG(あるいはその派生のSWD)を使って、PCからプログラムを転送したり、ブレークポイントを設定したりできます。

つまりJTAGは・・・

  • 製造現場では → 回路検査のための“テストポート”
  • 開発現場では → ソフト開発のための“デバッグポート”
    という、まさに“両刀使い”の仕組みなのです。

まとめ:JTAGは「中を覗くための窓」

JTAGをひとことで言うなら、

電子機器の中をのぞいたり操作したりするための共通の“窓口”

と言うことができます。

実際に扱うには専用アダプター(JTAGデバッガ)やツールが必要ですが、仕組みを理解しておくと、開発中のトラブル解析やハードの理解にとても役立ちます。

最近ではJTAGをベースにした簡易化プロトコル「SWD(Serial Wire Debug)」も一般的です。
基本の考え方は同じですが、ピン数を減らして省スペースにした進化形と捉えるといいでしょう。

最後に

JTAGは、普段は地味な存在ですが、ハードウェアを開発・テスト・修理する上では欠かせない「裏方ヒーロー」です。 もしマイコンボードに“JTAG”と書かれたピンが並んでいたら、
「これは中をのぞくための秘密の扉なんだな」と思い出してみてください。