程序项目代做,有需求私信(小程序、网站、爬虫、电路板设计、驱动、应用程序开发、毕设疑难问题处理等)

Rockchip RK3399 - NanoPC-T4开发板介绍

最近从网上买了一块NanoPC-T4开发板,主控芯片是Rockchip RK3399,这块板子也是友善之家的,并且官方有很详细的文档,NanoPC-T4/zh

这篇博客主要是对这块板子进行一个介绍,大部分内容也都来自官方手册,由于官方手册是实时更新的,因此,更详细的内容介绍请移步官网。

一、介绍

  • 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非常适合广告机,游戏主机,视频会议,智能监控,集群计算,虚拟现实,机器视觉和计算机视觉等方面的应用,并且是人工智能和深度学习平台的绝佳选择。

1.1 硬件特性

1.1.1 RK3399

主控芯片: Rockchip RK3399:

(1) CPU

big.LITTLE大小核架构,双Cortex-A72大核(up to 2.0GHz) + 四Cortex-A53小核结构(up to 1.5GHz);

L1缓存:

  • 48KB Icache and 32KB Dcache for each A72;
  • 32KB Icache and 32KB Dcache for each A53;

L2缓存:

  • 1024KB for big cluster;
  • 512KB for little cluster;

(2) GPU

Mali-T860 GPU,支持OpenGL ES1.1/2.0/3.0/3.1, OpenCL, DX11, 支持AFBC(帧缓冲压缩);

(3) Display

  • Dual VOP: one supports 4096x2160 with AFBC supported;The other supports 2560x1600;
  • Dual channel MIPI-DSI (4 lanes per channel);
  • eDP 1.3 (4 lanes with 10.8Gbps) to support display, with PSR;
  • HDMI 2.0 for 4K 60Hz with HDCP 1.4/2.2;
  • DisplayPort 1.2 (4 lanes, up to 4K 60Hz);
  • Supports Rec.2020 and conversion to Rec.709;

(4) 内部SRAM

  • 192KB total;
  • 4KB used by bootrom when bootup;

(5) 内存

双通道64位DRAM控制器;

支持DDR3/DDR3L,LPDDR3、LPDDR4;

(5) Connectivity

  • PCIe 2.1 (4 full-duplex lanes with 20Gbps);
  • Embedded low power MCU for other application;
  • 8 channels I2S supports 8 channels RX or 8 channels TX;

(6) Camera

Dual mipi CSI,dual ISP,Maximum input resolution of 13M pixels。

1.1.2 板载外设

电源管理单元::RK808-D PMIC, 搭配独立DC/DC, 支持动态调压, 软件关机, 按键开机, RTC唤醒, 睡眠唤醒等功能;

内存: 双通道4GB LPDDR3-1866;

Flash: 16GB eMMC 5.1 Flash,型号为KLMAG2WEMB-B031;

有线网络: 原生千兆以太网,板载以太网PHY芯片型号为RTL8211E-VB-CG,是Realtek瑞昱推出的一款高集成的网络接收PHY芯片,它符合10Base-T,100Base-TX和1000Base-T IEEE802.3标准,该芯片在网络通信中属于物理层,用于MAC与PHY之间的数据通信;

Wi-Fi/蓝牙: 802.11a/b/g/n/ac, Bluetooth 4.1 双频Wi-Fi蓝牙模块, 2x2 MIMO, 双天线;

视频输入: 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: 2Pin 2.54mm麦克风接口;

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;

环境工作温度: -20℃ to 70℃;

1.2 接口布局和尺寸

下面是我购买的NanoPC-T4开发板的正反面外形,从PCB上我们可以看到这个板子上的电气元件的密度是非常大的:

 

下面我们来介绍各个模块的引脚,关于各个引脚的型号作用,我们在学习到各个模块的时候再进行深入研究。

1.2.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)
1.2.2 eDP引脚定义

