1us Lチカ

2016年 謹賀新年、あけましておめでとうございます。おせち料理も31日と1日で食べつくしてしまいました。

さて、今年最初のブログですね。0.000001秒のLチカをロジックアナライザーでモニタリングして光らせてみました。

あと、オレンジパイで、8本のGPIO を使って安価なロジックアナライザーで採取できるかも確認してみました。

 

サンプルプログラムを採取したデータが以下です。8本分は取れていますが、速すぎるところは取りこぼしているようです。

1

矢印は500ns で光っている部分で採取に失敗し、取りこぼす事がありました。このあたりが2Mhz の限界なんですね。今のファームウェアとソフトウェアだとこれが限界のようです。

2

複数のLED は、blink ファンクションにて光らせていますが、呼び出しと初期化の処理で250us 程度使っているようです。

3

usleep 関数を使っても思ったより、処理に時間がかかるようです。1us を指定して光らせているんですが、実際は69us 光っています。nanosleep を使っても66us は使われてしまうようで、1us を光らせる為にwhile で調整してみました。

4

サンプルのプログラムは以下です。

/*
 *  +-----+-----+----------+------+---+--OrangePiPC--+---+------+---------+-----+--+
 *  | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 *  +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 *  |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 *  |   2 |  -1 |    SDA.0 |      |   |  3 || 4  |   |      | 5V       |     |     |
 *  |   3 |  -1 |    SCL.0 |      |   |  5 || 6  |   |      | 0v       |     |     |
 *  |   4 |   6 | IO6 PA06 |  OUT | 0 |  7 || 8  |   |      | TxD3     |     |     |
 *  |     |     |       0v |      |   |  9 || 10 |   |      | RxD3     |     |     |
 *  |  17 |  -1 |     RxD2 |      |   | 11 || 12 | 0 | OUT  | IO1 PD14 | 1   | 18  |
 *  |  27 |  -1 |     TxD2 |      |   | 13 || 14 |   |      | 0v       |     |     |
 *  |  22 |  -1 |     CTS2 |      |   | 15 || 16 | 0 | OUT  | IO4 PC04 | 4   | 23  |
 *  |     |     |     3.3v |      |   | 17 || 18 | 0 | OUT  | IO5 PC07 | 5   | 24  |
 *  |  10 |  -1 |     MOSI |      |   | 19 || 20 |   |      | 0v       |     |     |
 *  |   9 |  -1 |     MISO |      |   | 21 || 22 |   |      | RTS2     |     |     |
 *  |  11 |  -1 |     SCLK |      |   | 23 || 24 |   |      | SPI-CE0  |     |     |
 *  |     |     |       0v |      |   | 25 || 26 |   |      | CE1      |     |     |
 *  |   0 |  -1 |    SDA.1 |      |   | 27 || 28 |   |      | SCL.1    |     |     |
 *  |   5 |   7 |  IO7 PA7 |  OUT | 0 | 29 || 30 |   |      | 0v       |     |     |
 *  |   6 |   8 |  IO8 PA8 |  OUT | 0 | 31 || 32 | 0 | OUT  | IO9 PG08 | 9   | 12  |
 *  |  13 |  10 | IO10 PA9 |  OUT | 0 | 33 || 34 |   |      | 0v       |     |     |
 *  |  19 |  12 | IO12PA10 |  OUT | 0 | 35 || 36 | 0 | OUT  | IO13PG09 | 13  | 16  |
 *  |  26 |  14 | IO14PA20 | ALT3 | 0 | 37 || 38 | 0 | OUT  | IO15PG06 | 15  | 20  |
 *  |     |     |       0v |      |   | 39 || 40 | 0 | OUT  | IO16PG07 | 16  | 21  |
 *  +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 *  | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 *  +-----+-----+----------+------+---+--OrangePIPC--+------+----------+-----+-----+
 *         ^^^^ Pin NO                                                   ^^^^ Pin NO
 * 1us LED blink.
 * building ex) gcc -lwiringPi -lpthread -I/usr/local/include -L/usr/local/lib -levent -o 2016blinkall 2016blinkall.c
 * 
 *
*/
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <stdio.h>
#include <wiringPi.h>

#define MSEC 1
#define USEC 33
#define NANOSEC 1000

int blink2(int led, int delay);

int main (void)
{
  int led;
  int i = 0;

  while (i < 3)
  {
    blink2(16, 1000);
      blink2(15, 1000); //Next blink 250 us
      blink2(13, 1000);
      blink2(9, 1000);
      blink2(5, 1000);
      blink2(4, 1000);
      blink2(1, 1000);
      blink2(6, 1000);

    i++;
  }

  delay (MSEC);
  return 0;
}

