Difference between revisions of "SOM-RK3399/zh"

From FriendlyARM WiKi
Jump to: navigation, search
(原理图, PCB图)
(updated by API)
Line 1,521: Line 1,521:
 
*'''SOM-RK3399 Dev Kit''' [[SOM-RK3399 Dev Kit/zh|点击跳转到底板介绍页面]]'''
 
*'''SOM-RK3399 Dev Kit''' [[SOM-RK3399 Dev Kit/zh|点击跳转到底板介绍页面]]'''
 
[[File:SOM-RK3399 Dev Kit 1904-layout.jpg|800px]]
 
[[File:SOM-RK3399 Dev Kit 1904-layout.jpg|800px]]
 +
 +
==快速入门==
 +
===准备工作===
 +
要开启你的SOM-RK3399,请先准备好以下硬件:
 +
* SOM-RK3399主板
 +
* Type-C数据线
 +
* TF卡: Class10或以上的8GB microSD卡
 +
* USB转串口适配器(可选,用于调试或PC上进行操作)
 +
* 一个DC接口的外接电源,要求输出为12V/2A
 +
* 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
 +
* 一套USB键盘鼠标,同时连接更多USB的设备时还需要USB HUB
 +
* 一台电脑,需要联网,建议使用<b>Ubuntu 18.04 64位系统</b>
 +
 +
{{RK3399-BurnOS-To-EMMC/zh|SOM-RK3399}}
 +
{{RK3399-BurnOS-with-TypeC/zh|SOM-RK3399}}
 +
{{RK3399-BootFromSDCard/zh|SOM-RK3399}}
 +
{{RK3399-DebugPort/zh|SOM-RK3399}}
 +
==FriendlyDesktop系统的使用==
 +
{{FriendlyDesktop-Intro/zh|SOM-RK3399}}
 +
{{FriendlyDesktop-Contents/zh|SOM-RK3399}}
 +
===FriendlyDesktop下使用NVME SSD===
 +
请参考: [[Template:RK3399 Linux Using NVME SSD|Linux-Using-NVME-SSD]]<br />
 +
{{FriendlyCoreGeneral/zh|SOM-RK3399}}
 +
{{FriendlyCoreRunX11Application/zh|SOM-RK3399}}
 +
{{RK3399 Linux mpv/zh|SOM-RK3399}}
 +
==同时适用于FriendlyDesktop与FriendlyCore系统的功能特性==
 +
{{Linux-RK3399MIPICamera/zh|SOM-RK3399}}
 +
{{RK3399-Linux-Install-Docker/zh|SOM-RK3399}}
 +
{{RK3399 Linux FFmpeg/zh|SOM-RK3399}}
 +
{{RK3399 Linux Using NVME SSD/zh|SOM-RK3399}}
 +
{{RK3399 Linux PWMFan/zh|SOM-RK3399}}
 +
===Linux下使用4G EC20模块===
 +
请参考: [[How to use 4G Module on NanoPC-T4/zh]]<br />
 +
==Buildroot Linux系统的使用==
 +
{{RK3399 Buildroot Intro/zh|SOM-RK3399}}
 +
<br />
 +
关于Buildroot系统更详细的说明,请参考: [[Buildroot for RK3399/zh|Buildroot for RK3399]]<br />
 +
==Lubuntu 系统的使用==
 +
看这里: [[Lubuntu desktop 16.04 for RK3399/zh]]<br />
 +
Lubuntu下使用NVME SSD: [[Template:RK3399 Linux Using NVME SSD/zh|Linux-Using-NVME-SSD]]<br />
 +
{{RK3399-Android8/zh|SOM-RK3399}}
 +
{{RK3399-Android-RemoteController/zh|SOM-RK3399}}
 +
{{RK3399-Android-USBCamera/zh|SOM-RK3399}}
 +
{{RK3399-Android-4G-EC20/zh|SOM-RK3399}}
 +
{{RK3399-Android-SSD/zh|SOM-RK3399}}
 +
{{RK3399 Android PWMFan/zh|SOM-RK3399}}
 +
==Android7.1 系统的使用==
 +
看这里: [[RK3399-Android7|Android7]]
 +
{{RK3399-BuildFromSource/zh|SOM-RK3399}}
 +
{{RK3399-HWAccess/zh|SOM-RK3399}}
 +
{{RK3399-SourceCodeURLs/zh|SOM-RK3399}}
 +
 +
==更多OS==
 +
===DietPi_NanoPCT4-ARMv8-Stretch===
 +
DietPi身轻如燕,镜像文件最小只有345M 字节。系统存储操作及进程对资源的占用非常少,并且预装DietPi-RAMlog工具。这些特性使得用户能最大程度地发挥设备本身的性能。<br />
 +
 +
仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。 <br />
 +
 +
详细操作步骤如下:<br />
 +
* 初次使用时,请先下载DriverAssitant_v4.5.tgz,解压后安装USB驱动;
 +
* 下载系统固件DietPi_NanoPCT4-ARMv8-Stretch点击下载[https://dietpi.com/downloads/images/DietPi_NanoPCT4-ARMv8-Stretch.7z DietPi_NanoPCT4-ARMv8-Stretch]
 +
* 解压,进入Image_and_Tools,以管理员身份运行AndroidTool.exe
 +
* 默认已经导入分区配置,即固件中的parameter.txt,并已经指定各分区的烧写文件路径,如下图所示:
 +
[[File:AndroidTools_DI_02.png|下载DietPi_NanoPCT4固件|800px|]]
 +
* 连接好12V/2A的DC接口电源及HDMI显示设备,连接Type-C数据线到PC,按住Recovery键再长按(1.5秒以上)Power键开机,AndroidTool会显示“发现一个LOADER设备”<br />a) 如果eMMC没有烧写过系统或eMMC的系统被擦除或损坏则会显示为MASKROM设备;<br />b) 您也可以按住BOOT键再长按Power键开机,同时持续按住BOOT键5秒以上强制进入MASKROM模式;<br />c) 如果显示“没有发现设备”,请先检查是否已成功安装驱动,检查Type-C数据线然后按上述方法重新开机,或按住Recovery键再按Reset键;<br />d) 另外,如果已成功启动系统,可通过串口、adb或ssh等方式在板子上运行reboot loader重启板子并进入LOADER模式。<br />
 +
* 点击“Run”即可下载固件到eMMC,请耐心等待,烧写成功结束后将自动重启。<br />
 +
[[File:Dietpi-login-01.png|Dietpi-NanoPC-T4启动界面|800px|]]<br />
 +
 +
登录账号:root <br />
 +
登录密码:dietpi<br />
 +
 +
===使用wifi===
 +
系统默认没有使能wifi,请执行dietpi-config配置。
 +
dietpi-config
 +
    --> Network Options:Adapters
 +
        --> WiFi  Change Wireless Network Settings
 +
            --> Scan  Scan and Connect
 +
选择要连接的WiFi热点,输入密码后连接<br />
 +
[[File:Dietpi-dietpi-config-01.png|dietpi-config|800px|]]<br />
  
 
==Link to Rockchip Resources==
 
==Link to Rockchip Resources==
Line 1,532: Line 1,611:
 
*底板原理图:[http://wiki.friendlyarm.com/wiki/images/d/de/SOM-RK3399_Dev_Kit_1904_Schematic.pdf SOM-RK3399_Dev_Kit_1904_Schematic.pdf]
 
*底板原理图:[http://wiki.friendlyarm.com/wiki/images/d/de/SOM-RK3399_Dev_Kit_1904_Schematic.pdf SOM-RK3399_Dev_Kit_1904_Schematic.pdf]
 
*底板PCB CAD 文件:[http://wiki.friendlyarm.com/wiki/images/7/7f/SOM-RK3399_Dev_Kit_1904_dxf.zip SOM-RK3399_Dev_Kit_1904_dxf.zip]
 
*底板PCB CAD 文件:[http://wiki.friendlyarm.com/wiki/images/7/7f/SOM-RK3399_Dev_Kit_1904_dxf.zip SOM-RK3399_Dev_Kit_1904_dxf.zip]
 +
 +
==更新日志==
 +
{{RK3399-UpdateLog/zh|SOM-RK3399}}
 +
===2018-08-20===
 +
* 增加新的桌面OS:[[FriendlyDesktop 18.04 for RK3399]],主要特性
 +
1) 带X桌面 LXDE,基于64位Ubuntu 18.04系统构建,支持OpenGL ES加速,支持硬解播放<br>
 +
2) 支持SD卡启动运行,支持TF卡刷机或Type-C刷机<br>
 +
3) 完全保留[[FriendlyCore (based on ubuntu-core with Qt)|FriendlyCore 18.04 for RK3399]]的特性,集成带GPU和VPU加速的Qt 5.10.0<br>
 +
4) 内置开源硬解的4K视频播放器 QtVideoPlayer(Menu->Sound & Video->Qt5-VideoPlayer)<br>
 +
5) 内置 QtCreator IDE,Arduino 和 Scratch等流行开发和学习工具,开箱即用<br>
 +
6) 支持双屏异显 (可选择eDP/DP/HDMI 任意两路同时输出)<br>
 +
7) 支持eDP电容触摸屏 (HD702E)<br>
 +
8) 支持屏幕旋转 (仅限于eDP)<br>
 +
9) 支持AP6356S无线模块 (802.11 a/b/g/n/AC,BLE4.0)<br>
 +
10) 支持升兆以太网即插即用<br>
 +
11) 支持 OpenCV 3.4 一键安装 (详见https://github.com/friendlyarm/install-opencv-on-friendlycore)<br>
 +
12) 内置gcc版本:7.3.0<br>
 +
13) 内核版本:4.4.138<br>
 +
附下载链接:http://dl.friendlyarm.com/nanopct4
 +
 +
===2018-08-02===
 +
* 增加可以直接从SD卡启动的FriendlyCore和Lubuntu固件
 +
===2018-07-28===
 +
* 修正FriendlyCore中的一处可能会影响CPU降频的问题
 +
===2018-07-27===
 +
* Android增加UART4支持并集成了串口demo,内核增加常见USB串口支持
 +
 +
===2018-07-19===
 +
* 增加新的OS:[[FriendlyCore (based on ubuntu-core with Qt)]],主要特性
 +
1) 基于最新版本的 Ubuntu 18.04 构建<br>
 +
2) 集成Qt 5.10.0,支持OpenGL ES加速,支持硬解播放,支持KMS双屏异显和WebGL和VNC远程控制<br>
 +
3) 集成 Xorg最小系统,以最轻量的方式运行X11应用<br>
 +
4) 集成带VPU加速的Gstreamer 1.0 多媒体框架<br>
 +
5) 支持7寸电容屏HD702<br>
 +
6) 5G WIFI 和 蓝牙4.0<br>
 +
* 内核修复连接HDMI 2.0设备时的core dump问题
 +
* Linux内核合并了原厂release-4.4的更新,版本为4.4.132
 +
* EFlasher更新: 增加eMMC备份与还原功能
 +
 +
===2018-06-20===
 +
* Android 支持HDMI与LCD屏幕旋转
 +
* Android 增加 摇控器支持
 +
* Lubuntu 内核默认启用 UART4,应用程序可通过设备名 ttyS4 访问
 +
* 改进了 HDMI 与 eDP屏的用户体验

Revision as of 12:15, 30 May 2019

English

Contents

1 简介

