RPi2でQt5を動かす。 組み込み用途ではQt5はplatformを指定することでX Windows以外の環境でも動かすことができる。 今回はEGLで描画する EGLFS というplatformで動くようにする。
EGLFSについては以下が詳しい。
http://doc.qt.io/qt-5/embedded-linux.html
そこによるとEGLとはOpenGLとネイティブウィンドウシステムの間のインタフェイスというものらしい。
EGL is an interface between OpenGL and the native windowing system.
明示的にplatformを指定してQt5のアプリケーションを起動する場合は以下のようになる。
$ qtapp -platform eglfs
ファイルの取得
ベース環境
前と同様にagherzanさんのmeta-raspberrypiを使わせてもらう。
以前に作業したことがあるなら以下のコマンドはいらない。
$ cd ~/ $ mkdir rpi2 $ cd rpi2 $ git clone git://git.yoctoproject.org/poky.git $ cd poky $ git clone https://github.com/agherzan/meta-raspberrypi.git
meta-qt5
Qt5のレシピをまとめたmeta-qt5がすでにあるので使わせてもらう。
$ cd ~/rpi2/poky $ git clone git://github.com/meta-qt5/meta-qt5.git
meta-qt5-rpi-eglfs
meta-qt5そのままではRPi/RPi2でEGLFSでは動かないのでmeta-qt5-rpi-eglfs^1を導入する。
$ cd ~/rpi2/poky $ git clone https://github.com/mickey-happygolucky/meta-qt5-rpi-eglfs.git
ビルドディレクトリ
今回はビルドディレクトリをbuild_qt5に変更する。
$ cd ~/rpi2 $ source poky/oe-init-build-env build_qt5
conf/bblayers.confの編集
BBLAYERSにmeta-raspberrypiとmeta-qt5、meta-qt5-rpi-eglfsを追加。
BBLAYERS ?= " \ /home/mickey/rpi2/poky/meta \ /home/mickey/rpi2/poky/meta-yocto \ /home/mickey/rpi2/poky/meta-yocto-bsp \ /home/mickey/rpi2/poky/meta-raspberrypi \ /home/mickey/rpi2/poky/meta-qt5 \ /home/mickey/rpi2/poky/meta-qt5-rpi-eglfs \ "
conf/local.confの編集
以下を追加する。
MACHINE ?= "raspberrypi2" BB_NUMBER_THREADS = "8" PARALLEL_MAKE = "-j 8" VIDEO_CAMERA = "1" GPU_MEM = "128" LICENSE_FLAGS_WHITELIST += "commercial" FETCHCMD_wget = "/usr/bin/env wget -t 2 -T 3000 -nv --passive-ftp --no-check-certificate"
bitbake
以下のコマンドでQt5+EGLFSのアプリケーションの実行に必要な環境のイメージを作成する。
$ bitbake qt5-dev-image
qt5-dev-imageはmeta-qt5-rpi-eglfsに収録されたレシピ。
書き込み
SDに書き込む。
$ sudo dd if=./tmp/deploy/images/raspberrypi2/qt5-dev-image-raspberrypi2.rpi-sdimg of=/dev/sdb bs=40M
実行画面
デモアプリケーションを起動。
このイメージのデフォルトのplatformはeglfsに設定してある。
$ /usr/share/quitbattery-1.0.0/QUItBattery
RPi実行時の印象よりも滑らかに動作している。