int blink2(int led, int delay){
    // unsigned int usecs;
    // usecs = delay;
    // sec = delay;
    led = led;
    int i = 0;

    // nano sec
    struct timespec nano;
    nano.tv_sec = 0;
    nano.tv_nsec = delay;

    wiringPiSetup () ;
    pinMode (led, OUTPUT) ;

    digitalWrite (led, HIGH) ;
    nanosleep(&nano, NULL); // 66us
    // usleep (usecs) ; // 66us
    // delay (delay);
    digitalWrite (led,  LOW) ;
    usleep (1);

    digitalWrite (led, HIGH) ;

    // 1us
    while (i < 100)
    {
        i++;
    }
    digitalWrite (led,  LOW) ;
    usleep (1); // 66us

    digitalWrite (led, HIGH) ;
    // 500 ns
    digitalWrite (led,  LOW) ;
}

GPIO の8本を同時に処理させるにはどうしたらいいんでしょうかね。マルチスレッド処理ですかね?シフトレジスタに投げて、一括処理とかですかね?

 

前ちょっと触ったイベント処理のlibevent とかを使うとどのくらいの精度になるんでしょうかね。いろいろ疑問がわいてきます。

E-ink を表示するためにはまだまだ超えないといけない山がたくさんあるようです。

なんとか、春までには表示したいんですが。こつこつとやっていきます。

FX2LP でsigrok のロジックアナライザー

年末で、何かとイベントごとがあってなかなかブログを更新できずにいました。

Aliexpress からもどんどんお品が届いて、ロジックアナライザーとして使うボードも到着しました。テストがてら、OrangePi PC の GPIO につないだLED のタイミングを計測してみること。

配線は、とりあえず1チャンネルでテスト。全部で8チャンネルいけます。

logic2

ちょっとわかりにくいですが、PB0 ~ PB7 までの端子が sigrok でいう0から7 までに対応しています。とりあえず今回はPB0 の端子につないで1チャンネルの表示をしてみました。

PulseView1

全体のテスト配線は以下のような感じです。

 

logic

osx だと sigrok のソフトウェアの中にファームウェアがあります。最新のファームウェアは、以下にビルド済みのものがあります。

fx2lafw (pre-built firmware files の項を参照)
http://sigrok.org/wiki/Fx2lafw

つい先月にリリースされている0.1.3 を使いました。

sigrok-firmware-fx2lafw-bin-0.1.3.tar.gz

http://sigrok.org/download/binary/sigrok-firmware-fx2lafw/

ほどよく、配置。*.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 さんのビルドしたものです。

開発ボードがコハクラフトさんより到着

kohacraftさんよりE-ink の開発ボードが到着しました。ありがとうございます。

a

PINヘッダーがあるので、自由に信号を入れ放題!電源部は、LT1945 から供給。コイルは、Coilcraft

b

さぁ、うまく表示できるでしょうか。

Scan 2実験にあたり、まだ下準備が整っていないのでそこから着手しないとです。

まずは、ESP8266 から信号を入れるため、ESP側の開発ボードの半田付けをして、シフトレジスターを用意する作業があります。 ご飯食べて、気力を回復させてから、本日は何か1つ作業を進めたいです。

RasPi2 でCの王道? WiringPi

とりあえず、RasPi でC を検索したら一番最初にヒットしたので、これで。

オフィシャル
http://wiringpi.com/

GITHUB

https://github.com/WiringPi

Ruby や PHP やPython などのラッパーもあるようです。とりあえず、c で。

 

インストールは、INSTALL か、オフィシャルサイトのドキュメントのように。build スクリプトがあります。

[root@pi wiringPi 12/04 05:34:23]# ./build 
wiringPi Build script
=====================


WiringPi Library
[UnInstall]
[Compile] wiringPi.c
[Compile] wiringSerial.c
[Compile] piHiPri.c
[Compile] wiringShift.c
[Compile] piThread.c
[Compile] wiringPiSPI.c
[Compile] softPwm.c
[Compile] wiringPiI2C.c
[Compile] softTone.c
[Compile] mcp23008.c
[Compile] mcp23016.c
[Compile] mcp23017.c
[Compile] mcp23s08.c
[Compile] mcp23s17.c
[Compile] pcf8574.c
[Compile] sr595.c
[Compile] mcp3002.c
[Compile] pcf8591.c
[Compile] mcp3004.c
[Compile] mcp4802.c
[Compile] mcp3422.c
[Compile] max31855.c
[Compile] max5322.c
[Compile] sn3218.c
[Compile] drcSerial.c
[Compile] wpiExtensions.c
[Link (Dynamic)]
[Install Headers]
[Install Dynamic Lib]

WiringPi Devices Library
[UnInstall]
[Compile] ds1302.c
[Compile] maxdetect.c
[Compile] piNes.c
[Compile] gertboard.c
[Compile] piFace.c
[Compile] lcd128x64.c
[Compile] lcd.c
[Compile] piGlow.c
[Link (Dynamic)]
[Install Headers]
[Install Dynamic Lib]

GPIO Utility
[Compile] gpio.c
[Compile] readall.c
[Compile] pins.c
[Link]
[Install]

All Done.

NOTE: To compile programs with wiringPi, you need to add:
    -lwiringPi
  to your compile line(s) To use the Gertboard, MaxDetect, etc.
  code (the devLib), you need to also add:
    -lwiringPiDev
  to your compile line(s).