Front
Back
Overview
  • SOM-RK3399是友善电子团队设计的一款266-pin金手指形式高性能ARM计算机模块,它采用了瑞心微64位六核SoC RK3399作为主处理器,标配2GB DDR3内存和16GB闪存,板载2x2 MIMO双天线WiFi模组,尺寸只有69.6x50mm,模块上带有独立的TypeC供电接口,以及USB-C显示接口,无需底板也可以单独使用。
  • SOM-RK3399计算模块具有丰富的外设和扩展接口,通过底板可连接使用4通道NVMe高速固态硬盘,读写速度高达1GB/s; 它还可以扩展使用双MIPI宽动态摄像头,另外它还带有eDP显示接口,MIPI显示接口, 1路USB3.0, 2路USB2.0, 以及I2C, I2S, SPI, PWM, GPIO和串口等各种资源。
  • SOM-RK3399可流畅运行Android 8.1, Ubuntu 18.04, Armbian, Buildroot等主流嵌入式操作系统, 软件资源和生态非常丰富,尤其是Android 8.1具有NN SDK神经网络加速软件包, Qt-5.10集成了VPU硬件编解码, GPU图形加速,可使用QML快速开发流畅的动态式界面,因此SOM-RK3399核心板非常适合中小型企业和初创公司做高端人脸识别,机器视觉,VR虚拟现实,自动驾驶,深度计算分析等方面的人工智能产品快速原型及产品开发。

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唤醒, 睡眠唤醒等功能
  • 内存: 双通道2GB DDR3
  • Flash: 标配16GB eMMC 5.1闪存,可定制选配32GB/64GB
  • 有线网络: 集成千兆以太网PHY
  • 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
  • USB
    • USB 2.0: 2个独立的原生USB 2.0 Host
    • USB 3.0: 1个原生USB 3.0 Host
    • USB Type-C: 支持USB3.0 Type-C 和 DisplayPort 1.2 Alt Mode on USB Type-C
  • PCIe: PCIe x4, compatible with PCIe 2.1, Dual operation mode
  • SDIO/MMC: 一路SDIO/MMC, 用来扩展SD卡
  • 调试串口: 一路调试串口 UART, 3V level, 1500000bps
  • 按键: PowerKey, Reset, Recovery 各一个
  • LED指示灯: 一个电源LED ,一个GPIO控制的状态LED
  • 其它资源
    • 2 X 1.8V I2C, 1 x 3V I2C
    • 1 x 3V UART/SPI
    • 2 x PWM
    • 1 x IR-RX
    • 1 x SPDIF_TX
    • 1 x 1.8V 8ch-I2S,
    • 6 x 1.8V GPIO, 8 x 3V GPIO
    • 3 x 1.8V ADC inputs
  • 供电: DC12V/1A(金手指), Type-C:DC5V/2.5A(Type-C)
  • PCB: 8层沉金工艺, 50 mm x 69.6 mm x 1.2mm, 260 Pin金手指接口
  • 环境工作温度: -20℃ to 70℃

3 软件资源和特性

4 布局和引脚定义

SOM-RK3399 1904-layout.jpg

Top Bottom
Pin# Assignment Pin Type If Not Use Description Pin# Assignment Pin Type If Not Use Description
1 VCC_IN Power IN / 12V Power Input 2 VCC_IN Power IN / 12V Power Input
3 VCC_IN Power IN / 4 VCC_IN Power IN /
5 VCC_IN Power IN / 6 VCC_IN Power IN /
7 VCC_IN Power IN / 8 VCC_IN Power IN /
9 GND Power / System Ground(0V) 10 GND Power / System Ground(0V)
11 GND Power / 12 GND Power /
13 VCC5V0_SYS Power OUT float 5V Power Output,2A max. Auto on when system power on, and off when system power off. 14 PWR_KEY In float System Power Key signal, active low, internal pulled up to 3.3V with 10K
15 VCC5V0_SYS Power OUT float 16 VDC_ONOFF In float Power On Mode Select, float for Auto Start,short to GND for PowerKey Mode
17 VCC5V0_SYS Power OUT float 18 RTC_BATT_IN Power IN float RTC backup battery(3V)input,backup current is 25uA
19 VCC5V0_SYS Power OUT float 20 RECOVERY In float System RECOVERY Key signal,acticve low
21 VCC3V3_SYS Power OUT float 3.3V Power Output,1A max. Auto on when system power on, and off when system power off. 22 RESET_IN_H In float RESET signal, acticve hight
23 VCC3V3_SYS Power OUT float 24 GND Power / System Ground(0V)
25 VCC3V3_SYS Power OUT float 26 ADC_IN0 In float 0V to 1.8V inputs of RK3399 SoC ADC
27 VCC3V3_SYS Power OUT float 28 ADC_IN2 In float
29 VCC_1V8 Power OUT float 1.8V Power Output,200mA max. Auto on when system power on, and off when system power off. 30 ADC_IN3 In float
31 VCC_1V8 Power OUT float 32 GND Power / System Ground(0V)
33 VCC3V3_S3 Power OUT float 3.3V Power Output,100mA max. Auto on when system power on, and off when system sleep or power off. 34 GPIO1_A0 In/Out float 3V GPIO. Linux GPIO 32
35 GND Power / System Ground(0V) 36 GPIO1_A1 In/Out float 3V GPIO. Linux GPIO 33
37 GPIO0_A2 In/Out float 1.8V GPIO. Linux GPIO 2 38 GPIO1_A3 In/Out float 3V GPIO. Linux GPIO 35
39 GPIO2_A2 In/Out float 1.8V GPIO. Linux GPIO 2 40 GPIO1_A4 In/Out float 3V GPIO. Linux GPIO 36
41 GPIO2_A3 In/Out float 1.8V GPIO. Linux GPIO 67 42 GPIO1_C2 In/Out float 3V GPIO . Linux GPIO 50
43 GPIO2_A4 In/Out float 1.8V GPIO. Linux GPIO 68 44 GPIO1_C6 In/Out float 3V GPIO. Linux GPIO 54
45 GPIO2_A5 In/Out float 1.8V GPIO. Linux GPIO 69 46 GPIO1_C7 In/Out float 3V GPIO . Linux GPIO 55
47 GPIO2_A6 In/Out float 1.8V GPIO. Linux GPIO 70 48 GPIO1_D0 In/Out float 3V GPIO . Linux GPIO 56
49 IR_RX In float Infrared Receiver input, 1.8V level 50 GPIO4_C5/SPDIF_TX In/Out float 3V GPIO . Linux GPIO 149. or SPDIF Output
51 GND Power / System Ground(0V) 52 UART2DBG_TX Out float Debug UART TX, 1500000bps, 3V level
53 I2C1_SCL Out float I2C1 clock, 1.8V level, open drian with 2.2K pulled internal 54 UART2DBG_RX In float Debug UART RX, 1500000bps, 3V level
55 I2C1_SDA In/Out float I2C1 data, 1.8V level, open drian with 2.2K pulled internal 56 SPI1_CSn0 Out float SPI1 chip select, 3V level
57 I2C2_SDA In/Out float I2C2 data, 1.8V level, open drian with 2.2K pulled internal 58 SPI1_TXD/UART4_TX Out float SPI1 MOSI, or UART4 TX,3V level
59 I2C2_SCL Out float I2C2 clock, 1.8V level, open drian with 2.2K pulled internal 60 SPI1_RXD/UART4_RX In float SPI1 MISO, or UART4 RX,3V level
61 I2C7_SCL_HDMI Out float I2C7 clock, 1.8V level, for HDMI EDID CLK, open drian with 2.2K pulled internal 62 SPI1_CLK Out float SPI1 Clock, 3V level
63 I2C7_SDA_HDMI In/Out float I2C7 data, 1.8V level, for HDMI EDID DATA, open drian with 2.2K pulled internal 64 GND Power / System Ground(0V)
65 GND Power / System Ground(0V) 66 GPIO4_C1/I2C3_SCL In/Out float I2C3 clock, 3V level,open drian. or GPIO,Linux GPIO 145
67 I2S0_SCLK Out float I2S0 continuous serial clock, 1.8V level 68 GPIO4_C0/I2C3_SDA In/Out float I2C3 data, 3V level,open drian. or GPIO,Linux GPIO 144
69 I2S0_LRCK_RX Out float I2S0 word select for input data, 1.8V level 70 I2C4_TPSCL Out float I2C4 clock,3V level, open drian with 2.2K pulled up,for touch panel
71 I2S0_LRCK_TX Out float I2S0 word select for output data, 1.8V level 72 I2C4_TPSDA In/Out float I2C4 data,3V level, open drian with 2.2K pulled up,for touch panel
73 I2S0_SDI0 In float I2S0 serial data, 1.8V level 74 GND Power / System Ground(0V)
75 I2S0_SDI1SDO3 In/out float I2S0 serial data, 1.8V level 76 HP_DET_H In Pull up to VCC3V3_SYS headphone insert detect, active hight
77 I2S0_SDI2SDO2 In/out float I2S0 serial data, 1.8V level 78 GPIO4_D5_LCD_BL_EN Out float LCD backlight on/off control, active hight, 3V level
79 I2S0_SDI3SDO1 In/out float I2S0 serial data, 1.8V level 80 GPIO4_D6_LCD_RST_H Out float LCD reset, active hight, 3V level.
81 I2S0_SDO0 out float I2S0 serial data, 1.8V level 82 GPIO1_B5_TP_RST Out float Touch panel reset, active low, 3V level
83 GND Power / System Ground(0V) 84 GPIO1_C4_TP_INT In float Touch panel IRQ, active low, 3V level
85 I2S_CLK out float I2S Mclk for I2S0 and I2S1 86 GND Power / System Ground(0V)
87 GND Power / System Ground(0V) 88 PWM0_BL Out float PWM0 for LCD backlight dimming
89 I2S1_SCLK Out float I2S1 continuous serial clock, 1.8V level 90 GPIO4_C6/PWM1 Out float PWM1 for cooling fan control
91 2S1_LRCK_RX Out float I2S1 word select for input data, 1.8V level 92 GND Power / System Ground(0V)
93 I2S1_LRCK_TX Out float I2S1 word select for output data, 1.8V level 94 VCC3V0_SD Power Out float 3V power out for SD card.
95 I2S1_SDI0 In float I2S0 serial data, 1.8V level 96 GND Power / System Ground(0V)
97 I2S1_SDO0 Out float I2S0 serial data, 1.8V level 98 SDMMC0_D0 In/Out float SD card Data0
99 MIPI_CSI0_RST Out float Camera Reset for MIPI CSI0, 1.8V level 100 SDMMC0_D1 In/Out float SD card Data1
101 MIPI_CSI0_PWN Out float Camera Power Down for MIPI CSI0, 1.8V level 102 SDMMC0_D2 In/Out float SD card Data2
103 MIPI_CSI1_RST Out float Camera Reset for MIPI CSI1, 1.8V level 104 SDMMC0_D3 In/Out float SD card Data3
105 MIPI_CSI1_PWN Out float Camera Power Down for MIPI CSI1, 1.8V level 106 SDMMC0_CMD Out float SD card CMD
107 VCC1V8_CAM Power Out float Power Out for Camera IO 108 SDMMC0_DET_L In float SD card detect
109 GND Power / System Ground(0V) 110 GND Power / System Ground(0V)
111 GPIO2_B3_CIF_CLKOUTA Out float MCLK for camera sensor 112 SDMMC0_CLK Out float SD card Clock
113 GND Power / System Ground(0V) 114 GND Power / System Ground(0V)
115 MIPI_RX0_D3N In float MIPI CSI0 negative differential data line 116 MIPI_TX1/RX1_D0N In/Out float MIPI CSI1/DSI1 negative differential data line
117 MIPI_RX0_D3P In float MIPI CSI0

positive differential data line

118 MIPI_TX1/RX1_D0P In/Out float MIPI CSI1/DSI1

positive differential data line

119 GND Power / System Ground(0V) 120 GND Power / System Ground(0V)
121 MIPI_RX0_D2N In float MIPI CSI0 negative differential data line 122 MIPI_TX1/RX1_D1N In/Out float MIPI CSI1/DSI1 negative differential data line
123 MIPI_RX0_D2P In float MIPI CSI0

positive differential data line

124 MIPI_TX1/RX1_D1P In/Out float MIPI CSI1/DSI1

positive differential data line

125 GND Power / System Ground(0V) 126 GND Power / System Ground(0V)
127 MIPI_RX0_CLKN In float MIPI CSI0 negative differential clock line 128 MIPI_TX1/RX1_CLKN In/Out float MIPI CSI1/DSI1 negative differential clock line
129 MIPI_RX0_CLKP In float MIPI CSI0

positive differential clock line

130 MIPI_TX1/RX1_CLKP In/Out float MIPI CSI1/DSI1

positive differential clock line

131 GND Power / System Ground(0V) 132 GND Power / System Ground(0V)
133 MIPI_RX0_D1N In float MIPI CSI0 negative differential data line 134 MIPI_TX1/RX1_D2N In/Out float MIPI CSI1/DSI1 negative differential data line
135 MIPI_RX0_D1P In float MIPI CSI0

positive differential data line

136 MIPI_TX1/RX1_D2P In/Out float MIPI CSI1/DSI1

positive differential data line

137 GND Power / System Ground(0V) 138 GND Power / System Ground(0V)
139 MIPI_RX0_D0N In float MIPI CSI0 negative differential data line 140 MIPI_TX1/RX1_D3N In/Out float MIPI CSI1/DSI1 negative differential data line
141 MIPI_RX0_D0P In float MIPI CSI0

