內容目錄

AGL 19.0.0 Salmon 的樹莓派5 實驗

(2025 2 14 updated)

建立官方的 IVI flutter demo 產品

環境建立

  1. 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"
  1. 建立 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
  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 : 把當前工程項目的下載/快取區,指向到多人共用的下載與快取區。

工程設置

  1. 用我的懶人 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, 不做的話, 會在自己的位置下載
  1. 設置後,會看到支持的產品功能。
    ------------ 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)

烘焙產品

  1. 烘焙我的 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
最後修改日期: 2025 年 2 月 28 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。