[root@pi wiringPi 12/04 05:38:22]# gpio -v
gpio version: 2.31
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 2, Revision: 01, Memory: 1024MB, Maker: Embest 
  Device tree is enabled.
  * Root or sudo required for GPIO access.
[root@pi wiringPi 12/04 05:38:41]# 

こんな感じになりました。

[root@pi wiringPi 12/04 05:38:45]# gpio -v
gpio version: 2.31
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 2, Revision: 01, Memory: 1024MB, Maker: Embest 
  Device tree is enabled.
  * Root or sudo required for GPIO access.
[root@pi wiringPi 12/04 05:38:46]# 

というバージョンを使っています。Gordon Hendersonさんが作られてたようです。感謝。

[root@pi work 12/04 06:17:08]# gpio -warranty
gpio version: 2.31
Copyright (c) 2012-2015 Gordon Henderson

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU Leser General Public License as published
    by the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with this program. If not, see <http://www.gnu.org/licenses/>.

[root@pi work 12/04 06:17:14]# 

とりあえず、使ってみます。

a

いつもPIN番号を忘れて検索します。貼り付けておくことに。ラズパイのピン。

Raspberry-Pi-GPIO-compressed

コードは以下。

// Include header file
#include <wiringPi.h>

// Define GPIO21 number
#define LED 21

// Main function
int main(void) {
        int i;

        // Initialize WiringPi
        if(wiringPiSetupGpio() == -1) return 1;

        // Set GPIO pin to output mode
        pinMode(LED, OUTPUT);

        // Repeat LED blinking 10 times
        for(i=0; i<100; i++){
                digitalWrite(LED, 0);
                delay(100);
                digitalWrite(LED, 1);
                delay(100);
        }

        // Turn off LED
        digitalWrite(LED, 0);

        return 0;
}

コンパイル、実行。

[pi@pi work]$ gcc -o blink blink.c -lwiringPi
[pi@pi work]$ sudo ./blink

終了すると、プロンプトに戻ります。RasPi のGPIOはたくさんあるので、同時にいくつ使えるんでしょうね。

 

シフトレジスターを経由しなくても、今回、15本のGPIOを使えればよさそうですが、

[root@pi work 12/04 06:26:32]# gpio readall
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 0 | OUT  | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | ALT0 | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | ALT0 | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | OUT  | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
[root@pi work 12/04 06:26:33]# 

このテーブルのwPi というのがアサインされている番号ですかね。

マニュアルだと、以下のようです。1 でON(点灯) 0でOFF(消灯)

[root@pi work 12/04 06:32:40]# gpio -g write 21 1 
[root@pi work 12/04 06:33:56]# gpio -g write 21 0

とりあえず、使えそうですね。あとは、プログラムの問題となります。さぁて、本日金曜日。お仕事終わればまた開発タイムです。

examples ディレクトリに参考コードがたくさんあります。

[root@pi examples 12/04 06:41:26]# pwd
/home/pi/wiringPi/examples
[root@pi examples 12/04 06:41:28]# 
[root@pi examples 12/04 06:41:29]# tree
.
├── blink12.c
├── blink12drcs.c
├── blink6drcs.c
├── blink8.c
├── blink.c
├── blink.rtb
├── blink.sh
├── clock.c
├── COPYING.LESSER
├── delayTest.c
├── ds1302.c
├── Gertboard
│   ├── 7segments.c
│   ├── buttons.c
│   ├── gertboard.c
│   ├── Makefile
│   ├── record.c
│   ├── temperature.c
│   ├── voltmeter.c
│   └── vumeter.c
├── header.h
├── isr.c
├── isr-osc.c
├── lcd-adafruit.c
├── lcd.c
├── lowPower.c
├── Makefile
├── max31855.c
├── nes.c
├── okLed.c
├── PiFace
│   ├── blink.c
│   ├── buttons.c
│   ├── ladder.c
│   ├── Makefile
│   ├── metro.c
│   ├── motor.c
│   └── reaction.c
├── PiGlow
│   ├── Makefile
│   ├── piGlow0.c
│   ├── piGlow1.c
│   └── piglow.c
├── pwm.c
├── q2w
│   ├── binary.c
│   ├── blink.c
│   ├── blink-io.c
│   ├── blink.sh
│   ├── bright.c
│   ├── button.c
│   ├── Makefile
│   └── volts.c
├── README.TXT
├── rht03.c
├── serialRead.c
├── serialTest.c
├── servo.c
├── softPwm.c
├── softTone.c
├── speed.c
├── spiSpeed.c
└── wfi.c

4 directories, 59 files
[root@pi examples 12/04 06:41:32]# 

 

コハクラフトさんからも発送されたようで、土日にはなんらか楽しめそうです。

E-inkディスプレイでテスト準備

さて、年末に向けてE-ink を表示するテストが出来そうなので、その準備をしています。

開発ボードは、ブログで先駆者がいらっしゃって、なんと開発ボードを分けていただくことになりました。ありがとうございます。

kohacraftのblog
タグ:電子ペーパー

