Difference between revisions of "NanoPC-T4/zh"
(→硬件特性) |
(→搭建编译环境) |
||
Line 826: | Line 826: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
更多说明可查看 https://source.android.com/source/initializing.html 。 | 更多说明可查看 https://source.android.com/source/initializing.html 。 | ||
+ | |||
+ | ===安装交叉编译器=== | ||
+ | ====安装aarch64-linux-gcc 6.4==== | ||
+ | 首先下载并解压编译器: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | 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/ | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin:$PATH | ||
+ | export GCC_COLORS=auto | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | . ~/.bashrc | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | 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) | ||
+ | </syntaxhighlight> | ||
===编译Android7源代码=== | ===编译Android7源代码=== |
Revision as of 02:04, 20 June 2018
1 介绍
- NanoPC-T4不仅是世界上最小的全功能接口RK3399一体化主板, 而且是一款完全开源的高性能计算平台。它的尺寸只有100x64mm,标配4GB LPDDR3内存和16GB闪存, 板载2.4G & 5G双频WiFi模组, 带有标准完整的M.2 PCIe接口, 可直接安装使用NVME SSD高速固态硬盘。NanoPC-T4支持运行Android 7.1和Lubuntu Desktop两种系统,它们均带有GPU和VPU加速处理。
- NanoPC-T4还带有MIPI-CSI双摄像头接口, MIPI-DSI和eDP双显示接口, HDMI 2.0视频输出口,并具备Type-C/DP,USB 3.0, USB2.0,MicroSD, 千兆以太网口,3.5mm音频输出口,红外接收等常见标准接口,以及AD输入,调试串口,40Pin树莓派兼容扩展口。
- RK3399内置新一代高端图像处理器Mali-T860, 具有超强的3D处理和超高清H.265/H2.64视频解析能力,并可支持双路摄像头同时输入,双ISP像素处理能力高达800MPix/s。NanoPC-T4非常适合广告机,游戏主机,视频会议,智能监控,集群计算,虚拟现实,机器视觉和计算机视觉等方面的应用,并且是人工智能和深度学习平台的绝佳选择!
2 硬件特性
- 主控芯片: Rockchip RK3399
- CPU: big.LITTLE大小核架构,双Cortex-A72大核(up to 2.0GHz)+四Cortex-A53小核结构(up to 1.5GHz)
- GPU: Mali-T864 GPU,支持OpenGL ES1.1/2.0/3.0/3.1, OpenVG1.1, OpenCL, DX11, 支持AFBC(帧缓冲压缩)
- VPU: 支持4K VP9 and 4K 10bits H265/H264 视频解码,高达60fps, 双VOP显示等视频编解码功能
- 电源管理单元: RK808-D PMIC, 搭配独立DC/DC, 支持动态调压, 软件关机, 按键开机, RTC唤醒, 睡眠唤醒等功能
- 内存: 双通道4GB LPDDR3-1866
- Flash: 16GB eMMC 5.1 Flash
- 有线网络: 原生千兆以太网
- Wi-Fi/蓝牙: 802.11a/b/g/n/ac, Bluetooth 4.1 双频Wi-Fi蓝牙模块, 双天线
- 视频输入: 1个或2个4线MIPI-CSI, 双ISP像素处理能力高达13MPix/s,支持双路摄像头数据同时输入
- 视频输出
- HDMI: HDMI 2.0a, 支持4K@60Hz显示,支持HDCP 1.4/2.2
- DP on Type-C: DisplayPort 1.2 Alt Mode on USB Type-C
- LCD Interface: 一个eDP 1.3(4 线,10.8Gbps), 一个或2个4线MIPI-DSI
- Audio Out: 3.5mm 双通道耳机接口, 或者通过HDMI输出
- Audio In: 板载麦克风
- USB 2.0: 2个独立的原生USB 2.0 Host A型接口
- USB 3.0: 1个原生USB 3.0 Host A型接口
- USB Type-C: 支持USB3.0 Type-C 和 DisplayPort 1.2 Alt Mode on USB Type-C
- PCIe: 一个 M.2 M-Key PCIe x4 接口, 兼容PCIe 2.1, 双操作模式, 带有M.2 2280模块M3固定螺柱
- microSD Slot x 1
- 40Pin GPIO 扩展接口:
- 2 X 3V/1.8V I2C, up to 1 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路 1.8V ADC 输入, 5 Pin 2.54mm 排针接口
- 调试串口: 4 Pin 2.54mm 调试串口, 3V电平, 波特率为1500000
- 按键: 电源按键, 复位按键, MASKROM按键(BOOT), 系统还原按键
- LED: 1 x power LED and 1 x GPIO Controled LED
- 红外接收器: 板载红外接收器, 接受的载波频率为38KHz
- RTC电池座子: 2 Pin 1.27/1.25mm RTC备份电池接口
- 散热片和风扇: 2个2.5mm焊接螺柱, 专门用于固定散热片; 3 Pin 12V 支持PWM调节的风扇接口
- 供电电源: DC 12V/2A
- PCB: Ten Layer, 100 mm x 64 mm
- 环境工作温度: 0℃ to 80℃
3 接口布局和尺寸
3.1 接口布局
- 40 Pin GPIO引脚定义
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 GPIO4_C1/I2C3_SCL(3V) 9 GND 10 GPIO4_C0/I2C3_SDA(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接口引脚定义
- 连接器型号: 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接口引脚定义
- 0.5mm FPC 连接器
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接口引脚定义
- 0.5mm FPC 连接器
- MIPI-CSI2也可作为MIPI-DSI接口连接LCD显示屏
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接口引脚定义
- PCIe Gen 2.1 x4
- M.2 Key M Connector for Socket 2/Socket 3 PCIe-based Module, such as PCIe SSD
- 连接器型号: 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接口引脚定义
- ADC输入范围 : 0~1.8V
Pin# Assignment 1 GND 2 VCC_1V8 3 ADC_IN0 4 ADC_IN2 5 ADC_IN3
- 散热风扇接口引脚定义
- 连接器型号: 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
- 调试串口引脚定义
- 3V电平, 波特率1500000bps
Pin# Assignment Description 1 GND 0V 2 VCC5V0_SYS 5V power output 3 UART2DBG_TX output 4 UART2DBG_RX intput
- 电源接口
- 电源按键
- 插入电源后, 或板子处理关机状态时,需要按下电源按键(大于0.5秒,PWR灯亮即可松开)才会开机.
- 当板子已正常启动,则电源按键的功能与系统有关,如Anroid则轻按会休眠/唤醒,长按则显示关机/重启界面.
- USB接口
- USB Type-C 接口具有2A过流保护功能.
- USB 3.0 接口具有2A过流保护功能.
- 两个USB 2.0接口共享2A过流保护, 也就是说2个接口的负载总和不应超过2A, 否则触发保护, 2个接口上的设备都会被切断电源.
- BOOT按键
- 按下BOOT按键可以阻止板子从eMMC启动系统; 当板子无法从eMMC和tf卡启动系统时, 板子就会进入MASKROM模式; MASKROM模式下, 可以通过Type-C接口更新板子的系统.
- RTC
- 我们实测的RTC备份电流为27uA.
- 连接器型号: Molex 53398-0271
- 其他说明
- 只能从DC电源接口给板子供电, 其他接口的电源引脚均为输出引脚.
- 修改板子为上电即开机的方法(改后不再保修)
- 板子原理图: NanoPC-T4-1802-Schematic.pdf
3.2 尺寸
- PCB dxf文件, 仅供做产品时结构设计使用: NanoPC-T4_1802_Drawing(dxf).zip
4 快速入门
4.1 准备工作
要开启你的NanoPC-T4,请先准备好以下硬件:
- NanoPC-T4主板
- Type-C数据线
- TF卡: Class10或以上的8GB microSD卡
- USB转串口适配器(可选,用于调试或PC上进行操作)
- 一个DC接口的外接电源,要求输出为12V/2A
- 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
- 一套USB键盘鼠标,同时连接更多USB的设备时还需要USB HUB
- 一台电脑,需要联网,建议使用Ubuntu 16.04 64位系统,或Windows 7以上
4.2 烧写系统到eMMC
FriendlyELEC推出的基于RK3399的开发板,支持三种方式烧写系统到eMMC:
- 方法1)SD卡脱机烧写,用SD卡启动开发板,通过EFlasher工具进行烧写 (推荐使用此方法)
- 方法2)通过USB Type-C数据线,在Windows下用Rockchip提供的工具进行烧写
- 方法3)通过USB Type-C数据线,在Linux下用Rockchip提供的工具进行烧写
建议采用第一种方法进行烧写。
4.2.1 使用SD卡脱机烧写
访问此处的下载地址下载SD卡脱机烧写所需的文件及工具:
Image Files | |
rk3399-eflasher-YYYYMMDD-full.img.zip | SD卡映象,用于SD启动后脱机烧写Android或lubuntu系统到eMMC |
Flash Utility: | |
win32diskimager.rar | Windows utility. Under Linux users can use "dd" |
详细操作步骤如下:
- 准备一张8G或以上容量的SDHC卡;
- 下载并解压 固件文件rk3399-eflasher-YYYYMMDD-full.img.zip 和 工具win32diskimager;
- 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的EFlasher固件,点击 Write 按钮烧写到SD卡;
- 或者在 Linux下使用 dd 命令将 rk3399-eflasher-YYYYMMDD-full.img 写入 SD卡;
- 将SD卡从电脑端弹出,插入NanoPC-T4的microSD卡槽;
- 给NanoPC-T4连接好 12V/2A 的DC接口电源及HDMI显示设备,长按NanoPC-T4上的Power键直到板上的PWR灯亮,系统会从SD卡启动,稍等片刻(约15秒)后会在显示设备上看到EFlasher工具的界面;
- 通过USB鼠标,或者触摸屏,在EFlasher工具界面上选择你要烧写的系统进行烧写;
- 烧写完成后,轻按Power键关机,从NanoPC-T4端弹出SD卡;
- 长按Power开机,会从eMMC启动你刚刚烧写的系统;
4.2.2 Windows下通过Type-C数据线进行烧写
访问此处的下载地址下载Windows下使用Type-C数据线烧写所需的文件及工具:
Image Files | |
android-nougat-images.tgz | Android 7.1.2固件 |
lubuntu-desktop-images.tgz | LUbuntu桌面版固件,自带X Window图形界面 |
Flash Utility: | |
AndroidTool_Release_v2.42.7z | Rockchip提供的Windows下通过Type-C数据线烧写系统的工具 |
DriverAssitant_v4.5.tgz | Rockchip提供的Windows下的USB驱动,使用AndroidTool烧写系统时需要安装此驱动 |
详细操作步骤如下:
- 初次使用时,请先下载DriverAssitant_v4.5.tgz,解压后安装USB驱动;
- 根据自己的需要下载images-for-eflasher下的系统固件并解压,如Android 7的固件文件是android-nougat-images.tgz,其中固件解压后的文件idbloader.img和info.conf,使用AndroidTool时可忽略。
- 下载AndroidTool_Release_v2.42.7z 并解压,以管理员身份运行AndroidTool.exe
- 可根据Android开发工具手册.pdf,导入分区配置即固件中的parameter.txt,然后指定各分区的烧写文件路径,如下图所示:
- 连接好12V/2A的DC接口电源及HDMI显示设备,连接Type-C数据线到PC,按住Recovery键再长按(1.5秒以上)Power键开机,AndroidTool会显示“发现一个LOADER设备”
a) 如果eMMC没有烧写过系统或eMMC的系统被擦除或损坏则会显示为MASKROM设备;
b) 您也可以按住BOOT键再长按Power键开机,同时持续按住BOOT键5秒以上强制进入MASKROM模式;
c) 如果显示“没有发现设备”,请先检查是否已成功安装驱动,检查Type-C数据线然后按上述方法重新开机,或按住Recovery键再按Reset键;
d) 另外,如果已成功启动系统,可通过串口、adb或ssh等方式在板子上运行reboot loader重启板子并进入LOADER模式。 - 点击执行即可下载固件到eMMC,请耐心等待,烧写成功结束后将自动重启。
4.2.3 Linux下通过Type-C数据线进行烧写
可访问此处的下载地址下载需要的固件文件及工具。
Image Files | |
android-nougat-images.tgz | Android 7.1.2固件 |
lubuntu-desktop-images.tgz | LUbuntu桌面版固件,自带X Window图形界面 |
Flash Utility: | |
Linux_Upgrade_Tool_1.27.rar | Rockchip提供的Linux下通过Type-C数据线更新系统的工具 |
Linux_Upgrade_Tool是Rockchip提供的Linux下的命令行工具,用于通过Type-C数据线来升级eMMC中的固件,同时还提供了如擦除eMMC、直接读/写eMMC等功能。
- 安装upgrade_tool: 下载Linux_Upgrade_Tool_1.27.rar后解压即可获得upgrade_tool,然后复制并设置权限
sudo cp upgrade_tool /usr/local/sbin sudo chown root:root /usr/local/sbin/upgrade_tool sudo chmod 0755 /usr/local/sbin/upgrade_tool
- 根据自己的需要下载images-for-eflasher下的系统固件并解压,如Lubuntu的固件文件是lubuntu-desktop-images.tgz
- 参考“使用AndroidTool”,启动板子并进入LOADER或MASKROM模式;
- 运行以下命令即可烧写Lubuntu系统并重启:
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
- 如果想烧写Android 7到eMMC,可下载固件文件并解压后运行以下命令:
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
如果固件中的MiniLoaderAll.bin版本不同,或烧写与eMMC中不同的系统,则可能会遇到无法成功启动的情况,需要擦除eMMC。
先启动板子并进入LOADER,运行以下命令可删除eMMC,如程序显示"Download Boot Start"后超过10s无变化可按Reset键,然后再运行一次以下命令。
sudo upgrade_tool EF MiniLoaderAll.bin
擦除成功结束后将显示"Erase flash ok."
4.3 串口调试
如果你想查看NanoPC-T4启动时更多详细的信息,或者更直接的对其进行控制,建议连接并使用调试串口。
- 使用准备好的USB转串口适配器和连接线(需另购),连接开发板:
Pin# 开发板调试串口 USB转串口适配器 1 GND GND 2 VCC5V0_SYS NC (不需要连接)
注: Matrix USB2UART适配器,请将5V ON/OFF切换到OFF3 UART2DBG_TX RX 4 UART2DBG_RX TX
- 将USB转串口适配器连接到PC Linux,通常会识别为ttyUSB0,或使用以下命令来确定设备名字:
dmesg | grep ttyUSB ls -l /dev/ttyUSB*
- 在PC Linux安装minicom,运行minicom,配置串口设备和参数(1500000 Bps, 8N1, 流控无)
sudo apt-get install minicom minicom -s
注意: RK3399调试串口的波特率缺省是1500000,有些适配器可能达不到此速率,还有可能因USB延长线或连接到USB hub出现异常(如乱码),需检查并更换。
5 Android7系统的使用
我们为 NanoPC-T4 提供了完善的Android7.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。
5.1 用摇控器操作Android
NanoPC-T4在Android下完美支持 FriendlyARM RC-100 红外遥控器,更方便NanoPC-T4在接电视的场景下使用,遥控器按键功能丰富,按键定义与功能如下表所示:
按键 功能 上 导航键-上 下 导航键-下 左 导航键-左 右 导航键-右 OK 确认 - 音量- + 音量+ 静音 静音 菜单 Android菜单键 首页 Android Home键 返回 Android 返回键 F1 下拉Android 通知栏 F2 Android 截屏 F3 切换操作模式,在鼠标模式与按钮模式之间切换
5.2 使用MIPI摄像头进行拍照和录像
NanoPC-T4在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到NanoPC-T4的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。
NanoPC-T4板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:
接口位置 摄像头位置 MIPI-CSL1 Android 后置摄像头 MIPI-CSL2 Android 前置摄像头
5.3 设置屏幕分辨率
可以进入 Android 的 Settings -> Display -> HDMI -> HDMI Resolution设置,最高可支持 4K 分辨率。
5.4 旋转屏幕角度
可以进入 Android 的 Settings -> Display -> HDMI -> HDMI Rotation设置,支持横竖屏切换。
6 Lubuntu系统的使用
6.1 Lubuntu简介
LUbuntu 是一个轻量级的Ubuntu桌面环境,其底层基于LXDE桌面构建,具有如下特点:
轻巧 - 只需要很少的CPU资源即可执行顺畅,而且当内存容量充足时表现特别出色。
省能源 - 它比其他常见的系统需要较少的资源运行相同的工作。
简朴美 - 借由GTK+ 2,它拥有美观、支持国际化的用户界面。
使用简单 - 提供用户如微软Windows般的应用程序列表。
可自定义性 - 用户可以轻易自定义LXDE的外观。
兼容标准 - 兼容于freedesktop.org标准。
用于友善电子平台的Lubuntu Desktop已经最佳化了对Mali GPU的支持,系统中已集成X.org驱动,支持Hardware Cursor、OpenGL图形加速等。
6.2 Lubuntu默认帐户
普通用户:
用户名: pi 密码: pi
Root用户:
用户名: root 密码: fa
6.3 测试OpenGL ES性能
打开命令行终端,输入以下命令即可测试:
glmark2-es2
6.4 测试视频的硬解播放
打开命令行终端,输入以下命令即可测试:
gst-player.sh
视频会以 Overlay 的形式显示在桌面的上层,默认音频会输出到耳机孔, 可以使用 which gst-player.sh 找到这个脚本的位置,自已定制其播放的行为。
6.5 USB摄像头
将USB摄像头(比如罗技C270)插入开发板,在Lubuntu上打开菜单 Other,启动 xawtv 程序即可预览摄像头的图像。
6.6 连接5G WiFi
点击Lubuntu右上角的网络图标,选择你要连接的WiFi热点,按界面提示操作即可。
6.7 使用NVME SSD高速固态硬盘
NanoPC-T4可以连接一块 NVME SSD固态硬盘到M.2接口,在Lubuntu下可以通过以下步骤初始化硬盘,并在系统中自动挂载。在开始以下步骤之前,请在关机状态下,将SSD连接到NanoPC-T4,接着开机进入 Lubuntu 系统,打开命令行终端 (方法:左上角图标 -> System Tools -> LXTerminal),或者用SSH登录。
为了方便操作,请在终端上先用以下命令切换为 root 用户:
su -
root用户的默认密码是fa。
6.7.1 检查是否检测到了SSD
root@FriendlyELEC:~# cat /proc/partitions major minor #blocks name 1 0 4096 ram0 259 0 125034840 nvme0n1
看到有 nvme0n1 设备的节点,说明SSD已经成功被NanoPC-T4识别到了。
6.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的文档来操作。
6.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
6.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分区了,如下图所示:
6.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
7 如何编译系统
7.1 搭建编译环境
搭建编译Android的环境建议使用64位的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
更多说明可查看 https://source.android.com/source/initializing.html 。
7.2 安装交叉编译器
7.2.1 安装aarch64-linux-gcc 6.4
首先下载并解压编译器:
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/
然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin:$PATH export GCC_COLORS=auto
执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
. ~/.bashrc
这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:
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)
7.3 编译Android7源代码
7.3.1 下载Android7源代码
NanoPC-T4 源代码托管在 gitlab 上,使用以下命令进行下载:
git clone https://gitlab.com/friendlyelec/rk3399-nougat.git
7.3.2 编译并生成Image文件
使用以下命令编译 Android7:
cd rk3399-nougat ./build-nanopc-t4.sh -F -M
7.3.3 更新系统为自已编译的Image
编译完成后,image文件会存放在Android7源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 NanoPC-T4上:
1) 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区;
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 FRIENDLYARM 分区里的 nougat 目录;
3) 将SD卡插入NanoPC-T4,重新烧写Andorid系统即可;
7.4 编译Lubuntu内核源代码
7.4.1 Install toolchain
git clone https://github.com/friendlyarm/prebuilts.git sudo mkdir -p /opt/FriendlyARM/toolchain sudo tar xf prebuilts/gcc-x64/arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/
7.4.2 compile Linux kernel
git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi4-linux-v4.4.y cd kernel-rockchip export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH export GCC_COLORS=auto make ARCH=arm64 nanopi4_linux_defconfig make ARCH=arm64 rk3399-nanopi4-rev00.img
7.4.3 更新内核到Lubuntu
需要使用原厂的Linux_Upgrade_Tool_1.27.rar工具烧写,请本文参考上面的章节。
8 硬件资源访问
8.1 串口访问
如下表所示,仅 UART4 可供应用程序开发使用:
串口设备 串口资源占用情况 UART0 已被蓝牙占用 UART1 已被千兆以太网占用 UART2 已被作为调试串口 UART3 已被千兆以太网占用 UART4 空闲,设备名称为 /dev/ttyS4 (注:需使用20180618之后的ROM)
9 查看瑞芯微原厂资料
请访问以下网址查看:https://gitlab.com/friendlyelec/rk3399-nougat/tree/nanopc-t4-nougat/RKDocs