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

By Toradex秦海

1). 简介

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


本文所演示的平台来自于Toradex Apalis iMX8 ARM嵌入式平台,这是一个基于NXP iMX8QM ARM处理器,支持Cortex-A72+A53和Coretex-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,增加chromium和qtwebengine支持

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

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

+ACCEPT_FSL_EULA = "1"

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


./ 修改image和Qt5 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 \

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


./ 编译image和SDK

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

# 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). 运行效果如下图,可见中文也可以正常显示


c). 当chromium运行时查看了下CPU占用率,大概是在40% - 180% 这个区间动态变化,iMX8包含6个Cortex-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). 运行效果如下图,中文也可以正常显示


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


6). 总结

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容