positive differential data line

142 MIPI_TX1/RX1_D3P In/Out float MIPI CSI1/DSI1

positive differential data line

143 GND Power / System Ground(0V) 144 GND Power / System Ground(0V)
Connector Key Connector Key
145 HDMI_CEC In/Out float HDMI CEC signal, 3V level 146 GND Power / System Ground(0V)
147 HDMI_HPD In float HDMI hot plug 148 MIPI_TX0_D3N Out float MIPI DSI0 negetive differential data line
149 GND Power / System Ground(0V) 150 MIPI_TX0_D3P Out float MIPI DSI0 positive differential data line
151 HDMI_TXCN Out float HDMI differential clock line negative 152 GND Power / System Ground(0V)
153 HDMI_TXCP Out float HDMI differential clock line positive 154 MIPI_TX0_D2N Out float MIPI DSI0 negetive differential data line
155 GND Power / System Ground(0V) 156 MIPI_TX0_D2P Out float MIPI DSI0 positive differential data line
157 HDMI_TX0N Out float HDMI differential data line negative 158 GND Power / System Ground(0V)
159 HDMI_TX0P Out float HDMI differential data line positive 160 MIPI_TX0_CLKN Out float MIPI DSI0 negetive differential clock line
161 GND Power / System Ground(0V) 162 MIPI_TX0_CLKP Out float MIPI DSI0 positive differential clock line
163 HDMI_TX1N Out float HDMI differential data line negative 164 GND Power / System Ground(0V)
165 HDMI_TX1P Out float HDMI differential data line positive 166 MIPI_TX0_D1N Out float MIPI DSI0 negetive differential data line
167 GND Power / System Ground(0V) 168 MIPI_TX0_D1P Out float MIPI DSI0 positive differential data line
169 HDMI_TX2N Out float HDMI differential data line negative 170 GND Power / System Ground(0V)
171 HDMI_TX2P Out float HDMI differential data line positive 172 MIPI_TX0_D0N Out float MIPI DSI0 negetive differential data line
173 GND Power / System Ground(0V) 174 MIPI_TX0_D0P Out float MIPI DSI0 positive differential data line
175 USB3.0/TYPE-C1_DP In/Out float TYPEC1 USB 2.0 data+ 176 GND Power / System Ground(0V)
177 USB3.0/TYPE-C1_DM In/Out float TYPEC1 USB 2.0 data- 178 PCIE_RX3_N In float PCIe negative differential data line
179 GND Power / System Ground(0V) 180 PCIE_RX3_P In float PCIe positive differential data line
181 USB3.0/TYPEC1_TX1P Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX1P 182 GND Power / System Ground(0V)
183 USB3.0/TYPEC1_TX1M Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX1M 184 PCIE_TX3N Out float PCIe negative differential data line
185 GND Power / System Ground(0V) 186 PCIE_TX3P Out float PCIe positive differential data line
187 USB3.0/TYPEC1_RX1P In float TYPEC1 USB3.0 PHY0 SuperSpeed RX1P 188 GND Power / System Ground(0V)
189 USB3.0/TYPEC1_RX1M In float TYPEC1 USB3.0 PHY0 SuperSpeed RX1M 190 PCIE_RX2_N In float PCIe negative differential data line
191 GND Power / System Ground(0V) 192 PCIE_RX2_P In float PCIe positive differential data line
193 TYPEC1_TX2P Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX2P 194 GND Power / System Ground(0V)
195 TYPEC1_TX2M Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX2M 196 PCIE_TX2N Out float PCIe negative differential data line
197 GND Power / System Ground(0V) 198 PCIE_TX2P Out float PCIe positive differential data line
199 TYPEC1_RX2P In float TYPEC1 USB3.0 PHY0 SuperSpeed RX2P 200 GND Power / System Ground(0V)
201 TYPEC1_RX2M In float TYPEC1 USB3.0 PHY0 SuperSpeed RX2M 202 PCIE_RX1_N In float PCIe negative differential data line
203 GND Power / System Ground(0V) 204 PCIE_RX1_P In float PCIe positive differential data line
205 TYPEC1_SBU1 In/Out float TYPEC1 SBU1 206 GND Power / System Ground(0V)
207 TYPEC1_SBU2 In/Out float TYPEC1 SBU2 208 PCIE_TX1N Out float PCIe negative differential data line
209 GND Power / System Ground(0V) 210 PCIE_TX1P Out float PCIe positive differential data line
211 TYPEC1_SBU1_DC Out float TYPEC1 SBU1 DC Bias 212 GND Power / System Ground(0V)
213 TYPEC1_SBU2_DC Out float TYPEC1 SBU2 DC Bias 214 PCIE_RX0_N In float PCIe negative differential data line
215 TYPEC1_U2VBUSDET In float TYPEC1 Vbus detect 216 PCIE_RX0_P In float PCIe positive differential data line
217 GND Power / System Ground(0V) 218 GND Power / System Ground(0V)
219 HOST0_DP In/Out float USB 2.0 Host0 data+ 220 PCIE_TX0N Out float PCIe negative differential data line
221 HOST0_DM In/Out float USB 2.0 Host0 data- 222 PCIE_TX0P Out float PCIe positive differential data line
223 GND Power / System Ground(0V) 224 GND Power / System Ground(0V)
225 HOST1_DP In/Out float USB 2.0 Host1 data+ 226 PCIE_REF_CLKN Out float PCIe negative differential reference clock line
227 HOST1_DM In/Out float USB 2.0 Host1 data- 228 PCIE_REF_CLKP Out float PCIe positive differential reference clock line
229 GND Power / System Ground(0V) 230 GND Power / System Ground(0V)
231 EDP_TX3N Out float eDP data line negative 232 LAN_LED0_BLINK Out float 10/100/1000M Ethernet Status LED0
233 EDP_TX3P Out float eDP data line positive 234 LAN_LED1_LINK Out float 10/100/1000M Ethernet Status LED1
235 GND Power / System Ground(0V) 236 GND Power / System Ground(0V)
237 EDP_TX2N Out float eDP data line negative 238 MDI3- In/Out float 10/100/1000M Ethernet MDI3-
239 EDP_TX2P Out float eDP data line positive 240 MDI3+ In/Out float 10/100/1000M Ethernet MDI3+
241 GND Power / System Ground(0V) 242 GND Power / System Ground(0V)
243 EDP_TX1N Out float eDP data line negative 244 MDI2- In/Out float 10/100/1000M Ethernet MDI2-
245 EDP_TX1P Out float eDP data line positive 246 MDI2+ In/Out float 10/100/1000M Ethernet MDI2+
247 GND Power / System Ground(0V) 248 GND Power / System Ground(0V)
249 EDP_TX0N Out float eDP data line negative 250 MDI1- In/Out float 10/100/1000M Ethernet MDI1-
251 EDP_TX0P Out float eDP data line positive 252 MDI1+ In/Out float 10/100/1000M Ethernet MDI1+
253 GND Power / System Ground(0V) 254 GND Power / System Ground(0V)
255 EDP_AUXP In/Out float eDP AUX line positive 256 MDI0- In/Out float 10/100/1000M Ethernet MDI0-
257 EDP_AUXN In/Out float eDP AUX line negative 258 MDI0+ In/Out float 10/100/1000M Ethernet MDI0+
259 GND Power / System Ground(0V) 260 GND Power / System Ground(0V)
  • 按键
    • 三个按键分别是电源按键, 系统还原和复位。此3个按键相应的信号也存在于260Pin金手指上。
  • LED
    • 一个红色的电源LED和一个绿色的状态LED
  • USB Type-C接口
    • 一个全功能USB-C接口,支持DP,支持USB2.0和USB3.0数据传输,可向外输出5V/2A电源,但不可外接电源给板子供电。支持DRP和安卓ADB调试。因为USB3.0模式下不支持ADB,所以,当使用ADB功能时,请连接到PC的USB2.0端口,或使用只具备USB2.0功能的数据线连接板子和PC。
    • 另外一个USB Type-C 5V_IN接口只有给板子供电的功能,用于不接底板快速测试板子。
  • 电源输入
    • 支持从金手指和USB Type-C 5V_IN接口给核心板供电,支持5V到20V宽电压输入,推荐12V。我们运行安兔兔测试程序时,测量到的最大功耗是10.8W, 建议按12W设计。
    • 设计底板时,建议在电源输入处添加100uF/16V,或100uF/35V电解电容, 以减少电源振铃和提供瞬态电流。

5 参考底板

SOM-RK3399 Dev Kit 1904-layout.jpg

6 快速入门

6.1 准备工作

要开启你的SOM-RK3399,请先准备好以下硬件:

  • SOM-RK3399主板
  • Type-C数据线
  • TF卡: Class10或以上的8GB microSD卡
  • USB转串口适配器(可选,用于调试或PC上进行操作)
  • 一个DC接口的外接电源,要求输出为12V/2A
  • 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
  • 一套USB键盘鼠标,同时连接更多USB的设备时还需要USB HUB
  • 一台电脑,需要联网,建议使用Ubuntu 18.04 64位系统

6.2 烧写系统到eMMC

SOM-RK3399需要通过SD卡启动,使用EFlasher工具将系统烧写到eMMC。

6.2.1 使用SD卡脱机烧写

访问此处的下载地址下载SD卡脱机烧写所需的文件及工具:

Image Files
rk3399-eflasher-android8-YYYYMMDD.img.zip Android8.1 系统固件
rk3399-eflasher-android7-YYYYMMDD.img.zip Android7.1.2 系统固件
rk3399-eflasher-buildroot-YYYYMMDD.img.zip Buildroot 固件,基于Rockchip Linux SDK,带Qt5-wayland图形界面
rk3399-eflasher-friendlydesktop-bionic-4.4-arm64-YYYYMMDD.img.zip 64位FriendlyDesktop桌面固件(带X-Window),基于Ubuntu Desktop 18.04构建
rk3399-eflasher-friendlycore-bionic-4.4-arm64-YYYYMMDD.img.zip 64位FriendlyCore系统固件 (内置Qt 5.10.0),基于Ubuntu core 18.04构建
rk3399-eflasher-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip Lubuntu桌面版固件 (内置Qt 5.10.0)
Flash Utility:
win32diskimager.rar Windows utility. Under Linux users can use "dd"

详细操作步骤如下:

  • 准备一张8G或以上容量的SDHC卡;
  • 下载并解压 固件文件rk3399-eflasher-OSNAME-YYYYMMDD.img.zip 和 工具win32diskimager;
  • 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的EFlasher固件,点击 Write 按钮烧写到SD卡; 或者在 Linux下使用 dd 命令将 rk3399-eflasher-OSNAME-YYYYMMDD.img 写入 SD卡;
  • 将SD卡从电脑端弹出,插入SOM-RK3399的microSD卡槽;
  • 连接SOM-RK3399的电源,系统会从SD卡启动,并自动启动 EFlasher 烧写工具,你有多种途径可以操作 EFlasher:

方法1: 连接HDMI显示屏和USB鼠标,在图形界面上操作EFlasher;
方法2: 将开发板通过网线接入局域网,通过 ssh 登录开发板,然后输入命令 eflasher,根据命令行的提示进行操作;(注: ssh登录的用户是root,密码为fa,开发板IP可查看路由器后台获得)
方法3: 通过调试串口登录到串口终端,在终端上输入命令 eflasher 来操作;
方法4: 连接一个lcd2usb配件到SOM-RK3399上,按配件上面的K1键可以选择要烧写的系统,然后按K2键确定烧写,烧写进度会在lcd2usb上显示;

  • 烧写完成后,切断电源,然后从SOM-RK3399端弹出SD卡,然后重新上电开机,SOM-RK3399会从eMMC启动你刚刚烧写的系统;

6.2.2 Windows下通过Type-C数据线进行烧写

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

Image Files
rk3399-typec-android8-YYYYMMDD.tgz Android 8.1固件
rk3399-typec-android7-YYYYMMDD.tgz Android 7.1.2固件
rk3399-typec-friendlycore-bionic-4.4-arm64-YYYYMMDD.tgz FriendlyCore固件,内置Qt5.10
rk3399-typec-friendlydesktop-bionic-4.4-arm64-YYYYMMDD.tgz FriendlyDesktop固件,自带X Window图形界面
rk3399-typec-lubuntu-desktop-YYYYMMDD.tgz Lubuntu桌面版固件,自带X Window图形界面
Flash Utility:
AndroidTool_Release_v2.54.zip Rockchip提供的Windows下通过Type-C数据线烧写系统的工具
DriverAssitant_v4.5.tgz Rockchip提供的Windows下的USB驱动,使用AndroidTool烧写系统时需要安装此驱动

