R-Car/Boards/U-Boot-Gen2

Introduction
This is the Wiki for the U-Boot on Renesas R-Car Gen2 SoCs and boards. Refer to the R-Car page for information about Renesas' R-Car SoC family.

Supported boards
As of U-Boot 2018.03-rc3, the following boards are supported including DM and DT:

Building U-Boot manually
Building U-Boot can be done manually by using the U-Boot sources.

Prerequisites

 * ARM cross-compiler is mandatory to build U-Boot.

ARM cross-compiler
Debian and Ubuntu includes an ARM cross-compiler in its standard package feed. You can install it as follows:

apt-get install gcc-arm-linux-gnueabi

Other distributions likely also provide ARM cross-compilers. Consult distro-specific documentation for details.

Obtain U-Boot sources
The preferred method of obtaining U-Boot sources is through git VCS, using git protocol:

git clone git://git.denx.de/u-boot.git

or via HTTP:

git clone http://git.denx.de/u-boot.git

Finally, check out the version of U-Boot that will be used for the build:

cd u-boot git checkout -b my_working_branch v2018.03-rc3

U-Boot git hosting also provides snapshots.

Prepare build environment
Before building U-Boot for R-Car Gen2 system, the following environment variables need to be configured:

export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi-

The later variable must match the prefix of the Aarch64 cross-toolchain installed on your system, the example above is valid for Debian and Ubuntu,

Build U-Boot
The U-Boot sources must be configured for a particular supported platform. List of supported platforms and matching U-Boot defconfigs is available at supported boards.

make y_defconfig

for example to configure U-Boot sources for R8A7791 M2 Porter board:

make porter_defconfig

Once configured, U-Boot sources can be compiled to produce u-boot.img and optionally u-boot-spl.srec:

make arm-linux-gnueabi-objcopy -O srec spl/u-boot-spl u-boot-spl.srec

To speed up build process, -jN option can be passed to make to start multiple jobs at the same time, this is beneficial especially on SMP systems. The following example starts up to (number of CPUs in a system + 1) jobs, which is the recommended amount:

make -j`expr \`nproc\` + 1`

Flashing U-Boot
Each platform has a slightly different process for updating the content of the flash. The list of supported boards contains links to instructions for updating each supported board.

M2 Porter
The M2 Porter board uses U-Boot SPL since v2018.03-rc3 due to increase in U-Boot binary size. This changes the flash layout!

1) Build u-boot.img and u-boot-spl.srec as instructed above. 2) Install u-boot.img to SPI NOR at offset 0x140000, for example from already running U-Boot: => tftp 0x50000000 192.168.1.300:u-boot.img => sf probe => sf erase 0x140000 0x80000 => sf write 0x50000000 0x140000 ${filesize} 3) Install u-boot-spl.srec instead of U-Boot using the procedure documented in Updating U-Boot on M2 Porter

After power-cycling the board, U-Boot SPL will come up and load U-Boot from SPI NOR.

Known issues: - RSPI driver is slow, to be fixed in 2018.05 - MicroSD slot is inoperable, to be fixed in 2018.05