Sigrok の Pulsview 0.3.0 動きました

とりあえず、なんとか動かしたいのでソースをコードも見ましたが、特に問題となりそうな部分もなく、ちょっと場を離れてから、brew版のをサイド入れてみることに。とりあえず、動作させることができました。

なんとか、今年中に出来たのですっきり。

 

0.3.0-git-5d73886 では、以下のようにトリガーが設定できて楽になりました。Runを押せばトリガーがでるまで、stop して採取されます。サンプル数を設定しておけば、採取されて停止します。ロジックアナライザーとしては基本機能だと思いますが、手持ちのハードでなんとか動いてよかったです。

7

拡大すると、500ns とか取れています。1us 単位くらいまでは見れそうということがわかりました。

8

サンプルレートは、2MHz 以上あげるとどうしても採取後にクルクル回って、操作を受け付けないスタック状態のような感じになります。コマンドライン版でドライバを指定してみると、以下のようです。

$ sigrok-cli --show --driver fx2lafw
Driver functions:
    Logic analyzer
Scan options:
    conn
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
fx2lafw:conn=28.2 - Saleae Logic with 8 channels: 0 1 2 3 4 5 6 7
Supported configuration options:
    continuous: 
    limit_samples: 0 (current)
    conn: 28.2 (current)
    samplerate - supported samplerates:
      20 kHz
      25 kHz
      50 kHz
      100 kHz
      200 kHz
      250 kHz
      500 kHz
      1 MHz
      2 MHz
      3 MHz
      4 MHz
      6 MHz
      8 MHz
      12 MHz
      16 MHz
      24 MHz
    Supported triggers: 0 1 r f e 
    captureratio: 0 (current)

ここに出ているサンプリング周波数は採取できるはずなんですが、なぜか2MHz までしかとれません。

まぁ、最初の一台ですし、これで勉強させてもらって、物足りなければまた考えることにします。

 

automator でシェルスクリプトを実行するものを作り、アイコンをつけて、app 化します。

6

python の環境変数を一度 unset して消去して、python3.4 とか3.x のをセットしてアプリをバックグランドで呼び出します。

unset PYTHONPATH
export PYTHONPATH="/usr/local/lib/python3.4/site-packages/:$PYTHONPATH"

/usr/local/Cellar/pulseview/HEAD/bin/pulseview >/dev/null 2>&1 &

 

配布用にするには、ライブラリのパスを全部書き換えないといけないので、やめました。このあたりのスキルは、もう少し勉強しないと嵌りそうです。

5

brew 版のインストールは、wiki に書いてあるとおりで以下のようです。

https://sigrok.org/wiki/Mac_OS_X

$ brew tap rene-dev/sigrok

$ brew install python3

$ brew install –HEAD libserialport

$ brew install –HEAD –with-libserialport libsigrok

$ brew install –HEAD libsigrokdecode

$ brew install –HEAD –with-libserialport sigrok-cli

$ brew install –HEAD pulseview

ポイントとしては、マニュアルビルドしてソースから入れたものは一度、綺麗に消して、brew docter で問題をクリアにしてからやることと、以下の libsigrokdecode が2つ出てくるのでbrew のを無効にすることくらいです。

$ brew install –HEAD libsigrokdecode

Error: Formulae found in multiple taps:

* homebrew/science/libsigrokdecode

* rene-dev/sigrok/libsigrokdecode

 

$ brew untap homebrew/science

$ brew tap –repair

$ brew update

 

あと、ファームウェアの格納場所は、デフォルトで

/usr/local/share/sigrok-firmware

になるので、ここにディレクトリを作成し、最新のファームウェアを入れておきます。これで最初のデバイスを見つけてファームがなくエラーになるのを迂回できます。エラーでも、落ちはしませんが。前回落ちたのは別の原因で、QT 関連のライブラリのパスが書き換わっていないのが原因でした。ltool で見ると、/usr 配下となっていました。そのほかの原因もあったとは思いますが、ライブラリの依存関係でおそらくは、brew 版のを見に行っていたのかもしれません。まぁ、詳細は不明です。

 

ということで、とりあえずは動いてよかったです。トリガーもかけられるようになったし、インターフェイスは少しよくなった感じ。ボタンの配置とか。

 

▼まとめ

・EZ-USB FX2LP CY7C68013A で、sigrok の pulsview は動作

・このハードは実質6ドルくらいなので、ロジックアナライザーとして最初の一台で遊ぶには十分

・0.3.0-git-f3697d3 は動作した

・トリガーがかけられるようになった

・少しインターフェイスがよくなった

・2Mhz サンプリングまでは出来ることを確認

・1チャンネル採取で500ns は採取できた。1us くらいが精度か?

・8チャンネル同時採取はまだやっていない

・ファームウェア格納場所は、/usr/local/share/sigrok-firmware

・brew 版で HEAD で入れているので、時期によっては動作しない場合もあるかも

・配布用に、ライブラリを書き換えるのはどうすれば楽になるのか?要研究

sigrok Pulsview を osx でビルドに挑戦

PulseView の 0.3.0-git-f3697d3 をビルドしてみました。

結論から言えば、今のところ起動してすぐ落ちます。(涙)

1

無理やり、メニューから開いてみるとポートのオープンでこけているような感じです。about は見れました。

2

デバイスにもコネクトし、スキャンすれば出てきます。

3

しかし、OK を押すと最初のダイアログ表示が出て、OK を押すと、SIGABRT で落ちます。

Process:         pulseview-bin [95174]
Path:            /Applications/PulseView.app/Contents/MacOS/./pulseview-bin
Identifier:      com.yourcompany.pulseview
Version:         0.3.0-git-5d73886 (???)
Code Type:       X86-64 (Native)
Parent Process:  sh [95171]
Responsible:     sh [95171]
User ID:         501

