コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

STBee とその開発に使えるJTAGケーブルの実際。
USB Blaster もどきで OpenOCD がどれくらい使えるか。

OpenOCD には ALTERA のダウンロードケーブルである USB Blaster やその互換品を JTAG ケーブルとして使うというオプションがある。
OpenOCD はパラレルポート(が使えた過去の時代)や FT2232ベースのJTAGケーブルを使うことを想定されている。だが MacOSX では FT2232 のドライバーだといまいちな場面があるらしく使いづらいとの声を聞く。
そこで浮上してくるのが USB Blaster 互換ケーブルの使用である。

そもそも、OpenOCD が難しいのはなぜかというと USB 接続デバイスを扱うからということに他ならない。デバイスの問題は結構大きいのだけれども、それは Windows, MacOSX、Linux のそれぞれでデバイスモデルが異なるところにある。なのでオープンソースで開発を固めようとしても、どうしてもこのターゲットとの接続部分がいまくいかないものなのである。
libusb はそういった機種間の proxy となり一つの stub を提供してくれるのだが、Windows では専用の USB ドライバをインストールする必要があるとか inf を作成しないとインストールできないとか色々とあったり、すんなりとは行かなかったりする。MacOSXと Linux は libusb で割と問題無くいけそうに見えるなあ。
そういう意味でダウンロードポートを USART(シリアル接続)のみに絞った Arduino の設計は正解なのだよね。

さて、USB Blaster もどきを使って OpenOCD を使う実験だけれども、Windows 上では早々に諦めた(w。
Windows だと 32bit と 64bit のドライバーって異なっているので、libusb-win のドライバーも二種類存在している。我が家は Win7 64bit を使っているので、64bit の方をインストールすることになる。かたや Cygwin は 32bitなので libusb はバイナリも付いてくるものの 32bit 版しかない。
このへんに食い違いがあるのかどうかよく分からないのだけれども、うまいこと使えなかった。原因究明するにも、準備が面倒な段階でもういいやと投げてしまった次第。

MacOSX と Linux での OpenOCD ビルドはそんなに難しくはない。
libusb, libusb-compat, libftdi, openocd といった順番でビルドしていけば良い。
libusb は Linux ディストリビューションに入ってることが多いので、devパッケージだけ用意すれば後は libftdi, openocd のインストールで良い。

そんなこんなで OpenOCD が用意できて MacOSX と Linux はこれでばっちりだぜと思っていたのだけれどもそうはうまくはいかないのでした。

ターゲットと接続して scan_chain とか難なくできるから大丈夫かと思っていたのだけれども、gdb から操作しているとやたら遅かったり失敗したりする。どうも通信がうまくできていないような印象。
先達の記事にも OpenOCD で USB-Blaster はイマイチと書いてあったりするので深追いしないことにした。

OpenOCD を使うのであれば素直に FT2232 系の JTAG ケーブルを購入するのが良さそうである。
ストロベリーリナックスの FT2232H モジュールとか EEPROM も載っていてまさにそういった用途にお使いくださいといった感じだしなー。

Leave a Reply