2024年のGW。ポチッとラズパイ5を購入しました。
普通ならばRaspberry Pi OSをインストールして動作確認すると思うところですが、Yoctoを使って更にはAGLを動かしてみます。
推敲が十分ではないので適宜修正していきます。(2024/5/6)
できた内容
- AGL 17.0.2
- SDカードを使わずUSBメモリからの起動
- 公式アダプターを使わないで動作
ハマったこと
- シリアルログがでない!
- USBから起動できない!
いずれも既知の情報で解決しました。
ビルドの前に(ラズパイ5のYoctoおよびAGL対応)
ラズパイ4はすでにAGLで対応されており、ドキュメントも(それなりに)準備されています。AGL documentページ参照ください。
ラズパイ5のAGL対応状況はどうかというと、どうやら3/11にコミット がありました。取り込まれたばかりです。
コミットはmasterブランチのみ!
しかし、パッチが取り込まれているのはmasterブランチのみです。他のブランチにはバックポートされていません。そのままmasterで進めてもよいのですが、4/30にYoctoの新しいLTS がリリースされたことにより、AGLのmasterブランチも新LTS (Scarthgap 5.0)にアップデートしています。
事前の動作確認を行った上で更新しているとはいえ、yocto VerUp直後のmasterブランチほど不安定なものはないので、今回利用するのは極力避けるのがよいでしょう
さて、安定版のquillback ブランチを見てもラズパイ5対応のコミットは取り込まれていません。cherry-pickが必要です。幸いにして難しいコミットではなかったので単純なcherry-pickのみで問題ありませんでした。
meta-raspberryも一応確認
本家のraspberrypi BSPであるmeta-raspberrypiを見てみます。2023/10月から対応が始まって24年の1月に取り込まれたようです。ですが、これもmaster ブランチのみ。
探してみると、1コミットでバックポートしているPRがあり、kirkstoneにmergeされていました。そのまま使えそうです。
AGLのmanifestで正しく更新されているかチェックします。AGL-repoを確認するときちんとメンテナンスされており、下のコミットで最新へ更新されいました。
https://git.automotivelinux.org/AGL/AGL-repo/commit/?h=quillback&id=cf01cbf2e6a5af5f96dfca1238e0f72e7a0562f6
AGL 17.0.1もしくは17.0.2を使えば大丈夫そうです。
ビルド手順
- AGL 17.0.2を取得して、
- meta-aglでRPI5対応のパッチをcherry-pickします。さらに
- USB起動のためのコミット1をmeta-raspberrypiでcherry-pickします。
- 最後にbitbakeします
$ repo init -b quillback -m quillback_17.0.2.xml -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
$ repo sync
#
cd meta-agl
git cherry-pick -n 3fb56402
cd ..
# ラズパイ USBメモリ対応をkirkstoneへ
cd ../bsp/meta-raspberrypi/
git cherry-pick 4c033eb
cd ../..
source meta-agl/scripts/aglsetup.sh -f -m raspberrypi5 -b build-raspberrypi5 agl-demo
# local.conf(site.conf) に追加
CMDLINE_ROOT_PARTITION = "/dev/sda2"
BOOT_MEDIA = "usb"
ビルド可能なimageを確認
今回は標準的なivi向けimageをビルドしたいと思います。bitbake -s
を実行して有効なpackageを確認した際の結果は以下の通り。
build-raspberrypi5$ bitbake -s | grep ^agl-ivi-
agl-ivi-demo-base :1.0-r0
agl-ivi-demo-base-flutter :1.0-r0
agl-ivi-demo-control-panel :1.0-r0
agl-ivi-demo-platform :1.0-r0
agl-ivi-demo-platform-crosssdk :1.0-r0
agl-ivi-demo-platform-flutter :1.0-r0
agl-ivi-demo-platform-flutter-simple :1.0-r0
agl-ivi-demo-platform-html5 :1.0-r0
agl-ivi-demo-platform: Qtデモ(従来のAGLデモ)
agl-ivi-demo-platform-flutter : 新UIデザイン(flutter)
agl-ivi-demo-platform-flutter-simple : 旧デザイン+QtアプリのFlutter
agl-ivi-demo-platform-html5 : HTML向けのCEF(Chromium) UIデモ
びっとべーく
bitbake agl-ivi-demo-platform-flutter
ビルドが完了すると、tmp/deploy/images/raspberrypi5/にファイルが作成されます。
今回はagl-ivi-demo-platform-flutter-raspberrypi5-20240504084813.rootfs.wic.xz
を書き込みます。
rpi-imageが便利
書き込みにはラズパイOSを書き込む時に使用するrpi-imager
が便利です!
選択するOSでは「Use custome」を選びます。
いざ電源ON!のはずが動かない
シリアルログがでない!
meta-agl内で"ENABLE_UART ?= "1"
が有効になっている。その結果、config.txtにenable_uart=1
が指定されていることも確認済み。調べると、dtparam=uart0_console
も追加する必要があるとのこと。これはmeta-raspberrypiでもレシピ対応されてない。
対応:config.txtにdtparam=uart0_console
を追加
enable_uart=1 ## enable_uart=1はすでに記載済み
dtparam=uart0_console ## ★追記
USBから起動できない!
結論からいうと2️つの要因。
- 公式アダプター(5.1V/5A)を使ってないために電力不足となりUSB端子に電流供給されない
- fstabに/dev/mmcblk1p1が指定されており、起動時にSDカードを必要とされていた
- USB電源供給
config.txt
にusb_max_current_enable=1
を追記。
usb_max_current_enable=1
参考:https://gigazine.net/news/20231109-raspberry-pi-5-usb-boot/
- fstabの修正
/etc/fstabの一番下にある行(/dev/mmcblk0p1 /boot vfat defaults
)をコメントアウトします。
root@raspberrypi5:~# cat /etc/fstab
# stock fstab - you probably want to override this with a machine specific one
/dev/root / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,ptmxmode=0666,gid=5 0 0
tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
tmpfs /var/volatile tmpfs defaults 0 0
# uncomment this if your device has a SD/MMC/Transflash slot
#/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
#/dev/mmcblk0p1 /boot vfat defaults 0 0
一年前もハマった事象1なのですが、Yocto単体ではこの指定はないため発生しません。なぜかAGLのみで発生します。
結論
- ラズパイ5でAGL 17.0.2が動いた。
- SD起動であればmeta-agl の1パッチをバックポートするのみでOK。
- USB起動するにはいくつか修正等が必要。
- 非公式アダプターでも一応動いた。
やり残し
- masterブランチ(scarthgap)での動作確認
- これは動いているだろうと思うので優先度は一番低い。
- LXCコンテナデモ (kirkstone,scarthgap)
- 17.0.2は問題なくできそうな予感です。
scarthgap(AGL master)は進めてみましょう
- 17.0.2は問題なくできそうな予感です。
- config.txtのパッチ作成と投稿
- meta-raspberrypiはレビューが厳しいので意外と手間と時間がかかります。。
あとがき
- 非公式電源(5V/3A) + USBストレージは性能ガタ落ちを発見
-
1年前のGW成果 https://qiita.com/harunobukurokawa/items/0837944260a203aa2b39 (
ラズパイのyoctoイメージをUSBメモリから起動する) ↩ ↩2