NanoPi NEO Core2/zh
Contents
1 介绍
- NanoPI NEO Core2是友善之臂团队推出的全新一代超小型ARM计算机,它采用全志64位四核A53处理器H5, 内置六核Mail450 GPU, 集成512M DDR3内存,8G eMMC,可支持运行Ubuntu Core,Armbian等嵌入式操作系统。NanoPi NEO Core2依然小巧精致。
- 更为惊人的是,在极其有限的空间里,NanoPi NEO Core2采用了千兆以太网接口,三排GPIO排针引出了3路USB、千兆网络、I2C、SPI、UART、I2S、音频等常用接口,因此非常适合对体积要求高,数据传输量大,数据传输速度快,和更高计算性能的物联网应用;它也是创客、高端极客们发挥创意的绝佳选择。
2 资源特性
- CPU: Allwinner H5, Quad-core 64-bit high-performance Cortex A53
- DDR3 RAM: 512MB
- Storage: 8GB eMMC
- 网络:10/100/1000M 以太网口, 采用RTL8211E-VB-CG网络传输芯片
- USB Host: 3路,2路位于GPIO2,1路位于GPIO2。
- MicroSD Slot:1个, 支持启动和存储系统
- 指示灯: 2个, 分别用于电源, 和系统状态
- GPIO1: 24pin, 2.54mm间距双排针,兼容树莓派GPIO之管脚1-24,含UART,SPI,I2C,IO等管脚资源
- GPIO2: 24pin, 2.54mm间距双排针,含USB,红外接收,I2S,IO,调试串口,音频等管脚资源
- GPIO3: 20pin, 2.54mm间距双排针,含USB,千兆网络,I2C等管脚资源
- PCB Size: 40 x 40mm
- MicroUSB: 供电(5V/2A),并具备OTG功能
- OS/Software: u-boot,Ubuntu Core
- Weight: xxg(Without Pin-headers)
3 接口布局和尺寸
3.1 接口布局
- GPIO1管脚定义
Pin# Name Linux gpio Pin# Name Linux gpio 1 SYS_3.3V 2 VDD_5V 3 I2C0_SDA / GPIOA12 12 4 VDD_5V 5 I2C0_SCL / GPIOA11 11 6 GND 7 GPIOG11 203 8 UART1_TX / GPIOG6 198 9 GND 10 UART1_RX / GPIOG7 199 11 UART2_TX / GPIOA0 0 12 GPIOA6 6 13 UART2_RTS / GPIOA2 2 14 GND 15 UART2_CTS / GPIOA3 3 16 UART1_RTS / GPIOG8 200 17 SYS_3.3V 18 UART1_CTS / GPIOG9 201 19 SPI0_MOSI / GPIOC0 64 20 GND 21 SPI0_MISO / GPIOC1 65 22 UART2_RX / GPIOA1 1 23 SPI0_CLK / GPIOC2 66 24 SPI0_CS / GPIOC3 67
- GPIO2管脚定义
Pin# Name Description Pin# Name Description 1 VDD_5V 5V Power Out 2 MOSI1 SPI1-MOSI 2 USB-DP1 USB1 DP Signal 4 MISO1 SPI1-MISO 3 USB-DM1 USB1 DM Signal 6 CLK1 SPI1-CLK 4 USB-DP2 USB2 DP Signal 8 CS1 SPI1-CS 5 USB-DM2 USB2 DM Signal 10 MP Microphone Positive Input 6 GPIOL11 / IR-RX GPIOL11 or IR Receive 12 MN Microphone Negative Input 7 SPDIF-OUT / GPIOA17 GPIOA17 or SPDIF-OUT 14 LR LINE-OUT Right Channel Output 8 PCM0_SYNC / I2S0_LRC I2S/PCM Sample Rate Clock/Sync 16 LL LINE-OUT Left Channel Output 9 PCM0_CLK / I2S0_BCK I2S/PCM Sample Rate Clock 18 RXD UART_RXD0/GPIOA5/PWM0 10 PCM0_DOUT / I2S0_SDOUT I2S/PCM Serial Bata Output 20 TXD UART_TXD0/GPIOA4 11 PCM0_DIN / I2S0_SDIN I2S/PCM Serial Data Input 22 VDD_5V 12 GND 0V 24 GND 0V
- GPIO3管脚定义
Pin# Name Description Pin# Name Description 1 LINK-LED Ethernet Link LED 2 SPEED-LED Ethernet Speed LED 2 TRD1+ Ethernet TRD1+ Signal 4 TRD1- Ethernet TRD1- Signal 3 TRD2+ Ethernet TRD2+ Signal 6 TRD2- Ethernet TRD2- Signal 4 TRD3+ Ethernet TRD3+ Signal 8 TRD3- Ethernet TRD3- Signal 5 TRD4+ Ethernet TRD4+ Signal 10 TRD4- Ethernet TRD4- Signal 6 GND 0V 12 GND 0V 7 USB-DP3 GPIOA17 or SPDIF-OUT 14 GPIOA7 8 USB-DM2 I2S/PCM Sample Rate Clock/Sync 16 I2C2-SDA 9 VDD_5V 5V Power Out 18 I2C2-SCL 10 VDD_5V 5V Power Out 20 VDD_3.3V 3.3V Power Outt
- 说明
- SYS_3.3V: 3.3V电源输出
- VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V
- 全部信号引脚均为3.3V电平,输出电流为5mA,可以带动小负荷模块,io都不能带负载
- 更详细的信息请查看原理图:NanoPi_NEO2-1701-Schematic.pdf
3.2 机械尺寸
- 详细尺寸:pcb的dxf文件
4 快速入门
4.1 准备工作
要开启你的NanoPi NEO2新玩具,请先准备好以下硬件
- NanoPi NEO2主板
- microSD卡/TF卡: Class10或以上的 8GB SDHC卡
- 一个microUSB接口的外接电源,要求输出为5V/2A(可使用同规格的手机充电器)
- 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统
4.2 经测试使用的TF卡
制作启动NanoPi NEO2的TF卡时,建议Class10或以上的 8GB SDHC卡。以下是经友善之臂测试验证过的高速TF卡:
- SanDisk闪迪 TF 8G Class10 Micro/SD 高速 TF卡:
- SanDisk闪迪 TF128G 至尊高速MicroSDXC TF 128G Class10 48MB/S:
- 川宇 8G手机内存卡 8GTF卡存储卡 C10高速class10 micro SD卡:
4.3 制作一张带运行系统的TF卡
4.3.1 下载系统固件
首先访问下载地址下载需要的固件文件(officail-ROMs目录)和烧写工具(tools目录):
使用以下固件: nanopi-neo2_ubuntu-core-xenial_3.10.y_YYYYMMDD.img.zip Ubuntu-Core with Qt-Embedded系统固件,使用Linux-3.10内核 nanopi-neo2_ubuntu-core-xenial_4.x.y_YYYYMMDD.img.zip Ubuntu-Core with Qt-Embedded系统固件,使用Linux-4.x内核 nanopi-neo2_debian-nas-jessie_4.x.y_YYYYMMDD.img.zip NAS系统固件,使用Linux-4.x内核,配合1-bay NAS Dock使用 nanopi-neo2_ubuntu-oled_4.x.y_YYYYMMDD.img.zip OLED系统固件,使用Linux-4.x内核,配合NanoHat OLED使用 烧写工具: win32diskimager.rar Windows平台下的系统烧写工具,Linux平台下可以用dd命令烧写系统
4.3.2 制作Ubuntu-Core with Qt-Embedded系统TF卡
- 将Ubuntu-Core系统固件和烧写工具win32diskimager.rar分别解压,在Windows下插入TF卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具,
在win32diskimager工具的界面上,选择你的TF卡盘符,选择系统固件,点击 Write 按钮烧写即可。
- 当制作完成TF卡后,拔出TF卡插入Air的BOOT卡槽,上电启动(注意,这里需要5V/2A的供电),你可以看到绿灯常亮以及蓝灯闪烁,这时你已经成功启动Ubuntu-Core系统。
注意: Debian/Ubuntu系列的ROM都可以使用上述方法制作TF系统启动卡。
5 Ubuntu-Core with Qt-Embedded系统的使用
5.1 运行Ubuntu-Core with Qt-Embedded系统
- 如果您需要进行内核开发,你最好选购一个串口配件,连接了串口,则可以通过串口终端对NEO2进行操作。以下是串口配件的接法,接上串口,即可调试。接上串口后你可以选择从串口模块的DC口或者从NEO2的MicroUSB口进行供电:
也可以使用USB转串口模块调试,请注意需要使用5V/2A电源从NanoPi NEO2的MicroUSB口给NEO2供电:
- Ubuntu-Core默认帐户:
普通用户:
用户名: pi 密码: pi
root用户:
用户名: root 密码: fa
neo-plus2-login
默认会以 pi 用户自动登录,你可以使用 sudo npi-config 命令取消自动登录。
- 更新软件包:
$ sudo apt-get update
5.2 扩展TF卡文件系统
第一次启动系统时,系统会自动扩展文件系统分区,请耐心等待,TF卡的容量越大,需要等待的时间越长,进入系统后执行下列命令查看文件系统分区大小:
$ df -h
5.3 使用npi-config配置系统
npi-config是一个命令行下的系统配置工具,可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH开关、自动登录选项、硬件接口(Serial/I2C/SPI/PWM/I2S)使能等,在命令行执行以下命令即可进入:
$ sudo npi-config
5.4 连接有线网络
NEO2在加电开机前如果已正确的连接网线,则系统启动时会自动获取IP地址,如果没有连接网线、没有DHCP服务或是其它网络问题,则会导致获取IP地址失败,同时系统启动会因此等待约15~60秒的时间。 手动获取IP地址
$ dhclient eth0
5.5 连接USB WiFi
系统默认已经支持市面上众多常见的USB WiFi,想知道你的USB WiFi是否可用只需将其接在NEO2上即可,已测试过的USB WiFi型号如下:
序号 型号 1 RTL8188CUS 802.11n WLAN Adapter 2 RT2070 Wireless Adapter 3 RT2870/RT3070 Wireless Adapter 4 RTL8192CU Wireless Adapter 5 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
- 查看网络设备列表
$ sudo nmcli dev
注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.
- 开启WiFi
$ sudo nmcli r wifi on
- 扫描附近的 WiFi 热点
$ sudo nmcli dev wifi
- 连接到指定的 WiFi 热点
$ sudo nmcli dev wifi connect "SSID" password "PASSWORD"
请将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
连接成功后,下次开机,WiFi 也会自动连接。
更详细的NetworkManager使用指南可参考这篇维基:Use NetworkManager to configure network settings
5.6 SSH登录
NEO2没有任何图形界面输出的接口,如果你没有串口模块,可以通过SSH协议登录NEO2。假设通过路由器查看到NEO2的IP地址为192.168.1.230,你可以在PC机上执行如下命令登录NEO2:
$ ssh root@192.168.1.230
密码为fa。
5.7 连接USB摄像头模块(FA-CAM202)使用
FA-CAM202是一款200万像素的USB摄像头模块,参考维基Matrix - USB_Camera(FA-CAM202)。
启动系统,连接网络,以root用户登录终端并编译运行mjpg-streamer:
$ cd /root/mjpg-streamer $ make $ ./start.sh
mjpg-streamer是一个开源的网络视频流服务器,在板子上成功运行mjpg-streamer后会打印下列信息:
i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 1280 x 720 i: Frames Per Second.: 30 i: Format............: YUV i: JPEG Quality......: 90 o: www-folder-path...: ./www/ o: HTTP TCP port.....: 8080 o: username:password.: disabled o: commands..........: enabled
假设NEO2的IP地址为192.168.1.123,在PC的浏览器中输入 192.168.1.123:8080 就能浏览摄像头采集的画面了,效果如下:
5.8 播放和录制音频
NEO2只提供了音频硬件接口(2.0mm 5pin 排针),引脚的定义如下:
Pin# Name Description 1 MICIN1P Microphone Positive Input 2 MICIN1N Microphone Negative Input 3 LINEOUTR LINE-OUT Right Channel Output 4 GND 地 5 LINEOUTL LINE-OUT Left Channel Output
用户需自行转接音频设备,参考下图:
只有在已外接音频设备的前提下,才可以进行下列步骤测试播放和录制音频。
查看系统里的声卡设备:
$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Codec [H3 Audio Codec], device 0: CDC PCM Codec-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0
全志H5和H3这两款CPU内部都自带了同一个codec设备,在主线内核中被命名为[H3 Audio Codec]。
播放音频:
$ aplay /root/Music/test.wav -D plughw:0
录制音频:
$ arecord -f cd -d 5 test.wav
5.9 通过WiringNP测试GPIO
wiringPi库最早是由Gordon Henderson所编写并维护的一个用C语言写成的类库,除了GPIO库,还包括了I2C库、SPI库、UART库和软件PWM库等,由于wiringPi的API函数和arduino非常相似,这也使得它广受欢迎。
wiringPi库除了提供wiringPi类库及其头文件外,还提供了一个命令行工具gpio:可以用来设置和读写GPIO管脚,以方便在Shell脚本中控制GPIO管脚。
Ubuntu-Core系统中集成了这个工具以便客户测试GPIO管脚。详细信息请参看 WiringNP
6 如何编译Ubuntu-Core with Qt-Embedded系统
6.1 使用开源社区主线BSP
NEO2现已支持使用64位Linux内核,并使用64位Ubuntu Core 16.04,关于H5芯片系列开发板使用主线U-boot和Linux-4.x.y的方法,请参考维基:Mainline U-boot & Linux
6.2 使用全志原厂BSP
6.2.1 准备工作
访问此处下载地址的sources/nanopi-h5-bsp目录,下载所有压缩文件,使用7-Zip工具解压后得到lichee目录,如下:
$ ls ./ $ lichee
也可以从github上克隆lichee源码:
$ git clone https://github.com/friendlyarm/h5_lichee.git lichee
注:lichee是全志为其CPU的板级支持包所起的项目名称,里面包含了U-boot,Linux等源码和众多的编译脚本。
6.2.2 安装交叉编译器
访问此处下载地址的toolchain目录,下载压缩包gcc-linaro-arm-4.6.3.tar.xz和gcc-linaro-aarch64.tar.xz。
其中gcc-linaro-arm-4.6.3.tar.xz用于编译U-boot,gcc-linaro-aarch64.tar.xz用于编译Linux内核。下载完成后,将它们拷贝到源码lichee/brandy/toochain/目录下即可。
后面编译U-boot或者Linux内核时,编译脚本会自动解压并使用这两个编译器进行编译。
6.2.3 编译lichee源码
编译全志 H5 的BSP源码包必须使用64bit的Linux PC系统,并安装下列软件包,下列操作均基于Ubuntu-14.04 LTS-64bit:
$ sudo apt-get install gawk git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386
编译lichee源码包,执行命令:
$ cd lichee/fa_tools $ ./build.sh -b nanopi-neo2 -p linux -t all
该命令会一次性编译好U-boot、Linux内核和模块。
lichee目录里内置了交叉编译器,当进行源码编译时,会自动使用该内置的编译器,所以无需手动安装编译器。
下列命令可以更新TF卡上的U-boot:
$ cd lichee/fa_tools/ $ ./fuse.sh -d /dev/sdX -p linux -t u-boot
/dev/sdX请替换为实际的TF卡设备文件名。
内核boot.img和驱动模块均位于linux-3.10/output目录下,将boot.img拷贝到TF卡的boot分区的根目录即可更新内核。
6.2.4 编译U-boot
注意: 必须先完整地编译整个lichee目录后,才能进行单独编译U-boot的操作。 如果你想单独编译U-boot,可以执行命令:
$ cd lichee/fa_tools/ $ ./build.sh -b nanopi-neo2 -p linux -t u-boot
下列命令可以更新TF卡上的U-boot:
$ cd lichee/fa_tools/ $ ./fuse.sh -d /dev/sdX -p linux -t u-boot
/dev/sdX请替换为实际的TF卡设备文件名。
6.2.5 编译Linux内核
注意: 必须先完整地编译整个lichee目录后,才能进行单独编译Linux内核的操作。 如果你想单独编译Linux内核,可以执行命令:
$ cd lichee/fa_tools/ $ ./build.sh -b nanopi-neo2 -p linux -t kernel
编译完成后内核boot.img和驱动模块均位于linux-3.10/output目录下,将boot.img拷贝到TF卡的boot分区的根目录即可。
6.2.6 清理lichee源码
$ cd lichee/fa_tools/ $ ./build.sh -b nanopi-neo2 -p linux -t clean
7 使用扩展配件及编程示例
7.1 使用1-bay NAS Dock DIY自已的NAS服务器
1-bay NAS Dock是一个用于搭建迷你、小巧的桌上型NAS(Network Attached Storage:网络附属存储)设备的扩展底板,它采用了高速稳定的专业级USB 3.0 to SATA转换芯片(JSM568), 可直接安装使用2.5寸小硬盘,并采用TI公司DC-DC芯片实现稳定可靠的12V-5V电源转换,支持板载RTC时钟备份电池;我们还基于最新主线内核Linux-4.11和Debian-Jessie 为其移植了开源NAS软件系统OpenMediaVault,另外配上我们专门为其定制的精致喷砂金属铝外壳,就能够快速的搭建属于你的专用数据存储服务器,详见:1-bay NAS Dock v1.2 for NanoPi NEO/NEO2
7.2 使用Python编程操作NanoHat OLED扩展板
NanoHat OLED是一款精致小巧的单色OLED显示屏,带3个按键,我们不仅提供了源代码级驱动,而且为您展现了一个简单实用的Shell界面, 通过它你可以查看系统时间,系统运行状态,以及关机等操作;你还可以下载所有源代码自行修改编译,设计自己喜欢的界面; 配上我们专门为其定制的全金属铝外壳,相信你一定会爱不释手!详见:NanoHat OLED
7.3 使用Python编程控制NanoHat Motor 电机驱动模块
该模块可驱动四个5V PWM舵机模块和四个12V直流电机或者两个12V四线步进电机,详见:NanoHat Motor
7.4 使用NanoHat PCM5102A 数字音频解码模块
NanoHat PCM5102A采用了TI公司专业的立体声DAC音频芯片PCM5102A,为您提供数字音频信号完美还原的音乐盛宴, 详见:NanoHat PCM5102A
7.5 完全兼容的Arduino的UNO Dock扩展板
UNO Dock本身就是一个Arduino UNO,你可以使用Arduino IDE开发下载运行所有Arduino工程项目;它还是NanoPi NEO2的扩展坞,不仅为其提供稳定可靠的电源输入,还可以使用Python编程控制Arduino配件,借助强大的Ubuntu生态系统,快速把你的Arduino项目送上云端,详见:UNO Dock for NanoPi NEO v1.0
7.6 Power Dock 高效的电源转换模块
Power Dock for NanoPi NEO是一个高效的电源转换模块,能为用电设备提供稳定可靠的供电, 详见:Power Dock for NanoPi NEO
7.7 NanoHat Proto 可堆叠的面包板模块
NanoHat Proto是一个功能高度自由的模块, 板载EEPROM,详见:NanoHat Proto
7.8 Matrix - 2'8 SPI Key TFT显示模块
Matrix-2'8_SPI_Key_TFT模块是一款2.8英寸的TFT 触摸LCD,模块采用ST7789S驱动IC和XPT2046电阻式触摸IC,屏幕分辨率为240*320,采用SPI控制接口,模块还包含3个独立按键,可根据需要自定义功能。详见:Matrix - 2'8 SPI Key TFT
8 3D 打印外壳
9 资源链接
9.1 手册原理图等开发资料
- 原理图
- 尺寸图
- H5芯片手册 Allwinner_H5_Datasheet_V1.0.pdf
10 更新日志
10.1 2017-07-04
nanopi-neo2_ubuntu-core-xenial_4.11.2_20170630:
- 使用NetworkManager作为网络管理工具;
- Linux-4.x主线内核支持I2S0和NanoHat PCM5102A;
- Linux-4.x主线内核支持Matrix-2'8_SPI_Key_TFT;
- 优化内存使用策略,提升系统稳定性;
nanopi-neo2_debian-nas-jessie_4.11.2_20170630:
- 内核保持和nanopi-neo2_ubuntu-core-xenial_4.11.2_20170630一致;
- 支持DS1307和NTP自适应设置系统时间;
nanopi-neo2_ubuntu-oled_4.11.2_20170703:
- 内核保持和nanopi-neo2_ubuntu-core-xenial_4.11.2_20170630一致;
- 优化内存使用策略,提升系统稳定性;
10.2 2017-05-31
nanopi-neo2_ubuntu-core-xenial_4.11.2_20170531:
nanopi-neo2_ubuntu-oled_4.11.2_20170531:
- 升级U-boot版本到2017.05;
- 升级Linux内核版本到4.11.2;
nanopi-neo2_debian-nas-jessie_4.11.2_20170531:
- 改善系统稳定性;
10.3 2017-05-25
nanopi-neo2_debian-nas-jessie_4.11.2_20170525:
- 升级U-boot版本到2017.05;
- 升级Linux内核版本到4.11.2;
- 改善NAS系统的稳定性;
- 优化OpenMediaVault的配置选项;
- 启用swap分区;
10.4 2017-05-23
nanopi-neo2_ubuntu-core-xenial_3.10.65_20170523:
- 支持i2c0/1;
- 添加npi-config功能;
- 添加系统启动时显示欢迎界面功能;
- 支持Bakebit;
nanopi-neo2_ubuntu-core-xenial_4.11.0_20170523:
- 使用npi-config配置使能pwm0时提示用户该操作会禁用调试串口;
nanopi-neo2_ubuntu-oled_4.11.0_20170523:
- 修复OLED显示温度单位错误的问题;
10.5 2017-05-18
nanopi-neo2_ubuntu-core-xenial_4.x.y_20170518:
- 支持通过npi-config使能/禁止i2c/spi/serial/pwm;
- 支持通过WiringNP来控制gpio引脚;
- 支持通过扩展3.5mm耳机孔录制和播放音频;
- 支持市面上大多数USB以太网卡/USB WiFi网卡;
- 支持串口打印内核启动信息;
- 支持软件生成唯一MAC地址功能;
- 支持使用Bakebit套件;
- 修复系统启动时欢迎界面温度显示异常的问题;
nanopi-neo2_debian-nas-jessie_4.x.y_20170518:
- 修复系统启动时欢迎界面温度显示异常的问题;
nanopi-neo2_ubuntu-oled_4.x.y_0518:
- 首次发布默认支持OLED的ROM;
10.6 2017-04-28
- 添加使用主线U-boot和Linux的章节;
10.7 2017-04-18
Ubuntu-Core系统更新如下:
- 修改了登录欢迎界面,当用户登录时会打印系统的基本状态信息;
- 增加 npi-config 工具,npi-config是一个命令行下的系统配置工具,可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH开关、自动登录选项等,在命令行执行以下 sudo npi-config 即可进入;
- 预装NetworkManager作为网络管理工具;
- 新增pi用户,并配置为自动登录,自动登录特性可以使用npi-config工具配置;
10.8 2017-03-30
- Ubuntu-Core系统从15.10版本升级到16.04版本;
- Ubuntu-Core系统支持录制和播放音频;
- Ubuntu-Core系统修改了登录界面,当用户登录时会打印系统的状态信息,包括系统负载,已用内存,已用存储空间,IP地址,CPU温度等;
- Ubuntu-Core系统添加npi-config工具;