R-Car/Boards/Yocto-Gen3/v5.9.0

From eLinux.org
Jump to: navigation, search


Introduction

This page contains information on building and running Yocto on:

NOTE: USE OFFICIAL DOCUMENTATION provided with R-Car BSPs FOR H3SK/M3SK boards
See also:

Topic

EOL Notification of the M3SK

Production of M3SK is discontinued.
See M3SK page for detail.

The new version of R-Car Starter Kit Premier is now on sale !!

  • Equipped with R-Car H3e-2G
    (En) https://www.renesas.com/jp/en/about/press-room/renesas-launches-r-car-gen3e-20-percent-higher-cpu-speed-automotive-infotainment-cockpit-and-digital
    (Zh) https://www.renesas.com/jp/zh/about/press-room/renesas-launches-r-car-gen3e-20-percent-higher-cpu-speed-automotive-infotainment-cockpit-and-digital
    (Jp) https://www.renesas.com/jp/ja/about/press-room/renesas-launches-r-car-gen3e-20-percent-higher-cpu-speed-automotive-infotainment-cockpit-and-digital
  • CPU performance is increased 20% by supporting up to 2GHz frequency over past products.
  • You can buy from here.

SW Release Information

Board name SW name Release date Note
R-Car Starter Kit ( Premier / Pro ) Yocto v5.9.0 (stable) [New!!] 2022/02/08
Kingfisher Infotainment Board Yocto v5.9.0 (stable) [New!!] 2022/02/14 To check for latest information, please refer to the meta-rcar/tree/v5.9.0.
Android 10 (stable) 2021/07/26 R-Car Starter Kit Premier(R-Car H3) + Kingfisher is supported.
R-Car Starter Kit Pro(RTP8J77961ASKB0SK0SA05A) + Kingfisher is also supported from 2021/11/25.
Android P (stable) 2020/09/29 R-Car Starter Kit Premier(R-Car H3) + Kingfisher is supported.
R-Car Starter Kit Pro(RTP8J77961ASKB0SK0SA05A) + Kingfisher is also supported from 2021/03/16.
CCPF-SK Board Yocto v5.9.0 (latest) [New!!] 2022/02/08 Prebuilt binary is available in Quick startup guide page. (Updated on 2022/03/18)


R-Car Starter Kit is available

R-Car Starter Kit information
Board Name SoC version Hardware information Where to buy
R-Car Starter Kit Premier (H3) v3.0 Click here Click here
R-Car Starter Kit Pro (M3) v3.0 Click here Click here



Software revisions

Software Revision
Yocto Project 3.1.11
aarch64-poky-linux-gcc (GCC) 9.3
Wayland/Weston 1.18.0/8.0.0
GStreamer 1.16.3
Kernel Ver 5.10.41
Userland 64/32bit 64
U-Boot 2020.10
OP_TEE 3.13.0
OpenGL ES 3.2

Host PC

Ubuntu 16.04/20.04 LTS (64bit) is recommended as OS. 32bit version is not supported.

Required packages

  1. Download evaluation version of proprietary graphics and multimedia drivers from Renesas.
    To download Multimedia and Graphics library and related Linux drivers, please use the following link:
    Download two files:
    • R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20220121.zip
    • R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20220121.zip

    Graphic drivers are required for Wayland. Multimedia drivers are optional.
  2. Install required packages
    sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
    build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
    xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \
    libsdl1.2-dev pylint3 xterm
    
    Refer to Yocto Project Quick Start for more information.

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 Yocto Gen3 ADAS

