Blog:
iMX 8 Qt 5のポーティングと開発

Thursday, December 9, 2021

優れたCPUとGPUの性能を発揮するNXPのi.MX8プロセッサーは、自動車や産業オートメーションから医療、IoT、家電製品まで、数多くの分野から注目を集めています。このプロセッサーは、ヒューマンコンピューターインタラクションの優れたソリューションを作成するのに最適な新しいプラットフォームを提供します。本記事では、Colibri iMX8プラットフォーム上で人気の高いGUIソリューション、Qtの移植と開発を行う方法について紹介します。

Qtのコンパイル

Qtのクロスコンパイルは、比較的難しい作業で、特にQtのソースコードから直接コンパイルする場合はなおさらです。本記事では、Yocto/OpenEmbeddedフレームワークを使用していきます。Yocto/OpenEmbeddedを利用すれば、クロスコンパイルのプロセスにおけるさまざまなソフトウェアパッケージの依存性の問題を回避できます。また、既存のOpenEmbeddedレイヤーやレシピを使用して、Qtなどのサードパーティーソフトウェアとのインテグレーションの推進も可能です。

Toradexは、Toradexモジュール向けにYocto/OpenEmbeddedの完全な構成ファイルを提供しており、ダウンロードして直接利用できます。ToradexのV3.0 BSPから、BSPはPokyベースでスリム化されたバージョンとなっています。このため、プロジェクトの要件に応じてCommonQtやGstreamerといったコンポーネントを追加する必要があります。

まず、この記事の「Introduction(はじめに)」の記載どおり、Colibri iMX8に適切なYocto環境、BSP 3.0、thudブランチをダウンロードします。

qt5-eglfs-wayland.bbなどの新しいbbファイルをYoctoのlayers/meta-toradex-demos/recipes-images/imagesディレクトリに追加すると、このファイルからQtを含むBSPが生成されます。ここでは、console-tdx-image.bbがベースとして使用され、Qt、Gstreamerコンポーネントと中国語フォントを追加しています。タイムゾーン情報tzdataなど、そのほか必要なソフトウェアの追加も、もちろん可能です。

します。SDK内のqtwebkit qt3dを削除して、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"

Yocto最新のthudバージョンでは、Qt5.11のコンパイル時に上記のコンポーネントコンパイルエラーが発生しますが、これらのコンポーネントを使用しない限り、影響はありません。今後、このコンパイルのプロセスを改善していく予定です。

次に、build/conf/local.confの最後に下記を追加します。

IMAGE_INSTALL_append = " qtwayland rsync"
PACKAGECONFIG_append_pn-qtbase = " libinput gles2 freetype"
PACKAGECONFIG_append_pn-qtwayland = " wayland-egl"
DISTRO_FEATURES_remove = " x11"

最後に、次のコマンドを実行してコンパイルします。

MACHINE=colibri-imx8x bitbake qt5-eglfs-wayland

コンパイルの全プロセスには数時間かかりますが、最終的に、images/colibri-imx8xとbuild/deployディレクトリのsdkフォルダにBSPインストールパッケージとSDKツールが生成されます。相当するファイルをToradexのFTPサーバーからダウンロードすることもできます。

BSPのインストール

ToradexのiMX8モジュールはすべてToradex Easy Installerに対応しており、BSPをインストールできます。操作については、このウェブページの記載を参照してください。

Qt SDKの構成

Qt5.11のSDK構成については、ToradexのDeveloper Centerに記載されている手順を参照してください。

Qtアプリケーションの開発

Qtが提供するタッチインタラクションの公式デモを例として使用します。上の指示に従ってSDK構成を適切に完了したら、デモを直接コンパイルして導入します。QtCreatorのアプリケーションをデプロイするにはrsyncを使用する必要があるので、これを以前のlocal.conf構成に追加します。

Colibri iMX8 V3.0 BSPはグラフィカルバックエンドとしてWaylandを使用し、Qtの操作もWaylandベースになります。抵抗膜方式タッチ画面を利用する場合、操作の際にタッチ画面の調整が必要です。weston-touch-calibratorを実行してタッチデバイスのパスを取得します。

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"

タッチ画面を調整します。

root@colibri-imx8x:~# weston-touch-calibrator /sys/devices/platform/5a800000.i2c/i2c-16/16-002c/input/input1/event1

画面に表示される調整座標を1つずつ順番にタップします。

静電容量式タッチ画面の場合は、調整の必要はなく、そのままで利用可能です。もちろん、タッチ画面のドライバーが正常に動作することが前提です。

Qtアプリケーションを実行します。

root@colibri-imx8x:~/touchinteraction# export QT_QPA_PLATFORM=wayland
root@colibri-imx8x:~/touchinteraction# export XDG_RUNTIME_DIR=/run/user/0

root@colibri-imx8x:~/touchinteraction# ./touchinteraction

まとめ

QtとiMX8を組み合わせると、優れたユーザーインタラクション体験を提供する最適な実装プラットフォームを実現できます。Toradexは、安定性と信頼性の高いハードウェアモジュールやQtアプリケーションの迅速な出荷を可能にする豊富なソフトウェアツールなどによる、使いやすいiMX8プラットフォームの提供に務めています。今回は、iMX8におけるQtの移植と開発について簡単に紹介しました。この手法は、最もハイエンドのi.MX8QuadMaxなどToradexのそのほかのiMX8製品にも適用できます。

Author: Shanfeng Hu, FAE, Toradex

Leave a comment

Please login to leave a comment!
Have a Question?