以前PiTFT35をyoctoで動作させるためにmeta-pitft35-rpiを作成した^1が、 最近のmeta-raspberrypiでは動作しなくなっていた。
一度、リポジトリの方に問い合わせが来たが、その人がうちのパッチをまとめて(勝手に)meta-raspberrypiにPRを送っていた。 meta-raspberrypiに取り込まれるならもうmeta-pitft35-rpiも用済みかと思ってしばらく放置していたのだが、そのパッチ取り込まれるようすがなく、送ったPRの内容を確認すると結構いい加減な対応だったので、 とりあえずmeta-pitft35-rpiをRPi3(というかカーネル4.1、4.4)に対応させることにした。
ついでにcore-image-satoではキャリブレーションデータが固定だったので、イメージを書き込んで初回など、キャリブレーションデータが存在しない場合、OS起動時にキャリブレーションが実行されるように修正した。
使用方法は変更なし。
環境の作成
作業は~/rpi3
で行う。
pokyとmeta-raspberrypiのダウンロード
pokyのブランチはkrogoth
を使用する。
meta-raspberrypiはkrogothブランチがないので、masterブランチを使用する。
$ mkdir ~/rpi3 $ cd ~/rpi3 $ git clone git://git.yoctoproject.org/poky.git -b krogoth $ cd ~/rpi3/poky $ git clone git://git.yoctoproject.org/meta-raspberrypi
meta-pitft35-rpiのダウンロード
meta-pitft35-rpiをダウンロードする。
$ git clone https://github.com/mickey-happygolucky/meta-pitft35-rpi.git
ビルド環境の設定
次のコマンドでoe-init-build-env
を読み込む。
$ cd ~/rpi3 $ source poky/oe-init-build-env build_pitft35
自動的ににbuild_pitft35に移動される。
レイヤの設定
bitbake-layersコマンドでビルド対象にmeta-raspberrypi
とmeta-pitft35-rpi
を追加。
$ bitbake-layers add-layer ../poky/meta-raspberrypi $ bitbake-layers add-layer ../poky/meta-pitft35-rpi
conf/local.conf
エディタでconf/local.conf
を修正する。
カーネル4.1と4.4で若干異なる。
カーネル4.1
バージョン4.1のカーネルを使用する場合はlocal.confに次を追加する。
MACHINE ?= "raspberrypi3" DL_DIR ?= "${TOPDIR}/../downloads" KERNEL_DEVICETREE_append = " overlays/pitft35-resistive-overlay.dtb" RPI_PITFT35 = "1"
PiTFT35のための設定はKERNEL_DEVICETREE_append
とRPI_PITFT35
。
MACHINE
でRPi3向けのイメージを指定。
DL_DIR
はbitbake時にダウンロードされるデータを格納するディレクトリの指定。
デフォルトではビルドディレクトリごとにダウンロードされるが、階層をひとつ上げることで他のビルドディレクトリと共用している。
カーネル4.4
バージョン4.4のカーネルを使用する場合はlocal.confに次を追加する。
MACHINE ?= "raspberrypi3" DL_DIR ?= "${TOPDIR}/../downloads" PREFERRED_VERSION_linux-raspberrypi = "4.4.%" KERNEL_DEVICETREE_append = " overlays/pitft35-resistive-overlay.dtb" RPI_PITFT35 = "1"
PREFERRED_VERSION_linux-raspberrypi
でカーネルバージョンを指定している。
それ以外は4.1と同じ。
動作確認
コンソール環境とX11環境を作成
コンソール環境
次でビルド。
$ bitbake rpi-basic-image
次でSDカードに書き込み
$ sudo dd if=./tmp/deploy/images/raspberrypi3/rpi-basic-image-raspberrypi3.rpi-sdimg of=/dev/sdb bs=40M
/dev/sdb
はSDカードデバイスの指定で環境によっては/dev/sdc
とかになるのでfdisk -l
などで確認する必要がある。
X11環境
ビルド。
$ bitbake core-image-sato
SDカードに書き込み
$ sudo dd if=./tmp/deploy/images/raspberrypi3/core-image-sato-raspberrypi3.rpi-sdimg of=/dev/sdb bs=40M