內容目錄
AGL 19.0.0 Salmon 的樹莓派5 實驗
(2025 2 14 updated)
建立官方的 IVI flutter demo 產品
環境建立
- ubuntu 22.04 AGL 開發環境安裝
# ubuntu22.04 使用 pylint 包,取代舊的 pylint3 包)
sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa-dev libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool curl ovmf -y
repo 工具設置
# 下載 repo工具到本地預設位置
curl https://storage.googleapis.com/git-repo-downloads/repo > $HOME/.local/bin/repo
$ chmod a+x $HOME/.local/bin/repo
# google repo 賬號設置
git config --global user.email "cyue12@gmail.com"
git config --global user.name "cyue12"
- 建立 agl release 工程目錄, 與 agl 的源碼下載/快取 目錄。目前的最新 agl release是 19.0.0 salmon
export AGL_TOP=/home/agl
mkdir -p $AGL_TOP/downloads ; mkdir -p $AGL_TOP/sstate-cache
wget https://download.automotivelinux.org/AGL/release/salmon/agl-salmon-19.0.0.tar.bz2
tar -xvf agl-salmon-19.0.0.tar.bz2
mv agl-salmon-19.0.0 $AGL_TOP/salmon
# repo AGL 抓取工程到 release 目錄:[salmon]
cd $AGL_TOP/salmon
repo init -b salmon -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
repo sync
# tree 檢查 工程目錄是否 OK
# .
# ├── bsp
# ├── external
# ├── meta-agl
# ├── meta-agl-cluster-demo
# ├── meta-agl-demo
# ├── meta-agl-devel
# ├── meta-agl-extra
# └── meta-agl-telematics-demo
tree -L 1
- 添加我的
$AGL_TOP與懶人 alias 到~/.bashrc。
agl 工程會下載大量的開源代碼,希望這些下載/下載快取是大家共用的,就不必多次的下載。
目前我定義了一個 AGL_TOP,指向~/agl, 考慮放在/home/agl或其他的共用區。希望不同的 release, 不同的人的下載快取都保存在此。需要開發 AGL的人可以將以下的設置放到~/.bashrc:
echo "
# AGL settings:
export AGL_TOP=/home/agl
alias agl='. $AGL_TOP/salmon/meta-agl/scripts/aglsetup.sh'
alias agl-cache='ln -fs $AGL_TOP/downloads downloads; ln -fs $AGL_TOP/sstate-cache sstate-cache'
">> ~/.bashrc
其中:
- agl : 呼叫 aglsetup.sh 建立工程項目。用
agl -h看工程選項。- agl-cache : 把當前工程項目的下載/快取區,指向到多人共用的下載與快取區。
工程設置
- 用我的懶人 alias 在個人
$HOME/rpi5下建立 Raspberry Pi5 的 AGL 開發工程, 並將 download cache link 到$AGL_TOP下的對應地方。
cd ~
agl -f -b rpi5 -m raspberrypi5 agl-demo agl-devel
agl-cache
agl --help可以查看所有支持的工程項目。- 工程環境設置後,會跳到
-b指定的目錄工作。- agl-cache 鏈接到大家的下載 cache, 不做的話, 會在自己的位置下載
- 設置後,會看到支持的產品功能。
------------ aglsetup.sh: Done
Common targets are:
- meta-agl layer:
- included by default
* agl-image-boot (just enough to boot)
* agl-image-minimal (minimal filesystem with APIs)
* agl-image-minimal-crosssdk (crosssdk for ^^)
* agl-image-weston (minimal filesystem with weston)
* agl-image-compositor (minimal filesystem with AGL compositor)
- meta-agl-demo: (IVI demo with UI)
- with 'agl-demo'
* agl-ivi-image (base for IVI targets)
* agl-ivi-image-crosssdk (sdk for ^^)
* agl-ivi-demo-qt (IVI Qt demo image)
* agl-ivi-demo-qt-crosssdk (sdk for ^^)
* agl-ivi-demo-flutter (IVI Flutter demo image)
* agl-ivi-demo-html5 (IVI HTML5 demo image)
* agl-cluster-demo-qt (cluster Qt demo image)
* agl-cluster-demo-flutter (cluster Flutter demo image)
* agl-telematics-demo (telematics demo image)
* agl-gateway-demo (gateway demo image)
烘焙產品
- 烘焙我的 ivi demo flutter 產品
time bitbake agl-ivi-demo-flutter
經過漫長的下載與編譯打包,工程結果:
NOTE: Your conf/bblayers.conf has been automatically updated.
Loading cache: 100% | | ETA: --:--:--
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |###############################################################################################################################| Time: 0:01:15
Parsing of 3348 .bb files complete (0 cached, 3348 parsed). 5323 targets, 639 skipped, 1 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
NOTE: Multiple providers are available for runtime kuksa-can-provider-conf (kuksa-can-provider, kuksa-can-provider-conf-agl)
Consider defining a PREFERRED_RPROVIDER entry to match kuksa-can-provider-conf
Build Configuration:
BB_VERSION = "2.8.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "ubuntu-22.04"
TARGET_SYS = "aarch64-agl-linux"
MACHINE = "raspberrypi5"
DISTRO = "poky-agl"
DISTRO_VERSION = "19.0.0"
TUNE_FEATURES = "aarch64"
TARGET_FPU = ""
meta-raspberrypi
meta-lts-mixins_u-boot
meta-selinux
meta-pipewire
meta-agl-flutter
meta-flutter
meta-flutter-apps
meta-app-framework
meta-agl-kuksa-val
meta-agl-demo
meta-networking
meta-python
meta-filesystems
meta-multimedia
meta-clang
meta-qt5
meta-oe
meta-agl-core
meta-agl-bsp
meta
meta-poky = ":"
...
```
燒錄到目標機上
建立的鏡像在:
rpi5/tmp/deploy/images/raspberrypi5/agl-ivi-demo-html5-raspberrypi5-64.rootfs.wic.xz
$ export IMAGE_NAME=agl-ivi-demo-html5-raspberrypi5-64.rootfs.wic.xz
燒錄我的工程(樹莓派要燒到 SD卡上再挪到機器上開機)
# 查看掛載的 SD卡是哪個 blkdevice。不要燒錯了!!
# 比如說 mmcblk0 mmcblk0p1 sdc1 ... 會在 /dev 下
lsblk
# 卸載 SD卡
sudo umount
# 複製到卡上
xzcat ${IMAGE_NAME} | sudo dd of= bs=4M
sync
留言