VivadoでXILINX Platform Cableを遠隔操作してみる
VivadoでXILINX Platform Cableを遠隔操作して、どのようなパケットが流れるのかを調べようとしました。
まず、2台のPCを用意し、1つを物理的なPlatform Cable USBがつながる「サーバ」、もう1台をユーザが操作する「クライアント」と決めます。
サーバのほうで、Vivadoをインストールしたフォルダの中のbinフォルダを開き、hw_server.batを開きます。
このバッチファイルを開くと、hw_serverというプログラムが動き、こんな画面が開きます。
サーバ側の準備はこれで完了です。
次に、クライアント側でVivadoを起動し、Hardware Managerを開きます。そして、Toolsの中にあるOpen New Targetを実行します。

そして、ウィザードが開くので、「Next」を押します。
このダイアログが出たら、サーバのホスト名とポート番号(デフォルトが3121)を指定し、Nextを押します。
ここで、サーバにPlatform Cable USBがつながっていてターゲットボードの電源が入っていれば、どのようなFPGAがつながっているかの情報が送られてきます。
今回はZYNQ EPPのXC7Z030をつないでいるので、ARMのDAPとXC7Z030が見えました。
そして、Vivadoのクライアント側ではSystem Monitorや書き込みができるようになるというわけです。System MonitorではFPGAの温度や電圧を見ることができます。
さて、この操作を行っているときに、サーバとクライアント間でどのようなパケットが流れているのでしょうか?
Wiresharkというツールを使って調べてみました。
このようにLANを流れているパケットを解析するツールです。
サーバの中のソフトがJTAGの難しい部分をすべて処理してしまっていて、クライアントとの通信は高レベルな部分で要求や応答をテキストでやりとりしている感じでした。
もはやJTAGの生のデータはLAN上を流れていませんでした。
C→S Locator Hello ["zerocopy"]
S→C Locator Hello ["zerocopy","xicomSysmon","bpi","spi","xsdb","xicom_v1.00","・・・
C→S JtagCable getServerDescriptions
S→C JtagCable serverAdded [{"ID":"jss1","ServerID":"digilent-ftdi","isActive":true}] JtagCable serverAdded [{"ID":"jss2","ServerID":"digilent-djtg","isActive":true}] JtagCable serverAdded [{"ID":"jss3","ServerID":"xilinx-pcusb","isActive":true}]
Jtag contextetAdd [{"ID":"jsn-DLC9-Port_#004.Hub_#0004","Name":"whole scan chain","idcode":255,"irlen":0,"isTap":true}]
こんな感じでやりとりして、ケーブルの情報や、見つかったデバイスなどをテキストで送っています。まったく、JTAGの操作はでてきません。
そして、SystemMonitorで温度や電圧を受け取っている部分は、
このように数字の羅列をテキストで送りあっているだけなので、何がなんだかさっぱりわからないのです。
Vivadoのケーブルサーバを解析して自分のプログラムから使えるようにするのは、非常に困難であると予想されます。
| 固定リンク









コメント