Difference between revisions of "NanoPC-T4"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(Make Your Own OS Image)
Line 587: Line 587:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
If it succeeds you will see a prompt showing "Erase flash ok."
 
If it succeeds you will see a prompt showing "Erase flash ok."
 +
 +
==Android7系统的使用==
 +
 +
[[File:rk3399-android7-home.png|thumb|rk3399-android7-home]]
 +
[[File:rk3399-android7-icons.png|thumb|rk3399-android7-icons]]
 +
 +
我们为 '''NanoPC-T4''' 提供了完善的Android7.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。
 +
 +
===用摇控器操作Android===
 +
 +
NanoPC-T4在Android下完美支持 FriendlyARM RC-100 红外遥控器,更方便NanoPC-T4在接电视的场景下使用,遥控器按键功能丰富,按键定义与功能如下表所示:
 +
 +
::{| class="wikitable"
 +
|-
 +
|按键 || 功能     
 +
|-
 +
|上    || 导航键-上   
 +
|-
 +
|下    || 导航键-下 
 +
|-
 +
|左    || 导航键-左
 +
|-
 +
|右    || 导航键-右
 +
|-   
 +
|OK    || 确认
 +
|-
 +
| -    || 音量-
 +
|-
 +
| +    || 音量+
 +
|-
 +
|静音  ||静音
 +
|-
 +
|菜单    || Android菜单键
 +
|-
 +
|首页  || Android Home键
 +
|-
 +
|返回    || Android 返回键
 +
|-
 +
|F1    || 下拉Android 通知栏
 +
|-
 +
|F2    || Android 截屏
 +
|-
 +
|F3    || 切换操作模式,在鼠标模式与按钮模式之间切换
 +
|}
 +
 +
===使用MIPI摄像头进行拍照和录像===
 +
 +
NanoPC-T4在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到NanoPC-T4的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。<br />
 +
 +
NanoPC-T4板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:<br />
 +
::{| class="wikitable"
 +
|-
 +
|接口位置 || 摄像头位置
 +
|-
 +
|MIPI-CSL1    || Android 后置摄像头
 +
|-
 +
|MIPI-CSL2    || Android 前置摄像头
 +
|}
 +
 +
===设置屏幕分辨率===
 +
 +
可以进入 Android 的 Settings -> Display -> HDMI -> HDMI Resolution设置,最高可支持 4K 分辨率。
 +
 +
===旋转屏幕角度===
 +
 +
可以进入 Android 的 Settings -> Display -> HDMI -> HDMI Rotation设置,支持横竖屏切换。
 +
 +
 +
==Lubuntu系统的使用==
 +
 +
=== Lubuntu简介===
 +
[[File:Lubuntu-arduino.png|thumb|Arduino]]
 +
[[File:Lubuntu-website.png|thumb|Website]]
 +
[[File:Lubuntu-video.png|thumb|Website]]
 +
 +
'''LUbuntu''' 是一个轻量级的Ubuntu桌面环境,其底层基于LXDE桌面构建,具有如下特点:<br />
 +
&nbsp;&nbsp;&nbsp;&nbsp;'''轻巧''' - 只需要很少的CPU资源即可执行顺畅,而且当内存容量充足时表现特别出色。<br />
 +
&nbsp;&nbsp;&nbsp;&nbsp;'''省能源''' - 它比其他常见的系统需要较少的资源运行相同的工作。<br />
 +
&nbsp;&nbsp;&nbsp;&nbsp;'''简朴美''' - 借由GTK+ 2,它拥有美观、支持国际化的用户界面。<br />
 +
&nbsp;&nbsp;&nbsp;&nbsp;'''使用简单''' - 提供用户如微软Windows般的应用程序列表。<br />
 +
&nbsp;&nbsp;&nbsp;&nbsp;'''可自定义性''' - 用户可以轻易自定义LXDE的外观。<br />
 +
&nbsp;&nbsp;&nbsp;&nbsp;'''兼容标准''' - 兼容于freedesktop.org标准。<br /><br />
 +
用于友善电子平台的Lubuntu Desktop已经最佳化了对Mali GPU的支持,系统中已集成X.org驱动,支持Hardware Cursor、OpenGL图形加速等。<br />
 +
 +
===Lubuntu默认帐户===
 +
普通用户:
 +
    用户名: pi
 +
    密码: pi
 +
 +
Root用户:
 +
    用户名: root
 +
    密码: fa
 +
 +
===测试OpenGL ES性能===
 +
打开命令行终端,输入以下命令即可测试:
 +
<syntaxhighlight lang="bash">
 +
glmark2-es2
 +
</syntaxhighlight>
 +
[[File:Nanopc-t4-lubuntu-glmark2es.png|400px]]<br />
 +
 +
===测试视频的硬解播放===
 +
打开命令行终端,输入以下命令即可测试:
 +
<syntaxhighlight lang="bash">
 +
gst-player.sh
 +
</syntaxhighlight>
 +
视频会以 Overlay 的形式显示在桌面的上层,默认音频会输出到耳机孔, 可以使用 which gst-player.sh 找到这个脚本的位置,自已定制其播放的行为。
 +
 +
===USB摄像头===
 +
将USB摄像头(比如罗技C270)插入开发板,在Lubuntu上打开菜单 Other,启动 xawtv 程序即可预览摄像头的图像。
 +
===连接5G WiFi===
 +
点击Lubuntu右上角的网络图标,选择你要连接的WiFi热点,按界面提示操作即可。
 +
 +
===使用NVME SSD高速固态硬盘===
 +
NanoPC-T4可以连接一块 NVME SSD固态硬盘到M.2接口,在Lubuntu下可以通过以下步骤初始化硬盘,并在系统中自动挂载。在开始以下步骤之前,请在关机状态下,将SSD连接到NanoPC-T4,接着开机进入 Lubuntu 系统,打开命令行终端 (方法:左上角图标 -> System Tools -> LXTerminal),或者用SSH登录。<br /><br />
 +