Date/Time:       2015-12-30 03:51:25.054 +0900
OS Version:      Mac OS X 10.9.5 (13F34)
Report Version:  11
Anonymous UUID:  C9AF270A-FCB7-7966-372A-2DF968A13DBE


Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib            0x00007fff8f96d866 __pthread_kill + 10
1   libsystem_pthread.dylib           0x00007fff8bb5535c pthread_kill + 92
2   libsystem_c.dylib                 0x00007fff85eefb1a abort + 125
3   libglib-2.0.0.dylib               0x00000001022cae07 g_assertion_message + 387
4   libglib-2.0.0.dylib               0x00000001022cae65 g_assertion_message_expr + 94
5   libglib-2.0.0.dylib               0x00000001022e43a8 g_variant_type_info_check + 379
6   libglib-2.0.0.dylib               0x00000001022e41fe g_variant_type_info_get_type_string + 16
7   libglib-2.0.0.dylib               0x00000001022d7b7c g_variant_get_type + 22
8   pulseview-bin                     0x000000010112d4af pv::prop::Int::get_widget(QWidget*, bool) + 159 (int.cpp:72)
9   pulseview-bin                     0x000000010111733f pv::binding::Binding::add_properties_to_form(QFormLayout*, bool) const + 95 (binding.cpp:55)
10  pulseview-bin                     0x000000010111742d pv::binding::Binding::get_property_form(QWidget*, bool) const + 109 (binding.cpp:71)
11  pulseview-bin                     0x0000000101129599 pv::popups::DeviceOptions::DeviceOptions(std::__1::shared_ptr<sigrok::Device>, QWidget*) + 185 (qglobal.h:2436)
12  pulseview-bin                     0x000000010112f96b pv::toolbars::MainBar::update_device_config_widgets() + 171 (memory:4447)
13  pulseview-bin                     0x000000010112f82b pv::toolbars::MainBar::update_device_list() + 475 (list:565)
14  pulseview-bin                     0x00000001010eac9a pv::MainWindow::select_init_device() + 1594 (mainwindow.cpp:589)
15  pulseview-bin                     0x00000001010e759e pv::MainWindow::MainWindow(pv::DeviceManager&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, QWidget*) + 606 (mainwindow.cpp:128)
16  pulseview-bin                     0x00000001010e2880 main + 848 (main.cpp:163)
17  libdyld.dylib                     0x00007fff89c435fd start + 1

うーん、なんでしょうかね。

 

とりあえず、いつかまた再チャレンジするときに備えて、ビルド手順を載せておきます。

▼環境

osx 10.9.5

qt-opensource-mac-4.8.7

$ xcode-select -v

xcode-select version 2333.

$ xcode-select -p

/Applications/Xcode.app/Contents/Developer

$ xcode-select -print-path

/Applications/Xcode.app/Contents/Developer

$ xcodebuild -version

Xcode 6.2

Build version 6C131e

$ cmake –version

cmake version 3.4.1

$ clang -v

Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)

Target: x86_64-apple-darwin13.4.0

Thread model: posix

こんな感じの環境です。ビルド手順は、基本以下のとおりです。cmake するオプションは少し買えました。

https://sigrok.org/wiki/Mac_OS_X

前準備として、Qtの4系最終の4.8.7 を入れておきます。

あと、ports で以下を入れておきます。

$ sudo port selfupdate

$ 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

$ git clone git://sigrok.org/libserialport

$ cd libserialport

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

以下に入りました。

    HOPE:libserialport junkhack$ sudo make install
      CC       serialport.lo
      CC       macosx.lo
      CCLD     libserialport.la
     /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'

次、libsigrok です。

libsigrok

$ git clone git://sigrok.org/libsigrok

$ cd libsigrok

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

以下に入りました。

    HOPE:libsigrok junkhack$ sudo make install
     /usr/local/bin/gmkdir -p '/usr/local/lib'
     /bin/sh ./libtool --silent  --mode=install /usr/local/bin/ginstall -c   libsigrok.la bindings/cxx/libsigrokcxx.la '/usr/local/lib'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /usr/local/lib/libsigrok.a(fallback.o) has no symbols
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrokcxx'
     /usr/local/bin/ginstall -c -m 644 bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp '/usr/local/include/libsigrokcxx'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrok'
     /usr/local/bin/ginstall -c -m 644 include/libsigrok/libsigrok.h include/libsigrok/proto.h '/usr/local/include/libsigrok'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrokcxx'
     /usr/local/bin/ginstall -c -m 644 bindings/cxx/include/libsigrokcxx/enums.hpp '/usr/local/include/libsigrokcxx'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrok'
     /usr/local/bin/ginstall -c -m 644 include/libsigrok/version.h '/usr/local/include/libsigrok'
     /usr/local/bin/gmkdir -p '/usr/local/lib/pkgconfig'
     /usr/local/bin/ginstall -c -m 644 libsigrok.pc bindings/cxx/libsigrokcxx.pc '/usr/local/lib/pkgconfig'
    HOPE:libsigrok junkhack$ 

次、コマンドライン版のです。

sigrok-cli

$ git clone git://sigrok.org/sigrok-cli

$ cd sigrok-cli

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

以下に入りました。

    HOPE:sigrok-cli junkhack$ sudo make install
     /usr/local/bin/gmkdir -p '/usr/local/bin'
      /usr/local/bin/ginstall -c sigrok-cli '/usr/local/bin'
     /usr/local/bin/gmkdir -p '/usr/local/share/man/man1'
     /usr/local/bin/ginstall -c -m 644 doc/sigrok-cli.1 '/usr/local/share/man/man1'
    HOPE:sigrok-cli junkhack$ 

次が、問題のやつです。

PulseView

$ git clone git://sigrok.org/pulseview

$ cd pulseview

$ cmake -DENABLE_TESTS=n -DDISABLE_WERROR=y .

$ make

$ sudo make install

cmake でテストをn にするか、警告を無視するかをチェックし、進みます。何か、未定義の変数や宣言などがあるようです。直すのが面倒だったので、とりあえず。

以下に入りました。

    HOPE:pulseview junkhack$ sudo make install
    Password:
    [ 54%] Built target pulseview
    [100%] Built target pulseview-test
    Install the project...
    -- Install configuration: "RelWithDebInfo"
    -- Installing: /usr/local/bin/pulseview
    -- Installing: /usr/local/share/man/man1/pulseview.1
    HOPE:pulseview junkhack$ 

で、いきなり実行するも、以下のように。

$ ll /usr/local/bin/pulseview

-rwxr-xr-x  1 root  admin  1913672 12 30 00:57 /usr/local/bin/pulseview

$ /usr/local/bin/pulseview

Failed to import the site module

Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!

     PYTHONPATH is currently: "/usr/local/lib/python2.7/site-packages"

     You should `unset PYTHONPATH` to fix this.

otool でライブラリのパスを見ると、以下のようです。

