====== Renesas RZ/G2M hihope-rzg2m build instructions ======
This page describes how to build following images/tools for Renesas RZ/G2M hihope-rzg2m.
* the latest CIP kernel
* the full hihope-rzg2m BSP from Renesas (including loader, U-Boot, kernel based on CIP kernel and rootfs)
* SDK (cross compiler, kernel sources, kernel headers and rootfs)
* the RZ/G2 flash writer
===== How to build the latest CIP Kernel for hihope-rzg2m =====
The Renesas RZ/G2M HopeRun HiHope RZ/G2M (hihope-rzg2m) is supported in the [[https://gitlab.com/cip-project/cip-kernel/linux-cip|CIP SLTS Kernel]]. The instructions below describe how to build the CIP SLTS Kernel for the hihope-rzg2m platform using the Renesas RZ/G2 toolchain.
==== Build Steps ====
1. Checkout CIP Kernel
$ cd [your working directory]
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git kernel
$ cd kernel
$ git fetch origin # Not needed if a fresh clone
$ git checkout origin/linux-4.19.y-cip
2. Configure compiler environment
If using the [[civilinfrastructureplatform:ciptesting:cipreferencehardware:hihope-rzg2m:hihope-rzg2mbuildinstructions#how_to_builduse_the_sdk|Renesas SDK]]:
$ source /opt/poky/2.4.3/environment-setup-aarch64-poky-linux
$ unset LDFLAGS
3. Configure Linux config for Renesas arm64 RZ/G2 platforms
$ cd ..
$ git clone https://gitlab.com/cip-project/cip-kernel/cip-kernel-config.git
$ cd kernel
$ cp ../cip-kernel-config/4.19.y-cip/arm64/renesas_defconfig arch/arm64/configs/renesas_defconfig
$ make renesas_defconfig
4. Build the Kernel and device tree
$ make
$ make dtbs
==== Build Output ====
Output file locations:
* Kernel: arch/arm64/boot/Image
* Device tree: arch/arm64/boot/dts/renesas/r8a774a1-hihope-rzg2m.dtb
* Device tree: arch/arm64/boot/dts/renesas/r8a774a1-hihope-rzg2m-ex.dtb (when using expansion board)
===== How to build the full hihope-rzg2m BSP from Renesas =====
This section contains information on how to build a CIP based Yocto BSP for the Renesas RZ/G2M HopeRun HiHope RZ/G2M (hihope-rzg2m).
^BSP type ^Supported features ^Proprietary Packages^
|core-image-bsp |basic BSP support without window system |Not required |
|core-image-weston|BSP with weston and proprietary HW codecs support |Required |
Full instructions and the instructions for the other BSP types can be found in section 3 of he "RZ/G2 Yocto recipe Start-Up Guide" that can be downloaded from the Renesas RZ/G Marketplace:
* America: https://mp.renesas.com/en-us/rzg/marketplace/document/RZGD000071.html
* Europe: https://mp.renesas.com/en-eu/rzg/marketplace/document/RZGD000071.html
* Asia: https://mp.renesas.com/en-sg/rzg/marketplace/document/RZGD000071.html
* Japan: https://mp.renesas.com/ja-jp/rzg/marketplace/document/RZGD000071.html
==== Supported Linux Host Distributions ====
Ubuntu 16.04 LTS
==== Build Steps ====
1. Install the required host packages
$ sudo apt install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libssl-dev
2. Download the required files (poky, meta-openembedded, meta-linaro, meta-renesas) by git-clone
$ export WORK=
$ mkdir $WORK
$ cd $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 https://github.com/renesas-rz/meta-rzg2.git
$ git clone http://git.yoctoproject.org/cgit.cgi/meta-gplv2
3. Checkout correct revisions
$ cd ${WORK}/poky
$ git checkout -b tmp 7e7ee662f5dea4d090293045f7498093322802cc
$ cd ${WORK}/meta-linaro
$ git checkout -b tmp 75dfb67bbb14a70cd47afda9726e2e1c76731885
$ cd ${WORK}/meta-openembedded
$ git checkout -b tmp 352531015014d1957d6444d114f4451e241c4d23
$ cd ${WORK}/meta-gplv2
$ git checkout -b tmp f875c60ecd6f30793b80a431a2423c4b98e51548
$ cd ${WORK}/meta-qt5
$ git checkout -b tmp c1b0c9f546289b1592d7a895640de103723a0305
$ cd ${WORK}/meta-rzg2
$ git checkout BSP-1.0.1-update1 # latest BSP version is better if exist: BSP-1.0.2, BSP-1.0.3, ...
4. (Only for core-image-weston/core-image-weston-sdk) Install proprietary software packages (graphics, multimedia)
Download packages from the RZ/G Marketplace:
* America: https://mp.renesas.com/en-us/rzg/marketplace/linux_package/rzg2-mlp-eva.html
* Europe: https://mp.renesas.com/en-eu/rzg/marketplace/linux_package/rzg2-mlp-eva.html
* Asia: https://mp.renesas.com/en-sg/rzg/marketplace/linux_package/rzg2-mlp-eva.html
* Japan: https://mp.renesas.com/ja-jp/rzg/marketplace/linux_package/rzg2-mlp-eva.html
$ mkdir ${WORK}/proprietary
$ cp RZG2_Group_Evaluation_Software_Package* $WORK/proprietary
$ cd ${WORK}/meta-rzg2
$ sh docs/sample/copyscript/copy_proprietary_softwares.sh $WORK/proprietary
5. Execute source command
$ cd ${WORK}
$ source poky/oe-init-build-env
6. Copy build configuration files
$ cp ${WORK}/meta-rzg2/docs/sample/conf/hihope-rzg2m/linaro-gcc/*.conf ${WORK}/build/conf/
7. Build with bitbake
$ cd $WORK/build
$ bitbake core-image-[bsp|weston]
NOTE: The build may take several hours to complete depending on the Linux Host PC performance and the network environment.
==== Build Output ====
Once the build is completed, the Kernel, device tree and RFS are located in $WORK/build/tmp/deploy/images/hihope-rzg2m.
^ # ^ Filename ^ Description ^ Note ^
| 1 | bootparam_sa0.srec | Loader (Boot parameter) | S-record format |
| 2 | bl2-hihope-rzg2m.srec | Loader (Trusted firmware-A BL2) | S-record format |
| 3 | cert_header_sa6.srec | Loader (Certification) | S-record format |
| 4 | bl31-hihope-rzg2m.srec | Trusted fimrware-A BL31 | S-record format |
| 5 | u-boot-elf-hihope-rzg2m.srec | U-Boot | symbolic link to the latest image, S-record format |
| 6 | Image | Linux kernel image | symbolic link to the latest image |
| 7 | r8a774a1-hihope-rzg2m.dtb | Device tree blob for hihope-rzg2m without the expansion board | symbolic link to the latest dtb |
| 8 | r8a774a1-hihope-rzg2m-ex.dtb | Device tree blob for hihope-rzg2m with the expansion board | symbolic link to the latest dtb |
===== How to build/use the SDK =====
This section contains information on how to build and use the Renesas RZ/G SDK.
^base image for SDK ^Supported features ^Proprietary Packages^
|core-image-minimal |minimal SDK (cross compiler and the other build tools) |Not required |
|core-image-weston |SDK with weston and proprietary multimedia features support|Required |
Full instructions can be found in section 6 of he "RZ/G2 Yocto recipe Start-Up Guide" that can be downloaded from the Renesas RZ/G Marketplace:
* America: https://mp.renesas.com/en-us/rzg/marketplace/document/RZGD000071.html
* Europe: https://mp.renesas.com/en-eu/rzg/marketplace/document/RZGD000071.html
* Asia: https://mp.renesas.com/en-sg/rzg/marketplace/document/RZGD000071.html
* Japan: https://mp.renesas.com/ja-jp/rzg/marketplace/document/RZGD000071.html
==== Build Steps ====
1. Follow the BSP build instructions above, steps 1-6
It doesn't matter if step 7 has already been run or not.
2. Configure host PC architecture
It is possible to build the SDK to run on a host PC using a different environment to the PC building the SDK.
In $WORK/build/conf/local.conf:
# This variable specified the architecture to build SDK/ADT items for and means
# you can build the SDK packages for architectures other than the machine you are
# running the build on (i.e. building i686 packages on an x86_64 host.)
# Supported values are i686 and x86_64
#SDKMACHINE ?= "i686"
SDKMACHINE ?= "x86_64"
3. Build SDK with bitbake
$ cd {$WORK}/build
$ bitbake core-image-[minimal|weston-sdk] -c populate_sdk
==== Build Output ====
Once the build is completed, the toolchain will be located in the $WORK/build/tmp/deploy/sdk/ directory (poky-glibc-[x86_64|i686]-core-image-[weston-sdk|minimal]-aarch64-toolchain-2.4.3.sh).
==== Using the SDK ====
1. Install the toolchain on host PC
$ sudo poky-glibc-[x86_64|i686]-core-image-[weston-sdk|minimal]-aarch64-toolchain-2.4.3.sh
[sudo] password for (INSTALL person): [enter password of your account]
Enter target directory for SDK (default: /opt/poky/2.4.3): [enter new location or just key enter]
Extracting SDK...done
Setting it up...done
SDK has been successfully set up and is ready to be used.
2. Set up environment variables for build
$ cd [your working directory]
$ source /opt/poky/2.4.3/environment-setup-aarch64-poky-linux
# When you use “ld” directly but not via gcc (in case of building Kernel, Driver or u-boot), disable LDFLAGS:
$ unset LDFLAGS
# When you use 'make menuconfig' or other tools related to ncurses, set PKG_CONFIG_PATH and disable PKG_CONFIG_SYSROOT_DIR:
$ export PKG_CONFIG_PATH=$OECORE_NATIVE_SYSROOT/usr/lib/pkgconfig
$ unset PKG_CONFIG_SYSROOT_DIR
3. Build application
$ $CC [your source code].c [optional FLAGs etc.]
===== How to build the RZ/G2 flash writer =====
This chapter describes how to build the RZ/G2 flash writer.
For further build options, please refer to [[https://github.com/renesas-rz/rzg2_flash_writer/blob/master/README.md|README of the RZ/G2 Flash Writer]]:
==== Prepare the compiler ====
Get cross compiler from linaro or setup the Yocto SDK.
Linaro toolchain:
cd ~/
wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-elf/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf.tar.xz
tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf.tar.xz
Yocto SDK:
source /opt/poky/2.4.3/environment-setup-aarch64-poky-linux
==== Prepare the source code ====
Get the source code of RZ/G2 flash writer.
cd ~/
git clone https://github.com/renesas-rz/rzg2_flash_writer.git
cd rzg2_flash_writer
git checkout -b v1.01 v1.01
==== Build the RZ/G2 flash writer ====
S-record file will be built by the following command.
Linaro toolchain:
make -f makefile.linaro clean
CROSS_COMPILE=~/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf/bin/aarch64-elf- make -f makefile.linaro BOARD=HIHOPE
Yocto SDK:
make clean
make BOARD=HIHOPE
Output image will be available in the following directory.
* ./AArch64_output/AArch64_Flash_writer_SCIF_DUMMY_CERT_E6300400_hihope.mot