先日の記事の続き。
vc4graphicsを有効化した状態でこれをcocopar 5 インチIPSハイビジョンLCD ディスプレイで動かそうとすると、画面が真っ黒になった。
調査したところ、cocoparのLCDのようにEDIDを取得できないデバイスの場合KMSの初期化で弾かれてしまい、画面が表示されなくなることがわかった。
このような場合は、EDIDをどうにかごまかしてカーネルに教えてやることによって、この状況を回避することができる。
800x480の解像度を設定するためのEDIDファイルをカーネルに指定して、core-image-satoを動作させることができるようにmeta-hdmi5inch-rpiを更新した。
ベース環境の取得
$ git clone git://git.yoctoproject.org/poky.git -b morty $ cd poky $ git clone git://git.yoctoproject.org/meta-raspberrypi -b morty $ git clone https://github.com/mickey-happygolucky/meta-hdmi5inch-rpi.git -b morty
今回はmortyブランチで作業する。
oe-init-build-envの読み込み
下記を実行する。
$ cd ~/rpi3 $ source poky/oe-init-build-env
これにより、クロスコンパイルに必要な環境変数が設定され、ビルドディレクトリに移動される。
meta-raspberrypiをビルド対象に追加
次のコマンドを実行する。
$ bitbake-layers add-layer ../poky/meta-raspberrypi $ bitbake-layers add-layer ../poky/meta-hdmi5inch-rpi
local.confの修正
次の行をlocal.confの先頭の方に追加する。
MACHINE ?= "raspberrypi3" MACHINE_FEATURES += "vc4graphics" IMAGE_INSTALL_append = " xf86-input-evdev" MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-edid-800x480" COCOPAR_5INCH_HDMI = "1" KERNEL_DEVICETREE_append = "overlays/ads7846-overlay.dtb" DL_DIR ?= "${HOME}/work/yocto/downloads"
DL_DIRの行は必要はないが、ダウンロードしたファイルを複数のビルドディレクトリから使いまわせるようにするために設定している。
COCOPAR_5INCH_HDMI = "1"
でLCDを有効化、overlays/ads7846-overlay.dtb
でタッチパネルを有効化している。
xf86-input-evdev
がないとマウス(タッチ)が反応しない。
動作確認
bitbakeの実行
$ bitbake core-image-sato
SDカードの作成
$ sudo dd if=./tmp/deploy/images/raspberrypi3/core-image-sato-raspberrypi3.rpi-sdimg of=/dev/sdb bs=40M
/dev/sdb
はSDカードのデバイス。環境により変更が必要な場合がある。
実行
mortyのsatoが表示された。