レビューメディア「ジグソー」

今度はCPUに挑戦

NanoPiシリーズは、Friendy Elecが販売している超小型シングルボードコンピューターです。

Piと付いていますが、PythonのPiらしいです。(だったらPyなのにw)

 

[仕様]

・CPU:Allwinner H3(Quad-core Cortex-A7 1.2GHz)

・RAM:DDR3 512MHz

・Ethernet:10/100MHz

・USB:Type-A

・GPIO:36Pin

・基板サイズ:40x40mm

・電源:5V 2A

・OS:u-boot、Ubuntu Core

 

[Raspberry Pi Zero との比較]

※NanoPiのMICinはモノラルでした

※NanoPi NEOの通常の電流値は、140mA程度です。

 


2017年7月22日 追記

Raspberry Pi zeroと比較しました。

zeroより小さいですがEthernetが直結できるのが便利です。

ピンヘッダーも付属しているので、GPIOが必要な場合は半田付けが必要です。

 

上からのアップです。(CPUとメモリチップは裏面です)

 

ヒートシンクも購入しました。(かなり熱くなるようです)

 

ヒートシンク装着!

 

まずは立ち上げてみました。

Ubunts CoreのDISKイメージをSDカードに書き込んで5V電源を付け、色々やってUbuntuがbootできました。(最初からSSHが立ち上がっているようです)

 ・一般ユーザ → ID:pi、パスワード:pi

 ・rootユーザー→ ID:root、パスワード:fa

 

 


[初期設定]

・サポートページはここ→NanoPi NEO

・準備するもの

 -NanoPi NEO

 -MicroSDカード(8Gで足ります)

 -5V/2Aの電源(micro-Bケーブル)

・サポートページの official-ROMs からイメージをダウンロード

 ※「nanopi-net-ubuntu-core-xenial_4.11.2_YYYYMMDD.img.zip」をダウンロードしました。

・イメージをMicroSDカードに書き込む

・MicroSDカード、LANケーブル、電源を接続して起動

 -PWR(緑のLED)が点灯

 -STAT(青のLED)が点滅

 -EthernetコネクターのLEDが点滅

・数分で Ubuntuが起動します。

・後はtelnetで接続します。

・apt-getコマンドでOSを最新化しておきましょう

 $ apt-get update

 $ apt-get upgrade

 

※NanoPiについてはこのページが参考になりました。

 がとらぼ - NanoPi NEO/NEO2購入まとめ

 


2017年7月23日 追記

GPIOを操作するWiringNPが入っていました。※WiringPiのNanoPi版のようです。

 

・WiringNPのディレクトリーに変更する。

 $ ls

 mjpg-streamer  Music  test.pcm  WiringNP

 

 $ cd WiringNP

・build 用スクリプトを実行する。

 $ ./build

 wiringPi Build script
 =====================


 WiringPi Library
 [UnInstall]
 make: Nothing to be done for 'all'.
 [Install Headers]
 [Install Dynamic Lib]

 WiringPi Devices Library
 [UnInstall]
 make: Nothing to be done for 'all'.
 [Install Headers]
 [Install Dynamic Lib]

 GPIO Utility
 make: Nothing to be done for 'all'.
 [Install]

 All Done.

 NOTE: To compile programs with wiringNP, you need to add:
     -lwiringPi
   to your compile line(s).

 

 $ gpio -v
 gpio version: 2.20
 Copyright (c) 2012-2014 Gordon Henderson
 This is free software with ABSOLUTELY NO WARRANTY.
 For details type: gpio -warranty

 Banana Pro Details:
   Type: Model A, Revision: 1.2, Memory: 1024MB, Maker: LeMaker

 

 $ gpio readall

 

※NanoPi NEOのGPIOは36ピンあるのですが、24ピン分しかないですね。

 


Raspberry Piの raspi-config にそっくりな、設定ツール npi-configもありました。

 $ npi-config

 

 