E-ink ディスプレイのコネクタはPCB上につけないと無理な配線なので、電源部とコネクタから構成される開発ボードを作られていました。こちらは、まだPCB作ってないのでテストできていない旨をブログでコメントしたところ、好意で開発ボードを分けていただくことになりました。コハクラフトさま、本当にありがとうございます。E-ink のPCB発注は来年かぁと思っていたので、年末に遊べそうです。

 

以下の回路図は、sprite_tm さんのページにある手書きのものをトレースしたものです。配線するときの覚書としてメモしておくことに。

2_Schematic_e-ink ただいま、コハクラフト開発ルームにてハンドメイドで半田付けが行われている最中です。こちらは、シフトレジスタ部とESP側の準備をしています。そして、先に発注してあるロジックアナライザーも今年中に来ると思いますので、どんな手順を踏めば表示されるのかを解き明かしていきたいと思います。

 

英語ソースでは先人がいるのですが、まだ要点がつかめず、ポイントの要になる部分がわかりません。コハクラフトさんのブログでいくつか解き明かされて、ソニーのdigital book reader PRS-600 本体にE-ink を挿げ替えても表示が可能だそうです。Sony のE-ink には、LB060S01-RD02 という型番のE-ink で、今回手持ちで流通している、ED060SC4(LF)を繋げても表示できるということがわかっています。上の回路図では、9pin , 10pin は繋がっていますが、そこはポイントではなさそうということが状況から言えそうです。

要するに、E-ink に入れる信号のタイミングがポイントになることは間違いなさそうです。

今回しょっぱなにテストしようとしているソースは、
https://github.com/take-i/espeink/blob/master/user/eink.c

で、各所にos_timer_armでタイミングをを取っている部分がいくつかあります。その関数を集約したものが、

https://github.com/take-i/espeink/blob/master/user/io.c

にあり、ここにもタイミングとっている部分、os_delay_us がいくつかあります。このあたりをいじって、どのような挙動だと表示され、あるいは、されないのかという根本原理を探ってみたいと思います。

 

果たして、以下の3つのページでは何を言おうとしているのか?

http://essentialscrap.com/eink/electronics.html

http://essentialscrap.com/eink/waveforms.html

http://spritesmods.com/?art=einkdisplay&page=3

読んでいるだけでは、いまいちピンときません。実機を交え、1つづつ噛み砕いてみたいと思います。そして、次のE-ink ディスプレイにも応用できるノウハウが得られればと思っています。一番やりたいのは、フレキシブルなE-ink への表示です。まだ、モノがこなれていないので、入手方法がわからずですが、数年経てば入手経路も確立されてくるだろうと思っています。

ロジックアナライザーをゲット

ESP8266で E-ink を表示させるために、信号解析用のロジックアナライザーが必要になりそうなので、安いものを探しました。

以前、Logic Pirate (とLogic Snifferで動作)というのを知りましたが、

Logic Pirate というオープンソースのロジックアナライザ

ハードが4500円(30ドル+送料)ほどで、もう少し安いのはないかと調査すると、ありました。世の中は本当に広いものです。

EZ-USB FX2LP CY7C68013A USB Development Board Core Board Logic Analyzer

CY7C68013A

これはaliexpress で1000円以下で売っています。ソフトウェアは、sigrok というオープンソースがあります。ということで、ポチっておきました。年末に来るといいな。

追記:EZ-USB FX2LPでアリエクを検索すると、たくさんでてきます。2021年2月時点で、537円になっていました。

追記:とても良い映像コンテンツがあったので貼っておきます。@OpenTechLabChan さんのチャンネルです。

http://sigrok.org/wiki/Main_Page

sigrok_logo

Windows はバイナリがあり、osx は brew で入れるようで、試してみましたが、インストールに失敗するようで、そのメモです。windows バイナリ版は起動し、以下のようにデモ信号を見れます。最初の一台としては十分な機能のような気がします。

Windows7__Running_

sigrok を osx で動作させるため、以下を参考。

http://sigrok.org/wiki/Mac_OS_X

以下の流れですが、★でこけます。

1) $ brew tap rene-dev/sigrok

2) $ brew install python3
3) $ brew install –HEAD libserialport
★4) $ brew install –HEAD –with-libserialport libsigrok
5) $ brew install –HEAD libsigrokdecode
6) $ brew install –HEAD –with-libserialport sigrok-cli
7) $ brew install –HEAD pulseview

8) $ brew install sigrok-cli

ファームウェアは、以下のようです。

・fx2lafw open-source firmware
http://sigrok.org/wiki/Fx2lafw
Lcsoft Mini Board (CY7C68013A)

以下、こける部分です。

1) ------------------------------------------------------
HOPE:~ junkhack$ brew tap rene-dev/sigrok
==> Tapping rene-dev/sigrok
Cloning into '/usr/local/Library/Taps/rene-dev/homebrew-sigrok'...
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 4), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.
Checking connectivity... done.
Tapped 6 formulae (35 files, 144K)
HOPE:~ junkhack$ 

