Difference between revisions of "APITestPage"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
Line 1: Line 1:
[[NanoPi M4|English]]
+
===开发Qt程序===
==介绍==
+
[[File:NanoPi M4-01B.jpg|thumb|Overview]]
+
[[File:NanoPi M4-A01.jpg|thumb|Front]]
+
[[File:NanoPi M4-B01.jpg|thumb|Back]]
+
*NanoPi M4是基于RK3399 SoC设计的一款尺寸和接口与树莓派B3+兼容的嵌入式开发板。它的尺寸只有85x56mm,接口丰富, 布局紧凑, 非常适合二次开发, 并方便嵌入到最终产品中去。
+
*NanoPi M4除了有4个USB3.0 A型主口, 一个千兆以太网口, 一个HDMI 2.0 A型口, 一个3.5mm耳机输出, 和一个Type-C等标准接口外, 还板载2.4G & 5G双频WiFi蓝牙模组, 和丰富的扩展接口,包括双MIPI-CSI(其中一路可做DSI), PCIex2, USB2.0, eMMC Socket, I2C, UART,SPI, 八通道I2S,PWM,RTC, GPIO等。M4没有板载eMMC, 默认通过SD启动系统, 但也可通过eMMC Socket外扩eMMC, 实现eMMC启动。
+
*NanoPi M4有4GB LPDDR3和2GB DDR3两个版本。支持运行Android 7.1和Ubuntu Desktop 18.04两种系统,它们均带有GPU和VPU加速处理。
+
  
==硬件特性==
+
FriendlyELEC为RK3399平台移植的 Qt 5.10.0 支持以下显示设备插件:KMS、EGLFS和XCB,这三种插件均支持GPU硬件加速的OpenGL ES 2.0,只是调用方式不同,描述如下:<br>
* 主控芯片: Rockchip RK3399
+
* KMS – 使用Linux内核的DRM显示接口来渲染界面<br>
** CPU: big.LITTLE大小核架构,双Cortex-A72大核(up to 2.0GHz)+四Cortex-A53小核结构(up to 1.5GHz)
+
* EGLFS – 使用OpenGL ES接口来渲染界面<br>
** GPU: Mali-T864 GPU,支持OpenGL ES1.1/2.0/3.0/3.1, OpenVG1.1, OpenCL, DX11, 支持AFBC(帧缓冲压缩)
+
* XCB – 在X11服务器上运行,并集成到X11窗口环境<br>
** VPU: 支持4K VP9 and 4K 10bits H265/H264 视频解码,高达60fps, 双VOP显示等视频编解码功能
+
<br>
* 电源管理单元: RK808-D PMIC, 搭配独立DC/DC, 支持动态调压, 软件关机, 按键开机, RTC唤醒, 睡眠唤醒等功能
+
三种插件所支持的Qt特性会有所不同,请根据你的需求来选择: <br>
* 内存: 双通道4GB LPDDR3-1866, 或 双通道2GB DDR3-1866
+
* Flash: 支持扩展eMMC模块
+
* 有线网络: 原生千兆以太网
+
* 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
+
** LCD Interface: 一个4线MIPI-DSI
+
* Audio Out: 3.5mm 双通道耳机接口, 或者通过HDMI输出
+
* Audio In: 2.54mm排针形式(默认不焊)的麦克风接口
+
* USB 3.0: 4个USB 3.0 Host A型接口
+
* USB Type-C: 支持USB2.0 OTG 和 5V电源输入
+
* 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 8通道 I2S
+
* 24Pin 扩展接口:
+
** 2个独立的原生USB 2.0 Host
+
** PCIe x2
+
** PWM x1, PowerKey
+
* 调试串口: 4 Pin 2.54mm 调试串口, 3V电平, 波特率为1500000
+
* LED: 1 x power LED and 1 x GPIO Controled LED
+
* RTC电池座子: 2 Pin 1.27/1.25mm RTC备份电池接口
+
* 供电电源: DC 5V/3A
+
* PCB: 8 Layer, 85 mm x 56 mm
+
* 环境工作温度: 0℃ to 80℃
+
 
+
==接口布局和尺寸==
+
===接口布局===
+
[[File:NanoPi M4-4GB-1807-IF-01.jpg |thumb|600px|NanoPi M4 Layout]]
+
[[File:NanoPi M4-2GB-1807-IF-01.jpg |thumb|600px|NanoPi M4 Layout]]
+
* '''40 Pin GPIO1 引脚定义'''
+
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|'''Pin#''' || '''Assignment'''          ||'''Pin#'''  || '''Assignment'''   
+
  | 插件名称
 +
  | OpenGL ES
 +
  | QtWebEngine
 +
  | QtMultimedia
 +
  | 视频硬解播放
 +
  | 双屏异显
 