npi-configでできること

 1.デフォルトユーザ:pi のパスワードの変更

 2.hostname 変更

 3.起動オプション設定:autologin、boot時にnetworkを待たない

 4.ローカル設定:locale、timezone、keyboard layout、Wi-fi country

 5.インターフェース設定:SSHの許可

 6.アドバンスオプション:

  default display、Audio device、Welcome message、

  Serial-port/I2C/SPI/PWM/I2Sの設定

 7.ツールアップデート

 


CPU能力の測定の為に、sysbench をインストールしてみました。 

(libtoolとautoreconfもインストールしました)

 $ apt-get install autoconf

 $ apt-get install libtool

 $ git clone https://github.com/akopytov/sysbench.git

 $ cd sysbench

 $ autoreconf -i --force --install

 $ ./configure --without-mysql

 $ make

 $ make install

 

Raspberry Pi zeroとCPUのベンチマークを比較してみました。

 Nano Pi NEO:24.14(single thread)

 Raspberry Pi zero:31.52

∴Nano Pi NEO(single thread)はRaspberry Pi zeroより、1.3倍速いことになります。

 

[NanoPi NEO]

 $ sysbench --test=cpu run
 WARNING: the --test option is deprecated. You can pass a script name or path on the  command line without any options.
 sysbench 1.1.0-dcde0d9 (using bundled LuaJIT 2.1.0-beta3)

 Running the test with following options:
 Number of threads: 1
 Initializing random number generator from current time


 Prime numbers limit: 10000

 Initializing worker threads...

 Threads started!

 CPU speed:
     events per second:    24.14

 General statistics:
     total time:                          10.0249s
     total number of events:              242

 Latency (ms):
          min:                                 24.84
          avg:                                 41.41
          max:                                217.74
          95th percentile:                    150.29
          sum:                              10021.38

 Threads fairness:
     events (avg/stddev):           242.0000/0.00
     execution time (avg/stddev):   10.0214/0.00

 

Raspberry Pi zeroでも同じことをやってみました。

[Raspberry Pi zero]

 $ sysbench --test=cpu run
 WARNING: the --test option is deprecated. You can pass a script name or path on the   command line without any options.
 sysbench 1.1.0-dcde0d9 (using bundled LuaJIT 2.1.0-beta3)

 Running the test with following options:
 Number of threads: 1
 Initializing random number generator from current time


 Prime numbers limit: 10000

 Initializing worker threads...

 Threads started!

 CPU speed:
     events per second:    31.52

 General statistics:
     total time:                          10.0238s
     total number of events:              316

 Latency (ms):
          min:                                 31.53
          avg:                                 31.70
          max:                                 46.43
          95th percentile:                     31.94
          sum:                              10015.85

 Threads fairness:
     events (avg/stddev):           316.0000/0.00
     execution time (avg/stddev):   10.0158/0.00

 

Nano Pi NEOはQuad-coreなので、複数threadでも計測しました。

 ・1 thread:24.14

 ・2 thread:48.52

 ・3 thread:76.65

 ・4 thread:105.35

 

∴NanoPi NEOはRaspberry Pi zeroより3.3倍速いことになります。

 


2017年8月6日 追記

ベンダー提供のLinuxイメージは色々問題があるらしいので、巷に氾濫しているARMプロセッサボードに対応した armbian というものを導入してみたいと思います。

armbian.com

 

HOME→Download→NanoPi NEOと進んでいくと、Downloadページがあります。

ここで2種類のUbuntuが選択できました。

 1.Ubuntu server - legacy → Ubuntu 3.4.13

 2.Ubuntu server - mainline kernel → Ubuntu 4.11.8

でも、Ubuntu 4.11.8の方は、途中でbootが止まってしまい、動きませんでした

Ubuntu 3.4.13のシステムは以下になります。

 

 $ uname -a

 Linux nanopineo 3.4.113-sun8i #18 SMP PREEMPT Thu Jun 15 02:16:06 CEST 2017 armv7l armv7l armv7l GNU/Linux

 

ベンダーのLinuxイメージでは、青色LEDが点滅していたのですが、armbianではそれが無かったので、以下のコマンドで点滅するようにしました。

 $ echo heartbeat > /sys/class/leds/blue_led/trigger

 ※リブートすると、設定が解除されてしまいます。

 