视频教程:
https://www.bilibili.com/video/av38052562/

详细操作步骤如下:

  • 初次使用时,请先下载DriverAssitant_v4.5.tgz,解压后安装USB驱动;
  • 根据自己的需要下载images-for-eflasher下的系统固件并解压,如Android 7的固件文件是android-nougat-images.tgz,其中固件解压后的文件idbloader.img和info.conf,使用AndroidTool时可忽略。
  • 下载AndroidTool_Release_v2.54.zip 并解压,以管理员身份运行AndroidTool.exe
  • 可根据Android开发工具手册.pdf,导入分区配置即固件中的parameter.txt,然后指定各分区的烧写文件路径,如下图所示:

AndroidTools DI 01.png

  • 连接好电源及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,请耐心等待,烧写成功结束后将自动重启。
  • 如果需要更换系统,例如eMMC已经安装了Linux而现在需要烧写Android,需要先对eMMC进行一些擦写操作:

你需要在界面上选择 “升级固件”-〉界面上选择固件 “MiniLoaderAll.bin“,然后点击“擦除Flash”。
Rk-clean-emmc.png

6.2.3 Linux下通过Type-C数据线进行烧写

可访问此处的下载地址下载需要的固件文件及工具。

Image Files
rk3399-typec-android8-YYYYMMDD.tgz Android 8.1固件
rk3399-typec-android7-YYYYMMDD.tgz Android 7.1.2固件
rk3399-typec-friendlycore-bionic-4.4-arm64-YYYYMMDD.tgz FriendlyCore固件,内置Qt5.10
rk3399-typec-friendlydesktop-bionic-4.4-arm64-YYYYMMDD.tgz FriendlyDesktop固件,自带X Window图形界面
rk3399-typec-lubuntu-desktop-YYYYMMDD.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模式;
  • Linux: 运行以下命令即可烧写Linux系统并重启:
 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: 运行以下命令即可烧写Android 7系统并重启:
 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
  • Android 8: 运行以下命令即可烧写Android 8系统并重启:
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 di vendor vendor.img
sudo upgrade_tool di oem oem.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."

6.3 快速从SD卡启动

首先访问此处的下载地址下载需要的固件文件:

  • 您需要准备一张8G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。
Image Files
rk3399-sd-buildroot-linux-4.4-arm64-YYYYMMDD.img.zip Buildroot 固件,基于Rockchip Linux SDK,带Qt5-wayland图形界面
rk3399-sd-friendlydesktop-bionic-4.4-arm64-YYYYMMDD.img.zip FriendlyDesktop 桌面版固件,基于Ubuntu 18.04 64位,带LXDE图形桌面
rk3399-sd-friendlycore-bionic-4.4-arm64-YYYYMMDD.img.zip FriendlyCore 系统固件 (内置Qt 5.10.0),基于Ubuntu core
rk3399-sd-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip Lubuntu桌面版固件,自带X Window图形界面
Flash Utility:
win32diskimager.rar Windows utility. Under Linux users can use "dd"
  • 将固件和烧写工具分别解压,在Windows下插入SD卡(限8G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
  • 当制作完成 SD 卡后,拔出 SD 卡插入卡槽,上电启动即可。
  • Android系统不支持从SD卡启动,如果你需要运行Android系统,请购买eMMC配件,然后参考后面的章节内容,将Android系统烧写到eMMC运行。


6.4 串口调试

如果你想查看SOM-RK3399启动时更多详细的信息,或者更直接的对其进行控制,建议连接并使用调试串口。

  • 使用准备好的USB转串口适配器和连接线(需另购),连接开发板:
Pin# 开发板调试串口 USB转串口适配器
1 GND GND
2 VCC5V0_SYS NC (不需要连接)
注: Matrix USB2UART适配器,请将5V ON/OFF切换到OFF
3 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出现异常(如乱码),需检查并更换。

7 FriendlyDesktop系统的使用

Friendlydesktop-home.png

Arduino
Firefox
Scratch

FriendlyDesktop 是一个轻量级的Ubuntu桌面环境,其底层基于LXDE桌面构建,具有如下特点:
    最新版本 - 基于Ubuntu 18.04 64位系统构建。
    易于开发 - 兼容FriendlyCore的特性,集成经过优化的Qt5.10, QtCreator和Arduino IDE。
    轻巧 - 只需要很少的CPU资源即可执行顺畅,而且当内存容量充足时表现特别出色。
    省能源 - 它比其他常见的系统需要较少的资源运行相同的工作。
    简朴美 - 借由GTK+ 2,它拥有美观、支持国际化的用户界面。
    使用简单 - 提供用户如微软Windows般的应用程序列表。
    可自定义性 - 用户可以轻易自定义LXDE的外观。
    兼容标准 - 兼容于freedesktop.org标准。
用于友善电子RK3399平台的FriendlyDesktop已经最佳化了对Mali GPU和VPU的支持,系统中已集成X.org驱动,支持Hardware Cursor、OpenGL图形加速等,支持4K硬解视频播放。

7.1 帐户与密码

普通用户:

   用户名: pi
   密码: pi

Root用户:

   用户名: root
   密码: fa

7.2 设置WiFi无线链接

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

7.3 设置HDMI/DP屏幕分辨率

进入系统菜单 Perferences -> Monitor Settings界面进行设置即可。
推荐分辨率:1920x1080@60Hz

7.4 调节HDMI边界

打开命令行终端,输入命令进行操作,有几个注意事项:
1) 需要登录桌面才能操作,如果Desktop停留在Login是无法设置的;
2) 如果你是在 ssh 登录的终端,请使用与桌面登录相同的用户名,默认是 pi,不能使用root用户,同时,你需要赋值 DISPLAY 变量:

export DISPLAY=:0.0

7.4.1 查询显示器支持哪些分辨率

xrandr -q

输出示例:

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP-1 disconnected primary (normal left inverted right x axis y axis)
HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1920x1080     60.00*+  50.00  
   1280x720      60.00    50.00  
   720x576       50.00  
   720x480       59.94

7.4.2 设置分辨率

例如设置为 1920X1080@60Hz:

xrandr --output HDMI-1 --mode 1920x1080 --refresh 60

7.4.3 设节HDMI输出边界

For example, the transformation scaling horizontal coordinates by 0.8, vertical coordinates by 1.04 and moving the screen by 35 pixels right and 19 pixels down:

xrandr --output HDMI-1 --transform 0.80,0,-35,0,1.04,-19,0,0,1

7.4.4 开机自动调整

编辑~/.config/autostart/lxrandr-autostart.desktop,将完整的xrandr命令写入到Exec=开头的键中,如下所示:

[Desktop Entry]
Type=Application
Name=LXRandR autostart
Comment=Start xrandr with settings done in LXRandR
Exec=sh -c 'xrandr --output HDMI-1 --mode 1920x1080 --refresh 50 --transform 1.04,0,-35,0,1.05,-30,0,0,1'
OnlyShowIn=LXDE

7.5 设置eDP显示屏旋转

如果要旋转eDP屏的显示,可使用命令xrotate.sh 来旋转90/180/270度。 以root用户运行以下命令,即可顺时钟旋转90度,命令执行过程中,会重启lightdm服务让设置立即生效:

sudo xrotate.sh -m CW -r

其他旋转角度,可以通过运行 xrotate -h 命令获得详细的参数说明。
另外,该命令暂不支持HDMI显示的旋转,用户参考X11的文档,自行编辑 /etc/X11/xorg.conf 配置文件。

注意:硬解视频时,视频窗口并不会跟随屏幕旋转。

7.6 测试OpenGL ES性能

在系统菜单 System Tools 中点击 Terminator 打开命令行终端,输入以下命令即可测试:

taskset -c 4-5 glmark2-es2

Friendlydesktop-glmark-es.png
Friendlydesktop-glmark-es2-score.jpg

7.7 如何播放4K视频

7.7.1 使用Qt硬解播放器播放

FriendlyDesktop预装了Qt播放器Qt5-VideoPlayer,该播放器已经适配Rockchip的gstreamer插件,支持4K视频的硬解播放, 播放器启动方法: 在FriendlyDesktop上打开菜单 Sound & Video,点击 Qt5-VideoPlayer。

在播放器界面上,点击左下角的 Open 按钮加载一个视频文件到右边的播放列表,双击播放列表上的文件开始播放。播放器的界面如下所示,可以设置全屏播放,也可以调节音量:
Friendlydesktop-player.jpg

7.7.2 命令行播放

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

gst-player.sh

默认音频会输出到耳机孔, 可以使用 which gst-player.sh 找到这个脚本的位置,自已定制其播放的行为。

7.8 如何使用USB摄像头

将USB摄像头(比如罗技C270/C920)插入开发板,双FriendlyDesktop桌面上的USB Camera会弹出luvcview预览界面 (需要使用2019/05/11版本以上的FriendlyDesktop),在界面上点击中间的录像按钮可以录像.
luvcview 是一个开源软件,你可以自行编译:

git clone https://github.com/ksv1986/luvcview
cd luvcview
make

查看luvcview的用法:

./luvcview -h

参数说明:

luvcview version 0.2.1
usage: uvcview [-h -d -g -f -s -i -c -o -C -S -L -l -r]
-h    print this message
-d    /dev/videoX       use videoX device
-g    use read method for grab instead mmap
-w    disable SDL hardware accel.
-f    video format  default jpg  others options are yuv jpg
-i    fps           use specified frame interval
-s    widthxheight      use specified input size
-c    enable raw frame capturing for the first frame
-C    enable raw frame stream capturing from the start
-S    enable raw stream capturing from the start
-o    avifile  create avifile, default video.avi
-L    query valid video formats
-l    query valid controls and settings
-r    read and set control settings from luvcview.cfg

以640x360@30fps的格式预览USB摄像头图像可以使用以下命令:

./luvcview -d /dev/video8 -i 30 -s 640x360

从luvcview的输出信息可以看到,硬件加速已经开启:

pi@NanoPC-T4:/etc/xrdp$ luvcview -d /dev/video8 -i 30 -s 640x360
luvcview version 0.2.1
 interval: 30 fps
Hardware acceleration available
video /dev/video8

7.9 如何通过蓝牙传输文件

在FriendlyDesktop上打开菜单 Preferences,启动 Bluetooth Manager,在界面上点 Search 即可搜索周边的蓝牙设备, 点击你的设备进行配对,配对后即可发送文件,如下图所示:
Friendlydesktop-ble-sendfile.jpg

7.10 安装使用OpenCV

在 FriendlyDesktop 点击菜单 System Tools -> Terminator 打开终端,输入以下命令安装 OpenCV 3.4:

su -
cd /root/
git clone https://github.com/friendlyarm/install-opencv-on-friendlycore
cd install-opencv-on-friendlycore
./install-opencv.sh
cp examples/cv-env.sh /usr/bin/

安装完成后,下面来编译并运行OpenCV人脸识别的例子:

su -
cd /usr/local/share/OpenCV/samples/cpp
g++ -ggdb facedetect.cpp -o facedetect `pkg-config --cflags --libs /usr/local/lib/pkgconfig/opencv.pc`
. setqt5env
./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_eye.xml" --scale=1.3 /usr/local/share/OpenCV/samples/data/data/lena.jpg

例子的运行结果如下图所示:
Friendlydesktop-opencv.png

7.11 开发Qt程序

FriendlyDesktop下提供了重新编译的 Qt 5.10.0,支持RK3399的OpenGL ES和Gstreamer 1.0的硬件加速,同时集成了 QtCreator IDE,已配置好可以直接在开发板上编译并运行程序,如下所示:
Friendlydesktop-qtcreator.png
运行Qt程序时,需要指定platform参数为xcb,如下所示:

./HelloQt --platform xcb

7.12 访问GPIO/I2C/串口等硬件资源

请参考下面的文档:

7.13 切换音频默认输出设备

7.13.1 设置默认的输出设备

编辑文件 /etc/pulse/default.pa,修改 set-default-sink 的值,值为0时表示从HDMI出声,1则表示从耳机接口出声,如下所示:

set-default-sink 0

7.13.2 播放时临时切换

这种方法仅对当前的播放进程有效:
打开菜单 "Sound & Video" -> "PulseAudio Volume Control", 在界面上点击 "Built-in Audio Stereo" 按钮切换不同的输出设备,比如在HDMI与耳机接口之间切换。