为了方便操作,请在终端上先用以下命令切换为 root 用户:<br />
 +
<syntaxhighlight lang="bash">
 +
su -
 +
</syntaxhighlight>
 +
root用户的默认密码是fa。
 +
 +
====检查是否检测到了SSD====
 +
<syntaxhighlight lang="bash">
 +
root@FriendlyELEC:~# cat /proc/partitions
 +
major minor  #blocks  name
 +
  1        0      4096 ram0
 +
259        0  125034840 nvme0n1
 +
</syntaxhighlight>
 +
看到有 nvme0n1 设备的节点,说明SSD已经成功被NanoPC-T4识别到了。
 +
 +
====给SSD重新分区====
 +
为了让 Linux 系统能成功能挂载,我们选择给 SSD 重新分区,下面的命令会自动将 SSD 整个空间分成一个区:
 +
<syntaxhighlight lang="bash">
 +
(echo o; echo n; echo p; echo 1; echo ""; echo ""; echo w; echo q) | fdisk /dev/nvme0n1
 +
</syntaxhighlight>
 +
如果要分多个区,可以用 fdisk /dev/nvme0n1 命令,参考 fdisk的文档来操作。
 +
 +
====将分区格式化为 ext4 格式====
 +
上一个步骤分区完成后,我们再用 cat /proc/partitions 命令看一下当前的分区信息,由于原厂内核会把PCIe nvme设备采取按eMMC相同的分区处理方式,所以你会看到SSD多出了一些额外的小分区。<br /><br />
 +
我们需要看 blocks 这一列,找到容量最大的那个分区就是我们可用的分区了,在下面的结果中,可用于存储数据的分区设备名为 /dev/nvme0n1p7 :
 +
<syntaxhighlight lang="bash">
 +
root@FriendlyELEC:~# cat /proc/partitions
 +
major minor  #blocks  name
 +
  1        0      4096 ram0
 +
259        0  125034840 nvme0n1
 +
259        1      4096 nvme0n1p1
 +
259        2      4096 nvme0n1p2
 +
259        3      4096 nvme0n1p3
 +
259        4      12288 nvme0n1p4
 +
259        5      32768 nvme0n1p5
 +
259        6      32768 nvme0n1p6
 +
259        7  124932440 nvme0n1p7
 +
</syntaxhighlight>
 +
<br />
 +
下面的命令将该分区格式化为 ext4 格式:
 +
<syntaxhighlight lang="bash">
 +
mkfs.ext4 /dev/nvme0n1p7
 +
</syntaxhighlight>
 +
 +
====让Lubuntu能在开机时自动挂载 SSD 分区====
 +
首先,我们需要了解分区的Block ID,用blkid查看:
 +
<syntaxhighlight lang="bash">
 +
blkid /dev/nvme0n1p7
 +
/dev/nvme0n1p7: UUID="13fb682e-ef40-4c71-b98b-3d17403e1205" TYPE=“ext4"
 +
</syntaxhighlight>
 +
然后需要把  Block ID 添加到 /etc/fstab 文件中去,格式为<br />
 +
<syntaxhighlight lang="bash">
 +
UUID=<Block ID> /media/nvme ext4 defaults 0 0
 +
</syntaxhighlight>
 +
其中,<Block ID>请替换成 blkid 得到的UUID结果,为了挂载本例中使用的SSD,/etc/fstab内容如下所示:<br />
 +
<syntaxhighlight lang="bash">
 +
UUID=13fb682e-ef40-4c71-b98b-3d17403e1205 /media/nvme ext4 defaults 0 0
 +
</syntaxhighlight>
 +
 +
我们会将SSD挂载到 /media/nvme目录,这个目录默认是不存在的,我们用以下命令手动创建它,并设置为普通用户可以读写:
 +
<syntaxhighlight lang="bash">
 +
mkdir /media/nvme
 +
chmod 777 /media/nvme
 +
</syntaxhighlight>
 +
 +
接下来就可以输入mount命令,测试一下是否能正常挂载了:
 +
<syntaxhighlight lang="bash">
 +
mount /media/nvme
 +
</syntaxhighlight>
 +
 +
接下来我们关机测试一下,看下次开机是否会自动挂载:
 +
<syntaxhighlight lang="bash">
 +
poweroff
 +
</syntaxhighlight>
 +
关机后重新开机,进入Lubuntu,应该能在桌面上看到已经挂载的SSD分区了,如下图所示:<br />
 +
[[File:Nanopct4-lubuntu-ssd.png|300px]]<br />
 +
 +
====测试SSD读写速度====
 +
下面简单测试下SSD在NanoPC-T4下的读写表现,我们使用的硬盘型号是 Intel SSD 600P系列128GB,不同的SSD其测试结果会有所不同,仅供参考。<br /><br />
 +
测试写入速度: <br />
 +
<syntaxhighlight lang="bash">
 +
# dd if=/dev/zero of=/media/nvme/deleteme.dat bs=32M count=128
 +
128+0 records in
 +
128+0 records out
 +
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 21.3773 s, 201 MB/s
 +
</syntaxhighlight>
 +
<br />
 +
测试读出速度: <br />
 +
<syntaxhighlight lang="bash">
 +
# dd if=/media/nvme/deleteme.dat of=/dev/zero bs=32M count=128
 +
128+0 records in
 +
128+0 records out
 +
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 13.623 s, 315 MB/s
 +
</syntaxhighlight>
 +
 +
  
 
==Make Your Own OS Image==
 
==Make Your Own OS Image==

Revision as of 08:43, 19 June 2018

查看中文

1 Introduction