eDP(Embedded DisplayPort) 它是一种基于DisplayPort架构和协议的一种内部数字接口。可以用较简单的连接器以及较少的引脚来传递高分辨率信号,且能够实现多数据同时传输,故传输速率远高于LVDS。适用于平板电脑、笔记本、一体机、未来新型大屏幕高分 辨率手机。

以分辨率为1920x1200、24bit彩色的液晶显示屏为例,如采用LVDS接口,则数据传输线需20对;若采用EDP接口,则只需要4对线。由此可见,eDP接口的优势相当明显,特别是在高清屏中。近年来,为了提高面板及处理器间的数据传输速度,在工控机及工业平板电脑中已大量采用eDP接口,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. pulled up to VCC3V3_SYS on LCD side.
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
1.2.3 MIPI-DSI接口引脚定义

MIPI(Mobile Industry Processor Interface)是2003年由ARM, Nokia, ST ,TI等公司成立的一个联盟,目的是把手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性。MIPI联盟下面有不同的WorkGroup,分别定义了一系列的手机内部接口标准,比如摄像头接口CSI、显示接口DSI、射频接口DigRF、麦克风/喇叭接口SLIMbus等。

MIPI-DSI是一种应用于显示技术的串行接口,兼容DPI(显示像素接口,Display Pixel Interface)、DBI(显示总线接口,Display Bus Interface)和DCS(显示命令集,Display Command Set),以串行的方式发送像素信息或指令给外设,还可以从外设中读取状态信息或像素信息,而且在传输过程中享有自己独立的通信协议,包括数据包格式和纠错检错机制。

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
1.2.4 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
1.2.5 M.2 PCIe接口引脚定义

PCIe(PCI Express)是新一代的总线接口,是由20多家业界主导公司共同起草并完成的新技术规范,采用点对点的串行连接,可以将数据传输率提高到一个很高的频率,以此提供更高的带宽。而PCI Express的接口根据总线位宽不同,还可分为X1、X4、X8和X16。

M.2接口有两种形式,一个走SATA通道,IO性能和普通SATA接口相同,主要优点就是体积小。另一种形式就是M.2 NVMe,这种数据走PCIe通道,IO性能和PCIe接口相同。

其实从直观表现上看,PCIe是虚拟的一种协议标准,而M.2接口是真实存在于现实世界中的硬件设备。

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
1.2.6 ADC接口引脚定义

ADC输入范围 : 0~1.8V:

Pin# Assignment
1 GND
2 VCC_1V8
3 ADC_IN0
4 ADC_IN2
5 ADC_IN3
1.2.7 散热风扇接口引脚定义

连接器型号: JST GH系列连接器,3Pin,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
1.2.8 串口调试引脚定义

3V电平, 波特率150000bps:

Pin# Assignment Description
1 GND 0V
2 VCC5V0_SYS 5V power output
3 UART2DBG_TX output
4 UART2DBG_RX intput
1.2.9 电源接口

DC-12V/2A输入, 5.5*2.1mm DC电源接口;

1.2.10 电源按键

板子处于关机状态时,需要按下电源按键(大于0.5秒,PWR灯亮即可松开)才会开机。

当板子已正常启动,则电源按键的功能与系统有关,例如在安卓系统下,短按进入休眠,或唤醒,长按则显示关机/重启界面。

1.2.11 USB接口

USB Type-C 接口具有2A过流保护功能;

USB 3.0 接口具有2A过流保护功能;

两个USB 2.0接口共享2A过流保护, 也就是说2个接口的负载总和不应超过2A, 否则触发保护, 2个接口上的设备都会被切断电源;

1.2.12 BOOT按键

按下BOOT按键可以阻止板子从eMMC启动系统;;当板子无法从eMMC和TF卡启动系统时, 板子就会进入Maskrom模式;Maskrom模式下, 可以通过Type-C接口更新板子的系统。

1.2.13 RTC

实测的RTC备份电流为27uA;连接器型号: Molex 53398-0271;