$ otool -L /usr/local/bin/pulseview
/usr/local/bin/pulseview:
    /opt/local/lib/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    /opt/local/lib/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    /opt/local/lib/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.7)
    QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
    QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
    /usr/local/lib/libsigrokcxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    /usr/local/lib/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    /usr/local/lib/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
    /opt/local/lib/libgobject-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    /usr/local/lib/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/local/lib/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    /opt/local/lib/libglib-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.4.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

うーん、Python3.x でということですが、ありません。あと、以下の3つはどこ探してもありませんでしたが、、、

QtSvg.framework

QtGui.framework

QtCore.framework

ちなみに、Qt5.5 でビルドしたときは、以下のようでした。

    ----- qt5.5
    HOPE:MacOS junkhack$ otool -L pulseview 
    pulseview:
        /opt/local/lib/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /opt/local/lib/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /opt/local/lib/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /opt/local/lib/libboost_unit_test_framework-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        @rpath/QtSvg.framework/Versions/5/QtSvg (compatibility version 5.5.0, current version 5.5.1)
        /usr/local/lib/libsigrokcxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /usr/local/lib/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /usr/local/lib/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
        /opt/local/lib/libgobject-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
        /usr/local/lib/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
        /usr/local/lib/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /opt/local/lib/libglib-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
        /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.4.0)
        @rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.5.0, current version 5.5.1)
        @rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.5.0, current version 5.5.1)
        @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.5.0, current version 5.5.1)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
    HOPE:MacOS junkhack$ 

これは探せばありました。なんで、Qt4 だとないんでしょうか?何か入れ忘れたのですかね。ちなみに、0.2.0 のELIAS さんのビルドしたものは、以下のようです。