Overview
Front
Back
  • The NanoPC-T4 is by far the smallest RK3399 based high-performance ARM board with popular ports and interfaces. Its software is fully open source. It is as small as 100 x 64 mm. It has 4GB LPDDR3 RAM, 16GB eMMC flash, onboard 2.4G & 5G dual-band WiFi module and a full standard M.2 PCIe interface which supports an NVME SSD high-speed hard drive. The NanoPC-T4 supports GPU and VPU acceleration and works with Android 7.1 and Lubuntu Desktop.
  • The NanoPC-T4 has a MIPI-CSI dual camera interface, a MIPI-DSI and an eDP display interfaces, and an HDMI 2.0 interface. It has Type-C/DP, USB 3.0, USB2.0, MicroSD, Gbps Ethernet port, 3.5mm audio jack, infrared receiver, AD input, serial debug interface and a 40Pin RPi compatible connector.
  • The RK3399 SoC has an internal Mali-T860 GPU which has powerful capabilities of processing 3D and HD H.265/H2.64 video streams. It supports dual camera inputs, dual ISP interface capable of doing image processing up to 13MPix/s. The NanoPC-T4 is a perfect platform for AI and deep learning applications. It can be widely used in advertisement machines, game machines, video conference applications, surveillance systems, clusters, VR/AR applications, machine vision applications and etc.

2 Hardware Spec

  • SoC: Rockchip RK3399
    • CPU: big.LITTLE,Dual-Core Cortex-A72(up to 2.0GHz) + Quad-Core Cortex-A53(up to 1.5GHz)
    • GPU: Mali-T864 GPU,supports OpenGL ES1.1/2.0/3.0/3.1, OpenVG1.1, OpenCL, DX11, and AFBC
    • VPU: 4K VP9 and 4K 10bits H265/H264 60fps decoding, Dual VOP, etc
  • PMU: RK808-D PMIC, cooperated with independent DC/DC, enabling DVFS, solfware power-down, RTC wake-up, system sleep mode
  • RAM: Dual-Channel 4GB LPDDR3-1866
  • Flash: 16GB eMMC 5.1 Flash
  • Ethernet: Native Gigabit Ethernet
  • Wi-Fi/BT: 802.11a/b/g/n/ac, Bluetooth 4.1, Wi-Fi and Bluetooth combo module, dual antenna interface
  • Video Input: one or two 4-Lane MIPI-CSI, dual ISP, up to 13MPix/s,supports simultaneous input of dual camera data
  • Video output
    • HDMI: HDMI 2.0a, supports 4K@60Hz,HDCP 1.4/2.2
    • DP on Type-C: DisplayPort 1.2 Alt Mode on USB Type-C
    • LCD Interface: one eDP 1.3(4-Lane,10.8Gbps), one or two 4-Lane MIPI-DSI
  • Audio Out: 3.5mm Dual channel headphone jack, or HDMI
  • Audio In: Onboard microphone
  • USB 2.0: 2 independent native USB 2.0 Host A interfaces
  • USB 3.0: 1 native USB 3.0 Host A type interface
  • USB Type-C: Supports USB3.0 Type-C and DisplayPort 1.2 Alt Mode on USB Type-C
  • PCIe: One M.2 M-Key PCIe x4 socket, compatible with PCIe 2.1, Dual operation mode; Onboard M3 PCB nut for mounting M.2 2280 module
  • microSD Slot x 1
  • 40Pin GPIO Extension ports:
    • 1 X 3V/1.8V I2C, up to 2 x 3V UART, 1 X 3V SPI, 1 x SPDIF_TX, up to 8 x 3V GPIOs
    • 1 x 1.8V I2S, 3 x 1.8V GPIOs
  • ADC: 3 x 1.8V ADC inputs, 5 Pin 2.54mm header
  • Debug: one Debug UART, 4 Pin 2.54mm header, 3V level, 1500000bps
  • Keys: PowerKey, Reset, MASKROM(BOOT), Recovery
  • LED: 1 x power LED and 1 x GPIO Controlled LED
  • IR reciver: Onboard IR reciver, Acceptes 38KHz carrier frequency
  • RTC Battery: 2 Pin 1.27/1.25mm RTC battery input connector
  • Cooling: two 2.5mm PCB nuts for mounting heat sink; 3 Pin 12V cooling fan interface with PWM
  • Power supply: DC 12V/2A
  • PCB: Ten Layer, 100 mm x 64 mm
  • Ambient Operating Temperature: 0℃ to 80℃

3 Software Features

4 Diagram, Layout and Dimension

4.1 Layout

NanoPC-T4 Layout
  • 40 Pin GPIO Pin Spec
Pin# Assignment Pin# Assignment
1 VCC3V3_SYS 2 VCC5V0_SYS
3 I2C2_SDA(3V) 4 VCC5V0_SYS
5 I2C2_SCL(3V) 6 GND
7 GPIO1_A0(3V) 8 UART2B_TX(3V)
9 GND 10 UART2B_RX(3V)
11 GPIO1_A1(3V) 12 GPIO1_C2(3V)
13 GPIO1_A3(3V) 14 GND
15 GPIO1_A4(3V) 16 GPIO1_C6(3V)
17 VCC3V3_SYS 18 GPIO1_C7(3V)
19 SPI1_TXD/UART4_TX(3V) 20 GND
21 SPI1_RXD/UART4_RX(3V) 22 GPIO1_D0(3V)
23 SPI1_CLK(3V) 24 SPI1_CSn0(3V)
25 GND 26 GPIO4_C5/SPDIF_TX(3V)
27 I2C2_SDA(1.8V) 28 I2C2_SCL(1.8V)
29 I2S1_LRCK_RX(1.8V) 30 GND
31 I2S1_LRCK_TX(1.8V) 32 I2S_CLK(1.8V)
33 I2S1_SCLK(1.8V) 34 GND
35 I2S1_SDI0(1.8V) 36 I2S1_SDO0(1.8V)
37 GPIO3_D4(1.8V) 38 GPIO3_D5(1.8V)
39 GND 40 GPIO3_D6(1.8V)
  • eDP Interface Pin Spec
