« 2015年の目標 | トップページ | 基板年賀状をお送りしました »

2015.01.02

VivadoでXILINX Platform Cableを遠隔操作してみる

VivadoでXILINX Platform Cableを遠隔操作して、どのようなパケットが流れるのかを調べようとしました。

まず、2台のPCを用意し、1つを物理的なPlatform Cable USBがつながる「サーバ」、もう1台をユーザが操作する「クライアント」と決めます。

サーバのほうで、Vivadoをインストールしたフォルダの中のbinフォルダを開き、hw_server.batを開きます。

Vcs_1

このバッチファイルを開くと、hw_serverというプログラムが動き、こんな画面が開きます。

Vcs_5

サーバ側の準備はこれで完了です。

次に、クライアント側でVivadoを起動し、Hardware Managerを開きます。そして、Toolsの中にあるOpen New Targetを実行します。

Vcs_2

そして、ウィザードが開くので、「Next」を押します。

このダイアログが出たら、サーバのホスト名とポート番号(デフォルトが3121)を指定し、Nextを押します。

Vcs_3

ここで、サーバにPlatform Cable USBがつながっていてターゲットボードの電源が入っていれば、どのようなFPGAがつながっているかの情報が送られてきます。

今回はZYNQ EPPのXC7Z030をつないでいるので、ARMのDAPとXC7Z030が見えました。

Vcs_4

そして、Vivadoのクライアント側ではSystem Monitorや書き込みができるようになるというわけです。System MonitorではFPGAの温度や電圧を見ることができます。

Vcs_6

さて、この操作を行っているときに、サーバとクライアント間でどのようなパケットが流れているのでしょうか?

Wiresharkというツールを使って調べてみました。

Vcs_7

このように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で温度や電圧を受け取っている部分は、

Vcs_8

このように数字の羅列をテキストで送りあっているだけなので、何がなんだかさっぱりわからないのです。

Vivadoのケーブルサーバを解析して自分のプログラムから使えるようにするのは、非常に困難であると予想されます。

|

« 2015年の目標 | トップページ | 基板年賀状をお送りしました »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 2015年の目標 | トップページ | 基板年賀状をお送りしました »