みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

raspberrypi2 yoctoでQt5 + EGLFS

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

f:id:mickey_happygolucky:20150215221350j:plain

RPi実行時の印象よりも滑らかに動作している。