Connector P/N: I-PEX-20455-030E
Pin# Assignment Description
1 GND Signal ground
2 EDP_TX3N eDP data lane 3 negative output
3 EDP_TX3P eDP data lane 3 positive output
4 GND Signal ground
5 EDP_TX2N eDP data lane 2 negative output
6 EDP_TX2P eDP data lane 2 positive output
7 GND Signal ground
8 EDP_TX1N eDP data lane 1 negative output
9 EDP_TX1P eDP data lane 1 positive output
10 GND Signal ground
11 EDP_TX0N eDP data lane 0 negative output
12 EDP_TX0P eDP data lane 0 positive output
13 GND Signal ground
14 EDPAUXP eDP CH-AUX positive differential output
15 EDPAUXN eDP CH-AUX negative differential output
16 GND Signal ground
17 VCC3V3_SYS 3.3V Power output for logic
18 VCC3V3_SYS 3.3V Power output for logic
19 I2C4_SDA 3V I2C data signal, Connect to touch panel
20 I2C4_SCL 3V I2C clock signal, Connect to touch panel
21 GPIO1_C4_TP_INT 3V interrupt input, Connect to the interrupt output of touch panel
22 GPIO1_B5_TP_RST 3V output for reseting touch panel, Connect to the reset input of touch panel
23 PWM0_BL 3V PWM output, for LCD backlight dimming
24 GPIO4_D5_LCD_BL_EN 3V output for turning on/off the LCD backlight
25 GND Backlight ground
26 GND Backlight ground
27 GND Backlight ground
28 VCC12V0_SYS 12V Power output for Backlight Power
29 VCC12V0_SYS 12V Power output for Backlight Power
30 VCC12V0_SYS 12V Power output for Backlight Power
  • MIPI-DSI Interface Pin Spec
0.5mm FPC connector
Pin# Assignment Description
1, 2, 3 VCC5V0_SYS 5V power output
4 GND Return current path
5 I2C4_SDA 3V I2C data signal, Connect to touch panel
6 I2C4_SCL 3V I2C clock signal, Connect to touch panel
7 GND Return current path
8 GPIO1_C4_TP_INT 3V interrupt input, Connect to the interrupt output of touch panel
9 GND Return current path
10 PWM0_BL 3V PWM output, for LCD backlight dimming
11 GND Return current path
12 GPIO4_D5_LCD_BL_EN 3V output for turning on/off the LCD backlight
13 GPIO4_D6_LCD_RST_H 3V output for reseting the LCD module
14 GPIO1_B5_TP_RST 3V output for reseting touch panel, Connect to the reset input of touch panel
15 GND Return current path
16 MIPI_TX0_D3N MIPI DSI negative differential data line transceiver output
17 MIPI_TX0_D3P MIPI DSI positive differential data line transceiver output
18 GND Return current path
19 MIPI_TX0_D2N MIPI DSI negative differential data line transceiver output
20 MIPI_TX0_D2P MIPI DSI positive differential data line transceiver output
21 GND Return current path
22 MIPI_TX0_D1N MIPI DSI negative differential data line transceiver output
23 MIPI_TX0_D1P MIPI DSI positive differential data line transceiver output
24 GND Return current path
25 MIPI_TX0_D0N MIPI DSI negative differential data line transceiver output
26 MIPI_TX0_D0P MIPI DSI positive differential data line transceiver output
27 GND Return current path
28 MIPI_TX0_CLKN MIPI DSI negative differential clock line transceiver output
29 MIPI_TX0_CLKP MIPI DSI positive differential clock line transceiver output
30 GND Return current path
  • MIPI-CSI Interface Pin Spec
0.5mm FPC Connector
MIPI-CSI2 can be configured to MIPI-DSI
Pin# MIPI-CSI1 MIPI-CSI2 Description
1 VCC5V0_SYS VCC5V0_SYS 5V Power ouput
2 VCC5V0_SYS VCC5V0_SYS 5V Power ouput
3 GND GND Return current path
4 VCC_CSI_AF2.8V VCC_CSI_AF2.8V 2.8V Power for VCM
5 VCC_CSI_1.2V VCC_CSI_1.2V 1.2V Power for image sensor core circuit
6 VCC1V8_CAM VCC1V8_CAM 1.8V power for I/O circuit
7 VCC_CSI_2.8V VCC_CSI_2.8V 2.8V power for image sensor analog circuit
8 VCC_CSI_1.0V VCC_CSI_1.0V 1.0V Power for image sensor core circuit
9 I2C1_SCL I2C2_SCL 1.8V I2C clock signal
10 I2C1_SDA I2C2_SDA 1.8V I2C data signal
11 MIPI_CSI0_RST MIPI_CSI1_RST reset camera module
12 MIPI_CSI0_PWN MIPI_CSI1_PWN Power down camera module
13 GND GND Return current path
14 GPIO2_B3_CIF_CLKOUTA GPIO2_B3_CIF_CLKOUTA MCLK to camera module
15 GND GND Return current path
16 MIPI_RX0_D3P MIPI_TX1/RX1_D3P MIPI CSI positive differential data line transceiver output
17 MIPI_RX0_D3N MIPI_TX1/RX1_D3N MIPI CSI negative differential data line transceiver output
18 GND GND Return current path
19 MIPI_RX0_D2P MIPI_TX1/RX1_D2P MIPI CSI positive differential data line transceiver output
20 MIPI_RX0_D2N MIPI_TX1/RX1_D2N MIPI CSI negative differential data line transceiver output
21 GND GND Return current path
22 MIPI_RX0_D1P MIPI_TX1/RX1_D1P MIPI CSI positive differential data line transceiver output
23 MIPI_RX0_D1N MIPI_TX1/RX1_D1N MIPI CSI negative differential data line transceiver output
24 GND GND Return current path
25 MIPI_RX0_CLKP MIPI_TX1/RX1_CLKP MIPI CSI positive differential clock line transceiver output
26 MIPI_RX0_CLKN MIPI_TX1/RX1_CLKN MIPI CSI negative differential clock line transceiver output
27 GND GND Return current path
28 MIPI_RX0_D0P MIPI_TX1/RX1_D0P MIPI CSI positive differential data line transceiver output
29 MIPI_RX0_D0N MIPI_TX1/RX1_D0N MIPI CSI negative differential data line transceiver output
30 GND GND Return current path
  • M.2 PCIe Pin Spec