armbian-config という設定ツールがありました。

 $ armbian-config

 

最初にスペースキーを押します。そしてリターン

設定できる項目は以下のとおりです。

 Timezone:タイムゾーン設定

 Install:SATAドライブ等へのインストール(だと思います)

 Hold:更新の際に、kernelをホールドする(だと思います)

 Softy:サブモジュールのインストール(だと思います)

 Consumption:H3ボードの制御

 Monitor:CPUモニター

 Diagnostics:何か情報をアップロードします(危ない?)

 Fexedit:u-boot環境の編集

 Bootenv:u-boot環境の編集

 Network:ネットワークインターフェース情報の編集

 Services:サービスのOn/Off

 Welcome:motd表示情報の編集

 Nightly:ナイトモード(?)

 Switch:カーネルの切り替え(?)

 


2017年8月9日 追記

Ubuntu 4.11.8をもう一度ダウンロードし直して導入したら、動くようになりました。

※armbianのホームページによると動かないのは、ほとんど電源とSDカードが原因と書いてありますが、原因は不明です。

 

pipをインストール

 $ wget https://bootstrap.pypa.io/get-pip.py

 $ python3 get-pip.py

 $ python3 -m pip -V

 pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

 

SDL1.2のインストール

 $ sudo apt-get install libsdl1.2-dev

 $ sudo apt-get install libsdl-image1.2-dev

 $ sudo apt-get install libsdl-ttf2.0-dev

 $ sudo apt-get install libsdl-gfx1.2-dev

 

freetypeのインストール

 $ sudo apt-get install libfreetype6-dev

 

pygameのインストール

 pygameのホームページから、pygame-1.9.3をダウンロード

 $ tar xzvf pygame-1.9.3

 $ cd pygame-1.9.3

 $ python3 setup.py

 

WiringNPのインストール

 $ git clone https://github.com/friendlyarm/WiringNP
 $ cd WiringNP/
 $ chmod 755 build
 $ ./build

 


ハードウェアのセットアップ

Nano PiにLCDを接続ました。

 

ピン接続 ※LCDのNCは省略

[LCD - Nano Pi]

 1.3V3 - 1.3V3

 2.5V - 2.5V

 4.5V

 6.GND 

 9.GND

 11.TP_IRQ

 14.GND

 17.3V3

 18.LCD_RS - 22.GPIOA1

 19.LCD_SI/TP_SI - 19.SPI0_MOSI

 20.GND

 21.TP_SO

 22.RST - 18.GPIOG9

 23.LCD_SCK/TP_SCK - 23.SPI0_CLK

 24.LCD_CS - 24.SPI0_CS

 25.GND - 6.GND

 26.TP_CS

 


ソフトウェアのセットアップ

以下のファイルを追加・変更しました。

 

SPIドライバのセットアップ

[/boot/armbianEnv.txt] ※以下の行を追加

  overlay_prefix=sun8i-h3

  overlays=spi-sipdev

  param_spidev_spi_bus=0

  param_spidev_max_freq=100000000

 

fbtft のセットアップ

[/etc/modules-load.d/fbtft.conf] ※新規作成

 fbtft_device

 

[/etc/modprobe.d/fbtft.conf] ※新規作成

 options fbtft_device name=piscreen speed=16000000 rotate=270 \

 gpios=reset:203,dc:1

 


2017年8月11日 追記

NanoPi NEOでもPeppyMeterを動かしてみました。

Raspberry Pi zeroよりCPUが速いのですが、メーターの動きはあまり変わりません。

 

 


2017年8月11日 追記(その2)

NanoPi NEOでPeppyMeterが動くことを確認しましたが、実はこのLCDはタッチパネルが付いています。(それを使うにはSPIが2つ必要です)

NanoPi NEOのCPUのAllwinner H3のデータシートを見ると、SPIは2つあるようです。

でも、armbianはそれに対応していません。

 

少し困って、NanoPi NEOの開発・販売元のFriendlyARMのwikiを見ていると、最初に導入した本家のOfficial OSなら、SPIを2つ動かせるようです。