$ otool -L pulseview-bin 
pulseview-bin:
    @executable_path/../Frameworks/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.6)
    @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.6)
    @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.6)
    @executable_path/../Frameworks/libsigrokxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
    @executable_path/../Frameworks/libgobject-2.0.0.dylib (compatibility version 4201.0.0, current version 4201.0.0)
    @executable_path/../Frameworks/libglib-2.0.0.dylib (compatibility version 4201.0.0, current version 4201.0.0)
    @executable_path/../Frameworks/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
    @executable_path/../Frameworks/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    @executable_path/../Frameworks/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/Python.framework/Versions/3.4/Python (compatibility version 3.4.0, current version 3.4.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

Frameworks は、これを拝借します。

アプリケーション直下にコピーして上書きしてきます。

$ cd /Applications/PulseView.app/Contents

$ pwd
/Applications/PulseView.app/Contents

cp -p /opt/local/lib/libboost_filesystem-mt.dylib ./Frameworks
cp -p /opt/local/lib/libboost_system-mt.dylib ./Frameworks
cp -p /opt/local/lib/libboost_thread-mt.dylib ./Frameworks

cp -p /usr/local/lib/libsigrokcxx.2.dylib ./Frameworks
cp -p /usr/local/lib/libsigrok.2.dylib ./Frameworks
cp -p /usr/local/lib/libglibmm-2.4.1.dylib ./Frameworks
cp -p /opt/local/lib/libgobject-2.0.0.dylib ./Frameworks
cp -p /usr/local/lib/libsigc-2.0.0.dylib ./Frameworks
cp -p /usr/local/lib/libsigrokdecode.2.dylib ./Frameworks
cp -p /opt/local/lib/libglib-2.0.0.dylib ./Frameworks
cp -p /opt/local/lib/libintl.8.dylib ./Frameworks

Qt で作ったのをosx でライブラリにリンクするツールとか、そういうのはないのでしょうかね。

バイナリのライブラリは以下のコマンドで、書き換えられます。

install_name_tool -change 変更したいディレクトリ そこに新しく書き込みたいディレクトリ オブジェクトファイルの名前

パスを切り出して、テキストファイルで編集し、

HOPE:MacOS junkhack$ otool -L ./pulseview | cut -f 1 -d ' ' | cut -f 2
./pulseview:
/opt/local/lib/libboost_filesystem-mt.dylib
/opt/local/lib/libboost_system-mt.dylib
/opt/local/lib/libboost_thread-mt.dylib
QtSvg.framework/Versions/4/QtSvg
QtGui.framework/Versions/4/QtGui
QtCore.framework/Versions/4/QtCore
/usr/local/lib/libsigrokcxx.2.dylib
/usr/local/lib/libsigrok.2.dylib
/usr/local/lib/libglibmm-2.4.1.dylib
/opt/local/lib/libgobject-2.0.0.dylib
/usr/local/lib/libsigc-2.0.0.dylib
/usr/local/lib/libsigrokdecode.2.dylib
/opt/local/lib/libglib-2.0.0.dylib
/opt/local/lib/libintl.8.dylib
/usr/lib/libc++.1.dylib
/usr/lib/libSystem.B.dylib
HOPE:MacOS junkhack$ 

以下のようなコマンドを作りました。

cd MacOS/
cp pulseview pulseview_bup487

install_name_tool -change /opt/local/lib/libboost_filesystem-mt.dylib @executable_path/../Frameworks/libboost_filesystem-mt.dylib ./pulseview
install_name_tool -change /opt/local/lib/libboost_system-mt.dylib @executable_path/../Frameworks/libboost_system-mt.dylib ./pulseview
install_name_tool -change /opt/local/lib/libboost_thread-mt.dylib @executable_path/../Frameworks/libboost_thread-mt.dylib ./pulseview
install_name_tool -change QtSvg.framework/Versions/4/QtSvg @executable_path/../Frameworks/QtSvg.framework/Versions/4/QtSvg ./pulseview
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui ./pulseview
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore ./pulseview
install_name_tool -change /usr/local/lib/libsigrokcxx.2.dylib @executable_path/../Frameworks/libsigrokcxx.2.dylib ./pulseview
install_name_tool -change /usr/local/lib/libsigrok.2.dylib @executable_path/../Frameworks/libsigrok.2.dylib ./pulseview
install_name_tool -change /usr/local/lib/libglibmm-2.4.1.dylib @executable_path/../Frameworks/libglibmm-2.4.1.dylib ./pulseview
install_name_tool -change /opt/local/lib/libgobject-2.0.0.dylib @executable_path/../Frameworks/libgobject-2.0.0.dylib ./pulseview
install_name_tool -change /usr/local/lib/libsigc-2.0.0.dylib @executable_path/../Frameworks/libsigc-2.0.0.dylib ./pulseview
install_name_tool -change /usr/local/lib/libsigrokdecode.2.dylib @executable_path/../Frameworks/libsigrokdecode.2.dylib ./pulseview
install_name_tool -change /opt/local/lib/libglib-2.0.0.dylib @executable_path/../Frameworks/libglib-2.0.0.dylib ./pulseview
install_name_tool -change /opt/local/lib/libintl.8.dylib @executable_path/../Frameworks/libintl.8.dylib ./pulseview

パスを書き換えました。以下のようになっているはずです。

$ otool -L pulseview-bin 
pulseview-bin:
    @executable_path/../Frameworks/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.7)
    @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
    @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
    @executable_path/../Frameworks/libsigrokcxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
    @executable_path/../Frameworks/libgobject-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    @executable_path/../Frameworks/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    @executable_path/../Frameworks/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libglib-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    @executable_path/../Frameworks/libintl.8.dylib (compatibility version 10.0.0, current version 10.4.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

先輩が作ったのは、MacOS 配下に2つあって、以下のようです。

$ ll
total 1936
-rwxr-xr-x@ 1 junkhack  admin     187 11  3  2014 pulseview
-rwxr-xr-x@ 1 junkhack  admin  983748 11  3  2014 pulseview-bin

ビルドしたものを pulseview-bin に書き換えました。bin が付いていないのは、bash のバイナリファイルのようです。

HOPE:MacOS junkhack$ hexdump -C pulseview
00000000  23 21 2f 62 69 6e 2f 73  68 0a 0a 44 49 52 3d 22  |#!/bin/sh..DIR="|
00000010  24 28 64 69 72 6e 61 6d  65 20 22 24 30 22 29 22  |$(dirname "$0")"|
00000020  0a 63 64 20 22 24 44 49  52 22 0a 0a 65 78 70 6f  |.cd "$DIR"..expo|
00000030  72 74 20 50 59 54 48 4f  4e 48 4f 4d 45 3d 22 2e  |rt PYTHONHOME=".|
00000040  2e 2f 46 72 61 6d 65 77  6f 72 6b 73 2f 50 79 74  |./Frameworks/Pyt|
00000050  68 6f 6e 2e 66 72 61 6d  65 77 6f 72 6b 2f 56 65  |hon.framework/Ve|
00000060  72 73 69 6f 6e 73 2f 33  2e 34 2f 22 0a 65 78 70  |rsions/3.4/".exp|
00000070  6f 72 74 20 53 49 47 52  4f 4b 44 45 43 4f 44 45  |ort SIGROKDECODE|
00000080  5f 44 49 52 3d 22 2e 2e  2f 73 68 61 72 65 2f 6c  |_DIR="../share/l|
00000090  69 62 73 69 67 72 6f 6b  64 65 63 6f 64 65 2f 64  |ibsigrokdecode/d|
000000a0  65 63 6f 64 65 72 73 2f  22 0a 0a 2e 2f 70 75 6c  |ecoders/".../pul|
000000b0  73 65 76 69 65 77 2d 62  69 6e 0a                 |seview-bin.|
000000bb
HOPE:MacOS junkhack$ 

こういう感じで起動してるんですね。なるほどです。Frameworks 以下のPython から呼び出しているんですね。pulsview を拝借し、ビルドしたものは、pulseview-bin にファイル名を変更しておきます。

バージョンをInfo.plist に加えておきます。

$ cat Info.plist 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
    <key>NSPrincipalClass</key>
    <string>NSApplication</string>
    <key>CFBundleIconFile</key>
    <string>sigrok.icns</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleGetInfoString</key>
    <string>PulseView is a Qt based logic analyzer GUI for sigrok.</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleExecutable</key>
    <string>pulseview</string>
    <key>CFBundleIdentifier</key>
    <string>com.yourcompany.pulseview</string>
    <key>CFBundleShortVersionString</key>
    <string>0.3.0-git-5d73886</string>
</dict>
</plist>

さて、これでいいはずですが、、、、結果は冒頭に書いたとおりです。ちなみに、Qt5.5 でも似たような感じでした。

git リポジトリを見ると、この24時間くらいでそこそこ手が入っているようです。

pulseview.git / summary

http://sigrok.org/gitweb/?p=pulseview.git;a=summary

あと、オフィシャルのwiki にもビルドするのに必要な要件などがまとまっているようです。

sigrok wiki : Building

https://sigrok.org/wiki/Building#Building_from_source

▼まとめ

・PulseView の 0.3.0-git-f3697d3 では、だめだった

・デバイスのオープンでこけているようです

・libglib-2.0.0.dylib から こけている感じ。

・ライブラリのコピーが悪いのかも

・0.2.0 のソースで試してだめなら、Qt4 のライブラリの入れ方などが悪いのかも。

・Qt で osx の実行ファイルを作るユーティリティーとかないかなぁ

・クリーンインストールしたosx でやってみたいが、その環境がない

・Qt4 の QtGui とか QtCore とかの Framework はどこにあるのでしょうか?

・ソースに手をつける以前の問題で疲れ果てた

 

参考

Qt for OS X – Deployment

http://doc.qt.io/qt-5/osx-deployment.html

 

Building OSX App Bundle

http://stackoverflow.com/questions/1596945/building-osx-app-bundle


sigrok bugzilla

http://sigrok.org/bugzilla/describecomponents.cgi?product=PulseView

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 さんのビルドしたものです。

OPIでFedora22のメモ

loborisさんがリリースしている、Fedora22 のMinimal がどんなものテスト。

以下、備忘録です。Cで、GPIO ピンで光らせる部分まで確認。

 

・Fedora22_Minimal.img をsdcard に dd。要注意で。

$ sudo dd bs=1m if=./Fedora22_Minimal.img of=/dev/rdisk3

・BOOT パーティションの中は、orange pi pc の用途にあったものにリネーム。

[junkhack@OrangePi ~]$ ll /media/boot/
合計 10695
-rwxr-xr-x 1 root root    35724 10月 13 14:08 script.bin
-rwxr-xr-x 1 root root 10915616 10月 13 14:08 uImage

 

・SDCard 挿入、起動

・DHCP で起動するので、IP を固定に。以下のようになじみのあるeth0 に名前変更。

[root@opi 13:35:56 network-scripts]# ll ifcfg-*
-rw-r--r-- 1 root root 364 Jan  1  1970 ifcfg-LoBoInternet
-rw-r--r-- 1 root root 389 Dec 19 13:15 ifcfg-eth0
-rw-r--r-- 1 root root 254 Apr  9  2015 ifcfg-lo
[root@opi 13:36:06 network-scripts]# 

 

・中を変更

[root@opi 13:36:07 network-scripts]# cat ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=c0a09f2a-3229-4901-9689-7deb7e356848
DEVICE=eth0
ONBOOT=yes
DOMAIN=junkhack
IPADDR=192.168.1.42
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.17
DNS2=192.168.1.1
[root@opi 13:36:23 network-scripts]# 

 

・root のプロンプトを変更。好みで。

[root@opi 13:35:08 ~]# tail -n 3 .bash_profile 
PS1="[\u@opi \t \W]# "
export LANG=C

[root@opi 13:35:16 ~]# 

 

・タイムゾーン設定

[root@opi 13:34:18 ~]# timedatectl set-timezone Asia/Tokyo

・後方の空きパーティション拡大。スクリプトが同梱されているので。ない場合は、git にあるので参照。

[root@opi 13:37:46 ~]# find / -name fs_resize
/usr/local/bin/fs_resize
[root@opi 13:37:59 ~]# 

[root@opi 13:39:25 ~]# fs_resize

 

リブート

・cpu周波数のツールを入れ、ポリシーを見てみる。interactiveのようです。

[root@opi 13:43:15 ~]# dnf install cpufrequtils

[root@opi 13:51:19 ~]# cpupower frequency-info
analyzing CPU 0:
  driver: cpufreq-sunxi
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0 1 2 3
  maximum transition latency: 2.00 ms.
  hardware limits: 480 MHz - 1.54 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, interactive, performance
  current policy: frequency should be within 480 MHz and 1.54 GHz.
                  The governor "interactive"★ may decide which speed to use
                  within this range.
  current CPU frequency is 480 MHz (asserted by call to hardware).
  cpufreq stats: 60.0 MHz:0.00%, 120 MHz:0.00%, 240 MHz:0.00%, 312 MHz:0.00%, 408 MHz:0.00%, 480 MHz:96.37%, 504 MHz:0.00%, 600 MHz:0.00%, 648 MHz:0.00%, 720 MHz:0.00%, 816 MHz:0.01%, 912 MHz:0.00%, 1.01 GHz:0.95%, 1.10 GHz:0.06%, 1.20 GHz:0.21%, 1.34 GHz:0.17%, 1.44 GHz:0.01%, 1.54 GHz:2.21%  (173)
[root@opi 13:51:22 ~]# 

 

参考

http://oneofis05users.seesaa.net/article/288446337.html

    ■ Interactive

    より速いondemandを、ということで考案された。CPUがアイドル状態から

    抜けるとサンプリングを増やして追従を上げる。反応はondemandより良いが、

    最大クロックに上げるまでには間を取る。マルチタスクで忙しい仕事とゆっくり

    した仕事が交互にあっても、最大最小に切り替え時に一気に上下せず少し間を取って、

    中間のクロックを取る。パフォーマンス的にはondemandより良い。

    画面オンで早くトップスピードに上げるので、画面オンの時間が短く、それを

    繰り返すような使用法ではバッテリー消費が多くなる。

 

・kernel をあげてみる。上げる前は以下。

[root@opi 13:55:50 src]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2 ext4       15G  1.1G   13G   8% /
udev           devtmpfs   10M     0   10M   0% /dev
tmpfs          tmpfs     201M  420K  201M   1% /run
tmpfs          tmpfs     502M     0  502M   0% /dev/shm
tmpfs          tmpfs     502M     0  502M   0% /sys/fs/cgroup
/dev/mmcblk0p1 vfat       63M   11M   53M  17% /media/boot
tmpfs          tmpfs     101M     0  101M   0% /run/user/0
tmpfs          tmpfs     101M     0  101M   0% /run/user/1001
[root@opi 13:55:57 src]# 
[root@opi 13:55:57 src]# ll /boot/
total 12632
-rwxr-xr-x 1 root root    32768 Oct 13 23:08 boot0_OPI.fex
-rw-r--r-- 1 root root    35724 Oct 13 23:08 script.bin
-rw-r--r-- 1 root root    35724 Oct 13 23:08 script.bin.OPI-PC_1080p50
-rw-r--r-- 1 root root    35724 Oct 13 23:08 script.bin.OPI-PC_480p
-rw-r--r-- 1 root root    35724 Oct 13 23:08 script.bin.OPI-PC_720p50
-rw-r--r-- 1 root root    35724 Oct 13 23:08 script.bin.OPI-PC_720p60
-rw-r--r-- 1 root root   901120 Oct 13 23:08 u-boot_OPI-emmc.fex
-rw-r--r-- 1 root root   901120 Oct 13 23:08 u-boot_OPI.fex
-rw-r--r-- 1 root root 10915616 Oct 13 23:08 uImage
[root@opi 13:56:16 src]# 
[root@opi 13:56:38 src]# ll /media/boot/
total 10695
-rwxr-xr-x 1 root root    35724 Oct 13 14:08 script.bin
-rwxr-xr-x 1 root root 10915616 Oct 13 14:08 uImage
[root@opi 13:56:46 src]# 

[root@opi 13:57:30 src]# uname -a
Linux OrangePi 3.4.39 #1 SMP PREEMPT Mon Oct 12 12:02:29 CEST 2015 armv7l armv7l armv7l GNU/Linux
[root@opi 13:57:34 src]# lsmod
Module                  Size  Used by
8189es                887631  0
[root@opi 13:57:41 src]# 

 

・消してしまってスクリプト上でチェックしているようで、ダミーを作成

[root@opi 14:21:02 src]# echo > /boot/uImage_OPI-2

・tar も入ってなかったのでいれておく。

[root@opi 14:25:05 src]# dnf install tar

・スクリプト実行

[root@opi 13:57:45 src]# ./update_kernel.sh 
Sat Dec 19 13:57:54 JST 2015
*********************************************************
Updating kernel, script.bin and /lib/modules for OrangePI
*********************************************************

Do you want to download script&kernel package from server, (y/N)?  y.


Unpacking ...
Files unpacked.
==============================================
Select the OrangePI board you want to upgrade:
  1   OrangePI 2
  2   OrangePI PLUS
  3   OrangePI PC
?  3
Updating OrangePI PC

===============================
Select hdmi display resolution:
  1   1080p 60Hz
  2   1080p 50Hz
  3    720p 60Hz
  4    720p 50Hz
?  1

Selected 1080p 60Hz

=====================================
Do you have HDMI->DVI adapter, (y/N)?  N
HDMI interface selected

================
CONTINUE, (y/N)?  y

kernel, script.bin and /lib/modules updated, please REBOOT.
AFTER REBOOT RUN:  sudo depmod -a
===========================================================

[root@opi 14:29:35 src]# 

 

・video 関連が新規追加されたようです。

[root@opi 14:30:04 src]# ll /boot/
total 24220
-rwxr-xr-x 1 root root    32768 Dec 19 14:27 boot0_OPI.fex
-rw-r--r-- 1 root root    35836 Dec 19 14:27 script.bin.OPI-2_1080p50_dvi
-rw-r--r-- 1 root root    35792 Dec 19 14:27 script.bin.OPI-2_1080p50_hdmi
-rw-r--r-- 1 root root    35836 Dec 19 14:27 script.bin.OPI-2_1080p60_dvi
-rw-r--r-- 1 root root    35792 Dec 19 14:27 script.bin.OPI-2_1080p60_hdmi
-rw-r--r-- 1 root root    35836 Dec 19 14:27 script.bin.OPI-2_480p_dvi
-rw-r--r-- 1 root root    35792 Dec 19 14:27 script.bin.OPI-2_480p_hdmi
-rw-r--r-- 1 root root    35836 Dec 19 14:27 script.bin.OPI-2_720p50_dvi
-rw-r--r-- 1 root root    35792 Dec 19 14:27 script.bin.OPI-2_720p50_hdmi
-rw-r--r-- 1 root root    35836 Dec 19 14:27 script.bin.OPI-2_720p60_dvi
-rw-r--r-- 1 root root    35792 Dec 19 14:27 script.bin.OPI-2_720p60_hdmi
-rw-r--r-- 1 root root    35856 Dec 19 14:27 script.bin.OPI-PC_1080p50_dvi
-rw-r--r-- 1 root root    35812 Dec 19 14:27 script.bin.OPI-PC_1080p50_hdmi
-rw-r--r-- 1 root root    35856 Dec 19 14:27 script.bin.OPI-PC_1080p60_dvi
-rw-r--r-- 1 root root    35812 Dec 19 14:27 script.bin.OPI-PC_1080p60_hdmi
-rw-r--r-- 1 root root    35856 Dec 19 14:27 script.bin.OPI-PC_480p_dvi
-rw-r--r-- 1 root root    35812 Dec 19 14:27 script.bin.OPI-PC_480p_hdmi
-rw-r--r-- 1 root root    35856 Dec 19 14:27 script.bin.OPI-PC_720p50_dvi
-rw-r--r-- 1 root root    35812 Dec 19 14:27 script.bin.OPI-PC_720p50_hdmi
-rw-r--r-- 1 root root    35856 Dec 19 14:27 script.bin.OPI-PC_720p60_dvi
-rw-r--r-- 1 root root    35812 Dec 19 14:27 script.bin.OPI-PC_720p60_hdmi
-rw-r--r-- 1 root root    36900 Dec 19 14:27 script.bin.OPI-PLUS_1080p50_dvi
-rw-r--r-- 1 root root    36856 Dec 19 14:27 script.bin.OPI-PLUS_1080p50_hdmi
-rw-r--r-- 1 root root    36900 Dec 19 14:27 script.bin.OPI-PLUS_1080p60_dvi
-rw-r--r-- 1 root root    36856 Dec 19 14:27 script.bin.OPI-PLUS_1080p60_hdmi
-rw-r--r-- 1 root root    36900 Dec 19 14:27 script.bin.OPI-PLUS_480p_dvi
-rw-r--r-- 1 root root    36856 Dec 19 14:27 script.bin.OPI-PLUS_480p_hdmi
-rw-r--r-- 1 root root    36900 Dec 19 14:27 script.bin.OPI-PLUS_720p50_dvi
-rw-r--r-- 1 root root    36856 Dec 19 14:27 script.bin.OPI-PLUS_720p50_hdmi
-rw-r--r-- 1 root root    36900 Dec 19 14:27 script.bin.OPI-PLUS_720p60_dvi
-rw-r--r-- 1 root root    36856 Dec 19 14:27 script.bin.OPI-PLUS_720p60_hdmi
-rw-r--r-- 1 root root   901120 Dec 19 14:27 u-boot_OPI-emmc.fex
-rw-r--r-- 1 root root   901120 Dec 19 14:27 u-boot_OPI.fex
-rw-r--r-- 1 root root 10917600 Dec 19 14:27 uImage_OPI-2
-rw-r--r-- 1 root root 10917592 Dec 19 14:27 uImage_OPI-PLUS
[root@opi 14:30:08 src]# 
[root@opi 14:30:09 src]# ll /media/boot/
total 21392
-rwxr-xr-x 1 root root    35812 Dec 19 14:29 script.bin
-rwxr-xr-x 1 root root    35724 Dec 19 14:29 script.bin.bak
-rwxr-xr-x 1 root root 10917600 Dec 19 14:29 uImage
-rwxr-xr-x 1 root root 10915616 Dec 19 14:29 uImage.bak
[root@opi 14:30:14 src]# 

[root@opi 15:35:40 modules]# diff -qr 3.4.39/ 3.4.39-01-lobo/ | grep gpio
diff: 3.4.39/build: No such file or directory
diff: 3.4.39-01-lobo/build: No such file or directory
Files 3.4.39/kernel/drivers/gpio/gpio-sunxi.ko and 3.4.39-01-lobo/kernel/drivers/gpio/gpio-sunxi.ko differ
Files 3.4.39/kernel/drivers/w1/masters/w1-gpio.ko and 3.4.39-01-lobo/kernel/drivers/w1/masters/w1-gpio.ko differ
diff: 3.4.39/source: No such file or directory
diff: 3.4.39-01-lobo/source: No such file or directory
[root@opi 15:35:45 modules]# 

[root@opi 15:31:41 modules]# diff -qr 3.4.39/ 3.4.39-01-lobo/ | wc -l
diff: 3.4.39/build: No such file or directory
diff: 3.4.39-01-lobo/build: No such file or directory
diff: 3.4.39/source: No such file or directory
diff: 3.4.39-01-lobo/source: No such file or directory
197
[root@opi 15:31:54 modules]# 


[root@opi 15:45:18 modules]# diff -qr 3.4.39/ 3.4.39-01-lobo/ | grep 'Only in'
::
Only in 3.4.39-01-lobo/kernel/drivers/input: serio
Only in 3.4.39-01-lobo/kernel/drivers/input: touchscreen
Only in 3.4.39-01-lobo/kernel/drivers/media: dvb
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gl860
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_benq.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_conex.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_cpia1.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_etoms.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_finepix.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_jeilinj.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_jl2005bcd.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_kinect.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_konica.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_mars.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_mr97310a.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_nw80x.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_ov519.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_ov534.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_ov534_9.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_pac207.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_pac7302.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_pac7311.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_se401.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sn9c2028.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sn9c20x.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sonixb.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sonixj.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_spca1528.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_spca500.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_spca501.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_spca505.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_spca506.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_spca508.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_spca561.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sq905.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sq905c.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sq930x.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_stk014.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_stv0680.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_sunplus.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_t613.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_topro.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_tv8532.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_vc032x.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_vicam.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_xirlink_cit.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: gspca_zc3xx.ko
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: m5602
Only in 3.4.39-01-lobo/kernel/drivers/media/video/gspca: stv06xx
diff: 3.4.39/sourceOnly in 3.4.39-01-lobo/kernel/drivers/media/video: tveeprom.ko
: No such file or directory
Only in 3.4.39-01-lobo/kernel/drivers: misc
diff: Only in 3.4.39-01-lobo/kernel/drivers/net/wireless: rtl818x
3.4.39-01-lobo/sourceOnly in 3.4.39-01-lobo/kernel/drivers/net/wireless: zd1201.ko
: No such file or directory
Only in 3.4.39-01-lobo/kernel/drivers/net/wireless: zd1211rw
Only in 3.4.39-01-lobo/kernel/net: 802
Only in 3.4.39-01-lobo/kernel/net: bridge
Only in 3.4.39-01-lobo/kernel/net: llc
[root@opi 15:45:24 modules]# 

 

・gpio_sunxi がロード

[root@opi 14:32:15 ~]# sudo depmod -a

[root@opi 14:36:36 ~]# uname -a
Linux OrangePi 3.4.39-01-lobo #1 SMP PREEMPT Sun Oct 25 14:46:41 CET 2015 armv7l armv7l armv7l GNU/Linux

[root@opi 14:33:14 ~]# ls /sys/class/gpio_sw/
ls: cannot access /sys/class/gpio_sw/: No such file or directory
[root@opi 14:33:16 ~]# 

[root@opi 14:33:17 ~]# modprobe gpio_sunxi
[root@opi 14:33:34 ~]# 
[root@opi 14:33:35 ~]# lsmod
Module                  Size  Used by
gpio_sunxi              8233  0
8189es                901572  0
[root@opi 14:33:43 ~]# 
[root@opi 14:34:04 ~]# ls /sys/class/gpio_sw/
PA10  PA13  PA14  PA15  PA21  PA3  PA6  PA7  PA8  PA9  PC3  PC4  PC7  PD14  PG6  PG7  PG8  PG9  PL10  normal_led  standby_led
[root@opi 14:34:05 ~]# 

・基板上の電源LED の隣の緑LED が点灯、消灯

[root@opi 14:34:58 ~]# echo 1 > /sys/class/gpio_sw/standby_led/data
[root@opi 14:35:13 ~]# echo 0 > /sys/class/gpio_sw/standby_led/data

・WiringOP を入れる準備。c関連を面倒なのでグループインストール

[root@opi 14:41:48 WiringOP]# dnf group list
Last metadata expiration check performed 1:47:22 ago on Sat Dec 19 12:56:05 2015.
Available environment groups:
   Minimal Install
   Fedora Server
   Fedora Workstation
   Fedora Cloud Server
   KDE Plasma Workspaces
   Xfce Desktop
   LXDE Desktop
   LXQt Desktop
   Cinnamon Desktop
   MATE Desktop
   Sugar Desktop Environment
   Development and Creative Workstation
   Web Server
   Infrastructure Server
   Basic Desktop
Available groups:
   3D Printing
   Administration Tools
   Audio Production
   Authoring and Publishing
   Books and Guides
   C Development Tools and Libraries★
   Cloud Infrastructure
   Cloud Management Tools
   Container Management
   D Development Tools and Libraries
   Design Suite
   Development Tools
   Domain Membership
   Fedora Eclipse
   Editors
   Educational Software
   Electronic Lab
   Engineering and Scientific
   FreeIPA Server
   Games and Entertainment
   Headless Management
   LibreOffice
   MATE Applications
   MATE Compiz
   Medical Applications
   Milkymist
   Network Servers
   Office/Productivity
   Robotics
   RPM Development Tools
   Security Lab
   Sound and Video
   System Tools
   Text-based Internet
   Window Managers
[root@opi 14:43:30 WiringOP]# dnf group install "C Development Tools and Libraries"

 

・WiringOP ビルド

[root@opi 14:50:36 WiringOP]# ./build 
wiringPi Build script
=====================


WiringPi Library
[UnInstall]
[Compile] wiringPi.c
[Compile] wiringSerial.c
[Compile] wiringShift.c
[Compile] piHiPri.c
[Compile] piThread.c
[Compile] wiringPiSPI.c
[Compile] wiringPiI2C.c
[Compile] softPwm.c
[Compile] softTone.c
[Compile] softServo.c
[Compile] mcp23008.c
[Compile] mcp23016.c
[Compile] mcp23017.c
[Compile] mcp23s08.c
[Compile] mcp23s17.c
[Compile] sr595.c
[Compile] pcf8574.c
[Compile] pcf8591.c
[Compile] mcp3002.c
[Compile] mcp3004.c
[Compile] mcp4802.c
[Compile] mcp3422.c
[Compile] max31855.c
[Compile] max5322.c
[Compile] sn3218.c
[Compile] drcSerial.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
gpio.c:801:13: warning: 'doPadDrive' defined but not used [-Wunused-function]
 static void doPadDrive (int argc, char *argv [])
             ^
gpio.c:889:13: warning: 'doGbw' defined but not used [-Wunused-function]
 static void doGbw (int argc, char *argv [])
             ^
gpio.c:931:13: warning: 'doGbr' defined but not used [-Wunused-function]
 static void doGbr (int argc, char *argv [])
             ^
[Compile] extensions.c
[Compile] readall.c
[Compile] pins.c
[Link]
[Install]

All Done.

NOTE: To compile programs with wiringBP v2, 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@opi 14:50:59 WiringOP]# 

 

