またまた突然ですが、仕事絡みで高速に大量のデータをお手軽にPCに引き取る必要が出てきました。
この手の話は
- ロジックアナライザでステートモードでキャプチャして、テキストでPCに取り込んで、テキスト処理でデータを抽出する
- 適当な高速パラレルI/Oボードで受ける
というあたりが手軽な定番だったりするわけですが、今回はその後素人さんにも使わせないといけなくなるようです。しかも金もないときたもんです。
そこで適当な方法ででっち上げようと思うと、手軽そうなのは、
- FT245R(これはFSですが・・・)やFT2232H、FT232HのHiSpeedのUSBデバイスで受ける
- EZ-USB FX2LP などのHiSpeedのUSBデバイスで受ける
ということになります。
本当は手軽さから前者にしたかったのですが、FT2232HやFT232HがつながるCPLDボードがあいにく手元にありませんので、今回はカメレオンUSB FX2をターゲットにすることにしました。
・・・・っと、その前に、EZ-USB FX2LPを動かしてみよう、というわけです。
で、CycFX2Progを参考にEZ-USB FX2LPを動かしてみます。(基本的に書いてあることを踏襲しているだけです)
1.必要なもの
- CycFX2Progのソース
作者さんのサイトからダウンロードできるようです。 ちなみにライセンスはGPLとのことなので、これをベースにしたらソース提供してやらにゃいけませんが、きっとそんなことは気にしない人たちでしょう。(提供しない、といってるんではなくて、GPLってなんぞや、って人たちだろうな・・・と) - libusb
すでにインストール済みのようでした - SDCC
インストールされていなかったようなので、パッケージマネージャからインストールします。
・・・と思ったら、CycFX2Progとは直接関係ないようです。・・・が、サンプルをコンパイルするのには必要です。
2.コンパイル
CycFX2Progは適当なフォルダに展開してMake一発みたいです。
後のことを考えると、cycfx2progはパスが通っているところに置くのが良さそうです。そうすると、EZ-USB FX2LP側のアプリケーションのMakefileが「make run」で実行(テスト)までもっていけるようです。 自分はホームディレクトリに bin フォルダを掘って、そこに .bashrc でPATHを通しました。
3.ホストシステムの準備
/etc/udev/rules.d/z70_usbfx2.rules というファイル名で以下の内容のファイルを作ります。
# USBFX2 development board udev rules which do the following: # * allow access for users in group "plugdev" # * unbind the FX2 peripheral from usbtest driver # 10-2010 by Vesa Solonen. Tested on plain CY7C68013A on Ubuntu 10.04. # Device properties can be found via dmesg (driver and device number) and udevadm info: # udevadm info -a -p /sys/bus/usb/drivers/usbtest/1-3\:1.0 # Reference: http://www.reactivated.net/writing_udev_rules.html SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="04b4", ATTR{idProduct}=="8613", GROUP="plugdev", MODE="0660" SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="8613", DRIVER=="usbtest", RUN+="/bin/sh -c 'echo -n %k> %S%p/driver/unbind'"
次に、ユーザの設定で、自分のアカウントが「plugdev」というグループに属しているかを確認します。
その後、udevを再起動します。
$ sudo restart udev
さらに、EZ-USB FX2LPを取り付け直して、認識させ直します。
4.USBの折り返しテスト
こちらに記載の折り返しテストを実施してみます。
単純にソースファイル(usb-fx2-local-examples-0.5.tar.gz)をダウンロードして展開すると、
- hello_world_ram
- hello_world_usb
- convert_string
という3つのテストプログラムのフォルダができます。各フォルダの中で、「make run」するとテストが完了します。
5.その他メモ
ただひたすらデータ転送するのであれば、CY7C68013A(すなわちFX2LP)が必要ですが、FX2Pipeというプログラムも公開されています。ひょっとしたら、これを使うとFX2LP側のプログラムは不要になるような気がします。とりあえずインストールは、
$ ./configure $ make $ sudo make install
でできました。
#こんな簡単にLinuxでEZ-USB FX2LPを動かすノウハウを公開している作者さんに感謝です。