dcsimg
Skip to end of metadata
Go to start of metadata

This is a page about Renesas's Cortex-A15 based R8A7791; R-Car_M2_Porter.

Availability

Boards:
Y-RCAR-M2-PORTER-A at Digi-Key

Basic Requirements

ARM Cross Compiler: GCC

This is a pre-built (64bit) version of Linaro GCC that runs on generic linux, sorry (32bit) x86 users, it's time to upgrade...
Download/Extract:

~/
wget -c https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
export CC=`pwd`/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

Test Cross Compiler:

~/
${CC}gcc --version
arm-linux-gnueabihf-gcc (Linaro GCC 4.9-2017.01) 4.9.4
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Bootloader: U-Boot

Das U-Boot – the Universal Boot Loader: http://www.denx.de/wiki/U-Boot
Download:

~/
git clone https://github.com/u-boot/u-boot
cd u-boot/
git checkout v2013.01.01 -b tmp

Patches:

~/u-boot
git pull --no-edit https://github.com/RobertCNelson/u-boot-boards v2013.01.01_porter

Configure and Build:

~/u-boot
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} porter_config
make ARCH=arm CROSS_COMPILE=${CC}

Programming: U-Boot

elinux Porter section on programming: https://elinux.org/R-Car/Boards/Porter#Updating_U-Boot

  1. JP2: move to Jumper to 2-3
  2. Start picocom
    ~/u-boot
    sudo picocom -b 38400 --send-cmd "ascii-xfr -vvs" /dev/ttyUSB0
    
  3. Switch on Board
  4. Execute ls command
    PICOCOM
    PORTER(M2W) SPI_LOADER(DDR3L) V0.20 2015.07.14
     DEVICE S25FL032
      
    PORTER(R-CarM2W) MiniMonitor SPI_BOOT 
     Work memory DRAM (H'40200000-) 
     DDR mode : DDR3-1600
     2015.10.29 Ver0.10 ** Program on DRAM (H'40000000-)  ** 
     
    >ls
    Load Program to Spiflash memory (U16:S25FL512S)
    JP2(SPI_SEL) 1pin-Side! Setting OK? (Push Y key)
    
  5. JP2: move to Jumper to 1-2 and press "Y"
    PICOCOM
    ---------------------------------------------------------
    Please select,SPI-FLASH Save Area. 
     1:Loader Program : Program to execute on SecureRAM      
            SPI_Address = H' 000_0000-H' 003_FFFF            
     
     2:User Program : Program to execute on DRAM or SecureRAM
            SPI_Address = H' 008_0000-H' 3FF_FFFF            
    ---------------------------------------------------------
      Select area(1-2)>
    
  6. Press "2"
    PICOCOM
      Select area(1-2)>2
    -- User Program ----------------------------
    Please Input User Program Start Address :
    
  7. Use: "e6304000"
    PICOCOM
    Please Input User Program Start Address : e6304000
    Work RAM(H'50000000-H'53FFFFFF) Clear....
    please send ! ('.' & CR stop load)
    
  8. Type: CTRL-A, CTRL-S (file=u-boot.srec)
    PICOCOM
    please send ! ('.' & CR stop load)
     
    *** file: u-boot.srec
    
  9. Press "y" to save u-boot into the SPI flash
    PICOCOM
    $ ascii-xfr -vvs u-boot.srec
    ASCII upload of "u-boot.srec"
    
    699.0 Kbytes transferred at 3827 CPS... Done.
    
    *** exit status: 0 ***
    SPI Data Clear(H'FF) Check :H'00080000-000BFFFF,Clear OK?(y/n)
    
  10. Flashing Complete
    PICOCOM
    *** exit status: 0 ***
    SPI Data Clear(H'FF) Check :H'00080000-000BFFFF Erasing..Erase Completed 
    SAVE SPI-FLASH....... complete!
    -- Save (Program Start Address & Size ) -----
    SPI Data Clear(H'FF):H'040000-07FFFF Erasing..Erase Completed 
    SAVE SPI-FLASH....... complete!
     
    ==========  SPI Flash Sector1 Save Information  =========
     Program Start Address :  H'E6304000
     Program Size          :  H'0003A3E0
    =========================================================
    
  11. Hit Reset Button to verify u-boot was flashed correctly
    PICOCOM
    > 
    PORTER(M2W) SPI_LOADER(DDR3L) V0.20 2015.07.14
     DEVICE S25FL512
     
     
    U-Boot 2013.01.01-00207-gefb7469873-dirty (Oct 24 2017 - 09:54:27)
     
    CPU: Renesas Electronics R8A7791 rev 3.0
    Board: Porter Board
     
    DRAM:  1 GiB
    MMC:   sh-sdhi: 0, sh-sdhi: 1
    SF: Detected S25FL512S with page size 256 KiB, total 64 MiB
    In:    serial
    Out:   serial
    Err:   serial
    Net:   Please set MAC address
    sh_eth
    Hit any key to stop autoboot:  0 
    =>
    
  12. save defaults to spi flash
    PICOCOM
    => env default -a
    ## Resetting to default environment
    => saveenv
    Saving Environment to SPI Flash...
    SF: Detected S25FL512S with page size 256 KiB, total 64 MiB
    Erasing SPI flash...Writing to SPI flash...done
    

Linux Kernel

This script will build the kernel, modules, device tree binaries and copy them to the deploy directory.
Download:

~/
git clone https://github.com/RobertCNelson/armv7_devel
cd armv7_devel/

For v4.14.x-shmobile-armv7 (Longterm 4.14.x):

~/armv7_devel/
git checkout origin/v4.14.x-shmobile-armv7 -b tmp

Build:

~/armv7_devel/
./build_kernel.sh

Root File System

Debian 9

User

Password

debian

temppwd

root

root

Download:

~/
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-9.2-minimal-armhf-2017-10-10.tar.xz

Verify:

~/
sha256sum debian-9.2-minimal-armhf-2017-10-10.tar.xz
31419dacdde26c62ea17670d262c01bc562881f5129b43b822c5de1286ba29d3  debian-9.2-minimal-armhf-2017-10-10.tar.xz

Extract:

~/
tar xf debian-9.2-minimal-armhf-2017-10-10.tar.xz

Ubuntu 16.04 LTS

User

Password

ubuntu

temppwd

Download:

~/
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04.3-minimal-armhf-2017-10-10.tar.xz

Verify:

~/
sha256sum ubuntu-16.04.3-minimal-armhf-2017-10-10.tar.xz
b9c56cc566978addd00e9187fbf19bea3f3ef9ac4256927451043341a9ca1ad6  ubuntu-16.04.3-minimal-armhf-2017-10-10.tar.xz

Extract:

~/
tar xf ubuntu-16.04.3-minimal-armhf-2017-10-10.tar.xz

Setup microSD card

For these instruction we are assuming, DISK=/dev/mmcblk0, lsblk is very useful for determining the device id.

export DISK=/dev/mmcblk0

Erase partition table/labels on microSD card:

sudo dd if=/dev/zero of=${DISK} bs=1M count=10

Create Partition Layout:
With util-linux v2.26, sfdisk was rewritten and is now based on libfdisk.

sudo sfdisk --version
sfdisk from util-linux 2.27.1
sfdisk >= 2.26.x
sudo sfdisk ${DISK} <<-__EOF__
1M,,L,*
__EOF__
sfdisk <= 2.25.x
sudo sfdisk --unit M ${DISK} <<-__EOF__
1,,L,*
__EOF__

Format Partition:
With mkfs.ext4 1.43, we need to make sure metadata_csum and 64bit are disabled.
As the version of U-Boot needed for this target CAN NOT correctly handle reading files with these newer ext4 options.

mkfs.ext4 -V
sudo mkfs.ext4 -V
mke2fs 1.43-WIP (15-Mar-2016)
        Using EXT2FS Library version 1.43-WIP
mkfs.ext4 >= 1.43
for: DISK=/dev/mmcblk0
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}p1
 
for: DISK=/dev/sdX
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}1
mkfs.ext4 <= 1.42
for: DISK=/dev/mmcblk0
sudo mkfs.ext4 -L rootfs ${DISK}p1
 
for: DISK=/dev/sdX
sudo mkfs.ext4 -L rootfs ${DISK}1

Mount Partition:
On most systems these partitions may will be auto-mounted...

sudo mkdir -p /media/rootfs/
 
for: DISK=/dev/mmcblk0
sudo mount ${DISK}p1 /media/rootfs/
 
for: DISK=/dev/sdX
sudo mount ${DISK}1 /media/rootfs/

Install Kernel and Root File System

To help new users, since the kernel version can change on a daily basis. The kernel building scripts listed on this page will now give you a hint of what kernel version was built.

-----------------------------
Script Complete
eewiki.net: [user@localhost:~$ export kernel_version=4.X.Y-Z]
-----------------------------

Copy and paste that "export kernel_version=4.X.Y-Z" exactly as shown in your own build/desktop environment and hit enter to create an environment variable to be used later.

export kernel_version=4.X.Y-Z

Copy Root File System

~/
sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/
sync
sudo chown root:root /media/rootfs/
sudo chmod 755 /media/rootfs/

Set uname_r in /boot/uEnv.txt

~/
sudo sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"

Copy Kernel Image

Kernel Image:

~/
cat ./armv7_devel/deploy/${kernel_version}.zImage ./armv7_devel/arch/arm/boot/dts/r8a7791-porter.dtb > ./armv7_devel/deploy/${kernel_version}.zImage.dtb
sudo cp -v ./armv7_devel/deploy/${kernel_version}.zImage.dtb /media/rootfs/boot/vmlinuz-${kernel_version}

Copy Kernel Modules

~/
sudo tar xfv ./armv7_devel/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

File Systems Table (/etc/fstab)

sudo sh -c "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

Remove microSD/SD card

sync
sudo umount /media/rootfs

Comments

Comments, feedback, and questions can be sent to: eewiki@digikey.com
Please use the Digi-Key's TechForum: TechForum

  • No labels