原创 NXP iMX8基于嵌入式Linux部署网络浏览器

2020-12-11 17:21 1075 7 3 分类: MCU/ 嵌入式

By Toradex秦海

1). 简介

随着嵌入式设备的发展,网络通信在应用中越来越广泛,而在客户端,就需要可以方便访问网络服务的浏览器配置,本文就基于NXP iMX8平台演示如何在嵌入式Linux BSP中集成网络浏览器,包括Chromium浏览器和基于Qtwebenine的示例浏览器quicknanobrowser

 

本文所演示的平台来自于Toradex Apalis iMX8 ARM嵌入式平台,这是一个基于NXP iMX8QM ARM处理器,支持Cortex-A72+A53Coretex-M4架构的计算机模块平台。

 

 

2. 准备

a). Apalis iMX8QM 4GB WB IT ARM核心版配合Ioxra 载板,连接调试串口UART1(载板X22)到开发主机方便调试。

 

b). 载板连接HDMI显示器和网络用于显示和联网,USB鼠标键盘用于操作浏览器。

 

 

3). Apalis iMX8 Ycoto Linux 编译部署以及配置

a). Apalis iMX8 Ycoto Linux 通过Ycoto/Openembedded 框架编译,具体的配置方法请参考这里,参考如下修改后编译Reference-Multimedia image镜像

./ iMX8 Ycoto layer 中默认没有包含浏览器的相关layer,因此首先需要通过下面修改添加相关layer

-------------------------------

### add mata-browser

$ git clone https://github.com/OSSystems/meta-browser.git

### add meta-clang

$ git clone -b dunfell https://github.com/kraj/meta-clang.git

### add meta-python2

$ git clone -b dunfell https://github.com/YoeDistro/meta-python2.git

 

### modify build/conf/bblayer.conf to add above extra layers

--- a/build/conf/bblayers.conf   

+++ b/build/conf/bblayers.conf   

@@ -24,6 +24,9 @@

   ${TOPDIR}/../layers/meta-openembedded/meta-python \

   ${TOPDIR}/../layers/meta-freescale-distro \

   ${TOPDIR}/../layers/meta-toradex-demos \

+  ${TOPDIR}/../layers/meta-python2 \

+  ${TOPDIR}/../layers/meta-clang \

+  ${TOPDIR}/../layers/meta-browser \

   ${TOPDIR}/../layers/meta-qt5 \

   \

   \

-------------------------------

 

./ 修改 local.conf,增加chromiumqtwebengine支持

-------------------------------

+IMAGE_INSTALL_append = " chromium-ozone-wayland qtwebengine qtwebengine-dev"

+ACCEPT_FSL_EULA = "1"

-------------------------------

 

./ 修改imageQt5 SDK 文件

-------------------------------

// tdx-reference-multimedia-image.bb文件,增加Qt5 SDK 和中文字体支持

--- a/layers/meta-toradex-demos/recipes-images/images/tdx-reference-multimedia-image.bb

+++ b/layers/meta-toradex-demos/recipes-images/images/tdx-reference-multimedia-image.bb

@@ -3,6 +3,8 @@

 SUMMARY = "Toradex Embedded Linux Reference Multimedia Image"

 DESCRIPTION = "Image for BSP verification with QT and multimedia features"

 

+inherit populate_sdk_qt5

+

 #Prefix to the resulting deployable tarball name

 export IMAGE_BASENAME = "Reference-Multimedia-Image"

 

@@ -14,6 +16,9 @@

                                                        '', d), d)} \

 "

 

+# add chinese fonts

+FONT_CHINESE = "ttf-droid-sans ttf-droid-sans-fallback ttf-droid-sans-mono ttf-droid-serif freetype"

+

 APP_LAUNCH_WAYLAND ?= "wayland-qtdemo-launch-cinematicexperience"

 APP_LAUNCH_X11 ?= "x-window-qtcinematicexperience"

 

@@ -33,6 +38,8 @@

     packagegroup-tdx-graphical \

     packagegroup-tdx-qt5 \

     \

+    ${FONT_CHINESE} \

+    \

     bash \

     coreutils \

     less \

 

// tdx-reference-minimal-image.bb文件,增加中文语言支持

### modify layers/meta-toradex-demos/recipes-images/images/tdx-reference-minimal-image.bb

#IMAGE_LINGUAS = "en-us"

# add chinese font support

IMAGE_LINGUAS = "en-us zh-cn"

 

// packagegroup-qt5-toolchain-target.bb文件,增加Qt5 SDK qtwebengine支持

--- a/layers/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb

+++ b/layers/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb

@@ -93,6 +93,9 @@

     qtwebchannel-dev \

     qtwebchannel-mkspecs \

     ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebchannel-qmlplugins', '', d)} \

+    qtwebengine-dev \

+    qtwebengine-mkspecs \

+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebengine-qmlplugins', '', d)} \

     qtxmlpatterns-dev \

     qtxmlpatterns-mkspecs \

     qttranslations-qtxmlpatterns \

-------------------------------

 