・何か入れてからじゃないとだめな感じ。
8) ------------------------------------------------------
HOPE:~ junkhack$ brew install sigrok-cli
Error: Formulae found in multiple taps: 
 * homebrew/science/sigrok-cli
 * rene-dev/sigrok/sigrok-cli

Please use the fully-qualified name e.g. homebrew/science/sigrok-cli to refer the formula.
HOPE:~ junkhack$ 

・python3 はもう入ってた
2) ------------------------------------------------------
HOPE:~ junkhack$ brew install python3
Warning: python3-3.4.3_2 already installed
HOPE:~ junkhack$ 

・libserialport は入る
3) ------------------------------------------------------
HOPE:~ junkhack$ brew install --HEAD libserialport
==> Installing libserialport from rene-dev/homebrew-sigrok
==> Cloning git://sigrok.org/libserialport
Cloning into '/Library/Caches/Homebrew/libserialport--git'...
remote: Counting objects: 1036, done.
remote: Compressing objects: 100% (870/870), done.
remote: Total 1036 (delta 703), reused 249 (delta 165)
Receiving objects: 100% (1036/1036), 245.95 KiB | 81.00 KiB/s, done.
Resolving deltas: 100% (703/703), done.
Checking connectivity... done.
==> Checking out branch master
==> ./autogen.sh
==> ./configure --prefix=/usr/local/Cellar/libserialport/HEAD
==> make install
  /usr/local/Cellar/libserialport/HEAD: 9 files, 220K, built in 26 seconds
HOPE:~ junkhack$ 

・ここがこける
4) ------------------------------------------------------
HOPE:~ junkhack$ brew install --HEAD --with-libserialport libsigrok
==> Installing libsigrok from rene-dev/homebrew-sigrok
==> Installing dependencies for rene-dev/sigrok/libsigrok: libzip, libusb, libsigc++, glibmm, doxygen, autoconf-archive
==> Installing rene-dev/sigrok/libsigrok dependency: libzip
==> Downloading https://homebrew.bintray.com/bottles/libzip-0.11.2.mavericks.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring libzip-0.11.2.mavericks.bottle.2.tar.gz
  /usr/local/Cellar/libzip/0.11.2: 81 files, 536K
==> Installing rene-dev/sigrok/libsigrok dependency: libusb
==> Downloading https://homebrew.bintray.com/bottles/libusb-1.0.19.mavericks.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring libusb-1.0.19.mavericks.bottle.1.tar.gz
  /usr/local/Cellar/libusb/1.0.19: 11 files, 368K
==> Installing rene-dev/sigrok/libsigrok dependency: libsigc++
==> Downloading https://homebrew.bintray.com/bottles/libsigc++-2.4.1.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libsigc++-2.4.1.mavericks.bottle.tar.gz
  /usr/local/Cellar/libsigc++/2.4.1: 679 files, 14M
==> Installing rene-dev/sigrok/libsigrok dependency: glibmm
==> Downloading https://homebrew.bintray.com/bottles/glibmm-2.44.0.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring glibmm-2.44.0.mavericks.bottle.tar.gz
  /usr/local/Cellar/glibmm/2.44.0: 1626 files, 42M
==> Installing rene-dev/sigrok/libsigrok dependency: doxygen
==> Downloading https://homebrew.bintray.com/bottles/doxygen-1.8.10.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring doxygen-1.8.10.mavericks.bottle.tar.gz
  /usr/local/Cellar/doxygen/1.8.10: 8 files, 14M
==> Installing rene-dev/sigrok/libsigrok dependency: autoconf-archive
==> Downloading https://homebrew.bintray.com/bottles/autoconf-archive-2015.02.24.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring autoconf-archive-2015.02.24.mavericks.bottle.tar.gz
  /usr/local/Cellar/autoconf-archive/2015.02.24: 558 files, 4.3M