|-
 
|-
|1    || VCC3V3_SYS  ||2    || VDD_5V
+
  | KMS
 +
  | <b>Yes</b>
 +
  | No
 +
  | <b>Yes</b>
 +
  | No
 +
  | <b>Yes</b>
 
|-
 
|-
|3    || I2C2_SDA(3V)      ||4    || VDD_5V
+
   | EGLFS
|-
+
   | <b>Yes</b>
|5    || I2C2_SCL(3V)      ||6    || GND
+
   | No
|-
+
   | <b>Yes</b>
|7    || GPIO1_A0(3V)      ||8    || GPIO4_C1/I2C3_SCL(3V)
+
   | No
|-
+
   | No
|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/UARM4_TX(3V)    ||20    || GND
+
|-
+
|21   || SPI1_RXD/UARM4_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   || I2S0_LRCK_RX(1.8V)      ||30    || GND
+
|-
+
|31  ||I2S0_LRCK_TX(1.8V)    ||32    || I2S_CLK(1.8V)
+
|-
+
|33  || I2S0_SCLK(1.8V)      ||34    || GND
+
|-
+
|35  || I2S0_SDI0(1.8V)    ||36    || I2S0_SDO0(1.8V)
+
|-
+
|37  || I2S0_SDI1SDO3(1.8V)    ||38    || I2S0_SDI2SDO2(1.8V)
+
 
|-
 
|-
|39   || GND          ||40    || I2S0_SDI3SDO1(1.8V)
+
  | XCB
 +
   | <b>Yes</b>
 +
  | <b>Yes</b>
 +
  | <b>Yes</b>
 +
  | <b>Yes</b>
 +
  | <b>Yes</b>
 
|}
 
|}
 
+
建议使用 KMS或XCB 插件。<br><br>
* '''24 Pin GPIO2 引脚定义'''
+
为了方便用户测试,FriendlyCore平台提供了4个脚本文件用于设置Qt环境变量,分别为:
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|'''Pin#''' || '''Assignment'''          ||'''Pin#'''  || '''Assignment'''   
+
|脚本文件名||作用
 
|-
 
|-
|1    || VCC5V0_SYS  ||2    || VCC5V0_SYS
+
|/usr/bin/setqt5env-kms||设置kms插件所需要的环境变量
 
|-
 
|-
|3    || PCIE_RX1_P      ||4    || PCIE_TX1P
+
|/usr/bin/setqt5env-eglfs||设置eglfs插件所需要的环境变量 
 
|-  
 
|-  
|5    || PCIE_RX1_N      ||6    || PCIE_TX1N
+
|/usr/bin/setqt5env-xcb||设置xcb插件所需要的环境变量
|-
+
|7    || GND      ||8    || GND
+
|-
+
|9    || PCIE_RX0_P          ||10    || PCIE_TX0P
+
|-
+
|11  || PCIE_RX0_N      ||12    || PCIE_TX0N
+
|-
+
|13  || GND      ||14    || GND
+
|-
+
|15  || PCIE_REF_CLKP      ||16    || HOST0_DM
+
|-
+
|17  || PCIE_REF_CLKN ||18    || HOST0_DP
+
|-
+
|19  || GND    ||20    || GND
+
|-
+
|21  || PWR_KEY    ||22    || HOST1_DM
+
|-
+
|23  || GPIO4_C6/PWM1(3V)    ||24    || HOST1_DP
+
|}
+
 
