R-Car/Boards/Kingfisher/Yocto-Gen3/v3.19.0
This page contains information on building and running Yocto on:
Yocto versions
Poky-2.4.3 is supported with Yocto v3.21.0.
Specific commit of meta-openembedded is required.
Host PC
Ubuntu 16.04 LTS (64bit) is recommended as OS. 32bit version is not supported.
Preliminary steps
- 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-20190722.zip
- R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20190722.zip
- Graphic drivers are required for Wayland. Multimedia drivers are optional.
- Install required packages
- Ubuntu and Debian
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
- Fedora
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
- Refer to Yocto Project Quick Start for more information.
- Ubuntu and Debian
Building the BSP for Kingfisher
Build using script
This example is for Kingfisher with H3ULCB board.
If you use other board, you need to modify the script.
- Directory Structure
|--build.sh `--proprietary |--R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-20190722.zip `--R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20190722.zip
- Build script(build.sh)
#!/bin/bash #Set the target board TARGET_BOARD=h3ulcb #TARGET_BOARD=m3ulcb # Create a directory and switch to it mkdir $TARGET_BOARD cd $TARGET_BOARD WORK=`pwd` echo $WORK # Clone basic Yocto layers in parallel 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 & # Wait for all clone operations wait # Switch to proper branches/commits 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 cd $WORK/meta-rcar git checkout -b v3.21.0 remotes/origin/v3.21.0 # 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 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 echo 'DISTRO_FEATURES_append = " use_eva_pkg"' >> $WORK/build/conf/local.conf bitbake-layers add-layer ../meta-rcar/meta-rcar-gen3-adas bitbake core-image-weston
- build
./build.sh
- If the build completes successfully, all the necessary files are generated in a following directory:
./build/build/tmp/deploy/images/<target_board_name>
Build using manual steps
- 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`
- Clone basic Yocto layers:
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
- Switch to proper branches/commits (2020/02/20 updated)
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 cd $WORK/meta-rcar git checkout -b v3.21.0 remotes/origin/v3.21.0
- Another versions are not tested for compatibility.
- Legacy BSP instruction can be found here R-Car Kingfisher Yocto Gen3 legacy
- Download proprietary driver modules to $WORK/proprietary folder
- You should see the following files:
$ 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
- 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
- Setup build environment
cd $WORK source poky/oe-init-build-env $WORK/build
- Prepare default configuration files.
# [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
- NOTE: extra configuration examples are available in the following directory:
$WORK/meta-rcar/meta-rcar-gen3-adas/docs/sample/conf/
- (Edit $WORK/build/conf/local.conf to enable/disable graphics and multimedia proprietary drivers support)
- Edit local.conf with evaluation packages requirements:
DISTRO_FEATURES_append = " use_eva_pkg"
- Add layer meta-rcar
bitbake-layers add-layer ../meta-rcar/meta-rcar-gen3-adas
- Start the build
bitbake core-image-weston
- 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.
- 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.
- You can now proceed with running Yocto images
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:
- M04, M05
move resistor from R661 -> R660
move resistor from R663 -> R662
- M06
Slide SW7 to "MOST" side.
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 with LVDS panel(CN49)
Yocto v3.13.0 or later supports the following LVDS panels.
BD101LCC1 - Boundary Devices BD101LCC1 1280x800 panels [default]
TX31D200VM0BAA - KOE TX31D200VM0BAA 1280x480 panel
AA104XD12 - Mitsubishi AA104XD12 1024x768 panel
AA121TD01 - Mitsubishi AA121TD01 1280x800 panel
How to select:
- Add following option to local.conf:
KF_PANEL_MODEL = "TX31D200VM0BAA"
or
KF_PANEL_MODEL = "AA104XD12"
or
KF_PANEL_MODEL = "AA121TD01"
Build SDK
- After building BSP you may build SDK:
bitbake core-image-weston -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
Running Yocto images
Refer to Running Yocto images of Yocto-Gen3.
[NOTE]
- DTB file for Kingfisher:
- Image-r8a7795-h3ulcb-kf.dtb
- Image-r8a7795-h3ulcb-4x2g-kf.dtb(*)
- Image-r8a7796-m3ulcb-kf.dtb
- (*) The "4x2g" means DDR8GiB SK board. Refer to "H3 SK variation".
S/W support status
Support list
Functions | Status |
---|---|
WiFi | ok |
Bluetooth | ok |
Gyro | ok |
GPS | ok |
CAN | ok |
LVDS Camera(CN10/CN11) | ok |
CMOS Camera | ok |
Raspberry Pi camera Rev 1.3 | ok |
Raspberry Pi camera Rev 2 | ok |
USB2.0(CN13) Host | ok |
USB2.0(CN13) Func(g_mass_storage) | ok |
USB3.0(CN2) Host | ok (H3 only) |
Multichannel Audio | ok |
HDMI Out | ok |
LVDS Out | ok |
Serial(CN4) | ok |
Mini PCIe | ok |
M.2 | ok |
MOST | ok |
How to test some capabilities
WiFi
To check wifi and scan available WAPs run:
$ ifconfig wlan0 up $ iwlist wlan0 scan
Bluetooth
Ex 1)To check bluetooth and scan available BT devices run:
$ hciconfig hci0 up $ hcitool -i hci0 scan
Ex 2)BT-Audio
root@h3ulcb:~# bluetoothctl [NEW] Controller C8:DF:84:4C:84:98 h3ulcb [default] Agent registered [bluetooth]# power on Changing power on succeeded [bluetooth]# agent on Agent is already registered [bluetooth]# default-agent Default agent request successful [bluetooth]# scan on Discovery started ..(snip).. !!! <-- Please look for taget device !!! [bluetooth]# scan off ..(snip).. [bluetooth]# pair <MAC address of target device> ..(snip).. Request confirmation [agent] Confirm passkey 285311 (yes/no): yes ..(snip).. Pairing successful [bluetooth]# connect <MAC address of target device> ..(snip).. Connection successful ..(snip).. [Target device name]# quit
Please play music on target device.
Gyro
$ cat /sys/bus/iio/devices/iio\:device0/*_raw (Accelerometer, Magnetometer)
$ cat /sys/bus/iio/devices/iio\:device1/*_raw (Gyroscope)
GPS
$ cat /dev/ttySC2 # (Yocto v3.x)
CAN
Ex) loop back
- Connect the following pins of CN17 and CN18:
CN17 1pin - CN18 1pin CN17 2pin - CN18 2pin (*)Note: SW2 ON of KF. (defalt:ON)
$ ip link set can0 up type can bitrate 125000 $ ip link set can1 up type can bitrate 125000 $ candump can0& $ cangen can1 can0 08D [3] B5 F4 3C can0 34E [3] 7C A1 70 can0 717 [6] 95 C5 67 4A 41 42 can0 7F1 [8] CA B9 E9 3E AE 71 FC 52
Serial
Ex) loop back
- For KF M03: Connect the following pins on CN4:
pin3(RxD) - pin5(TxD) pin4(RTS) - pin6(CTS)
- For KF M03: Connect the following pins on CN4:
pin2(TxD) - pin4(RxD) pin1(RTS) - pin3(CTS)
$ stty -F /dev/ttySC3 -echo $ stty -F /dev/ttySC3 speed 9600 baud; line = 0; -brkint -imaxbel -echo $ cat /dev/ttySC3 & $ echo 123435452345 > /dev/ttySC3 123435452345
LVDS Camera
- <GMSL>
- Camera board: GMSL02
- Camera: IMI RDACM21-01 <-- This may be out of stock
- Camera: Leopard Imaging LI-OV10635-GMSL
- Camera: Entron S001A190CM0A (How to get) NEW
- <FPD Link>
- Camera board: FPDL01
- Camera: IMI RDACM24-01 <-- This may be out of stock
[Note]
- H3 can use CN10 and CN11
- M3 can use CN10
- When you use a Leopard Imaging camera, add some parameters to bootargs.
Leopard Imagin camera type name | bootargs |
---|---|
LI-OV10635-GMSL | ov106xx.dvp_order=0 |
S001A190CM0A | max9286.him=1 max9286.vsync=0 max9286.fsync_period=2420000 max9286.crossbar=0x01234567 |
(IMI) RDACM21 |
Ex1)
$ killall weston $ capture -d /dev/video0 -F -f rgb32 -L 0 -T 0 -W 1280 -H 1080 -c 1000 -z
Ex2)
- RDACM21-01/RDACM24-1
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=dmabuf ! video/x-raw,format=BGRA,width=1280,height=1080,framerate=30/1 ! waylandsink
- LI-OV10635-GMSL
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=dmabuf ! video/x-raw,format=BGRA,width=1280,height=800,framerate=30/1 ! waylandsink
- S001A190CM0A
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=dmabuf ! video/x-raw,format=BGRA,width=1280,height=728,framerate=30/1 ! waylandsink
COMS Camera
Ex)
$ systemctl stop weston $ capture -d /dev/video0 -F -f rgb32 -L 0 -T 0 -W 1280 -H 720 -c 1000 -t 60 -z
Raspberry Pi camera Rev 1.3(OV5647) / 2(IMX219)
- In case of v2(IMX219)
- Add the following option to local.conf:
KF_ENABLE_IMX219 = "1"
- Add the following option to local.conf:
- Ex)
$ systemctl stop weston $ capture -d /dev/video0 -o -f bggr8 -W 2592 -H 1944 -c 1 -t 30 > video.bggr [ 2475.196942] rcar_csi2 fea80000.csi2: Timeout of reading the PHY clock lane [ 2475.203851] rcar_csi2 fea80000.csi2: Timeout of reading the PHY data lane
Ubuntu PC$ ./bayer2rgb -i video.bggr -o video.rgb24 -w 2592 -v 1944 -b 8 -f BGGR * https://github.com/jdthomas/bayer2rgb.git Ubuntu PC$ rawtoppm -rgb 2592 1944 video.rgb24 > video24.ppm Ubuntu PC$ display video24.ppm
Multichannel Audio
- Ex1) CN12/32 on KF
$ speaker-test -c 8 -t wav -W /usr/share/sounds/alsa/
- Ex2)
<KF> $ pactl set-default-sink pcm3168a_output $ speaker-test -c 8 -t wav -W /usr/share/sounds/alsa/ <SK> $ pactl set-default-sink ak4613_output $ amixer -c 1 sset "DVC Out" 10% $ speaker-test -c 2 -t wav -W /usr/share/sounds/alsa/
- Ex3)
<KF> $ paplay -d pcm3168a_output sample.wav <SK> $ amixer -c 1 sset "DVC Out" 10% $ paplay -d ak4613_output sample.wav
MOST
Ex)
- Connect OS81092 board(Physical+ Interface Board OS81092) and CN22 of KF.
- Connect Audio board(OS81092 Audio Demo Board) and OS819092 board with exclusive cable.
- Connect Audio board and CN5 of SK with USB cable.
- Run the linux kernel
- cd /usr/share/most/
- ./most_setup.sh
$./most_setup.sh --Setting up RX channel with MLB[ 217.636328] aim_sound: PCM format is 16-bit stereo addr 0x03 (0x06)-- --S[ 217.642675] aim_sound: PCM format is 16-bit stereo etting up TX channel wit[ 217.649647] aim_sound: PCM format is 16-bit stereo h MLB addr 0x04 (0x08)-- --Setting up TX channel with MLB addr 0x06 (0x0C)-- --Creating char devices-- --Creating ALSA devices--
- ../setup-audio-50 &
$./setup-audio-50 & Configuration: Timing Slave (Audio Sink) ! ET_NS_MSVAL_ERROR a MSVAL Error is reported from the NS: 0x0010 MSVAL_ERR_STARTUP_FAILED MSVAL_E_SHUTDOWN App reset MSVAL_E_SHUTDOWN App reset ! ET_NS_MSVAL_ERROR a MSVAL Error is reported from the NS: 0x0011 MSVAL_ERR_STARTUP_BUSY ! ET_NS_MSVAL_ERROR a MSVAL Error is reported from the NS: 0x0011 MSVAL_ERR_STARTUP_BUSY (snip)
- Push the "Switch" button on the Audio board
-> MostAllowRemoteAccess(allow) -> SourceInfo.Status 1 (Inst_ID: 0x1, FB: 0x24, Adr: 0x400) -> SourceInfo.Status 2 (Inst_ID: 0x1, FB: 0x24, Adr: 0x400) -> Amplifier.Volume.Set 100
- Push the "Switch" button on the Audio board again
<- FB_AuxIn_Allocate_StartResult Node: 0x01, Ifn: 0x02
- Push the "Switch" button on the Audio board again
<- FB_AuxIn_Allocate_StartResult Node: 0x01, Ifn: 0x01
- ./most_play.sh ${PATH}/hoge.mp3 5
$./most_play.sh /home/root/hoge.mp3 5 Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Redistribute latency... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstAudioSinkClock
Radio
ex) FM Radio
- If radio module is used for the first time, updating radio module firmware is required.
- Updating firmware is not required after the second time.
$ si_init $ si_firmware_update ( Update firmware of radio module.) $ si_fm $ si_preset <FM Radio frequency> ( In Tokyo, Japan, 91600 is Nippon Cultural Broadcasting. )
FAQ
Discussion site
http://elinux.org/Talk:R-Car/Boards/Yocto-Gen3
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
How to get the SA001 Camera
S001A Camera Specification:
- http://www.entroninc.com/prouduct.html
- (S001 is the same camera with S002, just connector slightly different)
- Image Sensor : AR0140AT
- ISP : AP0101
- Resolution : 1280x728
This camera cannot be purchased from the online shop.
If you want to get the Entron S001A190CM0A camera, please contact to "RenesasJa" from "Email this user" of following site.
https://elinux.org/User:RenesasJa
Please fill in the followings in the email.
- Name
- Company name
- Email address
- Why you need it (as detailed as possible)
- Required quantity
<Caution>
- Quantities are limited.
- Please understand that we cannot sell this camera to everyone.
Known issues and limitations
- USB3.0(CN2) cannot use with M3 SK.
- This is a limitation of M3 SK. (H3 SK can use USB3.0)
- H/W limitations
- Board type name: "SBEV-RCAR-KF-M03"
- MOST is not supported.
- Board type name: "SBEV-RCAR-KF-M03" and "SBEV-RCAR-KF-S03"
- BT-Audio(HFP)is not supported.
- Board type name: "SBEV-RCAR-KF-M03", "SBEV-RCAR-KF-S03" and "SBEV-RCAR-KF-M04"
- Cannot use JTAG(CN3 on SK).
- Board type name: "SBEV-RCAR-KF-M03"
- 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.
- [SW limitation] Raspberry Pi camera
- v2(Sony IMX219) camera does not support. (v1(ov5647)is supported)
- --> Yocto v3.9.0 or later support v2 camera.