Difference between pages "R-Car/Boards/Yocto-Gen3/v3.21.0" and "R-Car/Boards/Yocto-Gen3"

From eLinux.org
< R-Car‎ | Boards/Yocto-Gen3(Difference between pages)
Jump to: navigation, search
(Fix link and link text(H3SK version))
 
m (Redirected page to R-Car/Boards/Yocto-Gen3/v3.21.0)
(Tag: New redirect)
 
Line 1: Line 1:
{{TOC right}}
+
#REDIRECT [[R-Car/Boards/Yocto-Gen3/v3.21.0]]
This page contains information on building and running Yocto on:
+
[[Category:R-Car]]
* [[R-Car/Boards/H3SK | Renesas R-Car-H3 Starter Kit Premier]] (unofficial name - H3ULCB), https://www.renesas.com/us/en/solutions/automotive/adas/solution-kits/r-car-starter-kit.html
 
* [[R-Car/Boards/M3SK | Renesas R-Car-M3 Starter Kit Pro]] (unofficial name - M3ULCB), https://www.renesas.com/us/en/solutions/automotive/adas/solution-kits/r-car-starter-kit.html
 
'''NOTE: USE OFFICIAL DOCUMENTATION provided with R-Car BSPs FOR H3SK/M3SK boards'''
 
<br/><br/>
 
* [[R-Car/Boards/Kingfisher | Infotainment Carrier Board For R-Car Starter Kit(Kingfisher)]]
 
 
 
== Yocto versions ==
 
