EZ-USB FX2LPをLinuxで動かしてみる(2)

引き続き EZ-USB FX2LP です。

こんどは、IN方向のベンチマークを行う bench_inを試してみました。(単に記載されている通りにやっただけです)

1.Examplesを試してみる

usb-fx2-io-examples-0.4.tar.gzをダウンロードしてきて、展開します。

slave FIFOを動作させるため、以下の通り結線します。

  • PA2/SLOE, PA5/FIFOADR1, RDY0/SLRDを3.3Vへ
  • PA4/FIFOADR0, RDY1/SLWRをGNDへ

接続するとこんな感じです。

接続したらPCに接続して、「make run」でテストが実行されます。

~/EZUSB-FX2/usb-fx2-io-examples-0.4/bench_in $ make run
cycfx2prog prg:bench_in.ihx run bench_bulk:6,16777216
Using ID 04b4:8613 on 001.007.
Putting 8051 into reset.
Programming 8051 using "bench_in.ihx".
Putting 8051 out of reset.
Read 16777216 bytes in 513 msec (chunk size 65536): 31.194 Mb/sec ( 256 calls, 65536 bytes/call)

ということで、16Mバイトの転送が513msで実行され、31.194Mb/secの速度が出ていたことがわかります。

ちなみに環境は、

  • CPU : Celeron G530
  • Mother : ASRock H61M-ITX (Intel H61 Chipset)
  • Memory : 8GB
  • OS : LinuxMint11 64bit

です。EZUSB-FX2とマザーの前面USBポートの間にUSB2.0のHUBが入っています。

2.FX2Pipeを試してみる

前回インストールしておいた、FX2pipeも試してみました。FX2pipeではEZUSB側のF/Wを指定しなければならないのですが、これに今回のbench_inのF/Wを使ってみます。

さっきと同じディレクトリで、「fx2pipe -fw=bench_in.ihx -i -0」として動作させて、適当なところで CTRL-cで中止させます。

~/EZUSB-FX2/usb-fx2-io-examples-0.4/bench_in $ fx2pipe -fw=bench_in.ihx -i -0
Firmware config: 0x12 0xc3 0xe0 0x0d 0x12
IO loop running...
Downloading firmware "bench_in.ihx"...
Submitting max. 16 URBs to fill pipeline... 16 submitted
fx2pipe: 45063323648 bytes in 1100.455s (avg 39990 kb/s, curr 39777 kb/s)^Creap_rv=-1, errno=Interrupted system call
OOPS: ProcessEvents: ec=4
IO loop exited
Cancelled 16 pending URBs (npending=16), reaping... done reaping (16): npending=0
fx2pipe: 45069058048 bytes in 1100.596s (avg 39990 kb/s)

ということで、1100秒間で45069058048バイト=45Gバイトの転送を行って、平均はほぼ40MB/sということになりました。

<追伸>fwにbench_inを指定しなくても動作は一緒でした。あとはGPIFの使い方を調べないといけないですね。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)