By Toradex 胡珊逢
簡(jiǎn)介
高清多媒體奶段,甚至是 4K 視頻不僅在消費(fèi)領(lǐng)域有著旺盛的需求,在行業(yè)領(lǐng)域同樣也獲得廣泛的關(guān)注剥纷。NXP 最新的IMX8 處理器不僅配有強(qiáng)勁的 CPU和GPU痹籍,還對(duì)多媒體應(yīng)用提供了完善的解決方案,如硬件解碼支持H.265 HEVC Main Profile 2160p60 Level 5.1晦鞋。下面我們將介紹如何從Yocto開(kāi)始構(gòu)建包含Gstreamer 的BSP蹲缠、使用Toradex Easy Installer 安裝系統(tǒng)棺克、配置LVDS顯示和播放多媒體文件。
本文演示所使用的ARM平臺(tái)來(lái)自Toradex基于NXP iMX8QM SoC平臺(tái)的Apalis iMX8QM ARM核心板线定。
NXP 的iMX8 處理器有其出色的CPU和GPU性能吸引了從汽車(chē)娜谊、工業(yè)自動(dòng)化到醫(yī)療、IoT斤讥、消費(fèi)類電子等諸多領(lǐng)域的注意纱皆。該處理器為創(chuàng)建優(yōu)秀的人機(jī)交互方案提供了一個(gè)新的平臺(tái)。本文接下來(lái)將介紹如何在 Colibri iMX8 平臺(tái)上進(jìn)行廣受歡迎的GUI方案Qt的移植和開(kāi)發(fā)芭商。
Qt編譯
交叉編譯Qt是一項(xiàng)較為繁重的任務(wù)派草,特別是從Qt源碼直接編譯,我們?cè)?jīng)撰寫(xiě)過(guò)一篇文章來(lái)闡述如何完成這一操作铛楣。但是本文會(huì)采用Yocto/OpenEmbedded框架來(lái)完成近迁。Yocto/OpenEmbedded能夠讓用戶免受交叉編譯過(guò)程中各類軟件包的依賴關(guān)系,并利用現(xiàn)有的OpenEmbedded layer和recipes簸州,方便集成第三方軟件鉴竭,例如Qt等。
Toradex為其模塊提供完善的Yocto/OpenEmbedded配置文件岸浑,用戶下載后能夠直接使用搏存。自Toradex的 V3.0 BSP 開(kāi)始,BSP基于Poky助琐,這是一個(gè)相對(duì)精簡(jiǎn)版本祭埂,因此用戶需要根據(jù)項(xiàng)目需求添加所需組件,如常見(jiàn)的Qt兵钮、Gstreamer等蛆橡。
首先根據(jù)該文章的介紹,下載適用于Colibri iMX8 的Yocto環(huán)境掘譬,BSP 3.0泰演,thud分支。
在Yocto中的layers/meta-toradex-demos/recipes-images/images目錄添加新的bb文件如qt5-eglfs-wayland.bb 葱轩,包含Qt的BSP從該文件生成睦焕。這里console-tdx-image.bb作為基礎(chǔ),向里面添加Qt靴拱、Gstreamer組件垃喊,以及中文字體。當(dāng)然還可以添加你所需要的軟件袜炕,例如時(shí)區(qū)信息tzdata等本谜。
在layers/meta-toradex-demos/recipes-qt/qt5/packagegroup-qt5.bb中移除qtwebkit。移除SDK中的qtwebkit qt3d偎窘,創(chuàng)建layers/meta-qt5/recipes-qt/packagegroups中添加packagegroup-qt5-toolchain-target.bbappend文件:
------------------------------
#remove qtwebkit qt3d
RDEPENDS_${PN}_remove = "qtwebkit qtwebkit-dev qtwebkit-mkspecs qtwebkit-qmlplugins qt3d qt3d-dev qt3d-mkspecs qt3d-qmlplugins"
------------------------------
由于目前thud版本Yocto在編譯Qt5.11時(shí)會(huì)遇到上述組件編譯錯(cuò)誤乌助,如果用戶不使用這些組件溜在,對(duì)其則不產(chǎn)生影響。后續(xù)我們將會(huì)完善編譯過(guò)程他托。
接下來(lái)在build/conf/local.conf 的結(jié)尾添加以下內(nèi)容:
------------------------------
IMAGE_INSTALL_append = " qtwayland rsync"
PACKAGECONFIG_append_pn-qtbase = " libinput gles2 freetype"
PACKAGECONFIG_append_pn-qtwayland = " wayland-egl"
DISTRO_FEATURES_remove = " x11"
------------------------------
最后執(zhí)行編譯掖肋,運(yùn)行下面命令
------------------------------
MACHINE=colibri-imx8x bitbake qt5-eglfs-wayland
------------------------------
整個(gè)編譯過(guò)程會(huì)持續(xù)數(shù)個(gè)小時(shí),最后在build/deploy目錄的images/colibri-imx8x和sdk文件夾中會(huì)生成BSP安裝包和SDK工具赏参。也可以從我們的FTP服務(wù)器上下載相應(yīng)的文件志笼。
BSP安裝
Toradex的iMX8 模塊均支持Toradex Easy Installer 安裝BSP,用戶可以參考該網(wǎng)頁(yè)說(shuō)明進(jìn)行操作登刺。
Qt SDK配置
Qt5.11 的SDK配置請(qǐng)參考我們開(kāi)發(fā)者中心的說(shuō)明籽腕。
Qt 應(yīng)用開(kāi)發(fā)
我們將使用Qt官方演示touch-interaction為例進(jìn)行說(shuō)明。按照上面說(shuō)明正確完成SDK配置后纸俭,可以直接編譯并通過(guò)部署該demo。QtCreator的應(yīng)用部署需要使用rsync南窗,因此我們?cè)谥暗膌ocal.conf配置將其添加進(jìn)來(lái)揍很。
Cobliri iMX8 V3.0 BSP采用了Wayland作為圖形化后端,Qt的運(yùn)行也將基于wayland万伤。對(duì)于電阻觸摸屏用戶窒悔,在運(yùn)行的時(shí)需要先校準(zhǔn)觸摸屏。運(yùn)行 weston-touch-calibrator敌买,獲取觸摸設(shè)備路徑简珠。
------------------------------
root@colibri-imx8x:~/touchinteraction# weston-touch-calibrator?
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
device "/sys/devices/platform/5a800000.i2c/i2c-16/16-002c/input/input1/event1" - head "DPI-1"
------------------------------
校準(zhǔn)觸摸屏
------------------------------
root@colibri-imx8x:~# weston-touch-calibrator /sys/devices/platform/5a800000.i2c/i2c-16/16-002c/input/input1/event1
------------------------------
依次點(diǎn)擊屏幕上的校準(zhǔn)坐標(biāo)。
對(duì)于電容觸摸屏用戶虹钮,則無(wú)需校準(zhǔn)聋庵,可以直接使用。當(dāng)然前提是觸摸屏的驅(qū)動(dòng)能夠正常工作芙粱。
運(yùn)行Qt應(yīng)用
------------------------------
root@colibri-imx8x:~/touchinteraction# export QT_QPA_PLATFORM=wayland
root@colibri-imx8x:~/touchinteraction# ./touchinteraction
------------------------------
?
總結(jié)
Qt和iMX8的組合為優(yōu)秀的用戶交互體驗(yàn)提供了一個(gè)良好的實(shí)現(xiàn)平臺(tái)祭玉。Toradex致力于為用戶提供易于使用的iMX8平臺(tái),無(wú)論是穩(wěn)定春畔、可靠的硬件模塊脱货,還是豐富的軟件工具,幫助用于快速快發(fā)Qt應(yīng)用律姨。上面簡(jiǎn)要地介紹了在iMX8上Qt的移植和開(kāi)發(fā)振峻,該方法同樣也適用于Toradex其他的iMX8產(chǎn)品,如最高端的i.MX8QuadMax择份。