PCIe Gen 2.1 x4
M.2 Key M Connector for Socket 2/Socket 3 PCIe-based Module, such as PCIe SSD
Connector P/N: MDT-420-M-01002
Pin# Assignment Description Pin# Assignment Description
1 GND Return current path 2 VCC3V3_SYS 3.3V Power output
3 GND Return current path 4 VCC3V3_SYS 3.3V Power output
5 PCIE_RX3_N PCIe differential data input signals 6 N/C no connection
7 PCIE_RX3_P PCIe differential data input signals 8 N/C no connection
9 GND Return current path 10 N/C no connection
11 PCIE_TX3N PCIe differential data output signals 12 VCC3V3_SYS 3.3V Power output
13 PCIE_TX3P PCIe differential data output signals 14 VCC3V3_SYS 3.3V Power output
15 GND Return current path 16 VCC3V3_SYS 3.3V Power output
17 PCIE_RX2_N PCIe differential data input signals 18 VCC3V3_SYS 3.3V Power output
19 PCIE_RX2_P PCIe differential data input signals 20 N/C no connection
21 GND Return current path 22 N/C no connection
23 PCIE_TX2N PCIe differential data output signals 24 N/C no connection
25 PCIE_TX2P PCIe differential data output signals 26 N/C no connection
27 GND Return current path 28 N/C no connection
29 PCIE_RX1_N PCIe differential data input signals 30 N/C no connection
31 PCIE_RX1_P PCIe differential data input signals 32 N/C no connection
33 GND Return current path 34 N/C no connection
35 PCIE_TX1N PCIe differential data output signals 36 N/C no connection
37 PCIE_TX1P PCIe differential data output signals 38 DEVSLP/NC internal pull up to VCC3V3_SYS with 10K
39 GND Return current path 40 I2C2_SCL 1.8V I2C clock signal
41 PCIE_RX0_N PCIe differential data input signals 42 I2C2_SDA 1.8V I2C data signal
43 PCIE_RX0_P PCIe differential data input signals 44 GPIO2_A2_PCIE_ALERT# 1.8V GPIO signal
45 GND Return current path 46 N/C no connection
47 PCIE_TX0N PCIe differential data output signals 48 N/C no connection
49 PCIE_TX0P PCIe differential data output signals 50 GPIO2_A4_PCIE_RESET# 1.8V GPIO signal
51 GND Return current path 52 CLKREQ#/NC internal pull down to GND with 0R
53 PCIE_REF_CLKN differential reference clock out for PCIe peripheral 54 GPIO2_A3_PCIE_WAKE# 1.8V GPIO signal
55 PCIE_REF_CLKP differential reference clock out for PCIe peripheral 56 N/C no connection
57 GND Return current path 58 N/C no connection
59 Connector Key Connector Key 60 Connector Key Connector Key
60 Connector Key Connector Key 61 Connector Key Connector Key
62 Connector Key Connector Key 63 Connector Key Connector Key
64 Connector Key Connector Key 65 Connector Key Connector Key
66 Connector Key Connector Key 67 N/C no connection
68 RTC_CLKO_SOC 1.8V 32.768KHz clock output 69 N/C no connection
70 VCC3V3_SYS 3.3V Power output 71 GND Return current path
72 VCC3V3_SYS 3.3V Power output 73 GND Return current path
74 VCC3V3_SYS 3.3V Power output 75 GND Return current path
  • ADC interface Pin Spec
ADC input rang : 0~1.8V
Pin# Assignment
1 GND
2 VCC_1V8
3 ADC_IN0
4 ADC_IN2
5 ADC_IN3
  • Cooling Fan interface Pin Spec
Connector P/N: BM03B-GHS-TBT
Pin# Assignment Description
1 GND 0V
2 12V 12V output ,controlled by GPIO4_C6/PWM1
3 GPIO2_A6_FAN_TACH connect to tachometer output signal , or float
  • Debug UART Pin Spec
3V level signals, 1500000bps
Pin# Assignment Description
1 GND 0V
2 VCC5V0_SYS 5V power output
3 UART2DBG_TX output
4 UART2DBG_RX intput
  • Power Jack
  • DC-12V/2A IN, 5.5*2.1mm Power Jack
DC-007B.png
  • Power Key
Plug in 12V power at power jack, then press the Power Key ( > 0.5s ) to boot NanoPC-T4.
  • USB Port
USB Type-C port has 2A overcurrent protection.
USB 3.0 port has 2A overcurrent protection.
Two USB 2.0 host port share 2A overcurrent protection.
  • BOOT Key
Press BOOT key to prevent the board from eMMC booting, making the board enter MASKROM mode.
  • RTC
RTC backup current is 27uA.
Connector P/N: Molex 53398-0271
Notes
  1. The Power Jack is the only power input port. All power pins at other ports are output.
  2. How to make T4 start automatically when power is plugged in
  3. For more details refer to the document: NanoPC-T4-1802-Schematic.pdf