+
* '''MIPI-CSI接口引脚定义'''
+
:: 0.5mm FPC 连接器
+
:: MIPI-CSI2也可作为MIPI-DSI接口连接LCD显示屏
+
::{| class="wikitable"
+
|-
+
|'''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
+
|/usr/bin/setqt5env-nogui||仅供无界面的Qt程序使用
 
|}
 
|}
 +
setqt5env-* 脚本的用法,例如设置KMS:
 +
<syntaxhighlight lang="bash">
 +
. setqt5env-kms
 +
./apps
 +
</syntaxhighlight>
 +
(注: .与字母s之间有个空格)
  
* '''eMMC Socket接口引脚定义'''
+
====Qt开发环境搭建====
::{| class="wikitable"
+
FriendlyELEC为RK3399平台提供了两种交叉编译Qt程序的方法:
|-
+
* 方法1:使用Docker容器,详细可参考github页面:http://github.com/friendlyarm/friendlyelec-ubuntu18-docker
|'''Pin#''' || '''Assignment'''          ||'''Pin#'''  || '''Assignment'''   
+
* 方法2: 搭建本地交叉编译环境,本地需要安装 Ubuntu 18.04 64位系统,其环境搭建方法请参考:[[How to Build and Install Qt Application for FriendlyELEC Boards/zh]]
|-
+
|1    || EMMC_D0  ||2    || EMMC_D1
+
|-
+
|3    || EMMC_D2    ||4    || EMMC_D3
+
|-
+
|5    || EMMC_D4      ||6    || EMMC_D5
+
|-
+
|7    || EMMC_D6    ||8    || EMMC_D7
+
|-
+
|9    || EMMC_STRB          ||10    || GND
+
|-
+
|11  || EMMC_CMD      ||12    || EMMC_CLKO
+
|-
+
|13  || N/C    ||14    || GND
+
|-
+
|15  || N/C    ||16    || VCC1V8_S3
+
|-
+
|17  || eMMC_RST  ||18    || VCC3V3_S3
+
|-
+
|19  || GND    ||20    || GND
+
|}
+
 
+
* '''调试串口引脚定义'''
+
:: 3V电平, 波特率1500000bps
+
::{| class="wikitable"
+
|-
+
|'''Pin#''' ||'''Assignment''' ||  '''Description ''' 
+
|-
+
|1    || GND                || 0V
+
|-
+
|2    || VCC5V0_SYS          || 5V power output
+
|-
+
|3    || UART2DBG_TX        || output
+
|-
+
|4    || UART2DBG_RX        || intput
+
|}
+
  
*'''USB接口'''
+
====Qt示例====
::USB 3.0 接口具有2A过流保护功能.
+
FriendlyCore系统内置了几个很有特色的Qt演示程序,方便测试Qt5的特性,如下所示:
 +
* <b>Qt QML示例:CinematicExperience</b>
 +
CinematicExperience是一个用Qt QML实现的专辑列表界面。<br />
 +
例子演示了Qt QML中的界面动态转换、粒子模拟和着色器特效,所以这个示例非常能体现硬件性能与软件优化的差异,在RK3399平台上非常流畅。<br />
 +
CinematicExperience的运行命令:<br />
 +
<syntaxhighlight lang="bash">
 +
cd /opt/Qt5_CinematicExperience
 +
./run.sh
 +
</syntaxhighlight>
  
*'''RTC'''
+
运行截图:<br />
::我们实测的RTC备份电流为27uA.
+
[[File:Cinematicsexperience.jpg|frameless|480px]]<br />
::连接器型号: Molex 53398-0271
+
:'''其他说明'''
+
::#只能从Type-C或40Pin GPIO接口的第2和第4脚给板子供电, 电压范围4.7~5.5V
+
::#板子原理图: [http://wiki.friendlyarm.com/wiki/images/d/dd/NanoPi-M4-2GB-1807-Schematic.pdf NanoPi-M4-2GB-1807-Schematic.pdf] [http://wiki.friendlyarm.com/wiki/images/7/7a/NanoPi-M4-4GB-1807-Schematic.pdf NanoPi-M4-4GB-1807-Schematic.pdf]
+
  
===尺寸===
+
* <b>QQt WebEngine示例:网页浏览器</b>
[[File:NanoPi M4_1807_Drawing.png|frameless|800px|NanoPi M4 Dimensions]]
+
Qt WebEngine使用了Chromium作为渲染引挚,对HTML5支持完美。<br />
 +
这里示例展示的网页浏览器是 Qt5 自带的Demo,示例运行命令:<br />
 +
<syntaxhighlight lang="bash">
 +
cd /opt/qt5-brower
 +
./run.sh
 +
</syntaxhighlight>
  