・テストソース

[root@opi 14:54:54 gpio]# cat blink.c 
#include <wiringPi.h>

// Define GPIO Pin number wPi
#define LED 16
// delay 1 = 2msec
#define MSEC 500
// blink count 100 = 1sec
#define LOOP 100

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

        // Initialize WiringPi
        wiringPiSetup ();

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

        // Repeat LED blinking 10 times
        for(i=0; i<LOOP; i++){
                digitalWrite(LED, LOW);
                delay(MSEC);
                digitalWrite(LED, HIGH);
                delay(MSEC);
        }

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

        return 0;
}

 

・ビルド、実行

[root@opi 14:55:01 gpio]# gcc -o blink blink.c -lwiringPi -lpthread
[root@opi 14:55:26 gpio]# 
[root@opi 14:55:27 gpio]# ll
total 12
-rwxr-xr-x 1 root root 6592 Dec 19 14:55 blink
-rw-r--r-- 1 root root  624 Dec 19 14:54 blink.c
[root@opi 14:55:30 gpio]# ./blink 
^C
[root@opi 14:55:53 gpio]# 

[root@opi 14:56:19 gpio]# gpio readall
 +-----+-----+----------+------+---+--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--+------+----------+-----+-----+
[root@opi 14:56:27 gpio]# 