==> Installing rene-dev/sigrok/libsigrok
==> Cloning git://sigrok.org/libsigrok
Cloning into '/Library/Caches/Homebrew/libsigrok--git'...
remote: Counting objects: 27468, done.
remote: Compressing objects: 100% (13210/13210), done.
remote: Total 27468 (delta 19195), reused 20128 (delta 13736)
Receiving objects: 100% (27468/27468), 5.74 MiB | 274.00 KiB/s, done.
Resolving deltas: 100% (19195/19195), done.
Checking connectivity... done.
==> Checking out branch master
==> ./autogen.sh
==> ./configure --prefix=/usr/local/Cellar/libsigrok/HEAD
==> make install
    src/hardware/sysclk-lwla/.libs/api.o
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libsigrok.la] Error 1
make: *** Waiting for unfinished jobs....
/usr/local/Library/Homebrew/build.rb:178:in `dump': can't dump anonymous class #<Class:0x007f8c0b2253c8> (TypeError)
    from /usr/local/Library/Homebrew/build.rb:178:in `rescue in <main>'
    from /usr/local/Library/Homebrew/build.rb:167:in `<main>'
Error: marshal data too short
Please report this bug:
    https://git.io/brew-troubleshooting
/usr/local/Library/Homebrew/utils/fork.rb:39:in `load'
/usr/local/Library/Homebrew/utils/fork.rb:39:in `block (3 levels) in safe_fork'
/usr/local/Library/Homebrew/utils.rb:346:in `ignore_interrupts'
/usr/local/Library/Homebrew/utils/fork.rb:26:in `block (2 levels) in safe_fork'
/usr/local/Library/Homebrew/utils/fork.rb:7:in `open'
/usr/local/Library/Homebrew/utils/fork.rb:7:in `block in safe_fork'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tmpdir.rb:88:in `mktmpdir'
/usr/local/Library/Homebrew/utils/fork.rb:6:in `safe_fork'
/usr/local/Library/Homebrew/formula_installer.rb:542:in `build'
/usr/local/Library/Homebrew/formula_installer.rb:202:in `install'
/usr/local/Library/Homebrew/cmd/install.rb:189:in `install_formula'
/usr/local/Library/Homebrew/cmd/install.rb:94:in `block in install'
/usr/local/Library/Homebrew/cmd/install.rb:94:in `each'
/usr/local/Library/Homebrew/cmd/install.rb:94:in `install'
/usr/local/Library/brew.rb:133:in `<main>'
HOPE:~ junkhack$ 

・進めるが、Error
5) ------------------------------------------------------
HOPE:~ junkhack$ brew install --HEAD libsigrokdecode
Error: Formulae found in multiple taps: 
 * homebrew/science/libsigrokdecode
 * rene-dev/sigrok/libsigrokdecode

Please use the fully-qualified name e.g. homebrew/science/libsigrokdecode to refer the formula.
HOPE:~ junkhack$ 

・進めるが、Error
6) ------------------------------------------------------
HOPE:~ junkhack$ brew install --HEAD --with-libserialport sigrok-cli
Error: Formulae found in multiple taps: 
 * homebrew/science/sigrok-cli
 * rene-dev/sigrok/sigrok-cli

Please use the fully-qualified name e.g. homebrew/science/sigrok-cli to refer the formula.
HOPE:~ junkhack$ 

・進めるが、Error
7) ------------------------------------------------------
HOPE:~ junkhack$ brew install --HEAD pulseview
Error: Formulae found in multiple taps: 
 * homebrew/science/pulseview
 * rene-dev/sigrok/pulseview

Please use the fully-qualified name e.g. homebrew/science/pulseview to refer the formula.
HOPE:~ junkhack$ 

・進めるが、Error
8) ------------------------------------------------------
HOPE:~ junkhack$ brew install sigrok-cli
Error: Formulae found in multiple taps: 
 * homebrew/science/sigrok-cli
 * rene-dev/sigrok/sigrok-cli

Please use the fully-qualified name e.g. homebrew/science/sigrok-cli to refer the formula.
HOPE:~ junkhack$ 

Building manually の手順でやればいいのかもですが、osx のバイナリもだれか作っているはずで、探したらありました。また実機が着たらゆっくり料理することにし、今はソフトウェアの動作だけ確認しておきます。

_Applicationsちょっとバージョンは古いようですが、osx でも動作するようです。

ドラッグでタイムラインの移動、マウスホイールで信号の拡大縮小できるインターフェイスです。各種信号解析も可能なようです。デジタルは8チャンネル入るようですので、これで十分用は足せそうです。DHT の温度センサーのデータ解析もあるようです。自分にはこれで十分だと思います。osx サポートするハードウェアはかなりたくさんあって、迷います。とりあえず、8チャンネル取れるもので、安いものを選びました。

Open Workbench Logic Sniffer というのも、良さそうです。

http://sigrok.org/wiki/Supported_hardware
Supported_hardware_-_sigrok

その後、マニュアルビルドを試すも、libsigrok のmake で失敗。以下次回再開するときのメモ。

・Building manually
http://sigrok.org/wiki/Mac_OS_X

★Install MacPorts,
★Install Qt, download qt-mac-opensource-4.7.4.dmg
★以下必須

$ sudo port install boost libusb libzip libftdi0
$ sudo port install autoconf automake cmake glib2 python33 libtool pkgconfig
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

---------------------
libserialport --> OK
libsigrok --> NG
libsigrokdecode --> OK
sigrok-cli --> NG (libsigrok必須)
PulseView --> NG (libsigrokcxx>=0.4.0 必須)
---------------------

▼libserialport
$ git clone git://sigrok.org/libserialport
$ cd libserialport
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

★OK

    HOPE:libserialport junkhack$ make
    /Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
      CC       serialport.lo
      CC       macosx.lo
      CCLD     libserialport.la
    HOPE:libserialport junkhack$ 
    HOPE:libserialport junkhack$ sudo make install
    Password:
     /usr/local/bin/gmkdir -p '/usr/local/lib'
     /bin/sh ./libtool --silent  --mode=install /usr/local/bin/ginstall -c   libserialport.la '/usr/local/lib'
     /usr/local/bin/gmkdir -p '/usr/local/include'
     /usr/local/bin/ginstall -c -m 644 libserialport.h '/usr/local/include'
     /usr/local/bin/gmkdir -p '/usr/local/lib/pkgconfig'
     /usr/local/bin/ginstall -c -m 644 libserialport.pc '/usr/local/lib/pkgconfig'
    HOPE:libserialport junkhack$