そこでまた本家OSを試してみようと思います。

 

本家のofficial-ROMsから、

nanopi-neo_ubuntu-core-xenial_4.11.2_20170705.img.zip

をダウンロードしました。

 

npi-configで、2つのSPIをenableにできました。(でも設定だけかも)

[/etc/modprob.d/matrix-blacklist.conf] ※修正

fbtft_deviceがbalacklist化されていたので、コメントアウトしました。

 


■2017年8月13日 追記

どうも fbtft_deviceがカーネル組み込みになっていて、外部からパラメータを変えられないようです。(オプションで販売されている Matrix-2'8 LCD固定)

 

 

そこで、npi-config ツール(shell スクリプトでした)を見てみると device-treeのpitftというエントリーを見ていることが分かりました。

NanoPi NEOの標準のデバイスツリーは、

/boot/sun8i-h3-nanopi-neo.dtbのようなので、これを逆コンパイルしてpitftというエントリーを見つけました。

 

pitft@0 {
        compatible = "sitronix,st7789v";
        reg = <0x0>;
        status = "disabled";
        spi-max-frequency = <0x2faf080>;
        rotate = <0x5a>;
        fps = <0x21>;
        buswidth = <0x8>;
        dc-gpios = <0xb 0x0 0x1 0x0>;
        reset-gpios = <0xb 0x6 0xb 0x0>;
        debug = <0x0>;
};

 

デバイス名以外は通常のfbtft_deviceのパラメーターのようです。

 

 spi-max-frequency=0x2faf080=50,000,000

 →piscreenは18MHzが上限なので、0x112a880になります。

 rotate=0x5a=90

 fps=0x21=33

 buswidth=0x8=8

 dc-gpios=0xb 0x0 0x1 0x0

 →Matrix-2'8のDCピンは NanoPiの22ピンです。

  BCMのピン番号は 1になります。

 reset-gpios=0xb 0x6 0xb 0x0

 →Matrix-2'8のRESETピンは、同じく7ピンになります。

  同じくBCMのピン番号は203です。

 

device-treeのコンパイルは

 dtc -I dts -O dtb -o xxx.dtb xxx.dts

同じく逆コンパイルは

 dtc -I dtb -O dts -o xxx.dts xxx.dtb

になります。

 

デバイス名以外はこのdevice-treeで変更できることが分かりました。

(dmesgから該当部分を抜粋)

 fbtft_of_value: buswidth = 8

 fbtft_of_value: debug = 3
 fbtft_of_value: rotate = 90
 fbtft_of_value: fps = 33
 fb_st7789v spi0.0: fbtft_gamma_parse_str() str=
 fb_st7789v spi0.0: 70 2C 2E 15 10 09 48 33 53 0B 19 18 20 25
  70 2C 2E 15 10 09 48 33 53 0B 19 18 20 25
 fb_st7789v spi0.0: fbtft_request_one_gpio: 'reset-gpios' = GPIO203
 fb_st7789v spi0.0: fbtft_request_one_gpio: 'dc-gpios' = GPIO1
 fb_st7789v spi0.0: fbtft_verify_gpios()
 fb_st7789v spi0.0: Display update: 1020 kB/s, fps=0
 graphics fb1: fb_st7789v frame buffer, 320x240, 150 KiB video memory, 4 KiB buffer memory, fps=33, spi0.0 at 18 MHz

 

次にドライバー名として現れる "fb_st7789v"をファイル検索してみました。

 $ find / -name "fb_*" -print

 /sys/bus/platform/drivers/fb_st7789v

 /sys/bus/drivers/fb_st7789v

 

これをどこから起動しているかを見つけるのが次のクエストになります。

と思ったら、/sys は仮想ディレクトリで、検出されたデバイスがリストされるのですね。

他をあたる必要があります。

 

/boot/config-4.11.2.h3 にこんな記述がされていました。

CONFIG_STAGING=y
CONFIG_FB_TFT=y
CONFIG_FB_TFT_ST7789V=y

 

fbtft_deviceとst7789vがbuiltinモジュールになっているようです。

これはカーネルをリコンパイルするしかないのかもしれません。

 


2017年8月15日 追記

そんな訳で、カーネルをリコンパイルしてみました。

NanoPi NEOのリコンパイルは以下のページを参照しました。

Mainline U-boot & Linux

 ・ソースをダウンロードします。(linux_4.11.2_20170707.tar.gz)

 ・上記ソースを解凍します。(tar zxvf)

 ・現行Linuxのconfigをコピーします。

  $ cd linux

  $ cp /boot/config-4.11.2-h3 .config

 ・コンフィグファイルを修正します。

  $ make menuconfig

 ・fbtft_deviceが別モジュールとして生成されるように修正します。

  Device Drivers → Staging drivers → Support for small TFT LCD display modules

  と進めます。

 ・fbtft_deviceと必要なLCDのドライバーをマークします。

   Y:*が表示されbuiltinモジュールになる

   N:導入されません

   M:別モジュールとして生成される。

 ・おもむろに make(数時間かかります)

  $ make -j4

 ・カーネルコンパイルが終わったら、出来上がったモジュールをコピーします。

  $ cp arch/arm/boot/zImage /boot

  $ cp arch/arm/boot/dts/sun8i-h3-nanopi*.dtb /boot

  $ make modules_install

 ・再起動します

 

これで出来上がりですが、fbtft_deviceは自動起動しません。

まだ、st7789vが起動されてしまいます。

 

次は自動起動の仕組みを調べるクエストになります。

 


2017年8月26日 追記

Official OSイメージでは、コンソールが上手く表示できません。

フレームバッファーとのデータ連携がずれているのかもしれません。

 


2017年8月27日 追記

コンソールの不調については、fbconのパラメーターの0/1/2/3と、fbtftのrotateの0/90/180/270の組み合わせを全て試したのですが、正常になりませんでした。

 

 


 

あとで必要なタッチスクリーンのエントリーも取得しました。

pitft-ts@1 {
        compatible = "ti,ads7846";
        reg = <0x1>;
        status = "disabled";
        spi-max-frequency = <0x1e8480>;
        interrupt-parent = <0xb>;
        interrupts = <0x6 0x9 0x2>;
        pendown-gpio = <0xb 0x6 0x9 0x1>;
        ti,swap-xy;
        ti,vref-delay-usecs = <0x3e8>;
        ti,x-min = [00 64];
        ti,x-max = [0f ff];
        ti,y-min = [00 64];
        ti,y-max = [0f ff];
        ti,vref-mv = <0xce4>;
        ti,x-plate-ohms = [01 00];
        ti,penirq-recheck-delay-usecs = <0xa>;
        ti,settle-delay-usec = [00 64];
        ti,keep-vref-on = <0x1>;
        ti,pressure-max = [0f ff];
        ti,debounce-max = <0xa>;
        ti,debounce-tol = <0x1e>;
        ti,debounce-rep = <0x1>;
};

 

 

 

  • 購入金額

    1,680円

  • 購入日

    2017年07月21日

  • 購入場所

    秋葉原 秋月電子通商

23人がこのレビューをCOOLしました!

コメント (8)

  • 通りすがりのおじさんさん

    2017/07/22

    小さいですね!
    ちょっとググったら、PCM5102AのI2Sボードも出ている様で、ちょっと・・・いや、結構気になってます!w
  • jakeさん

    2017/08/09

    画面出力はI2Cで液晶とかOLEDをつなげられそうですね。
    結構、遊べるボードに見えました。

    何より安いですしね。
他5件のコメントを表示

ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。

YouTube の動画を挿入

YouTube の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ニコニコ動画の動画を挿入

ニコニコ動画の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ZIGSOWリンク挿入

検索対象とキーワードを入力してください

    外部リンクを挿入

    リンク先の URL とタイトルを入力してください

    URL を正しく入力してください。

    画像を挿入(最大サイズ6MB)

    画像を選択してください

    ファイルサイズが6MBを超えています

    別の画像を追加

    ZIGSOW にログイン

    ZIGSOW会員登録(無料)はこちらから