/ «2004-05-05 (Wed) ^ 2004-05-09 (Sun)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2004-05-06 (Thu)

[Hard] JTAG による Octal buffers との対話

JTAG ケーブルを作る

JTAG の制御に必要なラインは、わずかに4本。

  • TCK (Test ClocK)
  • TMS (Test Mode Select)
  • TDO (Test Data Out)
  • TDI (Test Data In)

これに GND を加えても5本で配線は完了してしまう(TRST は必須ではない)。なんという単純さだ!

4本の制御信号が意味するところは、先日紹介した "JTAGテストの基礎と応用" に詳しい説明がある。本書に、唯一注文を付けるとすれば、Timing chart が掲載されていない点ぐらいだろうか?

いずれにしても、本書を読むだけで、JTAG の基本を自分自身の手で体験できるというのは凄い。おそらく世界中を探しても、JTAG に関するこれほど優れたテキストは、本書以外には存在しないだろう。日本語で読めることに感謝。と同時に、こういう優れた書籍こそ、ベストセラーになって欲しいものだと思う。

さて、配線である。テキストに習い、STROBE を TCK、D1 を TMS、BUSY を TDO、D0 を TDI に割り当てることにした。25ピンの D-type male コネクターに、配線を行う。超簡単!

次に、既に体得した PPDEV 制御方法(と言っても、こちらも超簡単)を使い、各信号を ON/OFF し、テスターで出力をチェックする。STROBE は負論理であるから、間違えないように。ブレッドボード上で簡単な回路を組み、BUSY へ High/Low を入力。Linux 上で status register の変化を確認。お〜〜〜、ビット反転しちょるしちょる!すべてOKだ。ということで、「JTAG ケーブル3分間クッキング」は終了。

(JTAG) Boundary-Scan Test Device With Octal Buffers

次に必要になるものは、ご本尊である TI 社の SN74BCT8244ANT だ。その勇姿はこちら

テキストでは、いきなり本格的なテスト回路が始まるが、何事も最初はステップを追うことが肝要。まず、単独の 8244ANT に電源ラインと JTAG ライン、計5本を接続してみたのがこちら

あっけないほど閑散としたものだが、たったこれだけで随喜の涙がちょちょ切れるほど「楽しいこと」が体験できるのである。

呼びかけ、そして覚醒

ここから先はソフトウェアの領域。まず、基本となるクロック(TCK)生成関数を作成し、TCK の立ち下がりで TDO 信号を read。次に、TMS/TDI 信号を設定した上で、TCK を立ち上げる。この単純な繰り返しで、JTAG 対応デバイスは目覚める・・はずであった。

が、しかし。我が白雪姫 8244ANT に何度熱いラブコールを呼びかけても、彼女は目覚めない。反応してくれない。「おじさんのこの熱い思いを、なんで君は分かってくれへんのや〜〜!」

雄叫びもむなしく、夜明けがやってきた。こりゃいかん・・ということで、遂に観念してオシロスコープで信号をチェック。すると、TCK はきれいに動いているのだが、ぬわぁんと肝心の TMS がスィ〜〜〜〜ッと真っ直ぐである。

白雪姫の心臓は動けども、脳波はフラット状態だった訳だ。JTAG では、TMS 信号の ON/OFF により16ステートを遷移することが基本なので、いくら呼びかけても反応しなかったのである。

で、コードを見直す。「アホやん、ワシ」TMS に続き、TDI を操作する時点で、前データとの OR 演算を忘れていた・・アホすぎ・・。

で、修正したコードで、再度甘くささやきかける。「白雪姫ちゃん、朝ですよぅ〜〜」

すると、画面上に "10000001" が現れたではないか!これは、8244 のステータスワードであり、見事ふたりの間で対話が成立した証。石との対話など、生まれて初めての経験だが、なんとも言えない感動が身を包む。午前、5時のことである。

興奮さめやらぬ、現場写真はこちら(真ん中はバスバッファーを使った H/L 出力回路、右は愛機 Mebius note の外付けFDドライブに用意されているパラレルポート)。

タコになれ!

まだステータスワードを読み出しただけに過ぎないが、JTAG の素晴らしき世界は十分に実感できた。8244 自身は8ビット入出力の単純なバッファーに過ぎないが、JTAG により TAP (Test Access Port)コントローラーを制御することで、あっと言う間に8ビット入力・8ビット出力ポートを持った GPIO に様変わりする。すなわち、数少ないパラレルポートの5ビットを使うだけで、16ビットを操ることが出来る訳だ。

しかし、こんなことで感心していてはいけない。JTAG の素晴らしいところは、まるで一筆書きのように各種デバイスをループ状に接続できる点にある。ふたつの 8244 を相互接続すれば、入出力は一気に32ビット、8つをカスケードすればぬわぁんと128ビット GPIO が出来上がってしまう。しかも、たった4本のラインをソフト制御することで、私達はまるでタコのように128ビットを自在に操ることが出来るのだ。なんて素敵なの〜〜〜!恐るべし、JTAG。

坂巻 佳壽美氏

著者である坂巻氏が表紙の扉で曰く、

言葉による解説より、すべてを手作りすることによってこそ理解が深まるというのが、著者の信念です。

御意。同氏の次回作に期待します。