▼libsigrok
$ git clone git://sigrok.org/libsigrok
$ cd libsigrok
$ ./autogen.sh
$ ./configure
$ make★こける。これが入らないと進まない。
$ sudo make install

    libsigrok configuration summary:
     - Package version................. 0.4.0-git-17124cf
     - Library ABI version............. 2:0:0
     - Prefix.......................... /usr/local
     - Building on..................... x86_64-apple-darwin13.4.0
     - Building for.................... x86_64-apple-darwin13.4.0
    
    Compile configuration:
     - C compiler...................... gcc
     - C compiler version.............. Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
     - C compiler flags................ -g -O2
     - Additional C compiler flags..... -std=c99 -fvisibility=hidden
     - C compiler warnings............. -Wall -Wextra -Wmissing-prototypes
     - C++ compiler.................... g++
     - C++ compiler version............ Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
     - C++ compiler flags.............. -g -O2 -std=c++11
     - C++ compiler warnings........... -Wall -Wextra
    
    Detected libraries (required):
     - glib-2.0 >= 2.32.0.............. 2.44.1
     - libzip >= 0.10.................. 0.11.2
    
    Detected libraries (optional):
     - libserialport >= 0.1.1.......... 0.1.1
     - libftdi1 >= 1.0................. no
     - libftdi >= 0.16................. 0.20
     - libusb-1.0 >= 1.0.16............ 1.0.19
     - librevisa >= 0.0.20130412....... no
     - libgpib......................... no
     - libieee1284..................... no
     - check >= 0.9.4.................. no
     - glibmm-2.4 >= 2.32.0............ 2.44.0
     - python = 2.7.................... 2.7
     - pygobject-3.0 >= 3.0.0.......... no
    
    Enabled hardware drivers:
     - agilent-dmm..................... yes
     - appa-55ii....................... yes
     - asix-sigma...................... yes
     - atten-pps3xxx................... yes
     - baylibre-acme................... no (missing: sys_timerfd_h)
     - beaglelogic..................... yes
     - brymen-bm86x.................... yes
     - brymen-dmm...................... yes
     - cem-dt-885x..................... yes
     - center-3xx...................... yes
     - chronovu-la..................... yes
     - colead-slm...................... yes
     - conrad-digi-35-cpu.............. yes
     - deree-de5000.................... yes
     - demo............................ yes
     - fluke-dmm....................... yes
     - fx2lafw......................... yes
     - gmc-mh-1x-2x.................... yes
     - gwinstek-gds-800................ yes
     - hameg-hmo....................... yes
     - hantek-dso...................... yes
     - hung-chang-dso-2100............. no (missing: libieee1284)
     - ikalogic-scanalogic2............ yes
     - ikalogic-scanaplus.............. yes
     - kecheng-kc-330b................. yes
     - kern-scale...................... yes
     - korad-kaxxxxp................... yes
     - lascar-el-usb................... yes
     - manson-hcs-3xxx................. yes
     - maynuo-m97...................... yes
     - mic-985xx....................... yes
     - motech-lps-30x.................. yes
     - norma-dmm....................... yes
     - openbench-logic-sniffer......... yes
     - pipistrello-ols................. yes
     - rigol-ds........................ yes
     - saleae-logic16.................. yes
     - scpi-pps........................ yes
     - serial-dmm...................... yes
     - sysclk-lwla..................... yes
     - teleinfo........................ yes
     - testo........................... yes
     - tondaj-sl-814................... yes
     - uni-t-dmm....................... yes
     - uni-t-ut32x..................... yes
     - victor-dmm...................... yes
     - yokogawa-dlm.................... yes
     - zeroplus-logic-cube............. yes
    
    Enabled SCPI backends:
     - TCP............................. yes
     - RPC............................. yes
     - serial.......................... yes
     - VISA............................ no
     - GPIB............................ no
     - USBTMC.......................... yes
    
    Enabled language bindings:
     - C++............................. yes
     - Python.......................... no (missing: PyGObject, SWIG)
     - Java............................ no (missing: SWIG, JNI headers)


    HOPE:libsigrok junkhack$ make
    /Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
      CC       src/backend.lo
      CC       src/device.lo
    
    ::
    
      CC       src/hardware/zeroplus-logic-cube/api.lo
      CCLD     libsigrok.la
    duplicate symbol _lwla1016_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/lwla1016.o
    duplicate symbol _lwla1034_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/lwla1016.o
    duplicate symbol _lwla1034_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/lwla1034.o
    duplicate symbol _lwla1016_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/lwla1034.o
    duplicate symbol _lwla1016_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/protocol.o
    duplicate symbol _lwla1034_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/protocol.o
    duplicate symbol _lwla1016_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/api.o
    duplicate symbol _lwla1034_info in:
        src/hardware/sysclk-lwla/.libs/lwla.o
        src/hardware/sysclk-lwla/.libs/api.o
    ld: 8 duplicate symbols for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[1]: *** [libsigrok.la] Error 1
    make: *** [all] Error 2
    HOPE:libsigrok junkhack$ 

