2019年3月14日木曜日

NanoPi NEO Core に WiringNP を入れてみるw

#同じタイトルですみません.m(_ _)m
#2019年3月時点では,状況がちょっと違いますのでお許しください.
WiringNP は NanoPi シリーズでハードウェアをつないで動かすためのライブラリです.ですので何かハードウェアをつないで使おうとすると入れないわけにはいかないです.
FriendlyElec 純正のものとwertyzp のものがありますが,後者は NanoPi NEO Core に対応していません(NanoPi NEO にあるピンしか表示されないし,ピン番号が違う)ので必然的に純正のものを入れることになります.
--
NanoPi-NEO-Core:~# git clone https://github.com/friendlyarm/WiringNP
Cloning into 'WiringNP'...
remote: Enumerating objects: 260, done.
remote: Total 260 (delta 0), reused 0 (delta 0), pack-reused 260
Receiving objects: 100% (260/260), 221.47 KiB | 223.00 KiB/s, done.
Resolving deltas: 100% (148/148), done.
Checking connectivity... done.
NanoPi-NEO-Core:~# cd WiringNP/
NanoPi-NEO-Core:~/WiringNP# chmod 755 build
NanoPi-NEO-Core:~/WiringNP# ./build
wiringPi Build script
=====================
WiringPi Library
[UnInstall]
[Compile] wiringPi.c
(途中省略)
[Install]

All Done.

NOTE: To compile programs with wiringNP, you need to add:
    -lwiringPi
  to your compile line(s).
NanoPi-NEO-Core:~/WiringNP#
--

コンパイル時に警告がけっこう出ますがちゃんと動きます.
(小さいフォントですみません)
--
NanoPi-NEO-Core:~/WiringNP/gpio# ./gpio/gpio readall
 +-----+-----+----------+------+---+-NanoPi-NEO-Core--+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |  GPIOA12 | ALT5 | 0 |  3 || 4  |   |      | 5v       |     |     |
 |  11 |   9 |  GPIOA11 | ALT5 | 0 |  5 || 6  |   |      | 0v       |     |     |
 | 203 |   7 |  GPIOG11 |  OFF | 0 |  7 || 8  | 0 | ALT5 | GPIOG6   | 15  | 198 |
 |     |     |       0v |      |   |  9 || 10 | 0 | ALT5 | GPIOG7   | 16  | 199 |
 |   0 |   0 |   GPIOA0 | ALT5 | 0 | 11 || 12 | 0 |  OUT | GPIOA6   | 1   | 6   |
 |   2 |   2 |   GPIOA2 |  OFF | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |   GPIOA3 |  OFF | 0 | 15 || 16 | 0 |  OFF | GPIOG8   | 4   | 200 |
 |     |     |     3.3v |      |   | 17 || 18 | 0 |  OFF | GPIOG9   | 5   | 201 |
 |  64 |  12 |   GPIOC0 | ALT4 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |   GPIOC1 | ALT4 | 0 | 21 || 22 | 0 | ALT5 | GPIOA1   | 6   | 1   |
 |  66 |  14 |   GPIOC2 | ALT4 | 0 | 23 || 24 | 1 |  OUT | GPIOC3   | 10  | 67  |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-NanoPi-NEO-Core--+------+----------+-----+-----+

 +-----+-----+----------+---- NanoPi-NEO-Core USB/Audio ----+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |       5v |      |   | 25 || 26 | 0 | ALT4 | GPIOA15  | 22  | 15  |
 |     |     |     USB1 |      |   | 27 || 28 | 0 | ALT4 | GPIOA16  | 23  | 16  |
 |     |     |     USB1 |      |   | 29 || 30 | 0 | ALT4 | GPIOA14  | 21  | 14  |
 |     |     |     USB2 |      |   | 31 || 32 | 0 | ALT4 | GPIOA13  | 20  | 13  |
 |     |     |     USB2 |      |   | 33 || 34 |   |      | Mic      |     |     |
 |     |     |       IR |      |   | 35 || 36 |   |      | Mic      |     |     |
 |  17 |  19 |  GPIOA17 |  OFF | 0 | 37 || 38 |   |      | Audio    |     |     |
 |     |     |      I2S |      |   | 39 || 40 |   |      | Audio    |     |     |
 |     |     |      I2S |      |   | 41 || 42 | 0 | ALT5 | GPIOA5   | 18  | 5   |
 |     |     |      I2S |      |   | 43 || 44 | 0 | ALT5 | GPIOA4   | 17  | 4   |
 |     |     |      I2S |      |   | 45 || 46 |   |      | 5V       |     |     |
 |     |     |       0v |      |   | 47 || 48 |   |      | 0v       |     |     |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-NanoPi-NEO-Core--+------+----------+-----+-----+

 +-----+-----+----------+---- NanoPi-NEO-Core Network ----+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |      Eth |      |   | 49 || 50 |   |      | Eth      |     |     |
 |     |     |      Eth |      |   | 51 || 52 |   |      | Eth      |     |     |
 |     |     |      Eth |      |   | 53 || 54 |   |      | Eth      |     |     |
 |     |     |       NC |      |   | 55 || 56 |   |      | NC       |     |     |
 |     |     |       NC |      |   | 57 || 58 |   |      | NC       |     |     |
 |     |     |       0v |      |   | 59 || 60 |   |      | 0v       |     |     |
 |     |     |     USB3 |      |   | 61 || 62 | 0 |  OFF | GPIOA7   | 24  | 7   |
 |     |     |     USB3 |      |   | 63 || 64 |   |      | GPIOE12  |     |     |
 |     |     |       5v |      |   | 65 || 66 |   |      | GPIOE13  |     |     |
 |     |     |       5v |      |   | 67 || 68 |   |      | 3.3v     |     |     |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-NanoPi-NEO-Core--+------+----------+-----+-----+