4.2 Board Dimension

NanoPC-T4 Dimensions

For more details refer to the CAD document: NanoPC-T4_1802_Drawing(dxf).zip


5 Get Started

5.1 Essentials You Need

Before starting to use your NanoPC-T4 get the following items ready

  • NanoPC-T4
  • Type-C cable
  • TF Card: Class 10 or Above, minimum 8GB SDHC
  • USB to serial adapter(optinal, for debugging or access from PC host)
  • A DC 12V/2A power is a must
  • HDMI monitor or LCD
  • USB keyboard, mouse and possible a USB hub(or a TTL to serial board)
  • A host computer running Ubuntu 16.04 64 bit system or Windows 7

5.2 Debug with Serial Pins

If you want to get T4's boot messages or access T4 remotely you can operate it by using its serial pins.

  • Get a USB to serial adapter and connect it to a T4:
Pin# T4's Serial Pins USB to Serial Board
1 GND GND
2 VCC5V0_SYS NC (Not Connected)
Note: if this is a FriendlyElec's Matrix USB2UART you need to turn off the "5V ON/OFF"
3 UART2DBG_TX RX
4 UART2DBG_RX TX
  • If you connect a USB to Serial adapter to a PC running Linux it will usually be recognized as ttyUSB0. To find out the device name, run the following commands:
 dmesg | grep ttyUSB
 ls -l /dev/ttyUSB*
  • On a PC running Linux install and run minicom, and set its configuration as follows(1500000 Bps, 8N1, N)
 sudo apt-get install minicom
 minicom -s

Note: RK3399's debug serial interface's default baud rate is 1500000. Some adapter may not be able to run at this rate. You need to find a working adapter.

5.3 Flash Image to eMMC

As for a RK3399 based ARM board developed by FriendlyELEC there are three ways to flash an image to eMMC:

  • Use eflasher to make a bootable SD card and flash an image to eMMC with this card
  • Use a Windows' utility "AndroidTool_Release_v2.42" provided by Rockchip to flash an image to eMMC with a Type-C cable
  • Use a Linux utility Linux_Upgrade_Tool_1.27 provided by Rockchip to flash an image to eMMC with a Type-C cable

If you are not familiar with the two utilities provided by Rockchip or you don't have a Type-C cable we suggest you try the first method.

5.3.1 Download Image and Utilities

Visit download link to download image files and utilities.

Image Files
rk3399-eflasher-YYYYMMDD-full.img.zip Image for SD card, which is flashed to an SD card. This card can then be used to flash an Android or Lubuntu image to eMMC
android-nougat-images.tgz Android 7.1.2 Image
lubuntu-desktop-images.tgz Lubuntu desktop image with X Window
Flash Utility:
win32diskimager.rar Windows utility. Under Linux users can use "dd"
AndroidTool_Release_v2.42.7z A Windows utility provided by Rockchip for flashing an image to eMMC. It needs to be used together with a Type-C cable.
DriverAssitant_v4.5.tgz A Windows USB driver provided by Rockchip. When you flash an image with AndroidTool you need to install this driver.
Linux_Upgrade_Tool_1.27.rar A Linux utility provided by Rockchip for flashing an image to eMMC. It needs to be used together with a Type-C cable.

5.3.2 Flash Image to eMMC with eflasher

  • Get a 8G SDHC card;
  • Download the "rk3399-eflasher-YYYYMMDD-full.img.zip" and "win32diskimager" and extract them on a Windows PC;
  • Run the "win32diskimager" utility as administrator, select your TF card, wanted file and click on "Write" to start flash the image to your TF card;
  • After it is done take out the TF card and insert it to your T4's microSD slot;
  • Connect a 12V/2A DC power cord and an HDMI monitor to your T4, press and hold the Power button for at least 1.5 seconds and you will see the PWR led is on and the image on SD card is booted. Around 15 seconds later the HDMI monitor will display a Window;
  • Select your wanted OS with a USB mouse and click on "Next" to continue;
  • After flashing is done press and release the Power button to shut down the system. After the PWR is off take out the TF card. Press and hold the Power button for at least 1.5 seconds the image will be booted from eMMC.

5.3.3 Flash Image to eMMC with AndroidTool

  • Download DriverAssitant_v4.5.tgz, extract it and install it on a Windows PC;
  • Download your wanted image from images-for-eflasher and extract it. For example the image for Android 7 is "android-nougat-images.tgz". You can ignore the "idbloader.img" and "info.conf" files.
  • Download AndroidTool_Release_v2.42.7z, extract it and run AndroidTool.exe as administrator.
  • Import a parameter.txt for sections and configure a file for each section if needed:

Download Android Image

  • Connect a 12V/2A DC power cord and an HDMI monitor to your T4, connect your T4 to a PC with a Type-C cable. Press and hold the Recovery button and the Power button for at least 1.5 seconds AndroidTools will prompt that a LOADER device is found
 a) If eMMC hasn't been flashed with an image or the image inside is removed or damaged this eMMC will be recognized as a MASKROM device;
 b) You can hold both the BOOT button and the Power button for at least 5 seconds to force the board to enter the MASKROM mode;
 c) If your system shows "no device is found" you need to check if you have installed a driver or if your Type-C cable works and then try it again;
 d) If your system is booted successfully you can run "reboot loader" on your board via adb or SSH and force your board to enter the LOADER mode.
  • Click on "Run" to download your wanted image to eMMC. A while later after the image is flashed successfully your board will be rebooted automatically.

5.3.4 Flash Image to eMMC with Linux_Upgrade_Tool