▼libsigrokdecode
$ git clone git://sigrok.org/libsigrokdecode
$ cd libsigrokdecode
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

★OK

    1 warning generated.
      CC       decoder.lo
      CC       instance.lo
      CC       log.lo
      CC       util.lo
      CC       exception.lo
      CC       module_sigrokdecode.lo
      CC       type_decoder.lo
      CC       type_logic.lo
      CC       error.lo
      CC       version.lo
      CCLD     libsigrokdecode.la
    HOPE:libsigrokdecode junkhack$ sudo make install
     /usr/local/bin/gmkdir -p '/usr/local/lib'
     /bin/sh ./libtool --silent  --mode=install /usr/local/bin/ginstall -c   libsigrokdecode.la '/usr/local/lib'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrokdecode'
     /usr/local/bin/ginstall -c -m 644 version.h '/usr/local/include/libsigrokdecode'
     /usr/local/bin/gmkdir -p '/usr/local/lib/pkgconfig'
     /usr/local/bin/ginstall -c -m 644 libsigrokdecode.pc '/usr/local/lib/pkgconfig'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrokdecode'
     /usr/local/bin/ginstall -c -m 644 libsigrokdecode.h '/usr/local/include/libsigrokdecode'
    /Applications/Xcode.app/Contents/Developer/usr/bin/make  install-data-hook
    /usr/local/bin/gmkdir -p /usr/local/share/libsigrokdecode/decoders
    python3.4 ./tools/install-decoders \
            -i ./decoders -o /usr/local/share/libsigrokdecode/decoders
    Installing 59 protocol decoders:
    adns5020 am230x arm_etmv3 arm_itm arm_tpiu avr_isp can dcf77 ds1307 edid 
    eeprom24xx guess_bitrate i2c i2cdemux i2cfilter i2s ir_nec ir_rc5 jitter jtag 
    jtag_stm32 lm75 lpc max7219 maxim_ds28ea00 mdio midi mlx90614 modbus mrf24j40 
    mxc6225xu nrf24l01 nunchuk onewire_link onewire_network pan1321 parallel pwm qi 
    rfm12 rgb_led_spi rtc8564 sdcard_sd sdcard_spi spdif spi spiflash stepper_motor 
    swd tca6408a timing tlc5620 uart usb_packet usb_power_delivery usb_request 
    usb_signalling xfp z80 
    HOPE:libsigrokdecode junkhack$ 

▼sigrok-cli
$ git clone git://sigrok.org/sigrok-cli
$ cd sigrok-cli
$ ./autogen.sh
$ ./configure★libsigrokがないと言われる。まぁ、まだ入れてないですからね。
$ make
$ sudo make install

    HOPE:sigrok-cli junkhack$ ./configure 
    checking for a BSD-compatible install... /usr/local/bin/ginstall -c
    checking whether build environment is sane... yes
    ::
    checking for _FILE_OFFSET_BITS value needed for large files... no
    checking for SIGROK_CLI... no
    configure: error: Package requirements (glib-2.0 >= 2.32.0 libsigrok >= 0.4.0 libsigrokdecode >= 0.4.0) were not met:
    
    No package 'libsigrok' found★
    
    Consider adjusting the PKG_CONFIG_PATH environment variable if you
    installed software in a non-standard prefix.
    
    Alternatively, you may set the environment variables SIGROK_CLI_CFLAGS
    and SIGROK_CLI_LIBS to avoid the need to call pkg-config.
    See the pkg-config man page for more details.
    HOPE:sigrok-cli junkhack$ 


▼PulseView
$ git clone git://sigrok.org/pulseview
$ cd pulseview
$ cmake .★libsigrokcxx>=0.4.0 がないと
$ make
$ sudo make install

    HOPE:pulseview junkhack$ cmake .
    -- Found PkgConfig: /opt/local/bin/pkg-config (found version "0.28") 
    -- The C compiler identification is AppleClang 6.0.0.6000057
    -- The CXX compiler identification is AppleClang 6.0.0.6000057
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- checking for modules 'libsigrokcxx>=0.4.0;libsigrokdecode>=0.4.0'
    --   package 'libsigrokcxx>=0.4.0' not found
    CMake Error at /opt/local/share/cmake-3.3/Modules/FindPkgConfig.cmake:340 (message):
      A required package was not found
    Call Stack (most recent call first):
      /opt/local/share/cmake-3.3/Modules/FindPkgConfig.cmake:502 (_pkg_check_modules_internal)
      CMakeLists.txt:79 (pkg_check_modules)
    
    
    -- Configuring incomplete, errors occurred!
    See also "/Users/junkhack/Desktop/aa/tmp/pulseview/CMakeFiles/CMakeOutput.log".
    HOPE:pulseview junkhack$ 

※QT はまだ入れてない。