./ 编译imageSDK

-------------------------------

# compile Reference-Multimedia image

$ bitbake bitbake tdx-reference-multimedia-image

 

# compile SDK

bitbake tdx-reference-multimedia-image -c populate_sdk

-------------------------------

 

b). Ycoto Linux image部署

参考这里通过Toradex Easy installer将上面编译好的image更新部署到模块,版本为目前最新的Ycoto Linux V5.1

 

c). 显示配置

./ HDMI默认即可正常显示,如果有显示器EDID读取问题不能成功显示,可以通过下面方法通过软件firmware方式手动加载EDID,更多关于显示的配置请参考这里

-------------------------------

# cp EDID binary file to rootfs

$ mkdir /lib/firmware/edid

$ cp 1920x1080.bin /lib/firmware/edid

 

# set uboot kernel command line

# setenv defargs ‘pci=nomsi drm.edid_firmware=HDMI-A-1:edid/1920x1080.bin’

# saveenv && reset

-------------------------------

 

d). Qt5 SDK安装配置

请参考这里的说明安装上面编译好的SDK,以及配置Qtcreator交叉编译环境

 

 

4). Chromium 浏览器应用测试

a). 通过下面命令启动chromium 应用,添加 ”--in-process-gpu” 参数使应用可以在wayland环境下正常运行

-------------------------------

root@apalis-imx8:~# chromium --no-sandbox --in-process-gpu

-------------------------------

 

b). 运行效果如下图,可见中文也可以正常显示

image001.png

 

c). chromium运行时查看了下CPU占用率,大概是在40% - 180% 这个区间动态变化,iMX8包含6Cortex-A CPU核心,因此最多可以到600%的使用率。

 

5). QT Webengine 示例浏览器quicknanobrowser测试

Quick Nano Brower 示例程序是Qt5自带的 Webengine示例程序,这是一个基于Qt Quick Webengine开发的精简浏览器示例,本文使用版本为和Qt library匹配的5.14.2版本。

a). 使用上面配置好交叉编译环境进行编译,将编译生成的可执行文件 quicknanobrower 复制到Apalis iMX8模块 “/home/root” 目录下

 

b). 配置简单测试启动脚本

./ test.sh,程序启动脚本文件

---------------------------------------------------

!/bin/sh

 

export QT_QPA_PLATFORM=wayland-egl

/home/root/quicknanobrowser --no-sandbox &

---------------------------------------------------

 

c). 运行quicknanobrowser应用

---------------------------------------------------

$ /home/root/test.sh

---------------------------------------------------

 

d). 运行效果如下图,中文也可以正常显示

image003.png

 

c). chromium运行时查看了下CPU占用率,大概是在50% - 200% 这个区间动态变化。

 

6). 总结

本文基于NXP iMX8嵌入式平台在嵌入式linux系统下测试网络浏览器部署。


作者: hai.qin_651820742, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1864768.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
相关推荐阅读
hai.qin_651820742 2021-03-16 17:26
在iMX8上使用MIPI-CSI摄像头
By Toradex胡珊逢NXP i.MX8QM/QP处理器能够支持2路4 lane的MIPI CSI-2输入,每路最高为4K@30分辨率。文章接下来将使用Apalis iMX8QM计算机模块配合e-...
hai.qin_651820742 2021-03-11 14:23
NXP iMX8基于eIQ框架测试Machine Learning
By Toradex秦海1). 简介随着嵌入式处理器性能的提升甚至一些嵌入式处理器已经开始集成针对人工智能和机器学习的硬件加速单元NPU,机器学习应用在嵌入式边缘设备的应用也慢慢展现。为此,...
hai.qin_651820742 2021-03-02 12:11
NXP iMX8集成SELinux支持
By Toradex胡珊逢 SELinux 是 Security-Enhanced Linux 的简称,它是为 Linux 提供安全子系统的内核模块。其主要作用是控制进程对资源的访问,在基...
hai.qin_651820742 2021-01-29 16:54
嵌入式 Linux 系统 VPN 应用
By Toradex胡珊逢联网需求在各种嵌入式应用中正开始变得越来越普遍,随之而来就是数据传输的安全挑战。VPN是应对该挑战的有效措施。除此之外,VPN 还能够穿透防火墙或者 NA...
hai.qin_651820742 2020-12-31 12:08
NXP iMX8X基于Docker测试CAN接口通讯
By Toradex秦海1). 简介随着嵌入式设备的发展,由于部署更灵活应用方便等特性,原本在网络应用中广泛使用的docker技术也慢慢在一些嵌入式设备中应用,因此本文就基于嵌入式ARM平台...
hai.qin_651820742 2020-12-25 17:38
CAN FD 在 iMX8 计算机模块上的应用
​By Toradex胡珊逢CAN 总线在工业、汽车行业具有非常广泛的应用,为网络中设备之间点对点通信提供一种可靠、稳定、经济的方案。伴随网络中设备节点的增加,由于 1Mbps&n...
广告
我要评论
0
7
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /5 下一条