7.14 播放网络流媒体(或网络摄像头)

打开命令行终端,输入以下命令:

gst-launch-1.0 rtspsrc location="rtsp://admin:12345@192.168.1.120:554/live/main" ! rtph264depay ! decodebin ! rkximagesink

请将 rtsp:// 后面的地址改成真实的地址。

7.15 Chromium网页浏览器

系统预装的Chromium网页浏览器已经默认启用硬件加速,支持WebGL,可以通过输入网址 chrome://gpu 了解硬件加速情况,如下图所示:
Chromium-gpu.png

7.16 屏幕保护与自动休眠相关设置

屏幕保护与自动休眠的配置文件是 /etc/xdg/autostart/xset_command.desktop,默认出厂的设置是屏幕保护和DPMS都是关闭的,你可以通过修改这个文件来更改配置,具体可以了解一下Linux下 xset 命令的用法。

7.17 安装Scratch

用以下命令安装:

sudo apt-get install scratch:arm64

7.18 安装Arduino IDE

用以下命令安装:

sudo apt-get install arduino:arm64


7.19 FriendlyDesktop下使用NVME SSD

请参考: Linux-Using-NVME-SSD

8 FriendlyCore的使用

8.1 介绍

FriendlyCore,是一个没有X-windows环境,基于Ubuntu core构建的系统,使用Qt-Embedded作为图形界面的轻量级系统,兼容Ubuntu系统软件源,非常适合于企业用户用作产品的基础OS。

本系统除了保留Ubuntu Core的特性以外,还包括以下特性:

  • 支持电容和电阻触摸屏 (型号:S700, X710, S70, HD702, S430, HD101, S70等友善电子推出的LCD屏)
  • 支持WiFi连接
  • 支持以太网连接
  • 支持蓝牙,已预装bluez等相关软件包
  • 支持音频播放
  • 支持Qt 5.10.0 EGLES和OpenGL ES1.1/2.0 (限S5P4418/S5P6818平台)

8.2 运行FriendlyCore

  • 对于有HDMI接口的板子,如果要在电视上进行操作,您需要连接USB鼠标和键盘。
  • 如果您需要进行内核开发,最好选购一个串口配件,连接了串口,则可以通过串口终端对开发板进行操作。

SOM-RK3399需要使用USB转串口模块,连接方法如下图所示:
Somrk3399usb2serialport.jpg

  • FriendlyCore默认帐户:

普通用户:

   用户名: pi
   密码: pi

Root用户:

   用户名: root
   密码: fa

默认会以 pi 用户自动登录,你可以使用 sudo npi-config 命令取消自动登录。

  • 更新软件包:
$ sudo apt-get update

8.3 使用npi-config配置系统

npi-config是一个命令行下的系统配置工具,可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH开关、自动登录选项等,在命令行执行以下命令即可进入:

$ sudo npi-config

npi-config的显示界面如下所示:
npi-config

8.4 开发Qt应用

请参考 How to Build and Install Qt Application for FriendlyELEC Boards/zh

8.5 开机自动运行Qt示例程序

使用npi-config工具进行开启:

sudo npi-config

进入Boot Options -> Autologin -> Qt/Embedded,选择Enable然后重启即可。

8.6 扩展TF卡文件系统

第一次启动FriendlyCore系统时,系统会自动扩展文件系统分区,请耐心等待,TF卡/eMMC的容量越大,需要等待的时间越长,进入系统后执行下列命令查看文件系统分区大小:

df -h

8.7 使用蓝牙传输文件

以传输文件到手机为例进行说明,首先,将你的手机蓝牙设置为可侦测状态,然后执行以下命令开始蓝牙搜索:

hcitool scan


搜索到设备时,结果举例如下:

Scanning ...
    2C:8A:72:1D:46:02   HTC6525LVW

这表示搜索到一台名为HTC6525LVW的手机,我们记下手机名称前面的MAC地址,然后用sdptool命令查看该手机支持的蓝牙服务:

sdptool browser 2C:8A:72:1D:46:02

注:上述命令中的MAC地址请替换成手机实际的蓝牙MAC地址
这个命令会详细列出手机蓝牙所支持的协议,我们需要关心的是一个名为 OBEX Object Push 的文件传输服务,以HTC6525LVW手机为例,其显示结果如下所示:

Service Name: OBEX Object Push
Service RecHandle: 0x1000b
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 12
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100

从上面的信息可以看到,这个手机的OBEX Object Push服务的所用的频道是12, 我们需要将它传递给obexftp命令,最后发起文件传输请求的命令如下:

obexftp --nopath --noconn --uuid none --bluetooth -b 2C:8A:72:1D:46:02 -B 12 -put example.jpg

注:上述命令中的MAC地址、频道和文件名请替换成实际的

执行上述命令后,请留意手机屏幕,正常情况下手机会弹出配对和接收文件的提示,确定后就开始文件传輪了。

蓝牙常见问题:
1) 开发板上找不到蓝牙设备, 可尝试用以下命令开启蓝牙:

rfkill unblock 0

2) 提示找不到相关命令,可尝试用以下命令安装相关软件:

apt-get install bluetooth bluez obexftp openobex-apps python-gobject ussp-push

8.8 连接WiFi

无论是SD WiFi还是USB WiFi, 它们的连接方式都是一样的。正基科技的APXX系列芯片属于SD WiFi,另外系统默认也已经支持市面上众多常见的USB WiFi,已测试过的USB WiFi型号如下:

序号 型号
1 RTL8188CUS/8188EU 802.11n WLAN Adapter
2 RT2070 Wireless Adapter
3 RT2870/RT3070 Wireless Adapter
4 RTL8192CU Wireless Adapter
5 小米WiFi mt7601
6 5G USB WiFi RTL8821CU
7 5G USB WiFi RTL8812AU

目前使用 NetworkManager 工具来管理网络,其在命令行下对应的命令是 nmcli,要连接WiFi,相关的命令如下:

  • 切换到root账户
$ su root
  • 查看网络设备列表
$ nmcli dev

注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.

  • 开启WiFi
$ nmcli r wifi on
  • 扫描附近的 WiFi 热点
$ nmcli dev wifi
  • 连接到指定的 WiFi 热点
$ nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0

请将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
连接成功后,下次开机,WiFi 也会自动连接。

更详细的NetworkManager使用指南可参考这篇文章: Use NetworkManager to configure network settings

如果你的USB WiFi无法正常工作, 大概率是因为文件系统里缺少了对应的USB WiFi固件。对于Debian系统, 可以在Debian-WiFi里找到并安装USB WiFi芯片的固件。而对于Ubuntu系统, 则可以通过下列命令安装所有的USB WiFi固件:

$ apt-get install linux-firmware

一般情况下, 各种WiFi芯片的固件都存放在/lib/firmware目录下。


8.9 连接以太网

默认插上网线开机,会自动连接并通过DHCP获取IP地址,如需要配置静态IP地址,请参考 NetworkManager 的相关文档: Use NetworkManager to configure network settings


8.10 选择系统默认音频设备

如果当前系统存在多个音频设备, 例如HDMI-Audio、3.5mm耳机座、I2S-Codec时, 可以通过下列操作设置系统默认使用的音频设备。

  • 启动板子后,执行以下步骤安装alsa包:
$ apt-get update
$ apt-get install libasound2
$ apt-get install alsa-base
$ apt-get install alsa-utils
  • 安装好需要的库后,查看系统当前所有的声卡设备的序列号。这里假设aplay的输出如下, 并不是真实情况, 请根据实际情况进行相对应的修改:
$ aplay -l
card 0: HDMI
card 1: 3.5mm codec
card 2: I2S codec

上面的信息表示card 0代表HDMI-Audio,card 1代表3.5mm耳机座, card 2代表I2S-Codec,修改配置文件/etc/asound.conf如下表示选择HDMI-Audio:

pcm.!default {
    type hw
    card 0
    device 0
}
 
ctl.!default {
    type hw
    card 0
}

如果将card 0修改为card 1, 则表示选择3.5mm耳机座, 以此类推。
拷贝一首 .wav 格式的音乐到开发板上,播放音乐:

$ aplay /root/Music/test.wav

可以听见从系统默认的音频设备里输出音频。
如果您使用的开发板是H3/H5/H2+系列并且使用的是主线内核,那么更简便的方法是使用npi-config

8.11 运行X11程序

FriendlyCore系统集成了轻量级的Xorg,虽然没有窗口管理器,但是你仍然可以运行单一的X-Windows程序,例如要运行的程序是~/YourX11App,使用以下命令:

. /usr/bin/setqt5env-xcb
startx ~/YourX11App -geometry 1280x800

注意 “.” 与 /usr/bin/setqt5env-xcb 之间有一个空格,另外,-geometry后面的分辨率请更改为你的屏幕的实际分辨率。

8.12 mpv硬解播放器

FriendlyCore预装了基于 ffmpeg 实现的命令行视频播放器,除了 mpv 播放器本身,也包含了 libmpv 库文件,方便在程序里调用。
mpv播放器支持 Rockchip MPP video decoder,所以支持4K硬解播放,mpv的参数较多,为了简化使用,我们提供了一个脚本 start-mpv,简化后,只要传文件名给它,就可以播放视频了:

start-mpv /home/pi/demo.mp4

需要注意的是,播放时需要使用pi用户登录,因为其它用户的目录里没有mpv相关的设置,当然你可以从pi用户目录复制一份过来也是可以的,mpv的设置文件存放在以下路径:

/home/pi/.config/mpv/mpv.conf

mpv.conf的文件内容如下所示:

vo=gpu
gpu-context=drm
hwdec=rkmpp
demuxer-max-bytes=41943040
demuxer-max-back-bytes=41943040
drm-osd-plane-id=1
drm-video-plane-id=0
audio-device=alsa/default:CARD=rockchiphdmi

这些都是比较重要的,会传递给 mpv 的参数,其中hwdec需要指定为rkmpp才能开启硬件解码,audio-device用于指定音频输出设备,默认输出到HDMI,你可以用以下命令来查询系统中有哪些音频设备:

mpv --audio-device=help

另一个比较重要的参数是 drm-osd-size,当全屏播放视频时,drm-osd-size指定为屏幕的分辨率即可,这个参数由start-mpv自动获取屏幕参数并传给mpv,start-mpv脚本除此之外,还会做一件更重要的事情,它需要保证系统中的 libmali 库用了正确的版本,因为 mpv 是通过 gbm 来渲染画面的,所以 libmali.so 需要使用这个版本: libmali-midgard-t86x-r14p0-gbm.so,这也意味着,这个版本的mpv只能在FriendlyCore下使用,不能在X11 Desktop下使用,具体细节可以自已查看 start-mpv 的脚本内容。
mpv官方使用指南:https://github.com/mpv-player/mpv/wiki

9 同时适用于FriendlyDesktop与FriendlyCore系统的功能特性

9.1 Linux下使用摄像头(MIPI接口摄像头OV13850与OV4689,USB摄像头罗技C920)

摄像头连接方法: 摄像头可以连接在MIPI接口,如下图所示:


为了方便测试摄像头,我们提供了脚本可以在命令行测试摄像头的拍照和录像功能。
你可以用以下命令更新这个脚本到最新版本:

cd /tmp/
git clone https://github.com/friendlyarm/gst-camera-sh.git
sudo cp gst-camera-sh/*.sh /usr/bin/

共有以下三个脚本:
gst-camera.sh: 单个摄像头的预览、拍照与录像
dual-camera.sh: 预览两个摄像头
stop-gst-camera.sh: 停止预览

9.1.1 gst-camera.sh 参数说明

参数 功能
--index或-i 选择要使用的摄像头的序号,可选值为0和1,当同时连接两个摄像头时,指定为1表示要操作第二个摄像头
--action或-a 指定命令要执行的动作,可选参数为: preview、photo和video,分别对应预览、拍照和录像
--output或-o 指定输出的文件名,用于拍照和录像时指定输出文件名
--verbose或-v 指定为yes时,会输出调用gst-launch-1.0命令的完整命令行
-x 使用rkximagesink插件,预览图像会输出到X11窗口,适用于FriendlyDesktop与Lubuntu系统
-g 使用glimagesink插件,预览图像会输出到X11窗口,适用于FriendlyDesktop与Lubuntu系统
-k 使用kmssink插件,预览图像会直接输出到屏幕,适用于FriendlyCore系统

脚本gst-camera.sh会自动识别OV13850/OV4689/罗技C920摄像头,并传递合适的参数给gst-launch-1.0。

9.1.2 脚本使用方法

  • 预览图像
gst-camera.sh --action preview
  • 拍照

用命令拍照一张照片,存储为文件 1.jpg:

gst-camera.sh -a photo -o 1.jpg
  • 录像并预览

用以下命令启动录像,存储为视频文件 1.ts,录像时使用了硬件编码:

gst-camera.sh --action video -output 1.ts


  • 显示完整的命令

加入 --verbose yes 的参数,会显示最终的 gsteamer 命令,例如:

gst-camera.sh --action video --output 1.ts --verbose yes

你会得到以下完整的 gsteamer 命令,这对你开发会有帮助:

gst-launch-1.0 rkisp num-buffers=512 device=/dev/video0 io-mode=1 ! \
    video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! \
        mpph264enc ! queue ! h264parse ! mpegtsmux ! \
        filesink location=/tmp/camera-record.ts
  • 预览双摄像头

连接两个mipi摄像头,或者一个mipi摄像头加一个usb摄像头(仅测试过:罗技C920 pro),调用以下命令即可同时预览两个摄像头的图像:

dual-camera.sh

注:建议在FriendlyDesktop下测试。

9.1.3 gst-launch-1.0命令行解析

在FriendlyDesktop下预览摄像头命令如下:

gst-launch-1.0 rkisp device=/dev/video1 io-mode=4 ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! rkximagesink

重要参数说明:

参数 说明
device 用于预览的device (selfpath) 是 /dev/video1, 用于拍照的device (mainpath) 是 /dev/video0, 如果是多路摄像头,则另一路预览(selfpath)是 /dev/video5, 另一路拍照 (mainpath)是 /dev/video4, USB摄像头一般都是 /dev/video8
io-mode 值为1表示是memory map模式,值为4表示是dmabuf模式,一般预览用io-mode=4,拍照用io-mode=1, 在OpenCV里访问用io-mode=4
rkximagesink/glimagesink/kmssink 在X-Windows窗口中输出mipi摄像头图像时指定为rkximagesink (适用于FriendlyDesktop),如果是USB摄像头则指定为glimagesink,FriendlyCore下只能使用kmssink

9.1.4 在OpenCV中访问摄像头

访问MIPI摄像头:

cv.VideoCapture('rkisp device=/dev/video1 io-mode=4 ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! videoconvert ! appsink', cv.CAP_GSTREAMER)

访问USB摄像头:

cv.VideoCapture('rkisp device=/dev/video8 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! videoconvert ! appsink', cv.CAP_GSTREAMER)


详情请参考这里的示例代码:https://github.com/friendlyarm/install-opencv-on-friendlycore/tree/rk3399/examples

9.1.5 摄像头应用教程: 推流至直播平台

请查看这篇文档: How to setup RTMP server on NanoPC-T4/zh

9.1.6 参考资源

http://blog.iotwrt.com/media/2017/10/01/camera/ http://www.360doc.com/content/16/1019/17/496343_599664458.shtml

9.2 Docker的安装与使用

9.2.1 安装Docker

使用以下命令安装:

wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/arm64/containerd.io_1.2.6-3_arm64.deb
wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/arm64/docker-ce-cli_19.03.2~3-0~ubuntu-bionic_arm64.deb
wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/arm64/docker-ce_19.03.2~3-0~ubuntu-bionic_arm64.deb
sudo dpkg -i containerd.io_1.2.6-3_arm64.deb
sudo dpkg -i docker-ce-cli_19.03.2~3-0~ubuntu-bionic_arm64.deb
sudo dpkg -i docker-ce_19.03.2~3-0~ubuntu-bionic_arm64.deb

9.2.2 验证Docker的安装

用Docker创建并运行一个debian镜像:

git clone https://github.com/friendlyarm/debian-jessie-arm-docker
cd debian-jessie-arm-docker
./rebuild-image.sh
./run.sh

9.3 Linux下使用ffmpeg进行硬件加速的视频解码

FriendlyCore和FriendlyDesktop系统均预装了 ffmpeg 的可执行文件、静态库和头文件,位于 /usr/ffmpeg-rkmp目录。
ffmpeg支持RockChip MPP视频硬件解码器,但并不支持硬编码,具体信息可参考:https://trac.ffmpeg.org/wiki/HWAccelIntro

测试4K视频的解码性能:

/usr/ffmpeg-rkmp/bin/ffmpeg -benchmark -loglevel 48 -vcodec h264_rkmpp -i 4K-Chimei-inn-60mbps.mp4 -map 0:v:0 -f null -

结果如下图所示,平均 45 FPS:
Rk3399-ffmpeg-fps.jpg
要播放视频,可以使用基于 ffmpeg 实现的播放器 mpv,上面测试所用的4K视频可在网盘的 test-video 目录找到,网盘地址:http://dl.friendlyarm.com/nanopct4。

9.4 使用NVME SSD高速固态硬盘

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

su -

root用户的默认密码是fa。

9.4.1 检查是否检测到了SSD

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

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

9.4.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的文档来操作。

9.4.3 将分区格式化为 ext4 格式

上一个步骤分区完成后,我们再用 cat /proc/partitions 命令看一下当前的分区信息,在下面的结果中,可用于存储数据的分区设备名为 /dev/nvme0n1p1 :

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


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

mkfs.ext4 /dev/nvme0n1p1

9.4.4 开机时自动挂载 SSD 分区

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

blkid /dev/nvme0n1p1
/dev/nvme0n1p1: UUID="d15c4bbf-a6c3-486f-8f81-35a8dbd46057" TYPE="ext4" PARTUUID="887628f0-01"

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

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

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

UUID=d15c4bbf-a6c3-486f-8f81-35a8dbd46057 /media/nvme ext4 defaults 0 0

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

mkdir /media/nvme
chmod 777 /media/nvme

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

mount /media/nvme

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

reboot

重新开机,应该能看到已经挂载的SSD分区了。

9.5 设置调速散热风扇

散热风扇使用PWM来实现自动调速,会根据当前的CPU温度来决定风扇的开关,以及风扇的转速,如果当前的CPU温度不高,风扇会被关闭或者以较低转速旋转 (减少不必要的环境噪声),
如果你想让风扇立即开始工作,可以用以下命令让CPU立即以高负载运行,以便观察风扇的工作状态:

cpuburn

如果你想改变风扇的调速行为,请修改以下文件:

/usr/bin/start-rk3399-pwm-fan.sh

需要禁止开机自动启动风扇(比如你需要连接其他的PWM设备),请输入以下命令:

systemctl stop pwm-fan
systemctl disable pwm-fan

或者删除下面这两个文件:

/etc/systemd/system/pwm-fan.service
/etc/systemd/system/multi-user.target.wants/pwm-fan.service

9.6 Linux下使用4G EC20模块

请参考: How to use 4G Module on NanoPC-T4/zh

10 Buildroot Linux系统的使用

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架,由Makefile脚本和Kconfig配置文件构成,旨在简化系统制作步骤,可实现一站式生成可烧写的系统固件,最终的固件包含boot-loader、kernel和rootfs,以及rootfs中的各种库和应用程序 (例如qt, gstreamer, busybox等)。

由 FriendlyELEC 提供的 Buildroot 项目是基于Rockchip原厂的 linux-sdk 制作, 项目使用 git 管理,与原厂的linux sdk更新保持同步;


Buildroot for RK3399运行界面如下:

  • Rk3399-buildroot-home.jpg
  • Rk3399-buildroot-console.jpg

  • Rk3399-buildroot-camera.jpg
  • Rk3399-buildroot-player.jpg


关于Buildroot系统更详细的说明,请参考: Buildroot for RK3399

11 Lubuntu 系统的使用

看这里: Lubuntu desktop 16.04 for RK3399/zh
Lubuntu下使用NVME SSD: Linux-Using-NVME-SSD

12 Android8.1 系统的使用

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


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

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


12.2 使用双MIPI摄像头预览与录像

从github下载以下示例源代码,并用 Android studio 编译并运行:

git clone https://github.com/friendlyarm/Dual-Camera.git -b working-branch

应用安装后,需要设置Android权限才能让程序正常运行,方法是在开发板的Android系统里进入 Settings -> Apps & notifications -> Dual Camera -> Permissions 钩选以下权限:

Camera
Microphone
Storage

最终运行效果如下:
Android dual camera demo.jpg
点击界面上的 "CAPTURE VIDEO" 按钮即可录制视频(同时录两个摄像头),录制的视频保存到以下位置:/storage/emulated/0/Download/dualcamera_h264.mp4,电脑上可以用以下adb命令下载到本地:

adb pull /storage/emulated/0/Download/dualcamera_h264.mp4

已知问题
录制的视频文件,播放时会比正常的快,可能需要调整mediacodec的某些参数


12.3 切换系统语言

Android系统默认的系统语言是英文,比如我们要设置为中文,步骤如下: 1) 进入 Android 设置:Settings -> System -> Languages & Input -> Languages;
2)点击"Add a language", 在列表中选择 "简体中文",再选择 "中国";
3) 这时列表中会有中文和英文两种语言,拖动中文那一项到列表的最上面即可,注意,如果你使用的是鼠标,拖动的方法是:将鼠标指针放在列表项右边的图标上,然后按下鼠标中键来拖动;

12.4 Android8.1 硬件访问

开发者可以通过FriendlyThings SDK在Android App中访问和控制主板上的各种硬件资源,比如Uart, SPI, I2C, GPIO等接口,详情可参考以下两份文档:

12.5 Android神经网络 NN SDK示例

Android8.1 BSP中包含了支持GPU加速的Android NN SDK,为了方便测试,Android8固件中也预装了原厂提供的Android NN示例程序:TfLiteCameraDemo,这是一个使用Rockchip AndroidNN GPU加速的MobileNet分类器Demo,运行时需要连接摄像头模块,USB和CSI摄像头都是支持的,通过点击 “TfLiteCameraDemo”图标进入示例,其运行效果如下所示:

TfLiteCameraDemo.png
关于Android NN SDK的详细描述,可以参考原厂的这份文档:[RK3399_Android8.1_AndroidNN_SDK_V1.0_20180605发布说明.pdf]
TfLiteCameraDemo示例源代码下载地址:[TfLiteCameraDemo源代码]

12.6 Android8.1 下使用adb

1. 第一次启动系统,如果需要更改系统文件,需要关闭安全验证 (注:安装apk不需要关闭),关闭安全验证后需要重启

adb root
adb disable-verity
adb reboot

2. 重启后,获得root权限,并重新挂载 /system 开启写入权限

adb root
adb remount

3. 上传文件

adb push example.txt /system/

12.7 HDMI分辨率、边界调节

如果连接了HDMI显示设备,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation 进行设置。

HDMI Resolution 缺省为 Auto,可手动设置显示分辨率,最高可支持 4K 分辨率
Screen Zoom 用户可观察红色边框的显示,点击中间的4个箭头按钮来进行缩放调节
Display Rotation 可进行横竖屏切换

12.8 屏幕旋转

使用HDMI与LCD作为显示设备时,如果需要旋转屏幕,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation -> Display Rotation 进行设置。

在 adb shell 用命令来测试屏幕旋转 (不会保存设置):

wm rotation 90

12.9 切换音频输出通道

可以配置音频输出到HDMI或者耳机接口,设置入口:Android 的 Settings -> Accessibility -> Force audio output。 如果 Force audio output菜单项是灰色的,即处于不可选择的状态,说明你所用的硬件会自动检测耳机插拨状态,并自动切换音频通道,无需设置。

12.10 调整录音的音量

1) 先通过串口或adb shell,以root用户权限使用amix 命令调节录音的音量,例如:

amix "IN2 Boost"
amix "ADC Capture Volume"

以上命令用于查看当前的设置,然后便可根据支持的值来调节并测试。
2) 调试好后,修改 hardware/rockchip/audio/tinyalsa_hal/codec_config/rt5651_config.h 文件中 rt5651_main_mic_capture_controls 数组中对应配置项的值,编译Android源代码并测试。

12.11 定制开关机界面与动画

12.11.1 开启与关闭

将 device/rockchip/common/BoardConfig.mk 文件的
BOOT_SHUTDOWN_ANIMATION_RINGING := false
改为
BOOT_SHUTDOWN_ANIMATION_RINGING := true
来打开编译时将文件打包进固件的功能

12.11.2 开机动画

创建或替换Android源代码目录下的如下文件:
kernel/logo.bmp
kernel/logo_kernel.bmp
device/rockchip/common/bootshutdown/bootanimation.zip

12.11.3 关机动画

创建或替换Android源代码目录下的如下文件:
device/rockchip/common/bootshutdown/shutdownanimation.zip

12.11.4 动画制作方法

请参考:http://blog.sina.com.cn/s/blog_4960586c0100vu5v.html

12.12 移除Google框架

如果不需要使用google服务,可以删除Google框架以节约系统资源,方法是删除Android源代码中的以下目录,然后重新编译Android:
vendor/google

12.13 用摇控器操作Android

SOM-RK3399在Android下完美支持 FriendlyARM RC-100 红外遥控器,更方便SOM-RK3399在接电视的场景下使用,遥控器按键功能丰富:
Rc100remotecontroller.png

按键定义与功能如下表所示:

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

12.14 使用USB摄像头进行拍照和录像

Android系统同时支持USB摄像头拍照和录像,使用系统自带的 Camera 应用即可,有两点需要注意的地方:
1)需要根据摄像头规格,选择合适的录像分辨率,可以先选择较低的CIF分辨率,测试OK之后再尝试更高的分辨率,设置界面如下所示:
Android8-usbcamera-setting.png;
2)USB摄像头不能与MIPI摄像头同时使用,也不能热拨插,插入摄像头后需要重新开机才能识别;

我们测试过的USB摄像头型号如下:罗技C270,罗技C922 PRO,
实测罗技C922 PRO录像和拍照可以达到1080P分辨率。

12.15 Android下使用4G模块EC20

12.15.1 连接方法

连接时,需要通过USB to miniPCIe转接板转接EC20,再连接到主板的USB Host端口,如下图所示:

连接后无需额外的配置,启动Android后就可以使用4G上网了,跟Android手机类拟。

12.15.2 启用EC20的GPS功能

默认情况下,Android的GPS功能是关闭的 (原因是Android在没有找到任何GPS模块的情况下,会不停的打印LOG信息),在你连接了EC20模块后,就可以开启GPS了。
开启方法是修改Android源代码下的 vendor/quectel/ec20/BoardConfigPartial.mk 文件,将下面这行:

BOARD_HAS_GPS := false

改为

BOARD_HAS_GPS := true

然后重新编译 Android。

12.16 Android下使用NVME SSD高速固态硬盘

12.16.1 第一步:格式化SSD为单分区ext4格式

此操作可以在电脑上进行,也可以在开发板的 linux 系统里进行。

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

su -

root用户的默认密码是fa。

12.16.1.1 检查是否检测到了SSD
root@FriendlyELEC:~# cat /proc/partitions 
major minor  #blocks  name
   1        0       4096 ram0
 259        0  125034840 nvme0n1

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

12.16.1.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的文档来操作。

12.16.1.3 将分区格式化为 ext4 格式

上一个步骤分区完成后,我们再用 cat /proc/partitions 命令看一下当前的分区信息,在下面的结果中,可用于存储数据的分区设备名为 /dev/nvme0n1p1 :

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


下面的命令将该分区格式化为 ext4 格式,其中-L参数指定SSD分区的名称,这个名称会在Android界面上显示:

mkfs.ext4 /dev/nvme0n1p1 -L SSD

12.16.2 第二步:Android开机自动挂载

只要SSD已经被正确地格式化,Android就会自动挂载SSD为外置存储设备,无需额外的设置,打开Android内置的Files应用,可以看到SSD设备已经挂载:
Android8-files-ssd.jpg
第三方的软件可以正常识别SSD,如下图中的迅雷下载软件,可以设置将文件默认下载到SSD上:
Android8-thunder-ssd.png

12.17 设置调速散热风扇

散热风扇使用PWM来实现自动调速,会根据当前的CPU温度来决定风扇的开关,以及风扇的转速,如果当前的CPU温度不高,风扇会被关闭或者以较低转速旋转 (减少不必要的环境噪声),如果你想改变风扇的调速行为,请修改Android bsp源代码中的以下文件:

device/rockchip/rk3399/nanopc-t4/pwm_fan.sh

需要禁止开机自动启动风扇(比如你需要连接其他的PWM设备),请修改Android bsp源代码中的以下文件:

device/rockchip/rk3399/init.rk3399.rc

对源代码做了修改后,需要重新编译Android。

13 Android7.1 系统的使用

看这里: Android7

14 如何编译系统

14.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
sudo apt-get install exfat-fuse exfat-utils device-tree-compiler liblz4-tool

更多说明可查看 https://source.android.com/source/initializing.html;
也可以使用Docker环境:friendlyelec-android-docker

14.2 安装交叉编译器

14.2.1 安装aarch64-linux-gcc 6.4

该编译器可用来编译Linux系统的内核和u-boot,用以下命令下载并安装:

git clone https://github.com/friendlyarm/prebuilts.git -b master --depth 1
cd prebuilts/gcc-x64
cat toolchain-6.4-aarch64.tar.gz* | sudo tar xz -C /

然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:

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

执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:

. ~/.bashrc

这个编译器是64位的,不能在32位的PC 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)

14.3 编译Android8.1源代码

14.3.1 下载Android8.1源代码

有以下两种途径获取 Android8.1 的源代码,都需要联网:

  • 使用网盘里的git repo压缩包

网盘下载地址: 点击进入
文件位于网盘的以下路径:sources/rk3399-android-8.1.git-YYYYMMDD.tgz (YYYYMMDD表示打包的日期)
从网盘中获取的 repo 压缩包在解压之后,需要执行一下 sync.sh 脚本,会从gitlab上拉取最新的代码:

tar xvzf /path/to/netdisk/sources/rk3399-android-8.1.git-YYYYMMDD.tgz
cd rk3399-android-8.1
./sync.sh
  • 直接克隆git仓库

SOM-RK3399 源代码托管在 gitlab 上,使用以下命令进行下载:

git clone https://gitlab.com/friendlyelec/rk3399-android-8.1 --depth 1 -b master

14.3.2 编译并生成Image文件

使用以下命令编译:

cd rk3399-android-8.1
./build-nanopc-t4.sh -F -M

14.3.3 更新系统为自已编译的Image

编译完成后,image文件会存放在Android8.1源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 SOM-RK3399上:
1) 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区;
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 FRIENDLYARM 分区里的 android8 目录;
3) 将SD卡插入SOM-RK3399,重新烧写Andorid系统即可;
也可参考这个github仓库的方法来更新:sd-fuse_rk3399

14.4 编译Android7源代码

14.4.1 下载Android7源代码

有以下两种途径获取 Android7 的源代码,都需要联网:

  • 使用网盘里的git repo压缩包

网盘下载地址: 点击进入
文件位于网盘的以下路径:sources/rk3399-android-7.git-YYYYMMDD.tgz (YYYYMMDD表示打包的日期)
从网盘中获取的 repo 压缩包在解压之后,需要执行一下 sync.sh 脚本,会从gitlab上拉取最新的代码:

tar xvzf /path/to/netdisk/sources/rk3399-android-7.git-20181228.tgz
cd rk3399-nougat
./sync.sh
  • 直接克隆git仓库

SOM-RK3399 源代码托管在 gitlab 上,使用以下命令进行下载:

git clone https://gitlab.com/friendlyelec/rk3399-nougat --depth 1 -b nanopc-t4-nougat

14.4.2 编译并生成Image文件

使用以下命令编译:

cd rk3399-nougat
./build-nanopc-t4.sh -F -M

14.4.3 更新系统为自已编译的Image

编译完成后,image文件会存放在Android7源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 SOM-RK3399上:
1) 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区;
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 FRIENDLYARM 分区里的 nougat 目录;
3) 将SD卡插入SOM-RK3399,重新烧写Andorid系统即可;
也可参考这个github仓库的方法来更新:sd-fuse_rk3399

14.5 编译 FriendlyCore/FriendlyDesktop/Lubuntu/EFlasher的内核源代码

git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi4-linux-v4.4.y kernel-rockchip
cd kernel-rockchip
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
make ARCH=arm64 nanopi4_linux_defconfig
make ARCH=arm64 nanopi4-images

编译完成后会生成 kernel.img resource.img 这两个文件,将其拷贝到eflasher系统的SD卡覆盖旧文件即可, 假设SD卡的FRIENDLYARM分区挂载到FRIENDLYARM目录,更新命令如下:

# for Lubuntu
cp kernel.img resource.img /media/FRIENDLYARM/lubuntu/
 
# for FriendlyCore
cp kernel.img resource.img /media/FRIENDLYARM/friendlycore-arm64/
 
# for FriendlyDesktop
cp kernel.img resource.img /media/FRIENDLYARM/friendlydesktop-arm64/

也可以用线刷工具来更新。

14.6 编译FriendlyCore/FriendlyDesktop/Lubuntu/EFlasher的U-boot源代码

git clone https://github.com/friendlyarm/uboot-rockchip --depth 1 -b nanopi4-v2014.10_oreo
cd uboot-rockchip
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
make CROSS_COMPILE=aarch64-linux- rk3399_defconfig
make CROSS_COMPILE=aarch64-linux-

编译完成后会生成 uboot.img、trust.img 和 rk3399_loader_v1.22.119.bin这3个文件,其中rk3399_loader_v1.22.119.bin需要重命名为MiniLoaderAll.bin,然后将其拷贝到eflasher系统的SD卡覆盖旧文件。
假设SD卡的FRIENDLYARM分区挂载到FRIENDLYARM目录,更新命令如下:

# for Lubuntu
cp uboot.img trust.img /media/FRIENDLYARM/lubuntu
cp rk3399_loader_v1.22.119.bin /media/FRIENDLYARM/lubuntu/MiniLoaderAll.bin
 
# for FriendlyCore
cp uboot.img trust.img /media/FRIENDLYARM/friendlycore-arm64
cp rk3399_loader_v1.22.119.bin /media/FRIENDLYARM/friendlycore-arm64/MiniLoaderAll.bin
 
# for FriendlyDesktop
cp uboot.img trust.img /media/FRIENDLYARM/friendlydesktop-arm64
cp rk3399_loader_v1.22.119.bin /media/FRIENDLYARM/friendlydesktop-arm64/MiniLoaderAll.bin

也可以用线刷工具来更新。

14.7 制作用于量产的启动卡或者烧写文件

如果要自已做启动卡,或制作用于批量生产的img文件,可参考这个github仓库:sd-fuse_rk3399

15 硬件资源访问

15.1 串口访问

如下表所示,仅 UART4 可供应用程序开发使用:

串口设备 串口资源占用情况
UART0 已被蓝牙占用
UART1 已被千兆以太网占用
UART2 已被作为调试串口
UART3 已被千兆以太网占用
UART4 空闲,设备名称为 /dev/ttyS4 (注:需使用20180618之后的ROM)

16 源代码下载地址汇总

SOM-RK3399源代码下载地址
Android 8.1 Uboot源代码下载地址

https://gitlab.com/friendlyelec/rk3399-android-8.1/tree/master/u-boot

Android 8.1 Linux-4.4.y 内核源代码下载地址

https://gitlab.com/friendlyelec/rk3399-android-8.1/tree/master/kernel

Android 8.1 BSP源代码下载地址

https://gitlab.com/friendlyelec/rk3399-android-8.1
网盘路径: sources/rk3399-android-8.1.git-YYYYMMDD.tgz

Android 7.1.2 Uboot源代码下载地址

https://gitlab.com/friendlyelec/rk3399-nougat/tree/nanopc-t4-nougat/u-boot

Android 7.1.2 Linux-4.4.y 内核源代码下载地址

https://gitlab.com/friendlyelec/rk3399-nougat/tree/nanopc-t4-nougat/kernel

Android 7.1.2 BSP源代码下载地址

https://gitlab.com/friendlyelec/rk3399-nougat
网盘路径: sources/rk3399-android-7.git-YYYYMMDD.tgz

FriendlyCore/FriendlyDesktop/Lubuntu Uboot源代码下载地址

https://gitlab.com/friendlyelec/rk3399-android-8.1/tree/master/u-boot

FriendlyCore/FriendlyDesktop/Lubuntu Linux-4.4.y 内核源代码下载地址

https://github.com/friendlyarm/kernel-rockchip

17 更多OS

17.1 DietPi_NanoPCT4-ARMv8-Stretch

DietPi身轻如燕,镜像文件最小只有345M 字节。系统存储操作及进程对资源的占用非常少,并且预装DietPi-RAMlog工具。这些特性使得用户能最大程度地发挥设备本身的性能。

仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。

详细操作步骤如下:

  • 初次使用时,请先下载DriverAssitant_v4.5.tgz,解压后安装USB驱动;
  • 下载系统固件DietPi_NanoPCT4-ARMv8-Stretch点击下载DietPi_NanoPCT4-ARMv8-Stretch
  • 解压,进入Image_and_Tools,以管理员身份运行AndroidTool.exe
  • 默认已经导入分区配置,即固件中的parameter.txt,并已经指定各分区的烧写文件路径,如下图所示:

AndroidTools DI 02.png

  • 连接好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模式。
  • 点击“Run”即可下载固件到eMMC,请耐心等待,烧写成功结束后将自动重启。

Dietpi-login-01.png

登录账号:root
登录密码:dietpi

17.2 使用wifi

系统默认没有使能wifi,请执行dietpi-config配置。 dietpi-config

   --> Network Options:Adapters 
       --> WiFi  Change Wireless Network Settings
           --> Scan  Scan and Connect

选择要连接的WiFi热点,输入密码后连接
Dietpi-dietpi-config-01.png

18 Link to Rockchip Resources

19 原理图, PCB图

20 更新日志

20.1 日期 2019-09-26

  • FriendlyCore/FriendlyDesktop小修正:

修正 Qt5 demo在某些LCD下无法触摸的问题

20.2 日期 2019-09-03

  • Android 8.1更新如下:

1) 更新Android8.1_SDK至Rockchip官方版本v8.20_20190801 (内核更新到4.4.167)
2) 增加录音音量(+15dB)
3) 修正某些HDMI显示器比例显示不正确的问题
4) USB 3.0 Host: 启用AutoRetry特性,改进部分USB3.0工业摄像头的稳定性

  • FriendlyCore/FriendlyDesktop更新如下:

1) 合并原厂的内核更新,并升级至kernel-4.4.179
2) USB 3.0 Host: 启用AutoRetry特性,改进部分USB3.0工业摄像头的稳定性
3) 增加Linux下支持使用HDMI IN

  • Buildroot更新如下:

1) 更新Buildroot至Rockchip官方版本v2.2.0_20190628
2) 合并原厂的内核更新,并升级至kernel-4.4.179
3) 增加使能开机后自动加载蓝牙固件

20.3 日期 2019-07-18

  • FriendlyCore/FriendlyDesktop/Lubuntu更新:

1) 修改SDIO最高频率为150M以提升Wi-Fi性能
2) 修复部分NVMe M.2固态硬盘无法识别的问题,提升兼容性

  • Android 8更新

1) 修改SDIO最高频率为150M以提升Wi-Fi性能
2) 启用了蓝牙BLE的支持

20.4 日期 2019-06-25

Linux(Ubuntu 16.04/18.04) 全面采用 OverlayFS,以增强文件系统的稳定性.

20.5 日期 2019-05-23

  • Ubuntu 18.04(FriendlyCore, FriendlyDesktop)更新:

1) 修正 Pulseaudio 服务没法启动的问题
2) 修正 Bluetooth 服务的问题

20.6 日期 2019-05-11

  • Android 8.1更新如下:

1) 增加支持PWM风扇自动调速
2) 增加SSD支持: 开机会自动挂载SSD (注:SSD分区需格式化为ext4格式)

  • Ubuntu 18.04(FriendlyCore, FriendlyDesktop)更新:

1) 内核版本更新到 Linux-4.4.167
2) 升级摄像头isp驱动(由 cif_isp10 升级至 rk_isp1),支持双mipi摄像头同时工作
3) 升级集成OpenCV 4.1,支持双mipi摄像头, USB摄像头(罗技C920)
4) 增加4G LTE无线模块的支持(型号:Quectel EC20)
5) 增加支持PWM风扇自动调速
6) 改进了FriendlyDesktop的易用性

  • EFlasher烧写专用系统更新:

1) 精简了文件系统体积
2) 为了启动速度,网络配置由DHCP改为静态IP地址(192.168.1.231)

20.7 日期 2019-03-08

  • 增加Buildroot项目:

增加 Buildroot Linux系统,基于Rockchip原厂RK3399 Linux SDK,项目开源,详情请参考:Buildroot for RK3399

  • Android 8.1更新如下:

1) 优化了LCD和HDMI屏幕旋转的设置,支持命令行操作(命令:wm rotation 90)
2) 修复将音频强制输出到耳机后麦克风无法声音的问题

  • FriendlyCore, FriendlyDesktop, Lubuntu更新如下:

1) 内核版本更新到 v4.4.154
2) 增加Docker的支持
3) 内核配置项进行了优化,启用更多特性与设备驱动
4) 修正USB WiFi无法使用的问题
5) 修正ISP摄像头的稳定性问题

20.8 日期 2018-12-19

  • Android 8.1更新如下:

1) 更新AOSP源码版本到 Android8.1-SDK v5.00-20181109
2) 增加HDMI分辨率与边界调节的设置界面
3) 增加音频输出设置,可设置默认输出到耳机或者HDMI
4) 增加OV13850和和宽动态OV4689摄像头支持,可任意连接到CSI1或CSI2接口

  • FriendlyCore更新如下:

1) 增加OV13850和和宽动态OV4689摄像头支持,可任意连接到CSI1或CSI2接口
2)增加ffmpeg支持,提供静态库和头文件,支持4K硬解(不支持硬编码)
3)增加命令行mpv播放器,支持4K硬解

  • FriendlyDesktop更新如下:

1) 增加OV13850和和宽动态OV4689摄像头支持,可任意连接到CSI1或CSI2接口
2) 增加chromium-browser浏览器,支持网页1080P硬解播放, 支持WebGL
3)增加ffmpeg支持,提供静态库和头文件,支持4K硬解(不支持硬编码)
4) 修正音量调节Issue
5) 将音频输出通道默认设置为HDMI (可通过/etc/pulse/default.pa修改配置)
6) 优化本地硬解播放器,与本地mp4文件关联,双击本地视频默认会启动本地硬解播放器播放(仅支持mp4文件)
7) 为NEO4自动启用 swap 分区
8) 修正 hostapd 相关的issue
9) 调整DPMS设置,默认关闭自动休眠

  • Lubuntu更新如下:

1) 增加OV13850和宽动态OV4689摄像头支持,可任意连接到CSI1或CSI2接口
2) 增加chromium-browser浏览器,支持网页1080P硬解播放, 支持WebGL
3) 将音频输出通道默认设置为HDMI(可通过/etc/asound.conf修改配置)
4) 优化本地硬解播放器,与本地mp4文件关联,双击本地视频默认会启动本地硬解播放器播放(仅支持mp4文件)
5) 修正前一版本中存在的一些关于软件包报错的issue
6) 调整DPMS设置,默认关闭自动休眠

20.9 日期 2018-11-12

  • Android 8.1更新如下:

1) 增加USB-C显示器的支持
2) 增加4G网络的支持,支持模块的型号为:Quectel EC20
3) 增加Android硬件访问库FriendlyThing,用于在Android下编程访问各种硬件资源,比如Uart, SPI, I2C, GPIO等
4) 优化内核配置提升PCIe性能,连接NVME SSD会有较大幅度的性能提升
5) 集成Google Play应用商店
6) 改进摄像头的底层支持,使之能自动适应竖屏(HD702E)和横屏(HDMI)
7) 修复Android8下接NVME SSD时分区表异常以及Android8无法启动的问题

  • Android 7.1更新如下:

1) 增加4G网络的支持,支持模块的型号为:Quectel EC20
2) 增加Android硬件访问库FriendlyThing,用于在Android下编程访问各种硬件资源,比如Uart, SPI, I2C, GPIO等
3) 优化内核配置提升PCIe性能,连接NVME SSD会有较大幅度的性能提升
4) 改进摄像头的底层支持,使之能自动适应竖屏(HD702E)和横屏(HDMI)
5) 修复Android8下接NVME SSD时分区表异常以及Android8无法启动的问题

  • FriendlyCore和FriendlyDesktop更新如下:

1) 增加OV13850摄像头的支持,提供支持ISP的gsteamer插件
2) 增加WiringPi的支持,用于C语言编程访问GPIO等硬件资源
3) 增加WiringPi-Python的支持,用于Python编程访问GPIO等硬件资源
4) 优化内核配置提升PCIe性能,连接NVME SSD会有较大幅度的性能提升

20.10 日期 2018-09-21

  • 增加一款eDP屏的支持
  • Linux启用了PCI-E转Sata 功能 (AHCI SATA support)
  • Linux下的SquashFS启用了LZO/XZ/ZSTD压缩支持

20.11 日期 2018-09-05

  • 增加新OS: Android 8.1, 主要特性如下:

1) 支持同时接2个CAM1320 (OV13850),可选择切换前后摄像头使用
2) 支持USB摄像头 (1路, 不能与CAM1320同时使用)
3) 支持AndroidNN GPU 加速方案,可为采用AndroidNN API开发的 AI 相关应用提供通用加速支持
4) 集成了Rockchip官方提供的Tensorflow Lite物品识别Demo: TfLiteCameraDemo (启动前须先连接CAM1320或USB摄像头)
5) 集成Lightning为缺省浏览器应用 (注:Android官方缺省不提供Browser应用)
6) 支持RC-100红外遥控器,支持下拉通知栏、截屏
7) 支持Android全盘加密功能,system分区已启用Verity特性,使用adb时,可通过adb root; adb disable-verity命令禁止Verity
8) 支持MTP功能,在连接Type-C后,可进入Settings -> Connected devices -> USB 选择相应功能
9) 内核版本升级到 4.4.126
10) 更新AOSP源码到版本 android-8.1.0_r41,并更新8月份安全补丁

  • FriendlyCore 增加Qt双摄像头示例程序:示例位于/opt/dual-camera目录,通过run.sh运行 (启动前须先连接两个USB摄像头,建议使用罗技C270或罗技C922摄像头)
  • FriendlyDesktop 默认设置HDMI分辨率为 1080P

20.12 2018-08-20

1) 带X桌面 LXDE,基于64位Ubuntu 18.04系统构建,支持OpenGL ES加速,支持硬解播放
2) 支持SD卡启动运行,支持TF卡刷机或Type-C刷机
3) 完全保留FriendlyCore 18.04 for RK3399的特性,集成带GPU和VPU加速的Qt 5.10.0
4) 内置开源硬解的4K视频播放器 QtVideoPlayer(Menu->Sound & Video->Qt5-VideoPlayer)
5) 内置 QtCreator IDE,Arduino 和 Scratch等流行开发和学习工具,开箱即用
6) 支持双屏异显 (可选择eDP/DP/HDMI 任意两路同时输出)
7) 支持eDP电容触摸屏 (HD702E)
8) 支持屏幕旋转 (仅限于eDP)
9) 支持AP6356S无线模块 (802.11 a/b/g/n/AC,BLE4.0)
10) 支持升兆以太网即插即用
11) 支持 OpenCV 3.4 一键安装 (详见https://github.com/friendlyarm/install-opencv-on-friendlycore)
12) 内置gcc版本:7.3.0
13) 内核版本:4.4.138
附下载链接:http://dl.friendlyarm.com/nanopct4

20.13 2018-08-02

  • 增加可以直接从SD卡启动的FriendlyCore和Lubuntu固件

20.14 2018-07-28

  • 修正FriendlyCore中的一处可能会影响CPU降频的问题

20.15 2018-07-27

  • Android增加UART4支持并集成了串口demo,内核增加常见USB串口支持

20.16 2018-07-19

1) 基于最新版本的 Ubuntu 18.04 构建
2) 集成Qt 5.10.0,支持OpenGL ES加速,支持硬解播放,支持KMS双屏异显和WebGL和VNC远程控制
3) 集成 Xorg最小系统,以最轻量的方式运行X11应用
4) 集成带VPU加速的Gstreamer 1.0 多媒体框架
5) 支持7寸电容屏HD702
6) 5G WIFI 和 蓝牙4.0

  • 内核修复连接HDMI 2.0设备时的core dump问题
  • Linux内核合并了原厂release-4.4的更新,版本为4.4.132
  • EFlasher更新: 增加eMMC备份与还原功能

20.17 2018-06-20

  • Android 支持HDMI与LCD屏幕旋转
  • Android 增加 摇控器支持
  • Lubuntu 内核默认启用 UART4,应用程序可通过设备名 ttyS4 访问
  • 改进了 HDMI 与 eDP屏的用户体验