This is a Linux utility provided by Rockchip. You need to use it together with a Type-C cable. It can be used to install an image to eMMC, delete image files from eMMC, read from and write to eMMC and etc.

  • Install upgrade_tool: download Linux_Upgrade_Tool_1.27.rar, extract it and set upgrade_tool's access right
 sudo cp upgrade_tool /usr/local/sbin
 sudo chown root:root /usr/local/sbin/upgrade_tool
 sudo chmod 0755 /usr/local/sbin/upgrade_tool
  • Download your wanted image from images-for-eflasher and extract it. For example the image for Lubuntu is "lubuntu-desktop-images.tgz".
  • Refer to the steps in "Flash Image to eMMC with AndroidTool" to boot your board and force it to enter either LOADER or MASKROM mode;
  • Run the following commands to flash Lubuntu to eMMC and reboot your board:
 sudo upgrade_tool ul MiniLoaderAll.bin
 sudo upgrade_tool di -p parameter.txt
 sudo upgrade_tool di uboot uboot.img
 sudo upgrade_tool di trust trust.img
 sudo upgrade_tool di resource resource.img
 sudo upgrade_tool di kernel kernel.img
 sudo upgrade_tool di boot boot.img
 sudo upgrade_tool di rootfs rootfs.img
 sudo upgrade_tool RD
  • If you want to flash Android 7 to eMMC you can download and extract its image file and run the following commands:
 sudo upgrade_tool ul MiniLoaderAll.bin
 sudo upgrade_tool di -p parameter.txt
 sudo upgrade_tool di uboot uboot.img
 sudo upgrade_tool di trust trust.img
 sudo upgrade_tool di misc misc.img
 sudo upgrade_tool di resource resource.img
 sudo upgrade_tool di kernel kernel.img
 sudo upgrade_tool di boot boot.img
 sudo upgrade_tool di recovery recovery.img
 sudo upgrade_tool di system system.img
 sudo upgrade_tool RD

If the image's MiniLoaderAll.bin has a different version or the image you want to flash to eMMC is different from the image that already exists in eMMC you need to delete the image file in eMMC and then flash your new image to it.
Boot your board and enter the LOADER mode, run the following commands to delete the image in eMMC. If a prompt shows "Download Boot Start" and it lasts for 10 seconds you need to press the Reset button and run the following commands again.

 sudo upgrade_tool EF MiniLoaderAll.bin

If it succeeds you will see a prompt showing "Erase flash ok."

6 Android7系统的使用

rk3399-android7-home
rk3399-android7-icons

我们为 NanoPC-T4 提供了完善的Android7.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。

6.1 用摇控器操作Android

NanoPC-T4在Android下完美支持 FriendlyARM RC-100 红外遥控器,更方便NanoPC-T4在接电视的场景下使用,遥控器按键功能丰富,按键定义与功能如下表所示:

按键 功能
导航键-上
导航键-下
导航键-左
导航键-右
OK 确认
- 音量-
+ 音量+
静音 静音
菜单 Android菜单键
首页 Android Home键
返回 Android 返回键
F1 下拉Android 通知栏
F2 Android 截屏
F3 切换操作模式,在鼠标模式与按钮模式之间切换

6.2 使用MIPI摄像头进行拍照和录像

NanoPC-T4在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到NanoPC-T4的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。

NanoPC-T4板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:

接口位置 摄像头位置
MIPI-CSL1 Android 后置摄像头
MIPI-CSL2 Android 前置摄像头

6.3 设置屏幕分辨率

可以进入 Android 的 Settings -> Display -> HDMI -> HDMI Resolution设置,最高可支持 4K 分辨率。

6.4 旋转屏幕角度

可以进入 Android 的 Settings -> Display -> HDMI -> HDMI Rotation设置,支持横竖屏切换。


7 Lubuntu系统的使用

7.1 Lubuntu简介

Arduino
Website
Website

LUbuntu 是一个轻量级的Ubuntu桌面环境,其底层基于LXDE桌面构建,具有如下特点:
    轻巧 - 只需要很少的CPU资源即可执行顺畅,而且当内存容量充足时表现特别出色。
    省能源 - 它比其他常见的系统需要较少的资源运行相同的工作。
    简朴美 - 借由GTK+ 2,它拥有美观、支持国际化的用户界面。
    使用简单 - 提供用户如微软Windows般的应用程序列表。
    可自定义性 - 用户可以轻易自定义LXDE的外观。
    兼容标准 - 兼容于freedesktop.org标准。

用于友善电子平台的Lubuntu Desktop已经最佳化了对Mali GPU的支持,系统中已集成X.org驱动,支持Hardware Cursor、OpenGL图形加速等。

7.2 Lubuntu默认帐户

普通用户:

   用户名: pi
   密码: pi

Root用户:

   用户名: root
   密码: fa

7.3 测试OpenGL ES性能

打开命令行终端,输入以下命令即可测试:

glmark2-es2

Nanopc-t4-lubuntu-glmark2es.png

7.4 测试视频的硬解播放

打开命令行终端,输入以下命令即可测试:

gst-player.sh

视频会以 Overlay 的形式显示在桌面的上层,默认音频会输出到耳机孔, 可以使用 which gst-player.sh 找到这个脚本的位置,自已定制其播放的行为。

7.5 USB摄像头

将USB摄像头(比如罗技C270)插入开发板,在Lubuntu上打开菜单 Other,启动 xawtv 程序即可预览摄像头的图像。

7.6 连接5G WiFi

点击Lubuntu右上角的网络图标,选择你要连接的WiFi热点,按界面提示操作即可。

7.7 使用NVME SSD高速固态硬盘

NanoPC-T4可以连接一块 NVME SSD固态硬盘到M.2接口,在Lubuntu下可以通过以下步骤初始化硬盘,并在系统中自动挂载。在开始以下步骤之前,请在关机状态下,将SSD连接到NanoPC-T4,接着开机进入 Lubuntu 系统,打开命令行终端 (方法:左上角图标 -> System Tools -> LXTerminal),或者用SSH登录。

