May 23, 2008Amontec JTAGkey-Tiny (FT2232) を Xilinx iMPACTから使うFTDIのFTCJTAG.dllの仕様(リード、ライトが最低2bitsから)にブチ切れつつ、漸く完成しました。FPGAのプログラムをダウンロードする際、これまではパラレルポート+自作JTAGアダプタを使ってきたのですが、あまりの遅さについつい、Xilinx純正のダウンロードソフトであるiMAPCTから、純正以外のJTAGケーブルをコントロールできるようなプロキシソフトをこさえてしまいました。完成した現在では、前に購入したFTDIのFT2232を搭載したAmontec JTAGkey-Tiny経由で、iMAPCTからダウンロードをサクサク行えています。 実は世の中には既に便利なSVF Player(JTAG操作を記述したSVFファイルを様々なJTAGケーブルを通して実行するためのソフト、当然データのダウンロードもできる)があるので、ダウンロードを高速にしたいという要望だけみれば、今回作成したソフトはかなり車輪の再発明です。しかしながら、今回こさえたものはXilinxの純正ツールであるiMPACTから直接使えるので、ダウンロードを行う際にわざわざSVFファイルを書き出し、SVF Playerを起動する必要がこれでなくなりました。快適です。 動作原理ですが、リモートケーブルの概念を利用しています。これは書込みを指示するiMPACTが実行されているPCとJTAGケーブルが接続されているPCが異なる場合、操作の指示をTCP/IPでJTAGケーブル側のPCに転送するので、そのプロトコルさえわかれば純正ケーブル以外のJTAGケーブルにも対応できるというわけです。このプロトコルはsourceforge.netで開発が行われているxilprgのcblsrvで実装例がありましたので、これを下地にJTAGkeyに搭載されているFT2232に対応するよう改造を行いました。 プロトコルの構造は単純だったので、改造ポイントはすぐにわかりましたが、ここで冒頭の問題にはまりました。FT2232でJTAGをコントロールするためのFTDIが提供しているFTCJTAG.dllは制御の単位が最低2bitsであったことです。結局可変長のビット配列クラスlong_bits.hを用意してビット単位の切り貼りを行うことで解決しましたが、この制限が何に由来するものなのかよくわかりません。なおlong_bits.hの使い方はlong_bits_test.cppを参考にどうぞ。 ソースとコンパイル済みのバイナリのセット cblsrv-0.1_ft2232.zipを公開します。実行方法は以下のとおりです。指定したポート番号を、iMPACTの[option]->[Cable Setup]-[Cable Location]でlocalhost:(ポート番号)のように指定してください。 cblsrv.exe -c amontec -p (ポート番号)
動作確認はiMPACTの8.2と10.1で行いましたが、いずれも快適に動作しています。 ※以下、修正情報です。 ※※いえながさんによると、VC2008がインストールされていない環境では、実行に際して『Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)』が必要とのことです。 コメント
SPI用DLLも、妙な制限があるんです。仕方が無いので、MPSSEでしたっけ、あれのマイクロコードのスペックを読んで自分でライブラリを作りました。 Posted by: 酔漢 : May 25, 2008 10:25 PMmonamourさんのところで知りましたが、UrJTAGというものがあるそうです。 はじめまして。高橋と申します。 すばらしいものを公開してくさりありがとうございます。 早速ですが、ft2232jtag.h を拝見させていただきました。 JTAG_OE_N 19 => GPIOL1 自分で動かしても見ないうちに大変失礼ですが気になったもので。 fenrirです。 >酔漢さん >高橋さん はじめまして.いえながと申します. 公開していただいているcblsrvを実行しようとすると. 解決方法等ございましたら,ご教授くださいm(_ _)m Posted by: いえなが : June 17, 2008 09:23 PM>いえながさん 回答ありがとうございます. DOS窓でcblsrv-0.1_ft2232/build/win32/Releaseに移動して実行してみましたが,指定されたプログラムは実行できませんと出てしまいます(T_T) Posted by: いえなが : June 18, 2008 05:44 PM>いえながさん 自己解決しました! 自分の環境にVisual C++ 2008のライブラリが無いため実行できなかったようです. どうもお騒がせしましたm(_ _)m Posted by: いえなが : June 22, 2008 11:20 PM>いえながさん お久しぶりです。以前この次のエントリーでコメントさせていただいた中田です。前回は素早い対応、誠にありがとうございました。 最近になってようやくまとまった時間が取れるようになり、CPLDの動作テストを試みているのですが、iMPACTからCPLDに接続する事ができず途方に暮れております。 具体的には、公開していただいたcblsrv.exeコンソール上では Cable is '(JTAGデバイス名)' というふうにJTAGデバイスを認識するのですが、iMPACTのCable SetupでCPLDに接続しようとするとiMPACTのConsole上に以下のようなメッセージが表示されてしまうのです。 Enumerating cables. Please wait. また、このメッセージ表示と同時にSRST_N_INに接続されたLEDが約1秒間隔で点滅します。 JTAGデバイス自体は手持ちのARMマイコンを正常にコンフィグできていることから、動作そのものに問題はないと思われます。また、パラレルポート経由だと正常に書き込めることからCPLD周辺回路の不具合とも考えられません。 こちらで指定するポートを変更したり、dwClockDivisorの値を50程度まで大きくしたりとできる限り手を尽くしたのですが、どうしてもCPLDに接続する事ができなかったため、もしこのようなトラブルの原因としてお心当たりがあればぜひご教授いただきたく、今回投稿させていただいた次第です。 なお、開発環境は 素人質問で大変恐縮ですが、どうぞご指導よろしくお願いいたします。 Posted by: 中田 : August 6, 2008 11:19 PM>中田さん 中田です。お返事が遅れてしまい申し訳ありません。 まずご指摘いただいた点について再度確認してみましたが、ポート番号は正しく指定しており(ポート番号をわざと異なるものに変更すると別のエラーが出る)、またファイヤウォールやウイルスソフトもオフにして実行してみましたが、残念ながら結果は変わりませんでした。 ハード面でもデバイスマネージャ上でUSB Serial Converter A,Bとも認識されており、またドライバの一覧にftd2xx.dllが含まれていることから、こちらも問題ないと思われます。 そもそもJTAGデバイスが某オークションで落札したユーズド品であることが問題かとも考え、DesignWave Magazine 2008.6月号にたまたま載っていたJTAGkey互換の回路というものを組んで実験してみたのですが、やはり同様の症状が出てしまいました(「互換」なのであまり参考にならないとは思いますが…)。 今後何か進展がありましたらまた報告させていただきたいと思います。ありがとうございました。 Posted by: 中田 : August 12, 2008 02:54 PMLinux版作りました。FTCJTAGないのでMPSSE直書きです。 それと、うちでは Windows版でXC18V01Sの旧リビジョンに書けてないんですが、こちらでは書けてますでしょうか? >かみきさん コメントする
|
スポンサード リンク
ぶろぐぴーぷる
Drecom
|