OPIでLチカ GPIOをC で

前回、RasPi2 でWiringPiを使ってGPIO の制御をしました。

RasPi2 でCの王道? WiringPi

OrangePi でも同様に無いか探したところ、Forkしたものがありました。

WiringOP
https://github.com/zhaolei/WiringOP

サンプルソース

#include <wiringPi.h>

#define LED 16
#define MSEC 50

int main (void)
{
  wiringPiSetup () ;
  pinMode (LED, OUTPUT) ;
  for (;;)
  {
    digitalWrite (LED, HIGH) ; delay (MSEC) ;
    digitalWrite (LED,  LOW) ; delay (MSEC) ;
  }
  return 0 ;
}

GPIO

ビルド方法は以下のようにしました。

# gcc -o blink blink.c -lwiringPi -lpthread

ピンの指定が、以下で出てくる wPi の番号のようでした。

root@opi:~# gpio readall
 +-----+-----+----------+------+---+--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 | 1 | OUT  | IO16PG07 | 16  | 21  |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+--OrangePIPC--+------+----------+-----+-----+

とりあえず動きました。関数の扱いがちょっと?な部分もあり、完全に互換ソースで動くというわけじゃなさそうです。

root@opi:~# ls /sys/class/gpio_sw/
normal_led  PA10  PA13  PA14  PA15  PA21  PA3  PA6  PA7  PA8  PA9  PC3  PC4  PC7  PD14  PG6  PG7  PG8  PG9  PL10  standby_led
root@opi:~# lsmod
Module                  Size  Used by
gpio_sunxi              8233  0 
8189es                901572  0 
root@opi:~# modprobe gpio_sunxi
root@opi:~# modprobe gpio-sunxi
root@opi:~# modprobe gpio
modprobe: FATAL: Module gpio not found.
root@opi:~# echo 1 > /sys/class/gpio_sw/standby_led/data
root@opi:~# echo 0 > /sys/class/gpio_sw/standby_led/data
root@opi:~# gpio -g write 16 1
pin number error
root@opi:~# gpio -g write 21 1
pin number error
root@opi:~# gpio -g write IO16PG07 1
pin number error
root@opi:~# gpio -g write PG7 1
pin number error
root@opi:~# gpio -g write 0 1
pin number error
root@opi:~# 