为了方便操作,请在终端上先用以下命令切换为 root 用户:

su -

root用户的默认密码是fa。

7.7.1 检查是否检测到了SSD

root@FriendlyELEC:~# cat /proc/partitions 
major minor  #blocks  name
   1        0       4096 ram0
 259        0  125034840 nvme0n1

看到有 nvme0n1 设备的节点,说明SSD已经成功被NanoPC-T4识别到了。

7.7.2 给SSD重新分区

为了让 Linux 系统能成功能挂载,我们选择给 SSD 重新分区,下面的命令会自动将 SSD 整个空间分成一个区:

(echo o; echo n; echo p; echo 1; echo ""; echo ""; echo w; echo q) | fdisk /dev/nvme0n1

如果要分多个区,可以用 fdisk /dev/nvme0n1 命令,参考 fdisk的文档来操作。

7.7.3 将分区格式化为 ext4 格式

上一个步骤分区完成后,我们再用 cat /proc/partitions 命令看一下当前的分区信息,由于原厂内核会把PCIe nvme设备采取按eMMC相同的分区处理方式,所以你会看到SSD多出了一些额外的小分区。

我们需要看 blocks 这一列,找到容量最大的那个分区就是我们可用的分区了,在下面的结果中,可用于存储数据的分区设备名为 /dev/nvme0n1p7 :

root@FriendlyELEC:~# cat /proc/partitions 
major minor  #blocks  name
   1        0       4096 ram0
 259        0  125034840 nvme0n1
 259        1       4096 nvme0n1p1
 259        2       4096 nvme0n1p2
 259        3       4096 nvme0n1p3
 259        4      12288 nvme0n1p4
 259        5      32768 nvme0n1p5
 259        6      32768 nvme0n1p6
 259        7  124932440 nvme0n1p7


下面的命令将该分区格式化为 ext4 格式:

mkfs.ext4 /dev/nvme0n1p7

7.7.4 让Lubuntu能在开机时自动挂载 SSD 分区

首先,我们需要了解分区的Block ID,用blkid查看:

blkid /dev/nvme0n1p7
/dev/nvme0n1p7: UUID="13fb682e-ef40-4c71-b98b-3d17403e1205" TYPE=“ext4"

然后需要把 Block ID 添加到 /etc/fstab 文件中去,格式为

UUID=<Block ID> /media/nvme ext4 defaults 0 0

其中,<Block ID>请替换成 blkid 得到的UUID结果,为了挂载本例中使用的SSD,/etc/fstab内容如下所示:

UUID=13fb682e-ef40-4c71-b98b-3d17403e1205 /media/nvme ext4 defaults 0 0

我们会将SSD挂载到 /media/nvme目录,这个目录默认是不存在的,我们用以下命令手动创建它,并设置为普通用户可以读写:

mkdir /media/nvme
chmod 777 /media/nvme

接下来就可以输入mount命令,测试一下是否能正常挂载了:

mount /media/nvme

接下来我们关机测试一下,看下次开机是否会自动挂载:

poweroff

关机后重新开机,进入Lubuntu,应该能在桌面上看到已经挂载的SSD分区了,如下图所示:
Nanopct4-lubuntu-ssd.png

7.7.5 测试SSD读写速度

下面简单测试下SSD在NanoPC-T4下的读写表现,我们使用的硬盘型号是 Intel SSD 600P系列128GB,不同的SSD其测试结果会有所不同,仅供参考。

测试写入速度:

# dd if=/dev/zero of=/media/nvme/deleteme.dat bs=32M count=128
128+0 records in
128+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 21.3773 s, 201 MB/s


测试读出速度:

# dd if=/media/nvme/deleteme.dat of=/dev/zero bs=32M count=128
128+0 records in
128+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 13.623 s, 315 MB/s


8 Make Your Own OS Image

8.1 Setup Development Environment

If you want to compile an Android image we suggest you use a PC running a 64-bit Ubuntu 16.04.

sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip
sudo apt-get install flex curl libncurses5-dev libssl-dev zlib1g-dev gawk minicom
sudo apt-get install openjdk-8-jdk

For more details refer to https://source.android.com/source/initializing.html

8.2 Install Cross Compiler

8.2.1 Install aarch64-linux-gcc 6.4

Download and extract compiler:

git clone https://github.com/friendlyarm/prebuilts.git
sudo mkdir -p /opt/FriendlyARM/toolchain
sudo tar xf prebuilts/gcc-x64/aarch64-cortexa53-linux-gnu-6.4.tar.xz -C /opt/FriendlyARM/toolchain/

Add the compiler's path to the PATH variable by appending the following lines to the " ~/.bashrc " file:

export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin:$PATH
export GCC_COLORS=auto

Run the " ~/.bashrc " script. Note there is a space after the first ".":

. ~/.bashrc

This a 64-bit compiler. It cannot be run on a 32-bit OS. After it is installed you can check if it is correctly installed by running the following commands:

aarch64-linux-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gcc
COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/6.4-aarch64/libexec/gcc/aarch64-cortexa53-linux-gnu/6.4.0/lto-wrapper
Target: aarch64-cortexa53-linux-gnu
Configured with: /work/toolchain/build/aarch64-cortexa53-linux-gnu/build/src/gcc/configure --build=x86_64-build_pc-linux-gnu
--host=x86_64-build_pc-linux-gnu --target=aarch64-cortexa53-linux-gnu --prefix=/opt/FriendlyARM/toolchain/6.4-aarch64
--with-sysroot=/opt/FriendlyARM/toolchain/6.4-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-languages=c,c++
--enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --with-cpu=cortex-a53
...
Thread model: posix
gcc version 6.4.0 (ctng-1.23.0-150g-FA)