1.2.14 其它说明

只能从DC电源接口给板子供电, 其他接口的电源引脚均为输出引脚;

修改板子为上电即开机的方法(改后不再保修)

原理图: 板子原理图

二、更新固件

NanoPC-T4支持多种方式烧写系统到eMMC:

  • SD卡脱机烧写,用SD卡启动开发板,通过EFlasher工具进行烧写 (推荐使用此方法);
  • 通过USB Type-C数据线,在Windows下用Rockchip提供的工具进行烧写;
  • 通过USB Type-C数据线,在Linux下用Rockchip提供的工具进行烧写;

2.1 准备工作

访问此处的下载地址下载Windows下使用Type-C数据线烧写所需的文件及工具;

安卓系统
rk3399-typec-android11-YYYYMMDD.img.zip Android11 系统固件
rk3399-typec-android10-YYYYMMDD.img.zip Android10 系统固件
rk3399-typec-android8-YYYYMMDD.img.zip Android8.1 系统固件
rk3399-typec-android7-YYYYMMDD.img.zip Android7.1.2 系统固件
Linux系统
rk3399-typec-buildroot-YYYYMMDD.img.zip Buildroot 固件,基于Rockchip Linux SDK,带Qt5-wayland图形界面
rk3399-typec-friendlydesktop-bionic-4.4-arm64-YYYYMMDD.img.zip 64位FriendlyDesktop桌面固件(内置Qt 5.10.0, X-Window),基于Ubuntu Desktop 18.04构建
rk3399-typec-friendlycore-focal-4.19-arm64-20211029.img.zip 64位FriendlyCore系统固件 (内置Qt 5.10.0),基于Ubuntu core 20.04构建
rk3399-typec-friendlycore-bionic-4.4-arm64-YYYYMMDD.img.zip 64位FriendlyCore系统固件 (内置Qt 5.10.0),基于Ubuntu core 18.04构建
rk3399-typec-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip Lubuntu桌面版固件(内置Qt 5.10.0, X-Window)
Linux系统 (精简版)
rk3399-typec-friendlycore-lite-focal-5.10-arm64-20211029.img.zip 精简版64位FriendlyCore系统固件,基于Ubuntu core 20.04构建,内核版本 5.15.y
rk3399-typec-friendlycore-lite-focal-4.19-arm64-20211029.img.zip 精简版64位FriendlyCore系统固件,基于Ubuntu core 20.04构建,内核版本 4.19.y
FriendlyWrt系统
rk3399-typec-friendlywrt-20211029.img.zip FriendlyWrt系统固件,基于OpenWrt 21.02.1构建,内核版本 5.15.y
rk3399-typec-friendlywrt-kernel4-20211029.img.zip FriendlyWrt系统固件,基于OpenWrt 21.02.1构建,内核版本 4.19.y
Flash Utility:
DriverAssitant_v4.5.tgz Rockchip提供的Windows下的USB驱动,使用AndroidTool烧写系统时需要安装此驱动

这里我们以烧写rk3399-usb-friendlydesktop-bionic-4.4-arm64-20220823.zip(64位FriendlyDesktop桌面固件(内置Qt 5.10.0, X-Window),基于Ubuntu Desktop 18.04构建 )为例进行讲解。实际上我们最好去安装精简版的Linux系统,如果缺少Qt或者一些软件我们可以自己去安装。

2.1.1 安装DriverAssitant_v4.5.tgz

我们下载完成后,在05_工具软件文件夹找到DriverAssitant_v4.5.tgz,进行解压,然后运行DriverInstall.exe:

2.1.2 下载RKDevTool.exe

这里我们下载了RKDevTool_Release_v2.84.zip,解压后可以看到RKDevTool.exe 线刷工具和系统分区配置文件(config.cfg);

这里有详细的通过RKDevTool烧写固件的使用说明文档。

注意:不同固件使用的工具版本可能不同,请根据《使用USB线烧写须知(重要)》下载对应的版本。