Using build script

  1. Directory Structure
    |--build.sh
    `--proprietary
       |--R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20220121.zip
       `--R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20220121.zip
    
  2. Build script(build.sh)
    #!/bin/bash
    
    BOARD_LIST=("h3ulcb" "m3ulcb")
    TARGET_BOARD=$1
    PROPRIETARY_DIR=`pwd`/proprietary
    WORK=`pwd`/${TARGET_BOARD}
    
    POKY_COMMIT=74b22db6879b388d700f61e08cb3f239cf940d18
    META_OE_COMMIT=814eec96c2a29172da57a425a3609f8b6fcc6afe
    META_RENESAS_COMMIT=db07324cef9f09cfccafb36f05b8159421057af5
    
    GFX_MMP_LIB=R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20220121.zip
    GFX_MMP_DRIVER=R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20220121.zip
    
    Usage () {
        echo "Usage: $0 \${TARGET_BOARD_NAME}"
        echo "BOARD_NAME list: "
        for i in ${BOARD_LIST[@]}; do echo "  - $i"; done
        exit
    }
    
    # Check Param.
    if ! `IFS=$'\n'; echo "${BOARD_LIST[*]}" | grep -qx "${TARGET_BOARD}"`; then
        Usage
    fi
    
    mkdir -p ${WORK}
    cd ${WORK}
    
    # Clone basic Yocto layers in parallel
    git clone git://git.yoctoproject.org/poky &
    git clone git://git.openembedded.org/meta-openembedded &
    git clone https://github.com/renesas-rcar/meta-renesas &
    
    # Wait for all clone operations
    wait
    
    # Switch to proper branches/commits
    cd ${WORK}/poky
    git checkout -b tmp ${POKY_COMMIT}
    cd ${WORK}/meta-openembedded
    git checkout -b tmp ${META_OE_COMMIT}
    cd ${WORK}/meta-renesas
    git checkout -b tmp ${META_RENESAS_COMMIT}
    
    # Populate meta-renesas with proprietary software packages
    WORK_PROP_DIR=${WORK}/proprietary
    mkdir -p ${WORK_PROP_DIR}
    unzip -qo ${PROPRIETARY_DIR}/${GFX_MMP_LIB} -d ${WORK_PROP_DIR}
    unzip -qo ${PROPRIETARY_DIR}/${GFX_MMP_DRIVER} -d ${WORK_PROP_DIR}
    cd ${WORK}/meta-renesas
    sh meta-rcar-gen3/docs/sample/copyscript/copy_proprietary_softwares.sh -f ${WORK_PROP_DIR}
    
    cd ${WORK}
    source poky/oe-init-build-env ${WORK}/build
    
    #cp ${WORK}/meta-renesas/meta-rcar-gen3/docs/sample/conf/${TARGET_BOARD}/poky-gcc/bsp/*.conf ./conf/
    #cp ${WORK}/meta-renesas/meta-rcar-gen3/docs/sample/conf/${TARGET_BOARD}/poky-gcc/gfx-only/*.conf ./conf/
    cp ${WORK}/meta-renesas/meta-rcar-gen3/docs/sample/conf/${TARGET_BOARD}/poky-gcc/mmp/*.conf ./conf/
    
    cd ${WORK}/build
    cp conf/local-wayland.conf conf/local.conf
    
    bitbake core-image-weston
    
  3. build
    ./build.sh <target_board_name>
    
    If the build completes successfully, all the necessary files are generated in a following directory:
    ./<target_board_name>/build/tmp/deploy/images/<target_board_name>
    

Manual steps

  1. 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`
    
  2. Clone basic Yocto layers:
    cd $WORK
    git clone git://git.yoctoproject.org/poky
    git clone git://git.openembedded.org/meta-openembedded
    git clone https://github.com/renesas-rcar/meta-renesas
    
  3. Switch to proper branches/commits
    cd $WORK/poky
    git checkout -b tmp 74b22db6879b388d700f61e08cb3f239cf940d18
    cd $WORK/meta-openembedded
    git checkout -b tmp 814eec96c2a29172da57a425a3609f8b6fcc6afe
    cd $WORK/meta-renesas
    git checkout -b tmp db07324cef9f09cfccafb36f05b8159421057af5 <-- 2022/08/24 updated
    
    Another versions are not tested for compatibility.
    Legacy BSP instruction can be found here R-Car Yocto Gen3 legacy
  4. Create $WORK/../proprietary folder, then download proprietary driver modules to it.
    See also Required_packages
    You should see the following files:
    $ ls -1 $WORK/../proprietary/*.zip
    R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20220121.zip
    R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20220121.zip
    
  5. Populate meta-renesas with proprietary software packages.
    export PKGS_DIR=$WORK/../proprietary
    cd $PKGS_DIR
    unzip -qo R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20220121.zip
    unzip -qo R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20220121.zip
    cd $WORK/meta-renesas
    sh meta-rcar-gen3/docs/sample/copyscript/copy_proprietary_softwares.sh -f $PKGS_DIR
    unset PKGS_DIR
    
  6. Setup build environment
    cd $WORK
    source poky/oe-init-build-env $WORK/build
    
  7. Prepare default configuration files.
    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
    
  8. Start the build
    bitbake core-image-weston
    
  9. Building image can take up to a few hours depending on your host system performance.
    After the build has been completed successfully, 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.
  10. 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/Image
    ./tmp/deploy/images/h3ulcb/Image-h3ulcb.bin
    ./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/core-image-weston-h3ulcb.testdata.json
    ./tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb.wic.bmap
    ./tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb.wic.xz
    ./tmp/deploy/images/h3ulcb/core-image-weston-h3ulcb.wic.xz.sha256sum
    ./tmp/deploy/images/h3ulcb/modules-h3ulcb.tgz
    ./tmp/deploy/images/h3ulcb/r8a77950-ulcb-h3ulcb.dtb
    ./tmp/deploy/images/h3ulcb/r8a77950-ulcb.dtb
    ./tmp/deploy/images/h3ulcb/r8a77951-ulcb-h3ulcb.dtb
    ./tmp/deploy/images/h3ulcb/r8a77951-ulcb.dtb
    ./tmp/deploy/images/h3ulcb/r8a779m1-ulcb-h3ulcb.dtb
    ./tmp/deploy/images/h3ulcb/r8a779m1-ulcb.dtb
    ./tmp/deploy/images/h3ulcb/u-boot-elf-h3ulcb.srec
    ./tmp/deploy/images/h3ulcb/u-boot-h3ulcb.bin
    ./tmp/deploy/images/h3ulcb/u-boot-h3ulcb.bin-r8a7795_h3ulcb
    ./tmp/deploy/images/h3ulcb/u-boot-initial-env-h3ulcb-r8a7795_h3ulcb
    ./tmp/deploy/images/h3ulcb/u-boot-initial-env-r8a7795_h3ulcb
    ./tmp/deploy/images/h3ulcb/u-boot.bin
    ./tmp/deploy/images/h3ulcb/u-boot.bin-r8a7795_h3ulcb
    
    Image is a Kernel image, *.dtb is a blob file, core-image-<image_type>-<board_name>.tar.bz2 is the rootfs, modules-<board_name>.tgz are kernel modules.
  11. You can now proceed with Running Yocto images

Relationship diagram between each SK board and DTB file in Yocto v5.9.0

Board name SoC version Type Name DTB file
H3SK 2.0
2.0
2.0/3.0
RTP0RC77951SKBX010SA00
RTP0RC77951SKBX010SA01
RTP0RC77951SKBX010SA03
r8a77951-ulcb.dtb
H3e-2G SK 3.0 RTP8J779M1ASKB0SK0SA003 r8a779m1-ulcb.dtb
M3SK 1.0 RTP0RC7796SKBX0010SA09 r8a77960-ulcb.dtb
M3SK 3.0 RTP8J77961ASKB0SK0SA05A r8a77961-ulcb.dtb

Build SDK

  • After building BSP you may build SDK:
    bitbake core-image-weston-sdk -c populate_sdk
    
  • After build finished the SDK installation script may be found in following path:
    tmp/deploy/sdk/poky-glibc-x86_64-core-image-weston-aarch64-toolchain-*.sh
    
  • Install SDK by run the following command and follow instructions on the screen:
    ./tmp/deploy/sdk/poky-glibc-x86_64-core-image-weston-aarch64-toolchain-*.sh
    

Note: Please see the No.3 in the Known issues and limitations chapter.

Running Yocto images

Flashing Firmware(IPL)

For automatic flashing, please refer to the following link:

For manual steps, please see each board page:

Prepare kernel/dtb/rootfs

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:

  1. Setup a TFTP server.
    Install tftpd-hpa package along with tftp tools:
    sudo apt-get install tftp tftpd-hpa
    
  2. Copy Image and XXXX.dtb from $WORK/build/tmp/deploy/images/<board_name>/ to TFTP server root.
    cp $WORK/build/tmp/deploy/images/h3ulcb/Image /srv/tftp/
    cp $WORK/build/tmp/deploy/images/h3ulcb/XXXX.dtb /srv/tftp/
    
    Which version is my H3SK board?
  3. Verify that TFTP server is working.
    tftp localhost << EOS
        get Image
        quit
    EOS
    ls Image
    
  4. Setup NFS server.
    1. Install necessary packages:
      sudo apt-get install nfs-kernel-server nfs-common
      
    2. Start NFS server:
      sudo /etc/init.d/nfs-kernel-server start
      
  5. Export root FS to NFS. (Change IMAGE and MACHINE to fit your build).
    1. Unpack rootfs to a dedicated directory:
      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
      
    2. Edit /etc/exports:
      sudo vi /etc/exports
      
      add
      /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)
      
      Save the file and exit.
    3. Force NFS server to re-read /etc/exports
      sudo exportfs -a
      
  6. Verify that NFS is working.
    [builduser@buildmachine ~]$ showmount -e localhost
    Export list for localhost:
    /nfs/h3ulcb *
    /nfs/m3ulcb *
    
  7. Boot into U-Boot command prompt
    1. Connect to serial console over microUSB using minicom or picocom.
    2. Switch the board on or reset it. Press any key to stop U-Boot automatic countdown.
    Refer to H3SK board page, M3SK board page for more information.
  8. Configure Ethernet, TFTP, and kernel command line in U-Boot:
    setenv ipaddr <board-ip>
    setenv serverip <your-computer-ip>
    setenv dtb <your-dtb-file-name>
    setenv bootcmd 'tftp 0x48080000 <path_to_Image>/Image; tftp 0x48000000 <path_to_dtb>/${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
    
    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.
    For example:
    setenv ipaddr 192.168.1.3
    setenv serverip 192.168.1.2
    setenv dtb r8a77951-ulcb.dtb
    setenv bootcmd 'tftp 0x48080000 /Image; tftp 0x48000000 /${dtb}; booti 0x48080000 - 0x48000000'
    setenv bootargs 'ignore_loglevel rw root=/dev/nfs nfsroot=${serverip}:/nfs/h3ulcb,nfsvers=3,tcp ip=${ipaddr}:${serverip}::255.255.255.0:h3ulcb'
    saveenv
    
    You can also use
    dhcp
    
    command to obtain information from DHCP server.
    Note: You can always see the environment with printenv command. Refer to U-Boot manual for details.
  9. Verify the connection over Ethernet from U-Boot:
    ping <your-computer-ip>
    
    You should see:
    => ping 192.168.1.2
    Using ethernet@e6800000 device
    host 192.168.1.2 is alive
    
  10. Reset the board by pushing reset button
    Refer to H3SK board page, M3SK board page for more information.
  11. The board should boot the kernel:
    NOTICE:  BL2: R-Car Gen3 Initial Program Loader(CA57) Rev.3.0.3
    NOTICE:  BL2: PRR is R-Car H3 Ver.3.0
    NOTICE:  BL2: Board is Starter Kit Premier Rev.2.1
    NOTICE:  BL2: Boot device is HyperFlash(80MHz)
    NOTICE:  BL2: LCM state is CM
    NOTICE:  AVS setting succeeded. DVFS_SetVID=0x53
    NOTICE:  BL2: DDR3200(rev.0.41)
    NOTICE:  BL2: [COLD_BOOT]
    NOTICE:  BL2: DRAM Split is 4ch(DDR f)
    NOTICE:  BL2: QoS is default setting(rev.0.11)
    NOTICE:  BL2: DRAM refresh interval 1.95 usec
    NOTICE:  BL2: Periodic Write DQ Training
    NOTICE:  BL2: CH0: 400000000 - 47fffffff, 2 GiB
    NOTICE:  BL2: CH1: 500000000 - 57fffffff, 2 GiB
    NOTICE:  BL2: CH2: 600000000 - 67fffffff, 2 GiB
    NOTICE:  BL2: CH3: 700000000 - 77fffffff, 2 GiB
    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: FDT at 0xe6326f70
    NOTICE:  BL2: v2.5(release):808d00870
    NOTICE:  BL2: Built : 06:15:04, Jan  5 2022
    NOTICE:  BL2: Normal boot
    NOTICE:  BL2: dst=0xe6326800 src=0x8180000 len=512(0x200)
    NOTICE:  BL2: dst=0x43f00000 src=0x8180400 len=6144(0x1800)
    NOTICE:  rcar_file_len: len: 0x0003e000
    NOTICE:  BL2: dst=0x44000000 src=0x81c0000 len=253952(0x3e000)
    NOTICE:  rcar_file_len: len: 0x00200000
    NOTICE:  BL2: dst=0x44100000 src=0x8200000 len=2097152(0x200000)
    NOTICE:  rcar_file_len: len: 0x00100000
    NOTICE:  BL2: dst=0x50000000 src=0x8640000 len=1048576(0x100000)
    NOTICE:  BL2: Booting BL31
    
    
    U-Boot 2020.10 (Jan 05 2022 - 06:15:09 +0000)
    
    CPU: Renesas Electronics R8A7795 rev 3.0
    Model: Renesas H3ULCB board based on r8a77950
    DRAM:  7.9 GiB
    RAM Configuration:
    Bank #0: 0x048000000 - 0x0bfffffff, 1.9 GiB
    Bank #1: 0x500000000 - 0x57fffffff, 2 GiB
    Bank #2: 0x600000000 - 0x67fffffff, 2 GiB
    Bank #3: 0x700000000 - 0x77fffffff, 2 GiB
    
    MMC:   sd@ee100000: 0, sd@ee140000: 1
    Loading Environment from MMC... OK
    In:    serial@e6e88000
    Out:   serial@e6e88000
    Err:   serial@e6e88000
    Net:   eth0: ethernet@e6800000
    Hit any key to stop autoboot:  0
    ethernet@e6800000 Waiting for PHY auto negotiation to complete.......... done
    Using ethernet@e6800000 device
    TFTP from server 192.168.1.1; our IP address is 192.168.1.2
    Filename '/h3ulcb/Image'.
    Load address: 0x48080000
    Loading: #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             ################################################
             12.6 MiB/s
    done
    Bytes transferred = 39823872 (25faa00 hex)
    Using ethernet@e6800000 device
    TFTP from server 192.168.1.1; our IP address is 192.168.1.2
    Filename '/h3ulcb/r8a77951-ulcb.dtb'.
    Load address: 0x48000000
    Loading: ######
             6.7 MiB/s
    done
    Bytes transferred = 83970 (14802 hex)
    Moving Image from 0x48080000 to 0x48200000, end=4a890000
    ## Flattened Device Tree blob at 48000000
       Booting using the fdt blob at 0x48000000
       Loading Device Tree to 0000000053fe8000, end 0000000053fff801 ... OK
    
    Starting kernel ...
    

Loading kernel and rootfs via eMMC/SD card

This section describes steps that are necessary for preparing and booting from SD card.

Preparing eMMC/SD card

WARNING! These steps will erase the SD card completely. In short, all files will be lost.
There two methods to prepare SD card. so, please select one of them.

Manual steps

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)
    Make sure the SD card doesn't contain any important files.
    $ 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-*.tar.bz2 into mounted folder.
    And Copy Image and XXXX.dtb from $WORK/build/tmp/deploy/images/<board_name>/ to sd card /boot.
    $ mount /dev/mmcblk0p1 /mnt
    $ cd <your_yocto_build_directory>
    $ IMAGE=weston
    $ MACHINE=h3ulcb|m3ulcb
    $ tar xfj  build/tmp/deploy/images/${MACHINE}/core-image-${IMAGE}-${MACHINE}-*.rootfs.tar.bz2  -C /mnt
    $ cp $WORK/build/tmp/deploy/images/${MACHINE}/XXXX.dtb /mnt/boot/
    
    NOTE: probably you need to be a root user, hence use "sudo"
Using bmaptool

Install bmaptool by following command:

sudo apt install bmap-tools

ex.) case of '/dev/sdb':

sudo bmaptool copy ./core-image-weston-m3ulcb.wic.xz /dev/sdb
Note:
It requires to be located both *.wic.xz and *.wic.bmap in same directory.
It doesn't required to contain partition number(ex. /dev/sdb1, /dev/mmcblk0p1, and so on), /dev/mmcblk0 or /dev/sdb and so on are correct
Log:
bash $ sudo bmaptool copy ./core-image-weston-m3ulcb.wic.xz /dev/XXXX
bmaptool: info: discovered bmap file './core-image-weston-m3ulcb.wic.bmap'
bmaptool: info: block map format version 2.0
bmaptool: info: 199184 blocks of size 4096 (778.1 MiB), mapped 102471 blocks (400.3 MiB or 51.4%)
bmaptool: info: copying image 'core-image-weston-m3ulcb.wic.xz' to block device '/dev/XXXX' using bmap file 'core-image-weston-m3ulcb.wic.bmap'
bmaptool: info: 100% copied
bmaptool: info: synchronizing '/dev/XXXX'
bmaptool: info: copying time: 1m 6.8s, copying speed 6.0 MiB/sec

Note:

/dev/XXXX is differnet by host PC environment.
It can be checked by using 'fdisk -l'.

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/XXXX.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:
    bootargs_emmc=rw root=/dev/mmcblk0p1 rootwait
    bootargs_nfs=rw root=/dev/nfs nfsroot=192.168.1.2:/nfs/h3ulcb,tcp,v3 rootwait ip=dhcp
    bootargs_sd0=rw root=/dev/mmcblk1p1 rootwait
    bootcmd=run bootcmd_sd0
    bootcmd_emmc=setenv bootargs ${bootargs_emmc};ext2load mmc 1:1 0x48080000 /boot/Image;ext2load mmc 1:1 0x48000000 /boot/${dtb};run booti_cmd
    bootcmd_nfs=setenv bootargs ${bootargs_nfs};tftp 0x48080000 Image;tftp 0x48000000 ${dtb};run booti_cmd
    bootcmd_sd0=setenv 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=r8a77951-ulcb.dtb
    ethaddr=2E:09:0A:00:BE:11
    
  • 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: sd@ee100000
    Manufacturer ID: 3
    OEM: 5344
    Name: SC32G
    Bus Speed: 199999992
    Mode: UHS SDR104 (208MHz)
    Rd Block Len: 512
    SD version 3.0
    High Capacity: Yes
    Capacity: 29.7 GiB
    Bus Width: 4-bit
    Erase Group Size: 512 Bytes
    => ext2ls mmc 0:1 /boot
    <DIR>       4096 .
    <DIR>       4096 ..
    <SYM>         27 Image
            33102336 Image-5.10.0-yocto-standard
               82258 r8a77950-ulcb.dtb
               80970 r8a77951-ulcb.dtb
               81598 r8a779m1-ulcb.dtb
    

How to test some capabilities

SW3

$ hexdump /dev/input/event0

LED5/LED6

$ echo 1 > /sys/class/leds/led5(6)/brightness
$ echo 0 > /sys/class/leds/led5(6)/brightness

Audio Out(CN8)

Ex)
$ amixer set "DVC Out" 1%
$ aplay ***.wav
or
$ gst-launch-1.0 filesrc location=xxx.wav ! wavparse ! alsasink

Audio In(CN9) Out(CN8)

Ex)
$ amixer set "DVC In" 15%
$ amixer set "DVC Out" 1%
$ arecord -D hw:0,0 -t wav -d 5 -c 2 -r 44100 -f S24_LE | aplay

Video (HDMI Out(CN4), Audio Out(CN8))

Ex)
$ amixer set "DVC Out" 1%
$ modprobe -a mmngr mmngrbuf vspm_if uvcs_drv
$ gst-launch-1.0 filesrc location=xxxx.mp4 ! qtdemux name=demux \
demux.audio_0 ! queue ! omxaaclcdec ! alsasink device=plughw:0,0 \
demux.video_0 ! queue ! h264parse ! omxh264dec ! queue ! vspfilter ! \
video/x-raw, format=BGRA, width=1920, height=1080 ! waylandsink

Suspend to RAM

root@h3ulcb:~# systemctl suspend
root@h3ulcb:~# [   99.075236] PM: suspend entry (deep)
[   99.078934] Filesystems sync: 0.000 seconds
[   99.084030] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   99.092793] OOM killer disabled.
[   99.096017] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   99.104820] printk: Suspending console(s) (use no_console_suspend to debug)
NOTICE:  BL2: R-Car Gen3 Initial Program Loader(CA57) Rev.3.0.3
NOTICE:  BL2: PRR is R-Car H3 Ver.3.0
NOTICE:  BL2: Board is Starter Kit Premier Rev.2.1
NOTICE:  BL2: Boot device is HyperFlash(80MHz)
NOTICE:  BL2: LCM state is CM
NOTICE:  AVS setting succeeded. DVFS_SetVID=0x53
NOTICE:  BL2: DDR3200(rev.0.41)
NOTICE:  BL2: [WARM_BOOT]
NOTICE:  BL2: DRAM Split is 4ch(DDR f)
NOTICE:  BL2: QoS is default setting(rev.0.11)
NOTICE:  BL2: DRAM refresh interval 1.95 usec
NOTICE:  BL2: Periodic Write DQ Training
NOTICE:  BL2: CH0: 400000000 - 47fffffff, 2 GiB
NOTICE:  BL2: CH1: 500000000 - 57fffffff, 2 GiB
NOTICE:  BL2: CH2: 600000000 - 67fffffff, 2 GiB
NOTICE:  BL2: CH3: 700000000 - 77fffffff, 2 GiB
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: FDT at 0xe6326f70
NOTICE:  BL2: v2.5(release):808d00870
NOTICE:  BL2: Built : 06:15:04, Jan  5 2022
NOTICE:  BL2: Normal boot
[   99.245247] Disabling non-boot CPUs ...
[   99.246080] CPU1: shutdown
[   99.247099] psci: CPU1 killed (polled 0 ms)
[   99.248913] CPU2: shutdown
[   99.249932] psci: CPU2 killed (polled 0 ms)
[   99.251379] CPU3: shutdown
[   99.252395] psci: CPU3 killed (polled 0 ms)
[   99.253901] CPU4: shutdown
[   99.254916] psci: CPU4 killed (polled 0 ms)
[   99.256228] CPU5: shutdown
[   99.256446] psci: CPU5 killed (polled 4 ms)
[   99.257678] CPU6: shutdown
[   99.258694] psci: CPU6 killed (polled 0 ms)
[   99.260052] CPU7: shutdown
[   99.260442] psci: CPU7 killed (polled 4 ms)
[   99.261144] Enabling non-boot CPUs ...
[   99.261384] Detected PIPT I-cache on CPU1
[   99.261440] CPU1: Booted secondary processor 0x0000000001 [0x411fd073]
[   99.261990] CPU1 is up
[   99.262143] Detected PIPT I-cache on CPU2
[   99.262165] CPU2: Booted secondary processor 0x0000000002 [0x411fd073]
[   99.262506] CPU2 is up
[   99.262656] Detected PIPT I-cache on CPU3
[   99.262678] CPU3: Booted secondary processor 0x0000000003 [0x411fd073]
[   99.263030] CPU3 is up
[   99.263224] Detected VIPT I-cache on CPU4
[   99.263279] CPU4: Booted secondary processor 0x0000000100 [0x410fd034]
[   99.264369] CPU4 is up
[   99.264729] Detected VIPT I-cache on CPU5
[   99.264761] CPU5: Booted secondary processor 0x0000000101 [0x410fd034]
[   99.265555] CPU5 is up
[   99.265701] Detected VIPT I-cache on CPU6
[   99.265735] CPU6: Booted secondary processor 0x0000000102 [0x410fd034]
[   99.266587] CPU6 is up
[   99.266733] Detected VIPT I-cache on CPU7
[   99.266767] CPU7: Booted secondary processor 0x0000000103 [0x410fd034]
[   99.267659] CPU7 is up
[   99.395424] Micrel KSZ9031 Gigabit PHY e6800000.ethernet-ffffffff:00: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=e6800000.ethernet-ffffffff:00, irq=209)
[   99.494507] usb usb2: root hub lost power or was reset
[   99.494632] usb usb1: root hub lost power or was reset
[   99.816400] usb 1-1: reset high-speed USB device number 2 using ehci-platform
[  100.154280] OOM killer enabled.
[  100.157420] Restarting tasks ... done.
[  100.162208] PM: suspend exit

root@h3ulcb:~#

FAQ

How do access to USB memory from U-boot(Yocto v3.13.0 or later)

  1. Some USB memory may not be recognized.
    => 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
    =>
    
  2. [How to fix] Set the "usb_pgood_delay 2000" variable
    => setenv usb_pgood_delay 2000
    => saveenv
    => reset
    => usb start
    

Known issues and limitations

  1. [SW limitation] Yocto v3.4.0 or later doesn't support RTP0RC7795SKBX0010SA00(H3 v1.1 Starter Kit).
    Please use the H3 v2.0 or v3.0 SK
  2. [Known issue] If you encounter a kernel hang-up while using Yocto v3.4.0 or later, please refer to the following pages.
    H3 SK: No.1 of R-Car/Boards/H3SK#Known_Issues
    M3 SK: No.2 of R-Car/Boards/M3SK#Known_Issues
  3. [Known issue] Yocto v5.9.0: Bitbake error messages when building SDK first time
    ERROR: When reparsing <build directory>../poky/meta/recipes-core/meta/meta-environment.bb:do_generate_content, the basehash value changed from <old basehash> to <new basehash>. The metadata is not deterministic and this needs to be fixed.
    ERROR: The following commands may help:
    ERROR: $ bitbake meta-environment-h3ulcb -cdo_generate_content -Snone
    ERROR: Then:
    ERROR: $ bitbake meta-environment-h3ulcb -cdo_generate_content -Sprintdiff
    
    These error message are Poky 3.1.11 bug, it doesn't affect to build output.
    Ignore error messages.


Q&A site

https://community.renesas.com/automotive/r-car-h3-m3-cockpit/

FAQ site