もう少し、手入れが必要ですね。sysfs に直接書くと以下のように光ります。gpio のマッピングがうまく機能していないようですね。

gpio_stanby_led

OPIでx2go

オレンジパイで、x2go (VNC のようなもので、ssh ポートのみで出来るもの)をしてみました。

2

osx では、X2Go Client を使いました。

Getting X2Go

http://wiki.x2go.org/doku.php/download:start

1便利かどうかはまだ不明ですが、ssh ポートだけでいけるのはいいのではと。

インストールしたときのメモ。loborisさんは、いろいろ作ってくれているので楽させてもらっています。

 

ReadME
https://github.com/loboris/OrangePi-BuildLinux

root@OrangePI:/usr/local/src# wget https://github.com/loboris/OrangePi-BuildLinux/raw/master/install_x2goserver
root@OrangePI:/usr/local/src# chmod 755 install_x2goserver 
root@OrangePI:/usr/local/src# bash ./install_x2goserver 

    Sun Dec 13 20:30:21 JST 2015
    *********************
    Installing x2goserver
    *********************
    
    Downloading the package ...
    --2015-12-13 20:30:22--  http://loboris.eu/x2goserver_install.tar.gz
    Resolving loboris.eu (loboris.eu)... 82.196.4.208
    Connecting to loboris.eu (loboris.eu)|82.196.4.208|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 6033423 (5.8M) [application/x-gzip]
    Saving to: ‘/tmp/x2go_install/x2goserver_install.tar.gz’
    
    /tmp/x2go_install/x2goserver_install. 100%[==============================>]   5.75M   335KB/s   in 21s    
    
    2015-12-13 20:30:46 (278 KB/s) - ‘/tmp/x2go_install/x2goserver_install.tar.gz’ saved [6033423/6033423]
    
    Unpacking ...
    Installing...
    
    OK.
    
root@OrangePI:/usr/local/src# 

root@OrangePI:/usr/local/src# ps axu | grep [x]2go
root     12964  0.0  0.5  11184  6084 ?        S    20:32   0:00 /usr/bin/perl /usr/sbin/x2gocleansessions
root@OrangePI:/usr/local/src# 


orangepi@OrangePI:~$ ps axu | grep [x]2go
orangepi 24355 15.4  4.9 150072 50708 ?        S    20:57   0:57 /usr/lib/nx/../x2go/bin/x2goagent -extension XFIXES -nolisten tcp -nolisten tcp -dpi 72 -D -auth /home/orangepi/.Xauthority -geometry 1024x768 -name X2GO-orangepi-51-1450007864_stDMATE_dp32 :51
orangepi 24438  0.0  0.0   4296   636 ?        Ss   20:57   0:00 /bin/bash /usr/bin/x2goruncommand 51 24355 orangepi-51-1450007864_stDMATE_dp32 30005 mate-session esd D
orangepi@OrangePI:~$