R-Car/Boards/Kingfisher

Introduction
This is the official Wiki for Kingfisher Infotainment Board.

Hardware
This section contains information about Kingfisher Board hardware.

Hardware Features

 * Ethernet AVB phy
 * KSZ9031 phy
 * MOST interface
 * Support both 3-pin and 6-pin MLB interface
 * Pinout compatible with Microchip evaluation boards
 * LVDS camera interface
 * MAX9286 or TI960 deserializers
 * MIPI CSI2 bus
 * 5V, 9V or 12V selectable supply voltage for camera with current limiting
 * High quality 24-bit audio codec PCM3168A
 * 8 input channels (4 stereo jacks for microphone connection)
 * 6 line out channels (RCA connectors)
 * 6 HP outputs (3 stereo jack connectors for direct headphones connection)
 * 44100/48000 Hz sampling frequency
 * Two USB 3.0 ports
 * USB OTG port
 * SD card slot
 * SD card slot(CN47) supports only 3.3 signal voltage(= Default/High speed class only).
 * If you want to use other cards please use the slot(CN6) on the Starter Kit board.
 * Si4689 base AM/FM/DAB radio
 * Digital audio interface to R-Car M2 CPU
 * Additional flash storage for fast radio boot
 * Supply for active DAB antennas with current limit (5 or 12 V)
 * GPS/GLONASS receiver
 * Serial and i2c interface to R-Car
 * 9-axis sensor:
 * 3D digital linear acceleration sensor
 * 3D digital angular rate sensor
 * 3D digital magnetic sensor
 * WiFi/BT module Texas Instruments WL1837
 * HDMI
 * This board equipped with a HDMI transmitter (ADV7513BSWZ) which support HDMI1.4a.
 * The maximum resolution is 1920x1080i and it connected Digital output port (RGB888) on R-Car Starter Kit.
 * Power supply: 12V, 9 Amps
 * The main power supply domain must be connected to an external AC adapter. The voltage is +12V DC.
 * DO NOT USE R-Car Starter kit AC adapter to connect this board or this board AC adapter to connect R-Car Starter kit. If connect wrong AC adapter then it has serious damage to the board.

Where to buy
Kingfisher board and GMSL Camera board(*) can be ordered from following distributors:

Click to buy Kingfisher board from SHIMAFUJI Electric - World Wide

(*) GMSL Camera board info: http://www.shimafuji.co.jp/DL/EN/InfotainmentCarrierBoard/#GMSL01

Official board documentation

 * Board Manual