NanoPi-NEO-Core:~/WiringNP#
--
このリストを見ると GPIOE12 とか 13 は wPi の番号がないので使えない?物理ピン番号で指定する関数もあるので使える?(謎)この2つのピンは I2C(#2)ですが I2C としてなら使える?USB と LAN のコネクタを省略してピンヘッダにしたおかげでピンが増えたのですから使えてほしいですね.まぁ,おいおい確認したいと思います.

2019年3月12日火曜日

NanoPi NEO Core Ubuntu をアップデート

NanoPi NEO Core に LAN ケーブルをつないで電源を入れると予想通り DHCP でアドレスを取得して LAN が使えるようになりました.でも avahi-daemon は走ってないみたいで,IP アドレスは適当なツールでスキャンしないとわかりませんでした.
----
Ubuntu 16.04.2 LTS NanoPi-NEO-Core ttyS0

NanoPi-NEO-Core login: pi (automatic login)


Last login: Thu Feb 11 16:28:04 UTC 2016 on ttyS0
 _____     _                _ _       _____ _     _____ ____ 
|  ___| __(_) ___ _ __   __| | |_   _| ____| |   | ____/ ___|
| |_ | '__| |/ _ \ '_ \ / _` | | | | |  _| | |   |  _|| |    
|  _|| |  | |  __/ | | | (_| | | |_| | |___| |___| |__| |___ 
|_|  |_|  |_|\___|_| |_|\__,_|_|\__, |_____|_____|_____\____|
                                |___/                        

Welcome to Ubuntu 16.04.2 LTS 4.14.52
System load:   0.08            Up time:       10 sec
Memory usage:  8 % of 491Mb  IP:(何も出てこない)            
CPU temp:      16゚C           
Usage of /:    27% of 7.1G
----

いろいろやる前に,お決まりのアップデートをしました.
----
root@NanoPi-NEO-Core:/home/pi# atpapt-get update
Hit:1 http://ports.ubuntu.com xenial InRelease
Get:2 http://ports.ubuntu.com xenial-security InRelease [109 kB]
(途中省略)
Get:19 http://ports.ubuntu.com xenial-backports/universe armhf Packages [7,484 Get:20 http://ports.ubuntu.com xenial-backports/universe Translation-en [4,184 B]

root@NanoPi-NEO-Core:/home/pi# apt-get upgrade
(途中省略)
215 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.
----

再起動すると
----
Ubuntu 16.04.6 LTS NanoPi-NEO-Core ttyS0

NanoPi-NEO-Core login: pi (automatic login)


Last login: Thu Feb 11 16:28:04 UTC 2016 on ttyS0
[    9.322359] rc.local[552]: Ready: shared memory ready (key: 431317).
[    9.323616] rc.local[552]:  
 _____     _                _ _       _____ _     _____ ____ 
|  ___| __(_) ___ _ __   __| | |_   _| ____| |   | ____/ ___|
| |_ | '__| |/ _ \ '_ \ / _` | | | | |  _| | |   |  _|| |    
|  _|| |  | |  __/ | | | (_| | | |_| | |___| |___| |__| |___ 
|_|  |_|  |_|\___|_| |_|\__,_|_|\__, |_____|_____|_____\____|
                                |___/                        

Welcome to Ubuntu 16.04.6 LTS 4.14.52
System load:   0.00            Up time:       10 sec
Memory usage:  8 % of 491Mb  IP:(やっぱり何も出てこない)            
CPU temp:      30゚C           
Usage of /:    27% of 7.1G   

 * Documentation: http://wiki.friendlyarm.com/Ubuntu
 * Forum: http://www.friendlyarm.com/Forum/

pi@NanoPi-NEO-Core:~$
----

というわけで Ubuntu 16.04.6 LTS になりました.

2019年3月10日日曜日

NanoPi NEO Core 電源投入

NEO Core Startter Kit + NanoPi NEO Core の電源は Starter Kit にある MicroUSB コネクタです.最初ですのでデバッグ用シリアルポートに端末をつないでみました.データ長8ビット,ストップビット1ビット,TXD と RXD しかつないでないのでフロー制御は XOFF/XON に設定(それ以外だとフロー制御なしになります).文字コードは UTF-8 に設定します.(そうしないとオープニングメッセージの℃の「゜」が化けます)LAN ポートも一応 Etherbet Hub につないでみました.
NEO Core Startter Kit の電源を入れた状態の写真
NEO Core Startter Kit に電源を入れる

NanoPi NEO(無印)と違って NEO Core には eMMC がついていて,最初から Linux が入っています.実は,最近の Linux のことはよくわかっていないので,ブートシーケンスすら「???」って感じで流れるメッセージを眺めていました.最初に ROM に入っているプログラムが U-Boot SPL を起動していると思うのですが,最初にデバッグ用シリアルコンソールに出てくるのは U-Boot SPL のメッセージですね.

----------------------------------------
U-Boot SPL 2017.11 (Nov 19 2018 - 10:39:56)
DRAM: 512 MiB(408MHz)
CPU Freq: 408MHz
memory test: 1
Pattern 55aa  Writing...Reading...OK
Trying to boot from MMC2
Boot device: emmc


U-Boot 2017.11 (Nov 19 2018 - 10:39:56 +0800) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: FriendlyElec NanoPi H3
DRAM:  512 MiB
Detecting eMMC...
No MMC device available
No MMC device available
eMMC not exist
CPU Freq: 1008MHz
MMC:   SUNXI SD/MMC: 1, SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment
こんな警告↑が出ていました.

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
eMMC exist
BOARD: nanopi-neo-core
starting USB...
No controllers found
Hit any key to stop autoboot: (ここで3秒のウェイト) 
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
reading /boot.scr
968 bytes read in 18 ms (51.8 KiB/s)
## Executing script at 43100000
reading zImage
5747656 bytes read in 284 ms (19.3 MiB/s)
reading rootfs.cpio.gz
2845838 bytes read in 151 ms (18 MiB/s)
reading sun8i-h3-nanopi-neo-core.dtb
34911 bytes read in 26 ms (1.3 MiB/s)
## Flattened Device Tree blob at 48000000
   Booting using the fdt blob at 0x48000000
   Loading Ramdisk to 49b00000, end 4a000000 ... OK
   Loading Device Tree to 49af4000, end 49aff85e ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.52 (root@wwd) (gcc version 4.9.3 (ctng-1.21.0-229g-FA)) #90 SMP Thu Oct 25 18:26:40 CST 2018
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=30c5387d
(途中省略)
[   OK   ] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[   OK   ] Started Update UTMP about System Runlevel Changes.
[   OK   ] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[   OK   ] Started Update UTMP about System Runlevel Changes.

Ubuntu 16.04.2 LTS NanoPi-NEO-Core ttyS0

NanoPi-NEO-Core login: pi (automatic login)

Last login: Wed Mar  6 09:57:42 UTC 2019 on tty1
[    9.177862] rc.local[546]: Ready: shared memory ready (key: 431317).
[    9.178943] rc.local[546]:
 _____     _                _ _       _____ _     _____ ____
|  ___| __(_) ___ _ __   __| | |_   _| ____| |   | ____/ ___|
| |_ | '__| |/ _ \ '_ \ / _` | | | | |  _| | |   |  _|| |
|  _|| |  | |  __/ | | | (_| | | |_| | |___| |___| |__| |___
|_|  |_|  |_|\___|_| |_|\__,_|_|\__, |_____|_____|_____\____|
                                |___/

Welcome to Ubuntu 16.04.2 LTS 4.14.52
System load:   0.16             Up time:       10 sec
Memory usage:  7 % of 491Mb     IP:
CPU temp:      32℃
Usage of /:    27% of 7.1G

 * Documentation: http://wiki.friendlyarm.com/Ubuntu
 * Forum: http://www.friendlyarm.com/Forum/

pi@NanoPi-NEO-Core:~$
----------------------------------------

こんな感じで Ubuntu が起動して,ユーザ pi で自動ログインします.
最初の bad CRC の経緯はよくわかりませんが以下のコマンドで出なくなりました.
----------------------------------------
Hit any key to stop autoboot:  (ここで何かキーを押す)
=> saveenv
Saving Environment to MMC...
Writing to MMC(0)... done
=>
----------------------------------------

その他にブートの途中で,
----------------------------------------
[   OK   ] Mounted POSIX Message Queue File System.
[FAILED] Failed to start Load Kernel Modules.
See 'systemctl status systemd-modules-load.service' for details.
[   OK   ] Started Set console keymap.
----------------------------------------

というのがあるので,調べた結果,
----------------------------------------
pi@NanoPi-NEO-Core:~$ systemctl status systemd-modules-load.service
systemd-modules-load.service - Load Kernel Modules
   Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2019-03-06 10:13:43 UTC; 23s ago
     Docs: man:systemd-modules-load.service(8)
           man:modules-load.d(5)
  Process: 230 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
 Main PID: 230 (code=exited, status=1/FAILURE)
pi@NanoPi-NEO-Core:~$ su
Password: (デフォルトパスワードは fa
root@NanoPi-NEO-Core:/home/pi# journalctl _PID=230
-- Logs begin at Wed 2019-03-06 10:13:43 UTC, end at Wed 2019-03-06 10:15:04 UTC. --
Mar 06 10:13:43 NanoPi-NEO-Core systemd-modules-load[230]: Failed to find module 'bcmdhd'
Mar 06 10:13:43 NanoPi-NEO-Core systemd-modules-load[230]: Inserted module 'g_mass_storage'
----------------------------------------

というわけで bcmdhd が見つからないということらしいです.
これは Broadcom の wifi モジュールで,とりあえず今は不要なのでロードしないように設定しました.
----------------------------------------
root@NanoPi-NEO-Core:/home/pi# cd /etc/modules-load.d
root@NanoPi-NEO-Core:/etc/modules-load.d# vi bcmdhd.conf
bcmdhd
↓(以下のように変更して保存)
#bcmdhd
----------------------------------------

これで赤い [FAILED] は出なくなりました.
インストールしなくても電源 ON でいきなり Linux が起動してしまうなんて,メーカー製の Windows ノートパソコンみたいですね.(笑)

2019年3月2日土曜日

その他の付属品

NEO Core Starter Kit のその他の付属品.まずシリアル-USB変換モジュール.搭載チップは CH340T で Windows でドライバが自動で導入されない場合は FriendlyElecwikiからダウンロードすることができます.
シリアル-USB 変換モジュールの写真
シリアル-USB 変換モジュール
写真のとおり,ピンヘッダのピンが太すぎて付属ケーブルのコネクタの先の方しか入りません.導通していればよいので使えるとは思いますが‥.基板上のスイッチは USB から来た 5V をピンヘッダに出すかどうかを決めるためのものです.このモジュールには USB からの 5V 出力に対して 500mA の(resettable)ヒューズがついていますので,この 5V 出力を NanoPi NEO Core の電源として使うことはできません.したがってこの組み合わせで用いる場合はスイッチは OFF にして,別途 5V の AC アダプタを使って電源を供給する必要があります.
デバッグ用シリアルポートのコネクタの写真
デバッグ用シリアルポートのコネクタ
NanoPi NEO Core のデバッグ用のシリアルポートは上の写真のような白いレセプタクルがついています.これに合うコネクタが手に入るかどうか不安でしたが,シリアル-USB変換モジュールにこのコネクタがついたケーブルが付属していたので一安心です.
付属の USB ケーブルの写真
付属の USB ケーブル
最後に USB ケーブルです.(フルサイズの)A コネクタにマイクロ USB の B コネクタがついたものです.電源に使用するためと思われますが,こういうケーブルはほとんどの人が持っていると思います. むしろ,シリアル-USB 変換モジュールが A コネクタ直づけなので,それを延長するような (フルサイズの) A コネクタのオスとメス が両端についているケーブルをつけてくれた方がありがたいと思うのですが‥.

以上で NEO Core Starter Kit の内容の説明は終わりです.次回から,実際に電源を入れて使ってみたいと思います.