2.2 工作模式介绍

RK3399有两种工作模式:

工作模式Normal 模式升级模式
启动介质 eMMC 接口/SDMMC 接口  
描述 Normal 模式就是正常的启动过程,
各个组件依次加载,正常进入系统。
目前支持3种升级模式,各有优缺点:
1. Maskrom升级模式
2. Loader 升级模式
3. SD 升级模式

一般情况下,开机直接进入Normal模式正常启动系统。如需对开发板系统进行升级,则可以根据情况选择合适的升级模式。注意:NanoPC-T4出厂默认安装Andriod操作系统。

其中升级模式中,不同升级模式之间的对比:

升级模式Maskrom升级模式Loader 升级模式SD 升级模式
简单描述 1. 使用USB线将主板连接到电脑上;
2. 硬件操作使板子进入升级模式;
3. 在PC上使用USB升级单板固件。
1. 使用USB线将主板连接到电脑上;
2. 软件或按键操作使板子进入升级模式;
3. 在PC上使用USB升级单板固件。
1.通过升级卡制作工具,将MicroSD卡制作为升级卡;
2. 将升级卡插入主板,上电开机,机器自动执行升级。
连接方式 USB USB TF卡(少数为SD卡槽)
升级工具
Windows PC
Linux PC

Windows 上升级固件
Linux 上升级固件

Windows 上升级固件
Linux 上升级固件

Windows 上制作升级卡
不支持
进入方法 需要硬件操作 按键或软件进入 上电直接进入
使用条件 硬件操作进入 能正常使用uboot
使用场景推荐 1. 当板子无法正常启动时候;
2. 在切换烧写Linux和Android固件的情况下。
1. 有完整uboot或能正常进入系统;
2. 需要单独烧写分区(uboot或boot分区等)。
1. 工人操作方便,适合产品批量生产时候;
2. 产品定型后升级,方便最终客户操作。
优点 1. 最基本的烧写方式;
2. 非固件和硬件问题,一般都能成功烧写;
3. 不需要uboot支持,拯救变砖的单板;
4. 支持跨系统升级(Linux和安卓等)。
1. 烧写效果Maskrom升级模式差不多;
2. 能单独烧写分区;
3. 进入Loader模式方便。
1. 操作方便,只需插卡启动;
2.集合了Maskrom升级模式的优点。
缺点 1. 进入方式麻烦,不适难拆除外壳的产品;
2. 烧写分区表麻烦,较难单独烧写分区;
3. 需要完全擦除设备再烧写。
1. 需要完整的Loader(通常指uboot);
2. 跨系统升级需要完全擦除设备再烧写。
1. 需要合成完整固件。
2.2.1 Maskrom升级模式

Maskrom升级模式是最基本的升级方式,也是设备变砖的最后一道防线。Maskrom升级模式涉及硬件操作,因此在设备可以进入Loader升级模式的情况下,优先使用Loader升级模式。

Maskrom升级原理:

人为的把Flash(Nor Flash、Nand Flash和eMMC等存储设备)的CLK时钟引脚与地线短接。使得CPU读取Flash失败,CPU转而初始化USB端口,进入Maskrom升级模式。

NanoPC-T4开发板如需进入Maskrom升级模式,需要进入如下操作:

(1) 以管理员身份运行RKDevTool.exe ;

(2) 将开发板连接上电源,并且通过HDMI接口连接到显示设备,连接Type-C数据线到PC;

(3) 按住BOOT键再长按Power键开机(保持按下BOOT键5秒以上),将强制进入Maskrom模式,RKDevTool会显示“发现一个Maskrom设备”;

注意:如果显示“没有发现设备”,请先检查是否已成功安装驱动,检查Type-C数据线然后按上述方法重新开机,或按住Recovery键再按Reset键;

(4) 主机应该会提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 Rockusb Device 出现,如下图。如果没有,则需要返回上一步重新安装驱动:

2.2.2 Loader升级模式

在Loader模式下,bootloader会进入升级状态,等待主机命令,用于固件升级等。要进入Loader模式,必须让bootloader在启动时检测到Recovery键按下,且Type-C处于连接状态。

NanoPC-T4开发板如需进入Loader升级模式,需要进入如下操作:

(1) 以管理员身份运行RKDevTool.exe ;

(2) 将开发板连接上电源,并且通过HDMI接口连接到显示设备,连接Type-C数据线到PC;

(3) 按住Recovery键再长按(1.5秒以上)Power键开机,RKDevTool会显示“发现一个Loader设备”;

2.2.3 SD升级模式 

使用MicroSD更新固件,需要在电脑上,通过SD卡烧录工具,将统一固件写入MicroSD卡,目前此操作只支持在Windows操作系统上完成。

2.3 固件文件

固件文件一般有两种:

  • 单个统一固件:统一固件是由分区表、bootloader、uboot、kernel、system等所有文件打包合并成的单个文件。升级统一固件将会更新主板上所有分区的数据和分区表,并且擦除主板上所有数据。
  • 多个分区镜像:即各个功能独立的文件,如分区表、bootloader、kernel等,在开发阶段生成。独立分区镜像可以只更新指定的分区,而保持其它分区数据不被破坏,在开发过程中会很方便调试。

通过统一固件解包/打包工具,可以把统一固件解包为多个分区镜像,也可以将多个分区镜像合并为一个统一固件。

2.4 Windows主机烧写固件到eMMC

由于开发板出厂烧写的是Android系统,这里我需要更换为linux系统,因此需要按照上面步骤使得开发板进入Maskrom模式。

(1) 将系统文件rk3399-usb-friendlydesktop-bionic-4.4-arm64-20220823.zip解压,在该文件下我们也可以看到烧写固件的工具RKDevTool.exe、以及当前系统文件对应的分区配置文件config.cfg。

(2) 打开当前路径下的 RKDevTool.exe,在RKDevTool界面上,选择 “下载镜像”,一一选择镜像文件:

(2) 点击“执行”按钮,即可下载固件到eMMC,请耐心等待,烧写成功结束后将自动重启:

注意:如果你烧写的固件 Loader版本与原来的机器的不一致,请在"升级固件"页面先执行擦除 Flash操作 :

2.5. SD卡启动

接下来我们介绍如何将固件烧写到SD卡,并通过SD卡启动系统。

(1) 将固件rk3399-sd-friendlycore-bionic-4.4-arm64-20220819.img.gz和烧写工具win32diskimager.rar分别解压,在Windows下插入SD卡(限8G及以上的卡),以管理员身份运行win32diskimager工具;

(2) 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击Write按钮烧写即可;

(3) 当制作完成SD卡后,拔出SD卡插入开发板卡槽,上电启动即可。

参考文章:

【1】友善之家NanoPC-T4开发手册

【2】MIPI的DSI接口(协议/时序/时钟计算) DPHY/CPHY

【3】瑞芯微官方手册

【4】Welcome to Firefly Linux 开发指南

【5】Firefly-RK3399开发手册

【6】https://opensource.rock-chips.com/wiki_Main_Page

【7】https://github.com/rockchip-linux

【8】Rkdeveloptool

【9】瑞芯微rk2568

【10】linux内核学习步骤(外文)

【11】RK3399平台入门到精通系列讲解 - 总目录

【12】linux驱动学习博客系列

【13】torvalds/linux

【14】内核源代码仓库地址(rockchip)

【15】u-boot源代码仓库地址(rockship)

【16】RK3399 TRM

【17】RK3399 Datasheet

【18】玩转 Rockchip 的开发板,这些信息你要知道

posted @ 2022-09-01 23:06  大奥特曼打小怪兽  阅读(4882)  评论(0编辑  收藏  举报
如果有任何技术小问题,欢迎大家交流沟通,共同进步