::PCB dxf文件, 仅供做产品时结构设计使用: [http://wiki.friendlyarm.com/wiki/images/e/e4/NanoPi-M4-1807_Drawing%28dxf%29.zip NanoPi-M4-1807-Drawing(dxf).zip]
+
运行截图:<br />
 +
[[File:qt5-brower.jpg|frameless|480px]]<br />
  
==快速入门==
+
注:Qt WebEngine在FriendlyCore平台上需要使用Xcb插件来运行。
===准备工作===
+
要开启你的NanoPi-M4,请先准备好以下硬件:
+
* NanoPi-M4主板
+
* Type-C数据线
+
* TF卡: Class10或以上的8GB microSD卡
+
* USB转串口适配器(可选,用于调试或PC上进行操作)
+
* 一个5V/3A或以更大功率的电源适配器
+
* 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
+
* 一套USB键盘鼠标,同时连接更多USB的设备时还需要USB HUB
+
* 一台电脑,需要联网,建议使用<b>Ubuntu 18.04 64位系统</b>
+
  
{{RK3399-BootFromSDCard/zh|NanoPi-M4}}
+
* <b>Qt 双屏异显示例</b>
{{RK3399-DebugPort/zh|NanoPi-M4}}
+
这是一个比较简单的DEMO,演示了在同时连接HDMI和eDP LCD屏的情况下,用Qt实现两个屏幕显示不同的内容:
==FriendlyDesktop系统的使用==
+
<syntaxhighlight lang="bash">
{{FriendlyDesktop-Intro/zh|NanoPi-M4}}
+
cd /opt/qt5-multi-screen-demo
{{FriendlyDesktop-Contents/zh|NanoPi-M4}}
+
./run.sh
{{FriendlyCoreGeneral/zh|NanoPi-M4}}
+
</syntaxhighlight>
{{Lubuntu-RK3399/zh|NanoPi-M4}}
+
运行截图:<br />
{{RK3399-Android7/zh|NanoPi-M4}}
+
[[File:qt5-multi-screen.jpg|frameless|480px]]<br />
{{RK3399-BuildFromSource/zh|NanoPi-M4}}
+
{{RK3399-BurnOS-To-EMMC/zh|NanoPi-M4}}
+
{{RK3399-HWAccess/zh|NanoPi-M4}}
+
  
== 查看瑞芯微原厂资料==
+
* <b>Qt Multimedia: 硬解播放器qt5-player</b>
*[http://opensource.rock-chips.com/images/6/60/Rockchip_RK3399_Datasheet_V1.6-20170301.pdf RK3399 datasheet V1.6]
+
qt5-player播放器已经适配Rockchip的gstreamer插件rkximagesink,支持4K视频的硬解播放,由于rkximagesink插件只支持输出图像到X11窗口,因此 Qt 播放器程序需要使用 XCB 的显示插件来运行。<br />
*[http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf RK3399TRM V1.4]
+
示例运行命令:<br />
 +
先在开发板上执行命令
 +
<syntaxhighlight lang="bash">
 +
cd /opt/qt5-player
 +
./run.sh
 +
</syntaxhighlight>
 +
运行截图:<br />
 +
[[File:qt5-player.gif|frameless|480px]]<br />
  
==原理图、尺寸图==
+
* <b>QQt WebGL示例: nmapper</b>
*原理图:  [http://wiki.friendlyarm.com/wiki/images/d/dd/NanoPi-M4-2GB-1807-Schematic.pdf NanoPi-M4-2GB-1807-Schematic.pdf] [http://wiki.friendlyarm.com/wiki/images/7/7a/NanoPi-M4-4GB-1807-Schematic.pdf NanoPi-M4-4GB-1807-Schematic.pdf]
+
Qt WebGL允许你将一个QML应用显示在其他设备的网页游览器上,这个特性让你做一些远程控制的应用变得很简单。<br />
*尺寸图:[http://wiki.friendlyarm.com/wiki/images/e/e4/NanoPi-M4-1807_Drawing%28dxf%29.zip NanoPi-M4-1807-Drawing(dxf).zip]
+
开发板需要连接网络,在开发版本执行以下命令,即可以WebGL的方式运行Qt程序:<br />
 +
<syntaxhighlight lang="bash">
 +
cd /opt/qt5-nmapper
 +
./run-with-webgl.sh
 +
</syntaxhighlight>
 +
然后在电脑或者手机上打开网页游览器,敲入开发板的IP地址,应该就能看到Qt界面了,如下图所示:<br />
 +
[[File:qtwebgl.gif|frameless|480px]]<br />
  
==更新日志==
+
* <b>Qt VNC示例: 智能家居控制界面</b>
===2018-08-24===
+
Qt VNC允许你将一个应用程序以VNC Server的形式运行,在其他设备上可以使用VNC Client来连接和使用你的Qt程序,支持QtWidgets和QML应用。<br />
首页发布
+
先在开发版本执行以下命令,以webgl的方式运行应用Qt应用:<br />
 +
<syntaxhighlight lang="bash">
 +
cd /opt/qt5-smarthome
 +
./run-with-vnc.sh
 +
</syntaxhighlight>
 +
然后在电脑或者手机打开VNC viewer软件,输入开发板的IP地址加端口号5900,例如开发板的地址是192.168.1.100,就输入192.168.1.100:5900,连接后应该就能看到智能家居控制界面了,如下图所示:<br />
 +
[[File:qt5smarthomevnc.png|frameless|480px]]<br />

Revision as of 01:25, 8 September 2018

1 开发Qt程序

FriendlyELEC为RK3399平台移植的 Qt 5.10.0 支持以下显示设备插件:KMS、EGLFS和XCB,这三种插件均支持GPU硬件加速的OpenGL ES 2.0,只是调用方式不同,描述如下:

  • KMS – 使用Linux内核的DRM显示接口来渲染界面
  • EGLFS – 使用OpenGL ES接口来渲染界面
  • XCB – 在X11服务器上运行,并集成到X11窗口环境


三种插件所支持的Qt特性会有所不同,请根据你的需求来选择:

插件名称 OpenGL ES QtWebEngine QtMultimedia 视频硬解播放 双屏异显
KMS Yes No Yes No Yes
EGLFS Yes No Yes No No
XCB Yes Yes Yes Yes Yes

建议使用 KMS或XCB 插件。

为了方便用户测试,FriendlyCore平台提供了4个脚本文件用于设置Qt环境变量,分别为:

脚本文件名 作用
/usr/bin/setqt5env-kms 设置kms插件所需要的环境变量
/usr/bin/setqt5env-eglfs 设置eglfs插件所需要的环境变量
/usr/bin/setqt5env-xcb 设置xcb插件所需要的环境变量
/usr/bin/setqt5env-nogui 仅供无界面的Qt程序使用

setqt5env-* 脚本的用法,例如设置KMS:

. setqt5env-kms
./apps

(注: .与字母s之间有个空格)

1.1 Qt开发环境搭建

FriendlyELEC为RK3399平台提供了两种交叉编译Qt程序的方法:

1.2 Qt示例

FriendlyCore系统内置了几个很有特色的Qt演示程序,方便测试Qt5的特性,如下所示:

  • Qt QML示例:CinematicExperience

CinematicExperience是一个用Qt QML实现的专辑列表界面。
例子演示了Qt QML中的界面动态转换、粒子模拟和着色器特效,所以这个示例非常能体现硬件性能与软件优化的差异,在RK3399平台上非常流畅。
CinematicExperience的运行命令:

cd /opt/Qt5_CinematicExperience
./run.sh

运行截图:
Cinematicsexperience.jpg

  • QQt WebEngine示例:网页浏览器

Qt WebEngine使用了Chromium作为渲染引挚,对HTML5支持完美。
这里示例展示的网页浏览器是 Qt5 自带的Demo,示例运行命令:

cd /opt/qt5-brower
./run.sh

运行截图:
Qt5-brower.jpg

注:Qt WebEngine在FriendlyCore平台上需要使用Xcb插件来运行。

  • Qt 双屏异显示例

这是一个比较简单的DEMO,演示了在同时连接HDMI和eDP LCD屏的情况下,用Qt实现两个屏幕显示不同的内容:

cd /opt/qt5-multi-screen-demo
./run.sh

运行截图:
Qt5-multi-screen.jpg

  • Qt Multimedia: 硬解播放器qt5-player

qt5-player播放器已经适配Rockchip的gstreamer插件rkximagesink,支持4K视频的硬解播放,由于rkximagesink插件只支持输出图像到X11窗口,因此 Qt 播放器程序需要使用 XCB 的显示插件来运行。
示例运行命令:
先在开发板上执行命令

cd /opt/qt5-player
./run.sh

运行截图:
Qt5-player.gif

  • QQt WebGL示例: nmapper

Qt WebGL允许你将一个QML应用显示在其他设备的网页游览器上,这个特性让你做一些远程控制的应用变得很简单。
开发板需要连接网络,在开发版本执行以下命令,即可以WebGL的方式运行Qt程序:

cd /opt/qt5-nmapper
./run-with-webgl.sh

然后在电脑或者手机上打开网页游览器,敲入开发板的IP地址,应该就能看到Qt界面了,如下图所示:
Qtwebgl.gif

  • Qt VNC示例: 智能家居控制界面

Qt VNC允许你将一个应用程序以VNC Server的形式运行,在其他设备上可以使用VNC Client来连接和使用你的Qt程序,支持QtWidgets和QML应用。
先在开发版本执行以下命令,以webgl的方式运行应用Qt应用:

cd /opt/qt5-smarthome
./run-with-vnc.sh

然后在电脑或者手机打开VNC viewer软件,输入开发板的IP地址加端口号5900,例如开发板的地址是192.168.1.100,就输入192.168.1.100:5900,连接后应该就能看到智能家居控制界面了,如下图所示:
Qt5smarthomevnc.png