[http://git.yoctoproject.org/cgit/cgit.cgi/poky/tag/?id=yocto-2.1.3 Poky-2.1.3] is supported with Yocto v2.23.1. <br/>
 
[http://git.yoctoproject.org/cgit/cgit.cgi/poky/tag/?id=yocto-2.4.2 Poky-2.4.2] is supported with Yocto v3.9.0. <br/>
 
[http://git.yoctoproject.org/cgit/cgit.cgi/poky/tag/?id=yocto-2.4.3 Poky-2.4.3] is supported with Yocto v3.13.0, v3.15.0, v3.19.0, v3.21.0. <br/>
 
Specific commit of meta-openembedded is required.
 
 
 
== Host PC ==
 
Yocto v2.x.y(Ex Yocto v2.23.1) : Ubuntu 14.04 LTS (64bit) is recommended as OS. 32bit version is not supported. <br/>
 
Yocto v3.x.y(Ex Yocto v3.21.0) : Ubuntu 16.04 LTS (64bit) is recommended as OS. 32bit version is not supported.
 
 
 
== Preliminary steps ==
 
<ol>
 
<li>Download evaluation version of proprietary graphics and multimedia drivers from Renesas.<br/>
 
<br/>
 
To download Multimedia and Graphics library and related Linux drivers, please use the following link:<br/>
 
https://www.renesas.com/us/en/solutions/automotive/rcar-download/rcar-demoboard.html<br/>
 
<br/>
 
Graphic drivers are required for Wayland. Multimedia drivers are optional.<br/>
 
<br/>
 
</li>
 
 
 
<li> Install required packages
 
===== Ubuntu and Debian =====
 
<pre>
 
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
 
    build-essential chrpath socat libsdl1.2-dev xterm python-crypto cpio python python3 \
 
    python3-pip python3-pexpect xz-utils debianutils iputils-ping libssl-dev
 
</pre>
 
 
 
===== Fedora =====
 
<pre>
 
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 python-crypto cpio python python3 python3-pip python3-pexpect \
 
    ghc-lzma-conduit iputils openssl
 
</pre>
 
Refer to [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html#packages Yocto Project Quick Start] for more information.
 
</li>
 
</ol>
 
 
 
== Building the BSP for Renesas H3 Starter Kit, M3 Starter Kit ==
 
NOTE: to have ADAS View and HAD Solution kits supported follow instructions: [[R-Car/Boards/Yocto-Gen3-ADAS | R-Car Yocto Gen3 ADAS]]
 
<ol>
 
<li>Create a directory and switch to it <br/>
 
Warning! Yocto builds require a lot of disk space (up to 100 GB). Make sure you have got enough before starting the build.
 
<pre>
 
mkdir build
 
cd build
 
export WORK=`pwd`
 
</pre>
 
</li>
 
<li>Clone basic Yocto layers:
 
<pre>
 
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
 
git clone git://github.com/renesas-rcar/meta-renesas
 
</pre>
 
</li>
 
 
 
<li>
 
Switch to proper branches/commits
 
<ol>
 
<li>
 
For Yocto v2.23.1
 
<pre>
 
cd $WORK/poky
 
git checkout -b tmp yocto-2.1.3
 
cd $WORK/meta-openembedded
 
git checkout -b tmp 55c8a76da5dc099a7bc3838495c672140cedb78e
 
cd $WORK/meta-linaro
 
git checkout -b tmp 2f51d38048599d9878f149d6d15539fb97603f8f
 
cd $WORK/meta-renesas
 
git checkout -b tmp 7acbf5e2f99c59478adbc73c6a40d314589a3009
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.9.0
 
<pre>
 
cd $WORK/poky
 
git checkout -b tmp 342fbd6a3e57021c8e28b124b3adb241936f3d9d
 
cd $WORK/meta-openembedded
 
git checkout -b tmp dacfa2b1920e285531bec55cd2f08743390aaf57
 
cd $WORK/meta-linaro
 
git checkout -b tmp 75dfb67bbb14a70cd47afda9726e2e1c76731885
 
cd $WORK/meta-renesas
 
git checkout -b tmp fd078b6ece537d986852cb827bd21e022a797b2f
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.13.0 (Note: https://elinux.org/R-Car/Boards/Yocto-Gen3#Known_issues_and_limitations (No.3))
 
<pre>
 
cd $WORK/poky
 
git checkout -b tmp 7e7ee662f5dea4d090293045f7498093322802cc
 
cd $WORK/meta-openembedded
 
git checkout -b tmp 352531015014d1957d6444d114f4451e241c4d23
 
cd $WORK/meta-linaro
 
git checkout -b tmp 75dfb67bbb14a70cd47afda9726e2e1c76731885
 
cd $WORK/meta-renesas
 
git checkout -b tmp 00f70f062aace04c051fa92d3cd7b887718fc313
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.15.0 (Note: https://elinux.org/R-Car/Boards/Yocto-Gen3#Known_issues_and_limitations (No.4))
 
<pre>
 
cd $WORK/poky
 
git checkout -b tmp 7e7ee662f5dea4d090293045f7498093322802cc
 
cd $WORK/meta-openembedded
 
git checkout -b tmp 352531015014d1957d6444d114f4451e241c4d23
 
cd $WORK/meta-linaro
 
git checkout -b tmp 75dfb67bbb14a70cd47afda9726e2e1c76731885
 
cd $WORK/meta-renesas
 
git checkout -b tmp 8af0b7d6e445b532088a068dc012757001be3a1f
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.19.0
 
<pre>
 
cd $WORK/poky
 
git checkout -b tmp 7e7ee662f5dea4d090293045f7498093322802cc
 
cd $WORK/meta-openembedded
 
git checkout -b tmp 352531015014d1957d6444d114f4451e241c4d23
 
cd $WORK/meta-linaro
 
git checkout -b tmp 75dfb67bbb14a70cd47afda9726e2e1c76731885
 
cd $WORK/meta-renesas
 
git checkout -b tmp 20fcc94a8d05eda80250f27e87aaa3cfc3275300
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.21.0 <span style="color:#ff0000">(2020/02/20 updated)</span>
 
<pre>
 
cd $WORK/poky
 
git checkout -b tmp 7e7ee662f5dea4d090293045f7498093322802cc
 
cd $WORK/meta-openembedded
 
git checkout -b tmp 352531015014d1957d6444d114f4451e241c4d23
 
cd $WORK/meta-linaro
 
git checkout -b tmp 75dfb67bbb14a70cd47afda9726e2e1c76731885
 
cd $WORK/meta-renesas
 
git checkout -b tmp 59e8d5674348e2b3d14ac4552231809ab10ab84e <- updated
 
</pre>
 
</li>
 
</ol>
 
Another versions are not tested for compatibility.
 
Legacy BSP instruction can be found here [[R-Car/Boards/Yocto-Gen3-legacy | R-Car Yocto Gen3 legacy]]
 
</li>
 
 
 
<li>
 
Apply Linaro-GCC patch file:
 
<ol>
 
<li>
 
For Yocto v2.23.1
 
<pre>
 
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
 
</pre>
 
</li>
 
</ol>
 
</li>
 
<li>
 
Download proprietary driver modules to $WORK/proprietary folder.<br/>
 
You should see the following files:
 
<ol>
 
<li>
 
For Yocto v2.23.1
 
<pre>
 
$ ls -1 $WORK/proprietary/*.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20170828.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20170828.zip
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.9.0
 
<pre>
 
$ ls -1 $WORK/proprietary/*.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20180627.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20180627.zip
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.13.0
 
<pre>
 
$ ls -1 $WORK/proprietary/*.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20181029.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20181029.zip
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.15.0
 
<pre>
 
$ ls -1 $WORK/proprietary/*.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20181225.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20181225.zip
 
</pre>
 
</li><li>
 
For Yocto v3.19.0
 
<pre>
 
$ ls -1 $WORK/proprietary/*.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20190507.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20190507.zip
 
</pre>
 
</li><li>
 
For Yocto v3.21.0
 
<pre>
 
$ ls -1 $WORK/proprietary/*.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20190722.zip
 
R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20190722.zip
 
</pre>
 
</li>
 
 
 
</ol>
 
</li>
 
<li>
 
Populate meta-renesas with proprietary software packages.
 
<pre>
 
export PKGS_DIR=$WORK/proprietary
 
cd $WORK/meta-renesas
 
sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $PKGS_DIR
 
unset PKGS_DIR
 
</pre>
 
</li>
 
 
 
<li>
 
Setup build environment
 
<pre>
 
cd $WORK
 
source poky/oe-init-build-env
 
</pre>
 
</li>
 
 
 
<li>
 
Prepare default configuration files.
 
<ol>
 
<li>
 
For Yocto v2.23.1
 
<pre>
 
cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/<h3ulcb|m3ulcb>/linaro-gcc/mmp/*.conf ./conf/
 
cd $WORK/build
 
cp conf/local-wayland.conf conf/local.conf
 
</pre>
 
</li>
 
<li>
 
For Yocto v3.9.0 or later
 
<pre>
 
cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/<h3ulcb|m3ulcb>/poky-gcc/mmp/*.conf ./conf/
 
cd $WORK/build
 
cp conf/local-wayland.conf conf/local.conf
 
</pre>
 
</li>
 
</ol>
 
 
 
<li>
 
(Edit $WORK/build/conf/local.conf to enable/disable graphics and multimedia proprietary drivers support)
 
</li>
 
 
 
<li>
 
Edit local.conf with evaluation packages requirements:
 
<ol>
 
<li>
 
For Yocto v2.23.1 or later (to enable EVA_ prefix during packages install)
 
<pre>
 
DISTRO_FEATURES_append = " use_eva_pkg"
 
</pre>
 
</li>
 
</ol>
 
</li>
 
 
 
<li>
 
Start the build <br />
 
<pre>
 
bitbake core-image-weston
 
</pre>
 
</li>
 
 
 
<li>
 
Building image can take up to a few hours depending on your host system performance.<br>
 
After the build has been completed successfully, you should see the output similar to:
 
<pre class="bash">
 
NOTE: Tasks Summary: Attempted 4704 tasks of which 31 didn't need to be rerun and all succeeded.
 
</pre>
 
and the command prompt should return.
 
</li>
 
 
 
<li>
 
Bitbake has generated all the necessary files in ./tmp/deploy/images directory. <br/>
 
You can verify its content:
 
<pre class="bash">
 
$ 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-es1-h3ulcb.dtb
 
./tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb-4x2g.dtb
 
./tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb.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
 
</pre>
 
'''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 proceed with running Yocto images
 
</li>
 
</ol>
 
 
 
<!--
 
==OpenCL support==
 
The following page describes how to enable OpenCL and Caffe support:
 
[[R-Car/Boards/Yocto-Gen3/OpenCL]]
 
-->
 
 
 
== Build SDK ==
 
After building BSP you may build SDK:
 
<pre>
 
bitbake core-image-weston -c populate_sdk
 
</pre>
 
After build finished the SDK installation script may be found in following path:
 
<pre>
 
tmp/deploy/sdk/poky-glibc-x86_64-core-image-weston-aarch64-toolchain-*.sh
 
</pre>
 
Install SDK by run the following command and follow instructions on the screen:
 
<pre>
 
./tmp/deploy/sdk/poky-glibc-x86_64-core-image-weston-aarch64-toolchain-*.sh
 
</pre>
 
 
 
== Running Yocto images ==
 
Linux kernel can be booted from microSD card or from TFTP. Root FS can be mounted from micro SD card or via NFS.
 
 
 
=== Loading kernel via TFTP and rootfs via NFS ===
 
Follow these steps to setup working TFTP and NFS server:
 
<ol>
 
<li>
 
Setup a TFTP server.
 
==== Ubuntu ====
 
Install '''tftpd-hpa''' package along with tftp tools:
 
<pre>
 
sudo apt-get install tftp tftpd-hpa
 
</pre>
 
 
 
==== Fedora ====
 
<ol>
 
<li>
 
Install necessary packages:
 
<pre>
 
sudo yum install tftp-server tftp
 
</pre>
 
tftp-server is a part of xinetd. See [http://docs.fedoraproject.org/en-US/Fedora/20/html/Installation_Guide/ch13s05s03.html Fedora manual] for more information.
 
</li>
 
<li>
 
Enable TFTP server:
 
<pre>
 
sudo vi /etc/xinetd.d/tftp
 
</pre>
 
Set <pre>disable = no</pre> Save file and exit.
 
</li>
 
<li>
 
Start xinetd:
 
<pre>
 
sudo systemctl start xinetd.service
 
sudo systemctl enable xinetd.service
 
</pre>
 
</li>
 
</ol>
 
 
 
</li>
 
 
 
<li>
 
Copy '''Image''' and '''Image-r8a7795-h3ulcb.dtb''' (for ws2.0 silicon) and/or '''Image-r8a7795-h3ulcb-4x2g.dtb''' (for RTP0RC77951SKBX010SA03(DDR 8GiB)) and/or '''Image-r8a7795-es1-h3ulcb.dtb''' (for ws1.1) from $WORK/build/tmp/deploy/images/h3ulcb/ to TFTP server root.
 
==== Ubuntu ====
 
<pre>
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image /srv/tftp/
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image-r8a7795-es1-h3ulcb.dtb /srv/tftp/
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb.dtb /srv/tftp/
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb-4x2g.dtb /srv/tftp/
 
</pre>
 
 
 
==== Fedora ====
 
<pre>
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image /var/lib/tftpboot/
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image-r8a7795-es1-h3ulcb.dtb /var/lib/tftpboot/
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb.dtb /var/lib/tftpboot/
 
cp $WORK/build/tmp/deploy/images/h3ulcb/Image-r8a7795-h3ulcb-4x2g.dtb /var/lib/tftpboot/
 
</pre>
 
[https://elinux.org/R-Car/Boards/H3SK#H3SK_has_several_kinds_of_boards Which version is my H3SK board?]
 
</li>
 
 
 
<li>
 
Verify that TFTP server is working.
 
<pre>
 
tftp localhost -c get Image && ls Image
 
</pre>
 
</li>
 
 
 
<li>
 
Setup NFS server.
 
==== Debian/Ubuntu ====
 
<ol>
 
<li>
 
Install necessary packages:
 
<pre>
 
sudo apt-get install nfs-kernel-server nfs-common
 
</pre>
 
</li>
 
<li>
 
Start NFS server:
 
<pre>
 
sudo /etc/init.d/nfs-kernel-server start
 
</pre>
 
</li>
 
</ol>
 
 
 
==== Fedora ====
 
<ol>
 
<li>
 
Install necessary packages:
 
<pre>
 
sudo yum install nfs-utils
 
</pre>
 
</li>
 
<li>
 
Enable and start nfs server:
 
<pre>
 
sudo systemctl enable rpcbind.service
 
sudo systemctl enable nfs-server.service
 
sudo systemctl enable nfs-lock.service
 
sudo systemctl enable nfs-idmap.service
 
sudo systemctl start rpcbind.service
 
sudo systemctl start nfs-server.service
 
sudo systemctl start nfs-lock.service
 
sudo systemctl start nfs-idmap.service
 
</pre>
 
</li>
 
</ol>
 
</li>
 
 
 
<li>
 
Export root FS to NFS. (Change IMAGE and MACHINE to fit your build).
 
<ol>
 
<li>
 
Unpack rootfs to a dedicated directory:
 
<pre>
 
IMAGE=weston
 
MACHINE=h3ulcb|m3ulcb
 
NFS_ROOT=/nfs/${MACHINE}
 
sudo mkdir -p "${NFS_ROOT}"
 
sudo rm -rf "${NFS_ROOT}"/*
 
sudo tar -xjf "${WORK}/build/tmp/deploy/images/${MACHINE}/core-image-${IMAGE}-${MACHINE}-*.tar.bz2" -C "${NFS_ROOT}"
 
sync
 
</pre>
 
</li>
 
<li>
 
Edit '''/etc/exports''':
 
<pre>
 
sudo vi /etc/exports
 
</pre>
 
add
 
<pre>
 
/nfs/h3ulcb *(rw,no_subtree_check,sync,no_root_squash,no_all_squash)
 
/nfs/m3ulcb *(rw,no_subtree_check,sync,no_root_squash,no_all_squash)
 
</pre>
 
Save the file and exit.
 
</li>
 
<li>
 
Force NFS server to re-read /etc/exports
 
<pre>sudo exportfs -a</pre>
 
</li>
 
</ol>
 
</li>
 
<li>
 
Verify that NFS is working.
 
<pre>
 
[builduser@buildmachine ~]$ showmount -e localhost
 
Export list for localhost:
 
/nfs/h3ulcb *
 
/nfs/m3ulcb *
 
</pre>
 
</li>
 
 
 
<li><span id="Boot into U-Boot command prompt">Boot into U-Boot command prompt</span>
 
 
 
<ol>
 
<li>
 
Connect to serial console over microUSB using minicom or picocom.
 
</li>
 
<li>
 
Switch the board on or reset it. Press any key to stop U-Boot automatic countdown.
 
</li>
 
</ol>
 
Refer to [[R-Car/Boards/H3SK#Power_on_the_board_and_go_to_U-Boot_prompt|H3SK board page]], [[R-Car/Boards/M3SK#Power_on_the_board_and_go_to_U-Boot_prompt|M3SK board page]] for more information.
 
</li>
 
 
 
<li>
 
Configure Ethernet, TFTP, and kernel command line in U-Boot:
 
<!--setenv ethaddr xx:xx:xx:xx:xx:xx
 
Replace xx:xx:xx:xx:xx:xx with the MAC address of your board. It should be on the sticker on top of the Ethernet port.<br/>
 
-->
 
<pre>
 
setenv ipaddr <board-ip>
 
setenv serverip <your-computer-ip>
 
setenv bootcmd 'tftp 0x48080000 Image; tftp 0x48000000 Image-r8a7795-h3ulcb.dtb; booti 0x48080000 - 0x48000000'
 
setenv bootargs 'ignore_loglevel rw root=/dev/nfs nfsroot=<your-computer-ip>:<nfs-path>,nfsvers=3 ip=<board-ip>:<your-computer-ip>::255.255.255.0:h3ulcb'
 
saveenv
 
</pre>
 
Replace <board-ip> with the proper IP address for the board.  Replace <your-computer-ip> with the IP address of your computer, where tftp and nfs servers are installed. Replace <nfs-path> with the exported path of the root FS. <br/> For example:
 
<pre>
 
setenv ipaddr 192.168.1.3
 
setenv serverip 192.168.1.2
 
setenv bootcmd 'tftp 0x48080000 Image; tftp 0x48000000 Image-r8a7795-h3ulcb.dtb; booti 0x48080000 - 0x48000000'
 
setenv bootargs 'ignore_loglevel rw root=/dev/nfs nfsroot=192.168.1.2:/nfs/h3ulcb,nfsvers=3 ip=192.168.1.3:192.168.1.2::255.255.255.0:h3ulcb'
 
saveenv
 
</pre>
 
You can also use
 
<pre>
 
dhcp
 
</pre>
 
command to obtain information from DHCP server.<br/>
 
'''Note:''' You can always see the environment with ''printenv'' command.  Refer to [http://www.denx.de/wiki/U-Boot/Documentation U-Boot manual] for details.
 
</li>
 
 
 
<li>
 
Verify the connection over Ethernet from U-Boot:
 
<pre>
 
ping <your-computer-ip>
 
</pre>
 
You should see:
 
<pre>
 
=> ping 192.168.1.2   
 
ravb:0 is connected to ravb.  Reconnecting to ravb
 
ravb Waiting for PHY auto negotiation to complete.. done
 
ravb: 100Base/Full
 
Using ravb device
 
host 192.168.1.2 is alive
 
</pre>
 
</li>
 
 
 
<li>
 
Reset the board by pushing reset button
 
<br/>
 
Refer to [[R-Car/Boards/H3SK#Power_on_the_board_and_go_to_U-Boot_prompt|H3SK board page]], [[R-Car/Boards/M3SK#Power_on_the_board_and_go_to_U-Boot_prompt|M3SK board page]] for more information.
 
</li>
 
 
 
<li>
 
The board should boot the kernel:
 
<pre>
 
NOTICE:  BL2: R-Car Gen3 Initial Program Loader(CA57) Rev.1.0.10
 
NOTICE:  BL2: PRR is R-Car H3 ES1.0
 
NOTICE:  BL2: Boot device is HyperFlash(80MHz)
 
NOTICE:  BL2: LCM state is CM
 
NOTICE:  BL2: AVS setting succeeded. DVFS_SetVID=0x52
 
NOTICE:  BL2: DDR1600(rev.0.10)
 
NOTICE:  BL2: DRAM Split is 4ch
 
NOTICE:  BL2: QoS is default setting(rev.0.32)
 
NOTICE:  BL2: Lossy Decomp areas
 
NOTICE:      Entry 0: DCMPAREACRAx:0x80000540 DCMPAREACRBx:0x570
 
NOTICE:      Entry 1: DCMPAREACRAx:0x40000000 DCMPAREACRBx:0x0
 
NOTICE:      Entry 2: DCMPAREACRAx:0x20000000 DCMPAREACRBx:0x0
 
NOTICE:  BL2: v1.1(release):c2f9fc9
 
NOTICE:  BL2: Built : 00:36:25, Nov 20 2016
 
NOTICE:  BL2: Normal boot
 
NOTICE:  BL2: dst=0xe631a1a8 src=0x8180000 len=512(0x200)
 
NOTICE:  BL2: dst=0x43f00000 src=0x8180400 len=6144(0x1800)
 
NOTICE:  BL2: dst=0x44000000 src=0x81c0000 len=65536(0x10000)
 
NOTICE:  BL2: dst=0x44100000 src=0x8200000 len=524288(0x80000)
 
NOTICE:  BL2: dst=0x50000000 src=0x8640000 len=1048576(0x100000)
 
 
 
 
 
U-Boot 2015.04 (Nov 20 2016 - 00:54:11)
 
 
 
CPU: Renesas Electronics R8A7795 rev 1.0
 
Board: H3ULCB
 
I2C:  ready
 
DRAM:  3.9 GiB
 
MMC:  sh-sdhi: 0, sh-sdhi: 1
 
In:    serial
 
Out:  serial
 
Err:  serial
 
Net:  ravb
 
Hit any key to stop autoboot:  0
 
ravb Waiting for PHY auto negotiation to complete.. done
 
ravb: 100Base/Full
 
BOOTP broadcast 1
 
BOOTP broadcast 2
 
BOOTP broadcast 3
 
DHCP client bound to address 192.166.10.31 (1287 ms)
 
Using ravb device
 
TFTP from server 192.166.10.1; our IP address is 192.166.10.31
 
Filename 'Image'.
 
Load address: 0x48080000
 
Loading: #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        #################################################################
 
        ####################################################
 
        627 KiB/s
 
done
 
Bytes transferred = 13905920 (d43000 hex)
 
ravb:0 is connected to ravb.  Reconnecting to ravb
 
ravb Waiting for PHY auto negotiation to complete. done
 
ravb: 100Base/Full
 
Using ravb device
 
TFTP from server 192.166.10.1; our IP address is 192.166.10.31
 
Filename 'Image-r8a7795-h3ulcb.dtb'.
 
Load address: 0x48000000
 
Loading: #############
 
        12.7 KiB/s
 
done
 
Bytes transferred = 66470 (103a6 hex)
 
## Flattened Device Tree blob at 48000000
 
  Booting using the fdt blob at 0x48000000
 
  Using Device Tree in place at 0000000048000000, end 00000000480133a5
 
 
 
Starting kernel ...                                                                                                                       
 
</pre>
 
</li>
 
</ol>
 
 
 
==How to prepare and boot from eMMC/SD card==
 
 
 
This section describes steps that are necessary for preparing and booting from SD card.
 
 
 
===Preparing eMMC/SD card===
 
In order to prepare you SD card, follow these instructions on host machine:
 
 
 
1. Partion your SD card to set 1 partition and ID=83 (Linux)
 
<br/>
 
Make sure the SD card doesn't contain any important files.
 
<br/>
 
<span style="color:#ff0000">'''WARNING!''' These steps may erase the SD card completely. All files my be lost.</span>
 
 
 
$ fdisk /dev/mmcblk0
 
-> d
 
-> n
 
-> p
 
-> 1
 
-> t
 
-> 83
 
 
 
2. Format this partition to ext3 (or ext4)
 
 
 
$ mkfs.ext3 /dev/mmcblk0p1
 
 
 
3. Mount this partition on your host to any directory and upack the core-image-weston-*.tar.bz2 into mounted folder. And Copy Image and Image-r8a7795-h3ulcb.dtb (for ws2.0 silicon) and/or Image-r8a7795-h3ulcb-4x2g.dtb (for RTP0RC77951SKBX010SA03(DDR 8GiB)) and/or Image-r8a7795-es1-h3ulcb.dtb (for ws1.1) from $WORK/build/tmp/deploy/images/h3ulcb/ to sd card /boot.  In case of m3ulcb copy dtb from $WORK/build/tmp/deploy/images/m3ulcb/.
 
 
 
$ mount /dev/mmcblk0p1 /mnt
 
$ cd <your_yocto_build_directory>
 
$ tar xfj  build/tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb-*.rootfs.tar.bz2  -C /mnt
 
$ cp $WORK/build/tmp/deploy/images/h3ulcb/XXXX.dtb /mnt/boot/
 
 
 
NOTE: probably you need to be a root user, hence use "sudo"
 
 
 
===Configure U-Boot to boot from SD card===
 
 
 
Proper U-Boot command to boot from SD:
 
# setenv bootargs 'rw root=/dev/mmcblk1p1 rootwait'
 
# ext2load mmc 0:1 0x48080000 /boot/Image
 
# ext2load mmc 0:1 0x48000000 /boot/Image-r8a7795-h3ulcb.dtb
 
# booti 0x48080000 - 0x48000000
 
 
 
Note from user: When I created my image with mkfs.ext3, and booted with rootfstype=ext3, the kernel could not
 
find mount the filesystem.  The kernel boot gave an error message:
 
"EXT4-fs (mmcblk1p1): couldn't mount as ext3 due to feature incompatibilities".
 
I switched to 'rootfstype=ext4' in my bootargs, and the kernel booted OK.
 
 
 
Example of U-Boot environment variables:
 
baudrate=115200
 
bootargs_emmc=rw root=/dev/mmcblk0p1 rootwait
 
bootargs_nfs=rw root=/dev/nfs rootwait ip=dhcp
 
bootargs_sd0=rw root=/dev/mmcblk1p1 rootwait
 
bootcmd=run bootcmd_sd0
 
bootcmd_emmc=set bootargs ${bootargs_emmc};ext2load mmc 1:1 0x48080000 /boot/Image;ext2load mmc 1:1 0x48000000 /boot/${dtb};run booti_cmd
 
bootcmd_nfs=set bootargs ${bootargs_nfs};bootp 0x48080000 Image;tftp 0x48000000 ${dtb};run booti_cmd
 
bootcmd_sd0=set bootargs ${bootargs_sd0};ext2load mmc 0:1 0x48080000 /boot/Image;ext2load mmc 0:1 0x48000000 /boot/${dtb};run booti_cmd
 
bootdelay=3
 
booti_cmd=booti 0x48080000 - 0x48000000
 
dtb=Image-r8a7795-h3ulcb.dtb
 
ethact=ravb
 
ethaddr=2E:09:0A:00:BE:11
 
fdt_high=0xffffffffffffffff
 
initrd_high=0xffffffffffffffff
 
stderr=serial
 
stdin=serial
 
stdout=serial
 
ver=U-Boot 2015.04 (Sep 23 2016 - 13:45:29)<br>
 
Environment size: 1092/131068 bytes
 
 
 
To verify the SD card, type the following in U-Boot prompt:
 
=> mmc dev 0
 
switch to partitions #0, OK
 
mmc0 is current device
 
=> mmc info
 
Device: sh-sdhi
 
Manufacturer ID: 3
 
OEM: 5344
 
Name: SL64G
 
Tran Speed: 50000000
 
Rd Block Len: 512
 
SD version 3.0
 
High Capacity: Yes
 
Capacity: 59.5 GiB
 
Bus Width: 4-bit
 
Erase Group Size: 512 Bytes
 
=> ext2ls mmc 0:1 /boot
 
<DIR>      4096 .
 
<DIR>      4096 ..
 
<SYM>        32 Image
 
        14039040 Image-4.9.0-yocto-standard
 
            69584 Image-r8a7795-h3ulcb.dtb
 
 
 
== Build scripts examples ==
 
<ol>
 
 
 
<li> Build preparation
 
<br />
 
YOCTO_VERSION and META_VERSION must be changed depending your Yocto version.
 
<pre>
 
#!/bin/sh
 
 
 
# Create a directory and switch to it
 
mkdir build
 
cd build
 
WORK=`pwd`
 
echo $WORK
 
 
 
# For Yocto v2.23.1
 
YOCTO_VERSION=yocto-2.1.3
 
META_VERSION=krogoth
 
 
 
# For Yocto v3.9.0
 
#YOCTO_VERSION=yocto-2.4.2
 
#META_VERSION=rocko
 
 
 
# For Yocto v3.13.0, v3.15.0, v3.19.0, v3.21.0
 
#YOCTO_VERSION=yocto-2.4.3
 
#META_VERSION=rocko
 
 
 
# Clone basic Yocto layers in parallel
 
git clone -b $YOCTO_VERSION --depth 1 git://git.yoctoproject.org/poky &
 
git clone -b $META_VERSION --depth 1 git://git.linaro.org/openembedded/meta-linaro.git &
 
git clone -b $META_VERSION --depth 1 git://git.openembedded.org/meta-openembedded &
 
git clone -b $META_VERSION --depth 1 git://github.com/renesas-rcar/meta-renesas &
 
 
 
# Wait for all clone operations
 
wait
 
 
 
# Apply Linaro-GCC patch file (The patch only adds README.linaro)
 
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
 
 
 
# Make sure proprietary driver modules are downloaded to $WORK/proprietary folder
 
# If the modules are not downloaded, copy_evaproprietary_softwares.sh warns it
 
# See https://www.renesas.com/en-us/solutions/automotive/rcar-demoboard.html (need to login!)
 
# $ ls -1 $WORK/proprietary/*.zip
 
# R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20170828.zip
 
# R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20170828.zip
 
 
 
# Populate meta-renesas with proprietary software packages
 
cd $WORK/meta-renesas
 
sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $WORK/proprietary
 
</pre>
 
</li>
 
 
 
<li> Building yocto for H3ULCB board
 
<ol>
 
<li> For Yocto v2.23.1
 
<pre>
 
#!/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/bsp/*.conf ./conf/.
 
#cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/gfx-only/*.conf ./conf/.
 
cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/mmp/*.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
 
 
 
bitbake core-image-weston
 
</pre>
 
</li>
 
</ol>
 
<ol>
 
<li> For Yocto v3.9.0 or later
 
<pre>
 
#!/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/poky-gcc/bsp/*.conf ./conf/.
 
#cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/poky-gcc/gfx-only/*.conf ./conf/.
 
cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/poky-gcc/mmp/*.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
 
 
 
bitbake core-image-weston
 
</pre>
 
</li>
 
</ol>
 
</li>
 
 
 
</ol>
 
 
 
== FAQ ==
 
=== Discussion site ===
 
http://elinux.org/Talk:R-Car/Boards/Yocto-Gen3
 
 
 
=== How do I increase USB bandwidth ===
 
<ol>
 
 
 
<li> Download:<br>
 
M3SK [[File:M3v10_usb20_iso_mode.zip]]<br>
 
H3SK WS1.1 (RTP0RC7795SKBX0010SA00) [[File:H3v11_usb20_iso_mode.zip]]<br>
 
H3SK WS2.0 (RTP0RC77951SKBX010SA00) [[File:H3v20_usb20_iso_mode.zip]]<br>
 
</li>
 
 
 
<li> Setting
 
<pre>
 
<Install Driver>
 
$ modprobe qos
 
<Change directory to csv path>
 
$ cd /path_to_csv
 
<Store QoS parameters to QoS SRAM>
 
$ qos_tp setall file.csv
 
<Reflect Qos SRAM to QoS controller>
 
$ qos_tp switch
 
</pre>
 
</li>
 
</ol>
 
=== How do access to USB memory from U-boot(Yocto v3.13.0 or later)===
 
<ol>
 
<li>Some USB memory may not be recognized.
 
<pre>
 
=> usb start
 
starting USB...
 
USB0:  USB EHCI 1.10
 
scanning bus 0 for devices... EHCI timed out on TD - token=0x80008d80
 
 
 
      USB device not accepting new address (error=80000000)
 
1 USB Device(s) found
 
      scanning usb for storage devices... 0 Storage Device(s) found
 
=>
 
</pre>
 
</li>
 
<li>[How to fix] Set the "usb_pgood_delay 2000" variable
 
<pre>
 
=> setenv usb_pgood_delay 2000
 
=> saveenv
 
=> reset
 
=> usb start
 
</pre>
 
</li>
 
</ol>
 
 
 
== Known issues and limitations ==
 
<ol>
 
<li> [SW limitation] Yocto v3.4 or later doesn't support RTP0RC7795SKBX0010SA00(H3 v1.1 Starter Kit).<br/>
 
Please use the H3 v2.0 SK<br/>
 
<br/>
 
<li> [Known issue]
 
If you encounter a kernel hang-up while using Yocto v3.4.0 or later, please refer to the following pages.<br>
 
H3 SK: No.1 of https://elinux.org/R-Car/Boards/H3SK#Known_Issues<br>
 
M3 SK: No.2 of https://elinux.org/R-Car/Boards/M3SK#Known_Issues
 
</li>
 
<br/>
 
<li> [SW limitations] Yocto v3.13.0<br/>
 
<ol>
 
<li>[U-boot]Reading environment variables from eMMC may fail.
 
<pre>
 
Loading Environment from MMC... *** Warning - No block device, using default environment
 
</pre>
 
</li>
 
<li>[U-boot]SD SDR50/104 card may not be recognized.
 
<pre>
 
Ex)
 
=> ext4ls mmc 0
 
timeout during DMA
 
timeout during DMA
 
timeout during DMA
 
timeout during DMA
 
timeout during DMA
 
error during DMA
 
** Unrecognized filesystem type **
 
=>
 
</pre>
 
</li>
 
<!--
 
<li>[U-boot]Some USB memory may not be recognized.
 
<pre>
 
=> usb start
 
starting USB...
 
USB0:  USB EHCI 1.10
 
scanning bus 0 for devices... EHCI timed out on TD - token=0x80008d80
 
 
 
      USB device not accepting new address (error=80000000)
 
1 USB Device(s) found
 
      scanning usb for storage devices... 0 Storage Device(s) found
 
=>
 
</pre>
 
[How to fix] Set the "usb_pgood_delay 2000" variable
 
<pre>
 
=> setenv usb_pgood_delay 2000
 
=> saveenv
 
=> reset
 
=> usb start
 
</pre>
 
</li>
 
-->
 
<li>[Kernel] When using GStreamer, once playing audio at specific sampling rate, the audio with a different sampling rate cannot be played back. And some movie files cannot be played back.
 
<pre>
 
Ex)
 
root@m3ulcb:~# gst-launch-1.0 filesrc location=sample.wav ! wavparse ! audioconvert ! alsasink
 
Setting pipeline to PAUSED ...
 
Pipeline is PREROLLING ...
 
[  273.920848] rcar_sound ec500000.sound: SSI parent/child should use same rate
 
[  273.927930] rcar_sound ec500000.sound: ssi[0] : prepare error -22
 
[  273.934055] rcar_sound ec500000.sound: ASoC: cpu DAI prepare error: -22
 
ERROR: from element /GstPipeline:pipeline0/GstAlsaSink:alsasink0: Could not get/set sett
 
ings from/on resource.
 
Additional debug info:
 
../../../gst-plugins-base-1.12.2/ext/alsa/gstalsasink.c(617): set_hwparams (): /GstPipel
 
ine:pipeline0/GstAlsaSink:alsasink0:
 
Unable to set hw params for playback: Invalid argument
 
ERROR: pipeline doesn't want to preroll.
 
Setting pipeline to NULL ...
 
Freeing pipeline ...
 
root@m3ulcb:~#
 
</pre>
 
</li>
 
</ol>
 
</li>
 
<li> [SW limitations] Yocto v3.15.0<br/>
 
<ol>
 
<li>[U-boot]Reading environment variables from eMMC on M3 Starter Kit may fail.
 
<pre>
 
communication out of sync
 
</pre>
 
</li>
 
<li> [U-boot]Reading environment variables from eMMC on H3 v2 Starter Kit may fail.
 
<pre>
 
  Loading Environment from MMC... timeout during DMA
 
  *** Warning - !read failed, using default environment
 
</pre>
 
Workaround patch: https://github.com/u-boot/u-boot/commit/f58d6771a2afad71594c1264aadde461210a4675<br>
 
U-boot binary [[File:u-boot-elf-h3ulcb-WA.zip]]<br><br>
 
</li>
 
</ol>
 
</li>
 
</ol>
 

Revision as of 23:36, 2 June 2020