Attention!!: AGL IC container integration update is under reviewing, Please not use this document now.
This document describe how to build AGL instrument cluster with container integration.
1. Select Image type and target board
AGL IC container integration has various type. Developer need to choice which integration type. Those type show in table1.
Table 1. Integration type.
No. | Type name | Detail of type | Required storage (SD card) size - board. | Required storage size-build. | |
---|---|---|---|---|---|
1 | Simple container host | This integration aim to core package definition for container host using LXC. This integration is not include demo package. This integration aim to define starting point for downstream product development. | 1G Byte | 150GByte | Console only. |
2a | Instrument cluster with four demo IVI install to one partition. | This integration aim to get most simple integration with demo feature. This container runtime and management is constructed with LXC package only. On the other hand, it has limitation for supported use case. This integration support two demo guest run in one board (instrument cluster guest and momi IVI guest). This integration aim to learn drm lease and LXC container by developer. | 2GByte | 300GByte | |
3a | Instrument cluster with demo IVI install to one by one partition. | This integration aim to get simple integration with demo feature. This container runtime and management is constructed with container management daemon with liblxc. This integration will improve to support many embedded use case. This integration support two demo guest run in one board (instrument cluster guest and momi IVI guest). This integration aim to learn and develop AGL IC container integration by developer. | 16GByte (Including pre-allocated partition for 3 guests.) | 300GByte | |
3b | Instrument cluster with four demo IVI install to one by one partition. | This integration aim to get full demo integration with AGL demo IVI. This integration is extend from 3a integration. This integration support instrument cluster guest and four IVI guest (momi, qt, flutter, html5). This integration aim to use AGL demonstration in each event by developer. | 16GByte | 600GByte |
We recommend to choice 3a. It can extend to 3b.
AGL IC container integration supported two board. Those board show in table2.
Table2. Supported board.
Board type | Support integration type | status |
---|---|---|
AGL RefHW | 1,2a,3a,3b | Tested |
R-CarH3 Starter Kit with Kingfisher board | 1,2a,3a,3b | Not tested. |
R-CarM3 Starter Kit with Kingfisher board | 1,2a,3a,3b | EOL Board. Not tested. |
R-CarH3 Starter Kit | 1,2a | End of Supported in latest release. |
R-CarM3 Starter Kit | 1,2a | EOL Board. End of support in latest release. |
Raspberry Pi4 (4G or 8G) | 1,2a,3a,3b | Tested. |
We recommend to choice AGL RefHW or Raspberry Pi4 (4G or 8G).
2. Setup build environment
Build environment for AGL IC container integration is same as AGL other profile build environment.
1st step: please read Build Process Overview in AGL doc.
2nd step: please read Preparing Your Build Host in AGL doc.
3rd step: Define Your Top-Level Directory.
export AGL_TOP=$HOME/AGL mkdir -p $AGL_TOP
4th step: Download the repo Tool and Set Permissions
If your environment already install google repo, please skip this step.
mkdir -p $HOME/bin
export PATH=$HOME/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > $HOME/bin/repo
chmod a+x $HOME/bin/repo
5th step: Setup git
If your environment already setup user information for git, please skip this step.
git config --global user.email "you@example.com" git config --global user.name "Your Name"
6th step: Download the AGL Source Files
Recommend AGL version: Optimistic Octopus
cd $AGL_TOP
mkdir octopus export AGL_TOP=$HOME/AGL/octopus
cd $AGL_TOP repo init -b octopus -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo repo sync
Optional: Specify the master branch
cd $AGL_TOP
mkdir master export AGL_TOP=$HOME/AGL/master
cd $AGL_TOP repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo repo sync
7th step: Downloading Proprietary Drivers (AGL RefHW and R-Car H3/M3 with Kingfisher board only procedure)
If your board is Raspberry Pi4, please skip this step.
7-1: Downloading Proprietary Drivers from Renesas-automotive-products.
In case of Optimistic Octopus and master, please download this.
7-2: To check the files to download.
grep -rn ZIP_.= $AGL_TOP/meta-agl/meta-agl-bsp/meta-rcar-gen3/scripts/setup_mm_packages.sh
export XDG_DOWNLOAD_DIR=$HOME/Downloads
7-3: Download and copy Proprietary Drivers files (Run commands at downloaded files directory).
cp R-Car_Gen3_Series_Evaluation_Software_Package_* $XDG_DOWNLOAD_DIR/
chmod a+rw $XDG_DOWNLOAD_DIR/*.zip
3. Configure to target board and build.
1st step: Run the aglsetup.sh Script.
cd $AGL_TOP
When your board is AGL RefHW.
source meta-agl/scripts/aglsetup.sh -f -m h3ulcb -b build-ic-refhw agl-ic-container agl-refhw-h3
When your board is R- CarH3 Starter Kit with Kingfisher board.
source meta-agl/scripts/aglsetup.sh -f -m h3ulcb-kf -b build-ic-h3kf agl-ic-container
When your board is Raspberry Pi 4
source meta-agl/scripts/aglsetup.sh -f -m raspberrypi4 -b build-ic-rpi4 agl-ic-container
2nd step: Build target image.
In this time, you can build 1,2a and 3a. If you want to build 3b, please do extra step in next section.
When you choice integration type 1.
bitbake lxc-host-image-minimal
When you choice integration type 2a.
bitbake agl-cluster-demo-lxc-host
When you choice integration type 3a.
bitbake agl-instrument-cluster-container-demo
4. Extra step for type 3b build.
Attention!!:
This step has some issue.
This AGL demo IVI guest shall use tested stable version or stable pre build image, shall not use same as IC side recipe tree. Need to update section 4 procudere.
Now discuss how to provide prebuild guest.
1st step: Configure 2nd build tree.
We recommend to open new terminal to do this extra section.
Recommend AGL version: Optimistic Octopus
export AGL_TOP=$HOME/AGL/octopus
cd $AGL_TOP
Optional: Specify the master branch
export AGL_TOP=$HOME/AGL/master cd $AGL_TOP
When your board is AGL RefHW.
source meta-agl/scripts/aglsetup.sh -f -m h3ulcb -b build-ivi-refhw agl-container-guest-demo agl-demo agl-refhw-h3
When your board is R- CarH3 Starter Kit with Kingfisher board.
source meta-agl/scripts/aglsetup.sh -f -m h3ulcb-kf -b build-ivi-h3kf agl-container-guest-demo agl-demo
When your board is Raspberry Pi 4
source meta-agl/scripts/aglsetup.sh -f -m raspberrypi4 -b build-ivi-rpi4 agl-container-guest-demo agl-demo
2nd step: Build target images.
Type 3b integration need to build 3 image, these image are agl-ivi-demo-platform, agl-ivi-demo-platform-flutter and agl-ivi-demo-platform-html5.
bitbake agl-ivi-demo-platform
bitbake agl-ivi-demo-platform-flutter
bitbake agl-ivi-demo-platform-html5
3rd step: Set deploy path of AGL IVI Demo to IC side config.
Type 3b integration refer to IVI pre build image. Please set IVI side deploy directory in ic side local.conf (or site.conf).
At $AGL_TOP/build-ic-XXXX/conf/local.conf
Add to
OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/path/to/deploy/"
ex. When your board is AGL RefHW and your home directory is "/home/user/".
OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-refhw/tmp/deploy"
ex. When your board is R- CarH3 Starter Kit with Kingfisher board and your home directory is "/home/user/".
OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-h3kf/tmp/deploy"
ex. When your board is Raspberry Pi 4 and your home directory is "/home/user/".
OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-rpi4/tmp/deploy"
4th step: Build all in one image (3b).
Back to terminal for ic build.
bitbake agl-instrument-cluster-container-demo
4a. Extra step for type 3b using pre build image. (Under planning)
1st step: Download stable pre build image from AGL site.
2nd step: Set deploy path of AGL IVI Demo to IC side config.
Set extracted directory using OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR
5. Write imgae to SD card.
sudo bash -c "xzcat /path/to/image/directory/agl-instrument-cluster-container-demo-XXXXX.wic.xz | dd of=/dev/sdXXX bs=128M"