在 NXP iMX8 上進(jìn)行 Qt5移植和開(kāi)發(fā)

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择份。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扣孟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缓淹,更是在濱河造成了極大的恐慌哈打,老刑警劉巖塔逃,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異料仗,居然都是意外死亡湾盗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)立轧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)格粪,“玉大人,你說(shuō)我怎么就攤上這事氛改≌饰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵胜卤,是天一觀的道長(zhǎng)疆导。 經(jīng)常有香客問(wèn)我,道長(zhǎng)葛躏,這世上最難降的妖魔是什么澈段? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮舰攒,結(jié)果婚禮上败富,老公的妹妹穿的比我還像新娘。我一直安慰自己摩窃,他們只是感情好兽叮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著猾愿,像睡著了一般鹦聪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匪蟀,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天椎麦,我揣著相機(jī)與錄音,去河邊找鬼材彪。 笑死观挎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的段化。 我是一名探鬼主播嘁捷,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼显熏!你這毒婦竟也來(lái)了雄嚣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缓升,沒(méi)想到半個(gè)月后鼓鲁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡港谊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年骇吭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歧寺。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡燥狰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斜筐,到底是詐尸還是另有隱情龙致,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布顷链,位于F島的核電站目代,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蕴潦。R本人自食惡果不足惜像啼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望潭苞。 院中可真熱鬧,春花似錦真朗、人聲如沸此疹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝗碎。三九已至,卻和暖如春旗扑,著一層夾襖步出監(jiān)牢的瞬間蹦骑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工臀防, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眠菇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓袱衷,卻偏偏與公主長(zhǎng)得像捎废,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子致燥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1登疗、概述 ? Petalinux是Xilinx公司推出的嵌入式Linux開(kāi)發(fā)套件,包括了Linux Kerne...
    WinginCheung閱讀 25,206評(píng)論 1 8
  • 1.下載Qt源碼 Qt源碼下載地址:Index of /archive/qt其他源碼和其他安裝包都是有的。...
    楚狂人_9b20閱讀 2,716評(píng)論 0 0
  • 本文編寫(xiě)時(shí)基于GStreamer v1.11.0版辐益,文中提及所有目錄結(jié)構(gòu)断傲、文件、模塊等信息也均以v1.11.0為標(biāo)...
    SniperPan閱讀 6,361評(píng)論 2 4
  • 以下參考自CSDN博客智政,點(diǎn)擊這里訪問(wèn)原文 Yocto:Yocto是這個(gè)開(kāi)源項(xiàng)目的名稱认罩,該項(xiàng)目旨在幫助我們自定義Li...
    Lazy_Caaat閱讀 8,798評(píng)論 0 6
  • 幸 福 ——送給每個(gè)戀愛(ài)中的朋友 夕陽(yáng)下,小道上女仰,田野間猜年, 他們牽著手,依依細(xì)語(yǔ)疾忍。 而我乔外,跟著后...
    幻夢(mèng)塵客閱讀 250評(píng)論 0 0