はじめに
そろそろ、今回のホストの設定の核心に近づいてきました。OpenOCDの入手とインストールです。
OpenOCDの仕組み
今回のシステムの全体図は、下記(ホストシステムのソフトウェア関連図 再掲)で表すことができます。図を見ていただければわかりますが、OpenOCDが図の真ん中にあり、中核を担っていることがわかります。OpenOCD自体はGPLの下に公開されているフリーウェアです。簡単に動作を紹介したいと思います。
OpenOCDのブロック図を見ると、自身もいくつかの機能ブロックから構成されていることがわかります。典型的な例はUSB-JTAGのピンドライバ部分でしょうか? 今回利用するUSBチップであるFT2232のMPSSE機能をドライブします。
その他の機能として、TCPとTELNETのサーバの機能があります。TCPのサーバはGDBとの通信に使います。実際のリモートデバッグはこちらで行うことになります。TCPのポート番号はコンフィグレーションファイルで設定できます。
TELNETのサーバはOpenOCD自体にコマンドを与えるために使います。こちらもポートの番号はコンフィグレーションファイルの設定で変更できます。
リモートデバッグとスタブ
現在操作しているコンソールから離れた場所にあるターゲットのデバッグを行うことを、一般的に「リモートデバッグ」といいます。リモートデバッグの手段として、シリアルラインを用いたり、専用のデバッグラインを用いたりします。また、最近ではTCP/IPによる例も多くなってきました。
GDBの入出力をリモートのやり取りをデバッグへ変換するシステムを「スタブ」と呼びます。このスタブはターゲット自身に実装されることも、今回のようにピンドライバの形でホストに実装することもあります。