R-Car/Boards/Yocto-Gen3/v3.21.0

This page contains information on building and running Yocto on Renesas R-Car-H3/M3 Salvator-X,  Renesas R-Car-H3/M3 Salvator-X.View,  Renesas R-Car-H3 H3ULCB,  Renesas R-Car-H3 H3ULCB.View and  Renesas R-Car-H3 H3ULCB.HAD,  Renesas R-Car-M3 M3ULCB,  Renesas R-Car-M3 M3ULCB.View boards.

Yocto versions
Poky-2.0.1 is supported. Specific commit of meta-openembedded is required.

Preliminary steps
 Download evaluation version of proprietary graphics and multimedia drivers from Renesas. To download Multimedia and Graphics library, please use the following link: https://www.renesas.com/en-us/software/D6000290.html To download related Linux drivers, please use the following link: https://www.renesas.com/en-us/media/secret/solutions/automotive/rcar-demoboard/R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20160906.zip Graphic drivers are required for X11 and Wayland. Multimedia drivers are optional. 

 Install required packages

Ubuntu and Debian
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat libsdl1.2-dev xterm python-crypto

Fedora
sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \ diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \ ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue socat \ SDL-devel xterm Refer to Yocto Project Quick Start for more information.  

Building the BSP for Renesas R-Car Salvator-X H3/M3, Salvator-X.View H3/M3, H3ULCB, H3ULCB.View, H3ULCB.HAD, M3ULCB, M3ULCB.View
 Create a directory and switch to it Warning! Yocto builds require a lot of disk space (up to 100 GB). Make sure you have got enough before starting the build. mkdir build cd build export WORK=`pwd`  Clone basic Yocto layers: cd $WORK git clone git://git.yoctoproject.org/poky git clone git://git.openembedded.org/meta-openembedded git clone git://git.linaro.org/openembedded/meta-linaro.git 

 Switch to proper branches/commits   For Yocto v2.9.0 cd $WORK/poky git checkout -b tmp 65306b0bfc1afd0de9b1d470fd78c8c69f55f791 cd $WORK/meta-openembedded git checkout -b tmp cb7e68f2a39fa6f24add48fc7b8d38fb7291bb44 cd $WORK/meta-linaro git checkout -b tmp acf4f1f701e07670ec88435897a74f88dbe8ba87   For Yocto v2.12.0 cd $WORK/poky git checkout -b tmp 40376446904ae3529be41737fed9a0b650ed167d cd $WORK/meta-openembedded git checkout -b tmp 8ab04afbffb4bc5184cfe0655049de6f44269990 cd $WORK/meta-linaro git checkout -b tmp 9b1fd178309544dff1f7453e796a9437125bc0d9 </li> </ol> Another versions are not tested for compatibility. </li>

 Clone Renesas BSP layer and switch to the proper branch:   For Yocto v2.9.0 cd $WORK git clone git://github.com/CogentEmbedded/meta-rcar.git meta-renesas -b v2.9.0 </li>  For Yocto v2.12.0 cd $WORK git clone git://github.com/CogentEmbedded/meta-rcar.git meta-renesas -b v2.12.0 </li> </ol> </li>

 Apply Linaro-GCC patch file: cd $WORK/meta-renesas export PATCH_DIR=meta-rcar-gen3/docs/sample/patch/patch-for-linaro-gcc patch -p1 < ${PATCH_DIR}/0001-rcar-gen3-add-readme-for-building-with-Linaro-Gcc.patch unset PATCH_DIR </li>  Unzip downloaded proprietary driver modules to $WORK/proprietary folder. You should see the following files:   For Yocto v2.9.0 $ ls -1 $WORK/proprietary R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20160526.tar.gz R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20160526.tar.gz </li>  For Yocto v2.12.0 $ ls -1 $WORK/proprietary R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20160906.tar.gz R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20160906.tar.gz </li> </ol> </li>

 Populate meta-renesas with proprietary software packages. PKGS_DIR=$WORK/proprietary cd $WORK/meta-renesas sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $PKGS_DIR </li>

 Setup build environment cd $WORK source poky/oe-init-build-env </li>

 Prepare default configuration files. cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/<salvator-x|h3ulcb|m3ulcb>/linaro-gcc/mmp/*.conf ./conf/ For weston/wayland: cd $WORK/build cp conf/local-wayland.conf conf/local.conf For X11: cd $WORK/build cp conf/local-x11.conf conf/local.conf

 Edit $WORK/build/conf/local.conf to enable/disable graphics and multimedia proprietary drivers support </li>

 Edit local.conf to choose machine extension variant </li>

For H3ULCB board only:

  Edit local.conf to select IO configuration (by default only H3ULCB board peripherals are enabled): MACHINE_FEATURES_append = " h3ulcb-view" (use this append for View IO configuration) or MACHINE_FEATURES_append = " h3ulcb-had" (use this append for HAD IO configuration) </li> </ol>

For Salvator-X board only:

<ol> <li> Edit local.conf to select IO configuration (by default only Salvator-X board peripherals are enabled): MACHINE_FEATURES_append = " salvator-x-view" (use this append for View IO configuration) SOC_FAMILY = "r8a7796" (make this change only for M3 Salvator-X, since the default is H3 Salvator-X) </li> </ol>

</li>

For M3ULCB board only:

<ol> <li> Edit local.conf to select IO configuration (by default only M3ULCB board peripherals are enabled): MACHINE_FEATURES_append = " m3ulcb-view" (use this append for View IO configuration) </li> </ol>

</li>

<li> Edit local.conf to enable multicluster boot (enable both CA57 and CA53 clusters): CA57CA53BOOT = "1" </li>

<li> Edit local.conf with evaluation packages requirements: <ol> <li> For Yocto v2.9.0 (to build only lib64, since evaluation packages do not include lib32 support) IMAGE_INSTALL_remove += " lib32-weston lib32-packagegroup-multimedia-libs lib32-omx-user-module lib32-libdrm lib32-libdrm-kms lib32-gles-user-module" </li> <li> For Yocto v2.12.0 (to enable EVA_ prefix during packages install) DISTRO_FEATURES_append = " use_eva_pkg" </li> </ol> </li>

<li> Start the build

For weston/wayland: bitbake core-image-weston For X11: bitbake core-image-x11 </li>

<li> Building image can take upto a few hours depending on your host system performance. After the build has been completed successfuly, you should see the output similar to: NOTE: Tasks Summary: Attempted 4704 tasks of which 31 didn't need to be rerun and all succeeded. and the command prompt should return. </li>

<li> Bitbake has generated all the necessary files in ./tmp/deploy/images directory. You can verify its content: $ ls -1 `find ./tmp/deploy/images/h3ulcb/ -maxdepth 1 -type l -print` ./tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb.cpio.gz ./tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb.ext4 ./tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb.manifest ./tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb.tar.bz2 ./tmp/deploy/images/h3ulcb/Image ./tmp/deploy/images/h3ulcb/Image-h3ulcb.bin ./tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb.dtb ./tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb-had.dtb ./tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb-view.dtb ./tmp/deploy/images/h3ulcb/modules-h3ulcb.tgz ./tmp/deploy/images/h3ulcb/u-boot.bin ./tmp/deploy/images/h3ulcb/u-boot-elf-h3ulcb.srec ./tmp/deploy/images/h3ulcb/u-boot-elf.srec ./tmp/deploy/images/h3ulcb/u-boot-h3ulcb.bin Image is a Kernel image, *.dtb is a blob file, core-image-weston-h3ulcb.tar.bz2 is the rootfs, modules-h3ulcb.tgz are kernel modules. </li> <li> You can now boot R-Car H3 H3ULCB board over TFTP and NFS </li> </ol>

Build scripts examples
<ol>

<li> Build preparation <ol> <li> For Yocto v2.9.0
 * 1) !/bin/sh

mkdir build || exit cd build WORK=`pwd` echo $WORK

git clone git://git.yoctoproject.org/poky git clone git://git.linaro.org/openembedded/meta-linaro.git git clone git://git.openembedded.org/meta-openembedded git clone git://github.com/CogentEmbedded/meta-rcat.git meta-renesas -b v2.9.0

cd $WORK/poky git checkout -b tmp 65306b0bfc1afd0de9b1d470fd78c8c69f55f791 cd $WORK/meta-linaro git checkout -b tmp acf4f1f701e07670ec88435897a74f88dbe8ba87 cd $WORK/meta-openembedded git checkout -b tmp cb7e68f2a39fa6f24add48fc7b8d38fb7291bb44

cd $WORK/meta-renesas export PATCH_DIR=meta-rcar-gen3/docs/sample/patch/patch-for-linaro-gcc patch -p1 < ${PATCH_DIR}/0001-rcar-gen3-add-readme-for-building-with-Linaro-Gcc.patch unset PATCH_DIR

cd $WORK/ PKGS_DIR=$WORK/../proprietary cd $WORK/meta-renesas sh meta-rcar-gen3/docs/sample/copyscript/copy_proprietary_softwares.sh -f $PKGS_DIR </li> <li> For Yocto v2.12.0
 * 1) sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $PKGS_DIR
 * 1) !/bin/sh

mkdir build || exit cd build WORK=`pwd` echo $WORK

git clone git://git.yoctoproject.org/poky git clone git://git.linaro.org/openembedded/meta-linaro.git git clone git://git.openembedded.org/meta-openembedded git clone git://github.com/CogentEmbedded/meta-rcar.git meta-renesas -b v2.12.0

cd $WORK/poky git checkout -b tmp 40376446904ae3529be41737fed9a0b650ed167d cd $WORK/meta-linaro git checkout -b tmp 9b1fd178309544dff1f7453e796a9437125bc0d9 cd $WORK/meta-openembedded git checkout -b tmp 8ab04afbffb4bc5184cfe0655049de6f44269990

cd $WORK/meta-renesas export PATCH_DIR=meta-rcar-gen3/docs/sample/patch/patch-for-linaro-gcc patch -p1 < ${PATCH_DIR}/0001-rcar-gen3-add-readme-for-building-with-Linaro-Gcc.patch unset PATCH_DIR

cd $WORK/ PKGS_DIR=$WORK/../proprietary cd $WORK/meta-renesas sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $PKGS_DIR </li> </ol> </li>
 * 1) sh meta-rcar-gen3/docs/sample/copyscript/copy_proprietary_softwares.sh -f $PKGS_DIR

<li> Building yocto for H3ULCB.View board <ol> <li> For Yocto v2.9.0
 * 1) !/bin/sh

cd build WORK=`pwd` echo $WORK

cd $WORK source poky/oe-init-build-env

cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/mmp/*.conf ./conf/.
 * 1) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/bsp/*.conf ./conf/.
 * 2) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/gfx-only/*.conf ./conf/.

cd $WORK/build cp conf/local-wayland.conf conf/local.conf echo "IMAGE_INSTALL_remove += \" lib32-weston lib32-packagegroup-multimedia-libs lib32-omx-user-module lib32-libdrm lib32-libdrm-kms lib32-gles-user-module\"" >> $WORK/build/conf/local.conf

echo "MACHINE_FEATURES_append = \" h3ulcb-view\"" >> $WORK/build/conf/local.conf
 * 1) echo "LVDSCAMERA_ONE = \"1\"" >> $WORK/build/conf/local.conf
 * 2) echo "CA57CA53BOOT = \"1\"" >> $WORK/build/conf/local.conf

bitbake core-image-weston </li> <li> For Yocto v2.12.0
 * 1) !/bin/sh

cd build WORK=`pwd` echo $WORK

cd $WORK source poky/oe-init-build-env

cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/mmp/*.conf ./conf/.
 * 1) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/bsp/*.conf ./conf/.
 * 2) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/gfx-only/*.conf ./conf/.

cd $WORK/build cp conf/local-wayland.conf conf/local.conf echo "DISTRO_FEATURES_append = \" use_eva_pkg\"" >> $WORK/build/conf/local.conf

echo "MACHINE_FEATURES_append = \" h3ulcb-view\"" >> $WORK/build/conf/local.conf
 * 1) echo "LVDSCAMERA_ONE = \"1\"" >> $WORK/build/conf/local.conf
 * 2) echo "CA57CA53BOOT = \"1\"" >> $WORK/build/conf/local.conf

bitbake core-image-weston </li>

</ol> </li>

</ol>

Known issues and limitations
TBD