年末で、何かとイベントごとがあってなかなかブログを更新できずにいました。
Aliexpress からもどんどんお品が届いて、ロジックアナライザーとして使うボードも到着しました。テストがてら、OrangePi PC の GPIO につないだLED のタイミングを計測してみること。
配線は、とりあえず1チャンネルでテスト。全部で8チャンネルいけます。
ちょっとわかりにくいですが、PB0 ~ PB7 までの端子が sigrok でいう0から7 までに対応しています。とりあえず今回はPB0 の端子につないで1チャンネルの表示をしてみました。
全体のテスト配線は以下のような感じです。
osx だと sigrok のソフトウェアの中にファームウェアがあります。最新のファームウェアは、以下にビルド済みのものがあります。
fx2lafw (pre-built firmware files の項を参照)
http://sigrok.org/wiki/Fx2lafw
つい先月にリリースされている0.1.3 を使いました。
sigrok-firmware-fx2lafw-bin-0.1.3.tar.gz
ほどよく、配置。*.fw がファームウェアです。
HOPE:sigrok-firmware junkhack$ pwd /Applications/PulseView.app/Contents/share/sigrok-firmware HOPE:sigrok-firmware junkhack$ ll total 1088 -rw-r--r--@ 1 junkhack admin 45268 11 3 2014 asix-sigma-100.fw -rw-r--r--@ 1 junkhack admin 45396 11 3 2014 asix-sigma-200.fw -rw-r--r--@ 1 junkhack admin 45396 11 3 2014 asix-sigma-50.fw -rw-r--r--@ 1 junkhack admin 45360 11 3 2014 asix-sigma-50sync.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-braintechnology-usb-lps.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-cwav-usbeeax.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-cwav-usbeedx.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-cwav-usbeesx.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-cypress-fx2.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-saleae-logic.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-sigrok-fx2-16ch.fw -rw-r--r--@ 1 junkhack admin 8120 11 27 09:09 fx2lafw-sigrok-fx2-8ch.fw -rw-r--r--@ 1 junkhack admin 81808 11 3 2014 sysclk-lwla1034-extneg.rbf -rw-r--r--@ 1 junkhack admin 81808 11 3 2014 sysclk-lwla1034-extpos.rbf -rw-r--r--@ 1 junkhack admin 81460 11 3 2014 sysclk-lwla1034-int.rbf -rw-r--r--@ 1 junkhack admin 48521 11 3 2014 sysclk-lwla1034-off.rbf HOPE:sigrok-firmware junkhack$
sigrok の PluseView を開きます。
現在、手元でビルドしていないので、ELIAS さんのビルドしたものです。
osx PulseView.dmg (0.2.0 : 2014/11/04 build)
http://eliasoenal.com/2014/11/04/sigrok-for-os-x/
File Menu から Connect to Device を選択して、以下のようにスキャンすると出ました。
osx の USB 認識は、以下のようでした。
system_profiler で見ると以下のように出ます。
$ system_profiler SPUSBDataType USB: :: fx2lafw: Product ID: 0x3881 Vendor ID: 0x0925 Version: 0.01 Speed: Up to 480 Mb/sec Manufacturer: sigrok Location ID: 0x1c120000 / 2 Current Available (mA): 500 Current Required (mA): 100
で、LEDをGPIO で光らせるプログラムで、LED を ON するタイミングを以下のように、usleep を使って1ms 光らせてみました。
抜粋箇所だけ載せておきます。
#include <event.h> #include <wiringPi.h> #include <unistd.h> #define LED 16 #define MSEC 10 #define USEC 1000 // 1000 = 1ms (0.000001 sec = 1 micro second) int blink(void){ wiringPiSetup () ; pinMode (LED, OUTPUT) ; digitalWrite (LED, HIGH) ; // delay (MSEC); usleep(USEC); digitalWrite (LED, LOW) ; } ::
全体のプログラムは、末尾につけておきます。このプログラムは、libevent を使ってfifo ファイルに read イベントがあったら、上記のblink ファンクションが呼ばれる仕組みです。あとで、書きますが、nginx のログをパイプさせて監視させています。
で、他のホストから ab で web アクセスしてみます。
$ ab -n 5 -c 1 http://hack.gpl.jp/index.html
とりあえず、5回くらいで。nginx のアクセスログには、5回記録されています。
192.168.1.17 - - [27/Dec/2015:20:21:27 +0900] "GET /index.html HTTP/1.0" 200 10798 "-" "ApacheBench/2.3" "-" 192.168.1.17 - - [27/Dec/2015:20:21:27 +0900] "GET /index.html HTTP/1.0" 200 10798 "-" "ApacheBench/2.3" "-" 192.168.1.17 - - [27/Dec/2015:20:21:27 +0900] "GET /index.html HTTP/1.0" 200 10798 "-" "ApacheBench/2.3" "-" 192.168.1.17 - - [27/Dec/2015:20:21:27 +0900] "GET /index.html HTTP/1.0" 200 10798 "-" "ApacheBench/2.3" "-" 192.168.1.17 - - [27/Dec/2015:20:21:27 +0900] "GET /index.html HTTP/1.0" 200 10798 "-" "ApacheBench/2.3" "-"
そのタイミングを取ると以下のようです。
今度は、300us ほどにして、100回アクセスしてみました。ちゃんと100回、凹凸があるか数えたらありました。
マウスホイールすると拡大できます。300us より若干大きくなっているのは、イベント処理のプログラムや時計の誤差などの影響ですかね。
1ms くらいのものは問題なく見れそうということがわかりました。2Mhz 以上あげると、固まるのはなぜですかね。24Mhz までいけるはずですが?
1us 単位の計測が今のところできないです。あと、トリガーをかけようとチャンネルをクリックすると落ちる。うーん、独自にコンパイルしてみるしかなさそうですね。
▼まとめ
・EZ-USB FX2LP CY7C68013A というのをゲット(非常に安価だった)
・sigrok の PluseView の osx 版(0.2.0)を使ったが、無事チャンネル0のパルスが取れた
・PCB上のPB0 ~ PB7 までの端子が sigrok でいう0から7 までに対応
・fx2lafw はビルド済みの0.1.3 を使用
・2Mhz までは計測できるが、それ以上でかたまる
・fx2lafw が悪いのか、PluseView が悪いのか切り分ける必要あり
・テストプログラム側のusleep を削除して、単純に点灯消灯をしてタイミングを取ったら、500ns という単位が出たので、1us の単位でも取得できそう。