Build image
 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 || exit cd build WORK=`pwd` echo $WORK  Clone basic Yocto layers: 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 git://github.com/renesas-rcar/meta-renesas git clone git://github.com/CogentEmbedded/meta-rcar.git 

 Switch to proper branches/commits   For BSP v2.23.1 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 cd $WORK/meta-rcar git checkout -b v2.23.1 remotes/origin/v2.23.1   For Yocto v3.4.0 cd $WORK/poky git checkout -b tmp 16e22f3e37788afb83044f5089d24187d70094bd cd $WORK/meta-openembedded git checkout -b tmp 6e3fc5b8d904d06e3aa77e9ec9968ab37a798188 cd $WORK/meta-linaro git checkout -b tmp 30f0f5e158ba29c4b1ccfdd66f0368726e4179e0 cd $WORK/meta-renesas git checkout -b tmp 0f4c656f1e8304ce13f43b07907fac5d9b281e4f cd $WORK/meta-rcar git checkout -b v3.4.0 remotes/origin/v3.4.0   Another versions are not tested for compatibility. Legacy BSP instruction can be found here R-Car Kingfisher legacy 

 This step is only for Yocto v2.23.1. Apply Linaro-GCC patch file: 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   Unzip downloaded proprietary driver modules to $WORK/proprietary folder. You should see the following files:   For Yocto v2.23.1 $ ls -1 $WORK/proprietary R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20170828.zip R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20170828.zip </li>  For Yocto v3.4.0 $ ls -1 $WORK/proprietary/*.zip R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20180130.zip R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20180130.zip </li> </ol> </li>

 Populate meta-renesas with proprietary software packages. 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 </li>

 Setup build environment cd $WORK source poky/oe-init-build-env </li>

 Prepare default configuration files.   For Yocto v2.23.1 [m3ulcb] cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/m3ulcb/linaro-gcc/mmp/*.conf ./conf/ [h3ulcb] 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 </li>  For Yocto v3.4.0 [m3ulcb] cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/m3ulcb/poky-gcc/mmp/*.conf ./conf/ [h3ulcb] 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 </li> </ol>

 Edit $WORK/build/conf/local.conf to enable/disable graphics and multimedia proprietary drivers support </li>

 Edit local.conf with evaluation packages requirements:   For Yocto v2.23.1 and later (to enable EVA_ prefix during packages install) DISTRO_FEATURES_append = " use_eva_pkg" </li> </ol> </li>

 Add layer meta-rcar bitbake-layers add-layer ../meta-rcar/meta-rcar-gen3-adas </li>

 Start the build

bitbake core-image-weston </li>

 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. </li>

<li> Bitbake has generated all the necessary files in ./tmp/deploy/images directory. You can verify its content: $ ls -1 `find ./tmp/deploy/images/m3ulcb/ -maxdepth 1 -type l -print` ./tmp/deploy/images/m3ulcb/core-image-weston-m3ulcb.cpio.gz ./tmp/deploy/images/m3ulcb/core-image-weston-m3ulcb.ext4 ./tmp/deploy/images/m3ulcb/core-image-weston-m3ulcb.manifest ./tmp/deploy/images/m3ulcb/core-image-weston-m3ulcb.tar.bz2 ./tmp/deploy/images/m3ulcb/Image ./tmp/deploy/images/m3ulcb/Image-m3ulcb.bin ./tmp/deploy/images/m3ulcb/Image-r8a7796-m3ulcb-kf.dtb ./tmp/deploy/images/m3ulcb/modules-m3ulcb.tgz ./tmp/deploy/images/m3ulcb/u-boot.bin ./tmp/deploy/images/m3ulcb/u-boot-elf-m3ulcb.srec ./tmp/deploy/images/m3ulcb/u-boot-elf.srec ./tmp/deploy/images/m3ulcb/u-boot-m3ulcb.bin Image is a Kernel image, *.dtb is a blob file, core-image-weston-m3ulcb.tar.bz2 is the rootfs, modules-m3ulcb.tgz are kernel modules. </li> <li> You can now proceed with running Yocto images </li> </ol>

After all these steps you can start working with boards and apps.

Build with MOST
MOST and GPS share the same R-CAR SoC pins and GPS is used by default. In order to use MOST one need to perform h/w modifications on KF board: move resistor from R661 -> R660 move resistor from R663 -> R662 And enable MOST in BSP by adding option to local.conf: KF_ENABLE_MOST = 1

Build with SD3 (CN47)
SD3 and WIFI share the same R-CAR SoC resource and WIFI is used by default. In order to use SD on CN47 instead WIFI add following option to local.conf: KF_ENABLE_SD3 = 1

Build SDK
After building image run this command to build SDK bitbake core-image-weston -c populate_sdk After build success the SDK installation script must appears in ./tmp/deploy/sdk directory: tmp/deploy/sdk/poky-glibc-x86_64-core-image-weston-aarch64-toolchain-2.1.3.sh To install SDK run this command and follow instructions on the screen: ./tmp/deploy/sdk/poky-glibc-x86_64-core-image-weston-aarch64-toolchain-2.1.3.sh

Build scripts examples
<ol>

<li> Build preparation <ol> <li> For Yocto v2.23.1
 * 1) !/bin/sh

mkdir build || exit cd build WORK=`pwd` echo $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 git://github.com/renesas-rcar/meta-renesas.git git clone git://github.com/CogentEmbedded/meta-rcar.git

cd $WORK/poky git checkout -b tmp yocto-2.1.3 cd $WORK/meta-linaro git checkout -b tmp 2f51d38048599d9878f149d6d15539fb97603f8f cd $WORK/meta-openembedded git checkout -b tmp 55c8a76da5dc099a7bc3838495c672140cedb78e cd $WORK/meta-renesas git checkout -b tmp 7acbf5e2f99c59478adbc73c6a40d314589a3009 cd $WORK/meta-rcar git checkout -b v2.23.1 remotes/origin/v2.23.1

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

cd $WORK/ PKGS_DIR=$WORK/../proprietary cd $WORK/meta-renesas sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $PKGS_DIR </li> <li> For Yocto v3.4
 * 1) sh meta-rcar-gen3/docs/sample/copyscript/copy_proprietary_softwares.sh -f $PKGS_DIR
 * 1) !/bin/sh

mkdir build || exit cd build WORK=`pwd` echo $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 git://github.com/renesas-rcar/meta-renesas git clone git://github.com/CogentEmbedded/meta-rcar.git

cd $WORK/poky git checkout -b tmp 16e22f3e37788afb83044f5089d24187d70094bd cd $WORK/meta-linaro git checkout -b tmp 30f0f5e158ba29c4b1ccfdd66f0368726e4179e0 cd $WORK/meta-openembedded git checkout -b tmp 6e3fc5b8d904d06e3aa77e9ec9968ab37a798188 cd $WORK/meta-renesas git checkout -b tmp 0f4c656f1e8304ce13f43b07907fac5d9b281e4f cd $WORK/meta-rcar git checkout -b v3.4.0 remotes/origin/v3.4.0

cd $WORK/ PKGS_DIR=$WORK/../proprietary cd $WORK/meta-renesas sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $PKGS_DIR </li> </ol> </li>
 * 1) sh meta-rcar-gen3/docs/sample/copyscript/copy_proprietary_softwares.sh -f $PKGS_DIR

<li> Building yocto <ol> <li> For Yocto v2.23.1
 * 1) !/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/mmp/*.conf ./conf/.
 * 1) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/bsp/*.conf ./conf/.
 * 2) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/linaro-gcc/gfx-only/*.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
 * 1) uncomment for ADAS HAD board only:
 * 2) echo "MACHINE_FEATURES_append = \" h3ulcb-had\"" >> $WORK/build/conf/local.conf

bitbake-layers add-layer ../meta-rcar/meta-rcar-gen3-adas

bitbake core-image-weston bitbake core-image-weston -c populate_sdk </li> </ol> <ol> <li> For Yocto v3.4
 * 1) !/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/mmp/*.conf ./conf/.
 * 1) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/poky-gcc/bsp/*.conf ./conf/.
 * 2) cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/h3ulcb/poky-gcc/gfx-only/*.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
 * 1) uncomment for ADAS HAD board only:
 * 2) echo "MACHINE_FEATURES_append = \" h3ulcb-had\"" >> $WORK/build/conf/local.conf

bitbake-layers add-layer ../meta-rcar/meta-rcar-gen3-adas

bitbake core-image-weston bitbake core-image-weston -c populate_sdk </li> </ol>

</li>

</ol>

How to update of Sample Loader and MiniMonitor
New version: Sample Loader: V3.02 MiniMonitor: V3.02

Down load:

Why update?: ComEx Mechanical Specification: Durability: 30 mating cycles. This new version(V3.02) can update the firmware(*) while keeping Starter Kit(SK) and Kingfisher(KF) connected. (*)firmware: bootparam_sa0.srec, bl2-h3ulcb/m3ulcb.srec, cert_header_sa6.srec, bl31-h3ulcb/m3ulcb.srec, tee-h3ulcb/m3ulcb.srec, u-boot-elf.srec

How to update: <ol>

<li> Power off the KF and remove SK from KF </li> Turn off SW5 Remove SK from KF

<li> Set SW of SK as follows: </li> SW1:OFF SW6:OFF/OFF/OFF/OFF SW2:OFF/OFF/OFF/OFF

<li> Power on the SK (This means that you need to prepare a 5V AC-adapter for SK) </li> Press SW8 SCIF Download mode starts

<li> Send the following file from console: </li> type "ctrl+A S" and select upload method "ascii", then choose file for uploading the following file. Case of M3SK: BoardID_Writer_SCIF_64bit_ID=0x10(StarterKit-Pro_Rev1.0).mot Case of H3SK: BoardID_Writer_SCIF_64bit_ID=0x58(StarterKit-Premier_Rev1.0OB).mot

NOTE: Under Linux, if you got problem transferring this file, it may because of special character in its name.

Solution is to open a new terminal then manually launch the transfer with the following command with double quote around filename (Ex: serial link on ttyUSB0 for M3SK):
 * 1) /usr/bin/ascii-xfr -dsv "BoardID_Writer_SCIF_64bit_ID=0x10(StarterKit-Pro_Rev1.0).mot" > /dev/ttyUSB0

You can confirm the following log (Ex: M3SK): +-+ +-+ Product Code : R-Car M3 ES1.0
 * Board ID Writer V01 2017.06.23 |

Now Board ID : Unknown Board Rev7 (0xFF) New Board ID : Starter Kit Rev0 (0x10) Wrote Board ID : Starter Kit Rev0 (0x10)

Writer Program End.

<li> Power off the SK </li> Press SW8

<li> Set SW as follows: </li> M3SK = SW6:OFF/ON/OFF/OFF H3SK = SW6:OFF/OFF/OFF/OFF

<li> Power on the SK </li> Press SW8 SCIF Download mode starts

<li> Send the following file from console: </li> type "ctrl+A S" and select upload method "ascii", then choose file for uploading the following file. Case of M3SK: AArch32_Gen3_H3_M3_Scif_MiniMon_V3.02.mot Case of H3SK: AArch64_Gen3_H3_M3_Scif_MiniMon_V3.02.mot You can confirm the following log (Ex: M3SK): R-Car Gen3 Scif Download MiniMonitor V3.02 2017.07.04 Work Memory    : SystemRAM Board Judge    : Used Board-ID	<-- Attention!! DDR_Init       : boardcnf[3] Starter Kit (M3SIP) Board Name     : Starter Kit Pro Product Code   : R-Car M3 ES1.0

>

<li> Flash AArch64_Gen3_H3_M3_SPI_LOADER_V3.02.mot. In console execute xls command (load program to hyper flash) and provide the following inputs: </li> xls 1 y y y 1 type "ctrl+A S" and select upload method "ascii", then choose file for uploading "AArch64_Gen3_H3_M3_SPI_LOADER_V3.02.mot", after upload finished press y key

<li> Flash AArch64_Gen3_Spi_MiniMon_V3.02_E6330000.mot. In console execute xls command (load program to hyper flash) and provide the following inputs: </li> xls 1 y y y 3 e6330000 type "ctrl+A S" and select upload method "ascii", then choose file for uploading "AArch64_Gen3_Spi_MiniMon_V3.02_E6330000.mot", after upload finished press y key

<li> Power off the SK </li> Press SW8

<li> Verify Sample Loader and MiniMonitor version </li> SW1:OFF M3SK SW6[1]=OFF, SW6[2]=OFF, SW6[3]=OFF, SW6[4]=ON H3SK ws1.0: SW6[all]=OFF ws1.1/ws2.0: SW6[1]=ON, SW6[2]=ON, SW6[3]=OFF, SW6[4]=ON Press SW8 You can confirm the following log (Ex: H3SK): R-Car Gen3 Sample Loader V3.02 2017.07.04		<-- !! V3.02 !! For Salvator, Kriek , and StarterKit. Board Judge    : Used Board-ID DDR_Init       : boardcnf[7] Salvator / Starter Kit (H3SIP_VER2.0) INITIAL SETTING : Starter Kit Premier / R-Car H3 ES2.0 CPU            : AArch64 CA57 DRAM           : LPDDR4 DDR3200 DEVICE         : QSPI Flash(S25FS128) at 40MHz DMA BOOT           : Normal Boot BACKUP         : DDR Cold Boot jump to 0xE6330000

R-Car Gen3 MiniMonitor V3.02 2017.07.04		<-- !! V3.02 !! Work Memory    : SystemRAM Board Name     : Starter Kit Premier Product Code   : R-Car H3 ES2.0

>

<li> Set SW(Kernel boot mode) as follows: </li> SW1:ON M3SK = SW6[all]:ON H3SK ws1.0 = SW6:OFF/OFF/OFF/ON ws1.1 = SW6:ON/OFF/ON/ON ws2.0 = SW6[all]:ON

<li> You can update the firmware with SK connected to KF. </li> How to update: http://elinux.org/R-Car/Boards/M3SK#Flashing_firmware http://elinux.org/R-Car/Boards/H3SK#Flashing_firmware </ol>

FAQ
<ol> <li>Failed to DRAM initialize (-1). If you face the following error please update(*) IPL and u-boot to the latest versopm. NOTICE: BL2: R-Car Gen3 Initial Program Loader(CA57) Rev.1.0.12 NOTICE: BL2: PRR is R-Car M3 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: DDR3200(rev.0.20)[COLD_BOOT]..1 NOTICE: BL2: Failed to DRAM initialize (-1). ERROR: ERROR:  BL2: System WDT overflow, occured address is 0xe630d3cc (*)How to update http://elinux.org/R-Car/Boards/Kingfisher#How_to_update_of_Sample_Loader_and_MiniMonitor http://elinux.org/R-Car/Boards/M3SK#Flashing_firmware http://elinux.org/R-Car/Boards/H3SK#Flashing_firmware </li>

Known Issues
<ol> <li> USB3.0(CN2) cannot use with M3 SK. </li> Refer to: http://elinux.org/R-Car/Boards/M3SK#Known_Issues <li> H/W limitations - Board type name: "SBEV-RCAR-KF-M03" and "SBEV-RCAR-KF-S03" 1. No access to Bluetooth AUDIO(U52) via I2S I/F 2. MOST RESET(CN22) SD card not working on 1.8V operation

- Board type name: "SBEV-RCAR-KF-M03", "SBEV-RCAR-KF-S03" and "SBEV-RCAR-KF-M03" 1. Cannot use Debugger using CN3 on SK. </li> <li>Power supply SBEV-RCAR-KF-M03 and SBEV-RCAR-KF -S03 boards may not turn on even if you turn on SW6. In that case please turn on SW6 again. </li> <li>(SW limitation)Raspberry Pi camera v2(Sony IMX219) camera does not support. (v1(ov5647)is suuported) </li> </ol>