0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイ5でAGL動いた

Last updated at Posted at 2024-05-06

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を使えば大丈夫そうです。

ビルド手順

  1. AGL 17.0.2を取得して、
  2. meta-aglでRPI5対応のパッチをcherry-pickします。さらに
  3. USB起動のためのコミット1をmeta-raspberrypiでcherry-pickします。
  4. 最後に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」を選びます。

image.png

image.png

いざ電源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カードを必要とされていた
  1. USB電源供給
    config.txtusb_max_current_enable=1を追記。
config.txt
usb_max_current_enable=1

参考:https://gigazine.net/news/20231109-raspberry-pi-5-usb-boot/

  1. 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)は進めてみましょう
  • config.txtのパッチ作成と投稿
    • meta-raspberrypiはレビューが厳しいので意外と手間と時間がかかります。。

あとがき

  • 非公式電源(5V/3A) + USBストレージは性能ガタ落ちを発見
  1. 1年前のGW成果 https://qiita.com/harunobukurokawa/items/0837944260a203aa2b39
    ラズパイのyoctoイメージをUSBメモリから起動する) 2

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?