Difference between revisions of "R-Car/Boards/Kingfisher/Android/Android P"
m |
(→Flashing images using fastboot) |
||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Template:R-Car-Gen3-Navbox}} | {{Template:R-Car-Gen3-Navbox}} | ||
{{TOC right}} | {{TOC right}} | ||
− | + | [[Category:R-Car]] | |
− | + | [[Category:R-Car Gen3]] | |
== Introduction == | == Introduction == | ||
This page contains information on building and running Android on: | This page contains information on building and running Android on: | ||
* [[R-Car/Boards/Kingfisher | Infotainment Carrier Board For R-Car Starter Kit(Kingfisher)]] | * [[R-Car/Boards/Kingfisher | Infotainment Carrier Board For R-Car Starter Kit(Kingfisher)]] | ||
+ | <span style="color: red;"> | ||
+ | This BSP doesn't support H3 v1.1 SK(RTP0RC7795SKBX0010SA00) and M3 v1 SK(RTP0RC7796SKBX0010SA09).<br/> | ||
+ | </span> | ||
+ | See also: | ||
+ | * https://elinux.org/R-Car/Boards/H3SK#Hardware | ||
+ | * https://elinux.org/R-Car/Boards/M3SK#Hardware | ||
== Topic == | == Topic == | ||
{{Template:R-Car-Gen3-Topic}} | {{Template:R-Car-Gen3-Topic}} | ||
− | == Host PC == | + | === Host PC === |
− | Ubuntu 16.04 LTS (64bit) is recommended as OS. | + | Ubuntu 16.04 LTS (64bit) is recommended as an OS for building Android(Ubuntu 18.04/20.04 is also supported).<br> |
+ | Building Android BSP requires a lot of RAM at least 16GB.<br/> | ||
+ | 32bit version is not supported. | ||
− | == | + | === Required packages === |
− | + | <syntaxhighlight lang=bash> | |
+ | # Install basic dependencies | ||
+ | $ sudo apt-get update | ||
+ | $ sudo apt-get install openjdk-8-jdk git-core gnupg flex bison \ | ||
+ | gperf build-essential zip curl zlib1g-dev gcc-multilib ccache \ | ||
+ | g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev \ | ||
+ | libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils liblz4-tool \ | ||
+ | xsltproc unzip python-networkx python-wand python-crypto liblz4-tool bc | ||
+ | </syntaxhighlight> | ||
+ | Detailed environment configuration description can be found in Google Android setup guide:</br> | ||
+ | https://source.android.com/source/initializing.html#setting-up-a-linux-build-environment | ||
− | == | + | == Building the Android BSP for Kingfisher board == |
− | |||
− | == Known issues | + | === Build using script === |
− | + | # Directory Structure | |
+ | #: <syntaxhighlight lang="bash"> | ||
+ | |--build.sh | ||
+ | `--Gen3_Android_v5.3.0.zip | ||
+ | </syntaxhighlight> | ||
+ | # Build script(build.sh) | ||
+ | #: <syntaxhighlight lang="bash"> | ||
+ | #!/bin/bash | ||
+ | |||
+ | SCRIPT_DIR=$(cd `dirname $0` && pwd) | ||
+ | |||
+ | BOARD_LIST=("h3ulcb" "m3ulcb") | ||
+ | DRAM_SIZE_LIST=("4GB" "8GB") | ||
+ | TARGET_BOARD=$1 | ||
+ | DRAM_SIZE=$2 | ||
+ | WORKDIRECTORY=$1 | ||
+ | IMAGE_DIR_NAME="images_"$1 | ||
+ | |||
+ | Usage () { | ||
+ | echo "Usage: $0 \${TARGET_BOARD_NAME} (DRAM_SIZE:h3ulcb_only_option)" | ||
+ | echo "BOARD_NAME list: " | ||
+ | for i in ${BOARD_LIST[@]}; do echo " - $i"; done | ||
+ | echo "H3 only: DRAM_SIZE list" | ||
+ | for i in ${DRAM_SIZE_LIST[@]}; do echo " - $i"; done | ||
+ | exit | ||
+ | } | ||
+ | |||
+ | # Check Param. | ||
+ | if ! `IFS=$'\n'; echo "${BOARD_LIST[*]}" | grep -qx "${TARGET_BOARD}"`; then | ||
+ | Usage | ||
+ | fi | ||
+ | if [[ "${TARGET_BOARD}" == "h3ulcb" ]]; then | ||
+ | if ! `IFS=$'\n'; echo "${DRAM_SIZE_LIST[*]}" | grep -qx "${DRAM_SIZE}"`; then | ||
+ | Usage | ||
+ | fi | ||
+ | WORKDIRECTORY+="_${DRAM_SIZE}" | ||
+ | IMAGE_DIR_NAME+="_${DRAM_SIZE}" | ||
+ | fi | ||
+ | |||
+ | mkdir -p ${SCRIPT_DIR}/${WORKDIRECTORY} | ||
+ | cd ${SCRIPT_DIR}/${WORKDIRECTORY} | ||
+ | export workdirectory=$(pwd) | ||
+ | curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ./repo | ||
+ | chmod +x ./repo | ||
+ | export PATH=$(pwd):${PATH} | ||
+ | |||
+ | cp ${SCRIPT_DIR}/Gen3_Android_v5.3.0.zip -t ${workdirectory} | ||
+ | cd ${workdirectory} | ||
+ | unzip -qo Gen3_Android_v5.3.0.zip | ||
+ | unzip -qo OSS_Package/Gen3_Android_v5.3.0.zip -d OSS_Package | ||
+ | unzip -qo Software/SV00_Android530Software_001.zip -d Software | ||
+ | unzip -qo OSS_Package/Gen3_Android_v5.3.0/RENESAS_RCH3M3_Android_P_2021_01E.zip | ||
+ | |||
+ | cd ${workdirectory}/RENESAS_RCH3M3_Android_P_2021_01E | ||
+ | export workspace=$(pwd) | ||
+ | cp -r ${workdirectory}/Software/proprietary/pkgs_dir . | ||
+ | |||
+ | cd ${workspace} | ||
+ | chmod +x walkthrough.sh | ||
+ | if [[ "${TARGET_BOARD}" == "h3ulcb" ]]; then | ||
+ | HAVE_ADSP=NO ./walkthrough.sh H3 | ||
+ | elif [[ "${TARGET_BOARD}" == "m3ulcb" ]]; then | ||
+ | HAVE_ADSP=NO ./walkthrough.sh M3 | ||
+ | fi | ||
+ | |||
+ | # Apply patch to support H3 v3 SK equipped with Single-ranked DDR | ||
+ | cd ${workdirectory} | ||
+ | curl -sO https://elinux.org/images/6/63/H3SK-SingleRankedDDR_for_Android_P_BSP_v3.zip | ||
+ | unzip -qo H3SK-SingleRankedDDR_for_Android_P_BSP_v3.zip | ||
+ | cd ${workspace}/mydroid/device/renesas/bootloaders/ipl | ||
+ | patch -N -p1 < ${workdirectory}/H3SK-SingleRankedDDR_for_Android_P_BSP_v3.diff | ||
+ | |||
+ | cd ${workspace}/mydroid | ||
+ | if [[ "${TARGET_BOARD}" == "h3ulcb" ]]; then | ||
+ | export TARGET_BOARD_PLATFORM=r8a7795 | ||
+ | export H3_OPTION=${DRAM_SIZE} | ||
+ | elif [[ "${TARGET_BOARD}" == "m3ulcb" ]]; then | ||
+ | export TARGET_BOARD_PLATFORM=r8a7796 | ||
+ | fi | ||
+ | |||
+ | source build/envsetup.sh | ||
+ | lunch kingfisher-userdebug | ||
+ | export BUILD_BOOTLOADERS=true | ||
+ | export BUILD_BOOTLOADERS_SREC=true | ||
+ | make | ||
+ | |||
+ | export images_dir=$workdirectory/$IMAGE_DIR_NAME | ||
+ | mkdir ${images_dir} | ||
+ | cp \ | ||
+ | out/target/product/kingfisher/boot.img \ | ||
+ | out/target/product/kingfisher/dtb.img \ | ||
+ | out/target/product/kingfisher/dtbo.img \ | ||
+ | out/target/product/kingfisher/vbmeta.img \ | ||
+ | out/target/product/kingfisher/system.img \ | ||
+ | out/target/product/kingfisher/vendor.img \ | ||
+ | out/target/product/kingfisher/bootloader.img \ | ||
+ | out/target/product/kingfisher/bootloader_hf.img \ | ||
+ | out/target/product/kingfisher/product.img \ | ||
+ | out/target/product/kingfisher/bl2_hf.srec \ | ||
+ | out/target/product/kingfisher/bl31_hf.srec \ | ||
+ | out/target/product/kingfisher/bootparam_sa0_hf.srec \ | ||
+ | out/target/product/kingfisher/cert_header_sa6_hf.srec \ | ||
+ | out/target/product/kingfisher/tee_hf.srec \ | ||
+ | out/target/product/kingfisher/u-boot-elf_hf.srec \ | ||
+ | device/renesas/common/fastboot.sh \ | ||
+ | device/renesas/common/functions.sh \ | ||
+ | device/renesas/common/ipl_emmc_flash.sh \ | ||
+ | device/renesas/common/ipl_hf_flash.sh \ | ||
+ | out/host/linux-x86/bin/adb \ | ||
+ | out/host/linux-x86/bin/mke2fs \ | ||
+ | out/host/linux-x86/bin/fastboot ${images_dir} | ||
+ | </syntaxhighlight> | ||
+ | # build | ||
+ | #: <syntaxhighlight lang="bash"> | ||
+ | # H3 Starter Kit with 4GB DDR | ||
+ | ./build.sh h3ulcb 4GB | ||
+ | # H3 Starter Kit with 8GB DDR | ||
+ | ./build.sh h3ulcb 8GB | ||
+ | # M3v3 Starter Kit | ||
+ | ./build.sh m3ulcb | ||
+ | </syntaxhighlight> | ||
+ | #: If the build completes successfully, all the necessary files are generated in a following directory: | ||
+ | #:: <syntaxhighlight lang="text"> | ||
+ | Ex.) H3SK with 4GB case | ||
+ | ./h3ulcb_4GB/images_h3ulcb_4GB | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Build using manual steps === | ||
+ | |||
+ | ==== Downloading repo tool ==== | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ mkdir <your work directory> | ||
+ | $ cd <your work directory> | ||
+ | $ export workdirectory=$(pwd) | ||
+ | $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ./repo | ||
+ | $ chmod +x ./repo | ||
+ | $ export PATH=$(pwd):${PATH} | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Unpack Android Package ==== | ||
+ | Unpack the Renesas Android package to workspace.<br/> | ||
+ | <nowiki>#</nowiki> DL from below URL to your ${workdirectory}<br/> | ||
+ | :* https://www.renesas.com/us/en/application/automotive/r-car-h3-m3-h2-m2-e2-documents-software <br/> | ||
+ | : Download file: | ||
+ | ::* Gen3_Android_v5.3.0.zip | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ cd ${workdirectory} | ||
+ | $ unzip Gen3_Android_v5.3.0.zip | ||
+ | $ unzip OSS_Package/Gen3_Android_v5.3.0.zip -d OSS_Package | ||
+ | $ unzip Software/SV00_Android530Software_001.zip -d Software | ||
+ | $ unzip OSS_Package/Gen3_Android_v5.3.0/RENESAS_RCH3M3_Android_P_2021_01E.zip | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Preparing OpenMAX (OMX), Graphics(GFX) library package ==== | ||
+ | Copy Proprietary Software Packages (OMX and GFX) to pkgs_dir: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ cd ${workdirectory}/RENESAS_RCH3M3_Android_P_2021_01E | ||
+ | $ export workspace=$(pwd) | ||
+ | $ cp -r ${workdirectory}/Software/proprietary/pkgs_dir . | ||
+ | pkgs_dir/ | ||
+ | |--gfx | ||
+ | | |--INFRTM0RC7795GQGG0001SA90C_1_1_0.zip | ||
+ | | |--INFRTM0RC7796GQGG0001SA90C_1_1_0.zip | ||
+ | | |--RCH3G001A9001ZDO_1_1_0.zip | ||
+ | | |--RCM3G001A9001ZDO_1_1_0.zip | ||
+ | |--omx | ||
+ | | |--RCG3VUDRA9001ZDO_3_0_19.zip | ||
+ | | |--RTM0AC0000XCMCTL30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XV263D30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XV264D30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XV264E30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XV265D30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XVCMND30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XVCMNE30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XVM4VD30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XVVP8D30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XVVP8E30SA90C_3_0_19.zip | ||
+ | | |--RTM0AC0000XVVP9D30SA90C_3_0_19.zip | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Unpacking Android sources ==== | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ cd ${workspace} | ||
+ | $ chmod +x walkthrough.sh | ||
+ | |||
+ | #For R-Car H3 | ||
+ | $ HAVE_ADSP=NO ./walkthrough.sh H3 | ||
+ | |||
+ | #For R-Car M3 | ||
+ | $ HAVE_ADSP=NO ./walkthrough.sh M3 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Building the BSP ==== | ||
+ | Please check additional build options and apply any if needed prior to starting the build process. | ||
+ | # Set Android build environment | ||
+ | #* For R-Car H3 case: | ||
+ | #*: <syntaxhighlight lang=bash> | ||
+ | $ export TARGET_BOARD_PLATFORM=r8a7795 | ||
+ | # Please set H3_OPTION variables. | ||
+ | # 4GB DDR case | ||
+ | $ export H3_OPTION=4GB | ||
+ | # 8GB DDR case | ||
+ | $ export H3_OPTION=8GB | ||
+ | </syntaxhighlight> | ||
+ | #* For R-Car M3 case: | ||
+ | #*: <syntaxhighlight lang=bash> | ||
+ | $ export TARGET_BOARD_PLATFORM=r8a7796 | ||
+ | </syntaxhighlight> | ||
+ | # Build | ||
+ | #: <syntaxhighlight lang=bash> | ||
+ | $ cd ${workspace}/mydroid | ||
+ | $ source build/envsetup.sh | ||
+ | $ lunch kingfisher-userdebug | ||
+ | $ export BUILD_BOOTLOADERS=true | ||
+ | $ export BUILD_BOOTLOADERS_SREC=true | ||
+ | $ make | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Copying images file ==== | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ export images_dir=<your_images_dir> | ||
+ | $ mkdir ${images_dir} | ||
+ | $ cp \ | ||
+ | out/target/product/kingfisher/boot.img \ | ||
+ | out/target/product/kingfisher/dtb.img \ | ||
+ | out/target/product/kingfisher/dtbo.img \ | ||
+ | out/target/product/kingfisher/vbmeta.img \ | ||
+ | out/target/product/kingfisher/system.img \ | ||
+ | out/target/product/kingfisher/vendor.img \ | ||
+ | out/target/product/kingfisher/bootloader.img \ | ||
+ | out/target/product/kingfisher/bootloader_hf.img \ | ||
+ | out/target/product/kingfisher/product.img \ | ||
+ | out/target/product/kingfisher/bl2_hf.srec \ | ||
+ | out/target/product/kingfisher/bl31_hf.srec \ | ||
+ | out/target/product/kingfisher/bootparam_sa0_hf.srec \ | ||
+ | out/target/product/kingfisher/cert_header_sa6_hf.srec \ | ||
+ | out/target/product/kingfisher/tee_hf.srec \ | ||
+ | out/target/product/kingfisher/u-boot-elf_hf.srec \ | ||
+ | device/renesas/common/fastboot.sh \ | ||
+ | device/renesas/common/functions.sh \ | ||
+ | device/renesas/common/ipl_emmc_flash.sh \ | ||
+ | device/renesas/common/ipl_hf_flash.sh \ | ||
+ | out/host/linux-x86/bin/adb \ | ||
+ | out/host/linux-x86/bin/mke2fs \ | ||
+ | out/host/linux-x86/bin/fastboot ${images_dir} | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Flashing binaries == | ||
+ | === Flashing IPL === | ||
+ | ==== Flashing SREC bootloader files ==== | ||
+ | It's needed to update the Loader, ARM Trusted firmware, Certification, OP-Tee and u-boot in the QSPI Flash memory as it's described in following pages: | ||
+ | * [[R-Car/Boards/H3SK#Flashing_firmware]] | ||
+ | * [[R-Car/Boards/M3SK#Flashing_firmware]] | ||
+ | |||
+ | === Flashing images using fastboot === | ||
+ | <span style="color: #F00"> | ||
+ | Note: this step should be done after successful IPL and U-Boot flashing.<br/> | ||
+ | </span> | ||
+ | <syntaxhighlight lang=bash> | ||
+ | # 0. Connect host and board via USB debug port(CN12) on Starter Kit and start minicom: | ||
+ | $ sudo minicom -D /dev/ttyUSB0 | ||
+ | |||
+ | # 1. Turn on the device and interrupt autoboot by pressing any key when device starts booting up. | ||
+ | |||
+ | # 2. Erase bootloader in eMMC | ||
+ | => mmc dev 1 1 | ||
+ | => mw.b 4f000000 0 200000 | ||
+ | => mmc write 4f000000 0 1000 | ||
+ | => mmc dev 1 2 | ||
+ | => mw.b 4f000000 0 200000 | ||
+ | => mmc write 4f000000 0 1000 | ||
+ | => reset | ||
+ | # Please interrupt autoboot | ||
+ | |||
+ | # 3. Reset default environment: | ||
+ | => env default -a | ||
+ | |||
+ | # 4. Set ethernet hardware address (written on Ethernet port): | ||
+ | => setenv ethaddr <board MAC addr> | ||
+ | |||
+ | # 5. Set board serial number of R-Car Starter Kit | ||
+ | => editenv serialno | ||
+ | Edit: serialno=xxxxxxxx | ||
+ | # Padding 0 for a total of 8 digits | ||
+ | => editenv bootargs | ||
+ | => video=VGA-1:d init_time=xxxxxxxxxx | ||
+ | #”video” variable needs to set parameter related to display configuration. | ||
+ | #”init_time” variable needs to set UNIX time. | ||
+ | #You can get it by executing “date +%s” command on host PC. | ||
+ | #The board don't have any RTC. | ||
+ | #If time and date is not accurate, a few issues will be happened. | ||
+ | |||
+ | # 6. Save changes: | ||
+ | => saveenv | ||
+ | |||
+ | # 7. And reboot the device: | ||
+ | => reset | ||
+ | |||
+ | # 8. After reboot activate fastboot mode by running “fastboot” in u-boot environment: | ||
+ | => fastboot | ||
+ | # Next commands are performed on host side: | ||
+ | $ cd ${images_dir} | ||
+ | $ chmod a+x ./fastboot | ||
+ | $ chmod a+x ./fastboot.sh | ||
+ | |||
+ | # 9. Connect host and board via USB port(CN13) on Kingfisher. | ||
+ | |||
+ | # 10. Create GPT table on eMMC: | ||
+ | $ sudo ./fastboot oem format | ||
+ | |||
+ | # 11. Reboot device into bootloader: | ||
+ | $ sudo ./fastboot reboot bootloader | ||
+ | |||
+ | # 12. Go to images directory and execute: | ||
+ | $ sudo ./fastboot.sh --noresetenv | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Booting device == | ||
+ | : 1) Connect Monitor to microHDMI(CN4) port in Starter Kit board(Mandatory). | ||
+ | : 2) Connect Starter Kit board to host PC via debug port(CN12). | ||
+ | : 3) Connect usb cable to Kingfisher OTG(CN13) for adb debug. | ||
+ | : 4) (Optional) Connect Ethernet cable(CN7). | ||
+ | : 5) Power on device. | ||
+ | : 6) Wait until Android boot is completed. | ||
+ | |||
+ | == Tips == | ||
+ | === Screen configuration === | ||
+ | ==== Resolution parameters ==== | ||
+ | By default HWComposer selects resolutions not higher than Full HD with display aspect ratio. | ||
+ | <syntaxhighlight lang=bash> | ||
+ | # Turn on the device and interrupt autoboot using minicom. | ||
+ | # Edit environment variable: | ||
+ | => editenv bootargs | ||
+ | # Set video resolution: | ||
+ | # for display connected to Starter Kit: | ||
+ | androidboot.display.res.HDMI2=1280x720-32@60 | ||
+ | # for display connected to Kingfisher | ||
+ | androidboot.display.res.HDMI1=1280x720-32@60 | ||
+ | # for LVDS display on Kingfisher | ||
+ | androidboot.display.res.LVDS=1280x720-32@60 | ||
+ | # Save changes: | ||
+ | => saveenv | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Measuring FPS on HWC level === | ||
+ | To enable fps show: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | $ ./adb shell setprop debug.hwc.showfps 1 | ||
+ | </syntaxhighlight> | ||
+ | Fps values can be found in logcat log like: | ||
+ | <syntaxhighlight lang=text> | ||
+ | ... | ||
+ | hwcomposer: fps: 22.0 (23 frame per 1.043099 sec) | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | To disable fps show: | ||
+ | <syntaxhighlight lang=text> | ||
+ | $ ./adb shell setprop debug.hwc.showfps 0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Microphone level amplification === | ||
+ | By default, audio volume may be low when recording from the microphone. | ||
+ | This can be affected by using a microphone preamplifier integrated into KF extension. | ||
+ | <br/> | ||
+ | Microphone preamplifier is equipped with three switches ('''SW3''', '''SW4''' and '''SW5'''). | ||
+ | Every switch contains two toggles, responsible for the left and right audio channels. | ||
+ | Turning on the toggle will provide the microphone amplification by 20dB. | ||
+ | |||
+ | == Known issues == | ||
+ | # Suspend to RAM is not supported. | ||
+ | # UI is displayed with distortions on some displays if an interlaced resolution is set. | ||
+ | See also: | ||
+ | * [[R-Car/Boards/Kingfisher#Known_Issues]]. | ||
+ | |||
+ | {{Template:R-Car-Yocto-Gen3-footer}} |
Latest revision as of 18:29, 20 October 2021
|
Introduction
This page contains information on building and running Android on:
This BSP doesn't support H3 v1.1 SK(RTP0RC7795SKBX0010SA00) and M3 v1 SK(RTP0RC7796SKBX0010SA09).
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.4 (stable) [New!!] | 2024/03/28 | |
Kingfisher Infotainment Board | Yocto v5.9.0 (stable) | 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 (stable) | 2022/02/08 | Prebuilt binary is available in Quick startup guide page. (Updated on 2022/03/18) |
Host PC
Ubuntu 16.04 LTS (64bit) is recommended as an OS for building Android(Ubuntu 18.04/20.04 is also supported).
Building Android BSP requires a lot of RAM at least 16GB.
32bit version is not supported.
Required packages
# Install basic dependencies
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk git-core gnupg flex bison \
gperf build-essential zip curl zlib1g-dev gcc-multilib ccache \
g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev \
libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils liblz4-tool \
xsltproc unzip python-networkx python-wand python-crypto liblz4-tool bc
Detailed environment configuration description can be found in Google Android setup guide:
https://source.android.com/source/initializing.html#setting-up-a-linux-build-environment
Building the Android BSP for Kingfisher board
Build using script
- Directory Structure
|--build.sh `--Gen3_Android_v5.3.0.zip
- Build script(build.sh)
#!/bin/bash SCRIPT_DIR=$(cd `dirname $0` && pwd) BOARD_LIST=("h3ulcb" "m3ulcb") DRAM_SIZE_LIST=("4GB" "8GB") TARGET_BOARD=$1 DRAM_SIZE=$2 WORKDIRECTORY=$1 IMAGE_DIR_NAME="images_"$1 Usage () { echo "Usage: $0 \${TARGET_BOARD_NAME} (DRAM_SIZE:h3ulcb_only_option)" echo "BOARD_NAME list: " for i in ${BOARD_LIST[@]}; do echo " - $i"; done echo "H3 only: DRAM_SIZE list" for i in ${DRAM_SIZE_LIST[@]}; do echo " - $i"; done exit } # Check Param. if ! `IFS=$'\n'; echo "${BOARD_LIST[*]}" | grep -qx "${TARGET_BOARD}"`; then Usage fi if [[ "${TARGET_BOARD}" == "h3ulcb" ]]; then if ! `IFS=$'\n'; echo "${DRAM_SIZE_LIST[*]}" | grep -qx "${DRAM_SIZE}"`; then Usage fi WORKDIRECTORY+="_${DRAM_SIZE}" IMAGE_DIR_NAME+="_${DRAM_SIZE}" fi mkdir -p ${SCRIPT_DIR}/${WORKDIRECTORY} cd ${SCRIPT_DIR}/${WORKDIRECTORY} export workdirectory=$(pwd) curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ./repo chmod +x ./repo export PATH=$(pwd):${PATH} cp ${SCRIPT_DIR}/Gen3_Android_v5.3.0.zip -t ${workdirectory} cd ${workdirectory} unzip -qo Gen3_Android_v5.3.0.zip unzip -qo OSS_Package/Gen3_Android_v5.3.0.zip -d OSS_Package unzip -qo Software/SV00_Android530Software_001.zip -d Software unzip -qo OSS_Package/Gen3_Android_v5.3.0/RENESAS_RCH3M3_Android_P_2021_01E.zip cd ${workdirectory}/RENESAS_RCH3M3_Android_P_2021_01E export workspace=$(pwd) cp -r ${workdirectory}/Software/proprietary/pkgs_dir . cd ${workspace} chmod +x walkthrough.sh if [[ "${TARGET_BOARD}" == "h3ulcb" ]]; then HAVE_ADSP=NO ./walkthrough.sh H3 elif [[ "${TARGET_BOARD}" == "m3ulcb" ]]; then HAVE_ADSP=NO ./walkthrough.sh M3 fi # Apply patch to support H3 v3 SK equipped with Single-ranked DDR cd ${workdirectory} curl -sO https://elinux.org/images/6/63/H3SK-SingleRankedDDR_for_Android_P_BSP_v3.zip unzip -qo H3SK-SingleRankedDDR_for_Android_P_BSP_v3.zip cd ${workspace}/mydroid/device/renesas/bootloaders/ipl patch -N -p1 < ${workdirectory}/H3SK-SingleRankedDDR_for_Android_P_BSP_v3.diff cd ${workspace}/mydroid if [[ "${TARGET_BOARD}" == "h3ulcb" ]]; then export TARGET_BOARD_PLATFORM=r8a7795 export H3_OPTION=${DRAM_SIZE} elif [[ "${TARGET_BOARD}" == "m3ulcb" ]]; then export TARGET_BOARD_PLATFORM=r8a7796 fi source build/envsetup.sh lunch kingfisher-userdebug export BUILD_BOOTLOADERS=true export BUILD_BOOTLOADERS_SREC=true make export images_dir=$workdirectory/$IMAGE_DIR_NAME mkdir ${images_dir} cp \ out/target/product/kingfisher/boot.img \ out/target/product/kingfisher/dtb.img \ out/target/product/kingfisher/dtbo.img \ out/target/product/kingfisher/vbmeta.img \ out/target/product/kingfisher/system.img \ out/target/product/kingfisher/vendor.img \ out/target/product/kingfisher/bootloader.img \ out/target/product/kingfisher/bootloader_hf.img \ out/target/product/kingfisher/product.img \ out/target/product/kingfisher/bl2_hf.srec \ out/target/product/kingfisher/bl31_hf.srec \ out/target/product/kingfisher/bootparam_sa0_hf.srec \ out/target/product/kingfisher/cert_header_sa6_hf.srec \ out/target/product/kingfisher/tee_hf.srec \ out/target/product/kingfisher/u-boot-elf_hf.srec \ device/renesas/common/fastboot.sh \ device/renesas/common/functions.sh \ device/renesas/common/ipl_emmc_flash.sh \ device/renesas/common/ipl_hf_flash.sh \ out/host/linux-x86/bin/adb \ out/host/linux-x86/bin/mke2fs \ out/host/linux-x86/bin/fastboot ${images_dir}
- build
# H3 Starter Kit with 4GB DDR ./build.sh h3ulcb 4GB # H3 Starter Kit with 8GB DDR ./build.sh h3ulcb 8GB # M3v3 Starter Kit ./build.sh m3ulcb
- If the build completes successfully, all the necessary files are generated in a following directory:
Ex.) H3SK with 4GB case ./h3ulcb_4GB/images_h3ulcb_4GB
Build using manual steps
Downloading repo tool
$ mkdir <your work directory>
$ cd <your work directory>
$ export workdirectory=$(pwd)
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ./repo
$ chmod +x ./repo
$ export PATH=$(pwd):${PATH}
Unpack Android Package
Unpack the Renesas Android package to workspace.
# DL from below URL to your ${workdirectory}
- Download file:
- Gen3_Android_v5.3.0.zip
$ cd ${workdirectory}
$ unzip Gen3_Android_v5.3.0.zip
$ unzip OSS_Package/Gen3_Android_v5.3.0.zip -d OSS_Package
$ unzip Software/SV00_Android530Software_001.zip -d Software
$ unzip OSS_Package/Gen3_Android_v5.3.0/RENESAS_RCH3M3_Android_P_2021_01E.zip
Preparing OpenMAX (OMX), Graphics(GFX) library package
Copy Proprietary Software Packages (OMX and GFX) to pkgs_dir:
$ cd ${workdirectory}/RENESAS_RCH3M3_Android_P_2021_01E
$ export workspace=$(pwd)
$ cp -r ${workdirectory}/Software/proprietary/pkgs_dir .
pkgs_dir/
|--gfx
| |--INFRTM0RC7795GQGG0001SA90C_1_1_0.zip
| |--INFRTM0RC7796GQGG0001SA90C_1_1_0.zip
| |--RCH3G001A9001ZDO_1_1_0.zip
| |--RCM3G001A9001ZDO_1_1_0.zip
|--omx
| |--RCG3VUDRA9001ZDO_3_0_19.zip
| |--RTM0AC0000XCMCTL30SA90C_3_0_19.zip
| |--RTM0AC0000XV263D30SA90C_3_0_19.zip
| |--RTM0AC0000XV264D30SA90C_3_0_19.zip
| |--RTM0AC0000XV264E30SA90C_3_0_19.zip
| |--RTM0AC0000XV265D30SA90C_3_0_19.zip
| |--RTM0AC0000XVCMND30SA90C_3_0_19.zip
| |--RTM0AC0000XVCMNE30SA90C_3_0_19.zip
| |--RTM0AC0000XVM4VD30SA90C_3_0_19.zip
| |--RTM0AC0000XVVP8D30SA90C_3_0_19.zip
| |--RTM0AC0000XVVP8E30SA90C_3_0_19.zip
| |--RTM0AC0000XVVP9D30SA90C_3_0_19.zip
Unpacking Android sources
$ cd ${workspace}
$ chmod +x walkthrough.sh
#For R-Car H3
$ HAVE_ADSP=NO ./walkthrough.sh H3
#For R-Car M3
$ HAVE_ADSP=NO ./walkthrough.sh M3
Building the BSP
Please check additional build options and apply any if needed prior to starting the build process.
- Set Android build environment
- For R-Car H3 case:
$ export TARGET_BOARD_PLATFORM=r8a7795 # Please set H3_OPTION variables. # 4GB DDR case $ export H3_OPTION=4GB # 8GB DDR case $ export H3_OPTION=8GB
- For R-Car M3 case:
$ export TARGET_BOARD_PLATFORM=r8a7796
- For R-Car H3 case:
- Build
$ cd ${workspace}/mydroid $ source build/envsetup.sh $ lunch kingfisher-userdebug $ export BUILD_BOOTLOADERS=true $ export BUILD_BOOTLOADERS_SREC=true $ make
Copying images file
$ export images_dir=<your_images_dir>
$ mkdir ${images_dir}
$ cp \
out/target/product/kingfisher/boot.img \
out/target/product/kingfisher/dtb.img \
out/target/product/kingfisher/dtbo.img \
out/target/product/kingfisher/vbmeta.img \
out/target/product/kingfisher/system.img \
out/target/product/kingfisher/vendor.img \
out/target/product/kingfisher/bootloader.img \
out/target/product/kingfisher/bootloader_hf.img \
out/target/product/kingfisher/product.img \
out/target/product/kingfisher/bl2_hf.srec \
out/target/product/kingfisher/bl31_hf.srec \
out/target/product/kingfisher/bootparam_sa0_hf.srec \
out/target/product/kingfisher/cert_header_sa6_hf.srec \
out/target/product/kingfisher/tee_hf.srec \
out/target/product/kingfisher/u-boot-elf_hf.srec \
device/renesas/common/fastboot.sh \
device/renesas/common/functions.sh \
device/renesas/common/ipl_emmc_flash.sh \
device/renesas/common/ipl_hf_flash.sh \
out/host/linux-x86/bin/adb \
out/host/linux-x86/bin/mke2fs \
out/host/linux-x86/bin/fastboot ${images_dir}
Flashing binaries
Flashing IPL
Flashing SREC bootloader files
It's needed to update the Loader, ARM Trusted firmware, Certification, OP-Tee and u-boot in the QSPI Flash memory as it's described in following pages:
Flashing images using fastboot
Note: this step should be done after successful IPL and U-Boot flashing.
# 0. Connect host and board via USB debug port(CN12) on Starter Kit and start minicom:
$ sudo minicom -D /dev/ttyUSB0
# 1. Turn on the device and interrupt autoboot by pressing any key when device starts booting up.
# 2. Erase bootloader in eMMC
=> mmc dev 1 1
=> mw.b 4f000000 0 200000
=> mmc write 4f000000 0 1000
=> mmc dev 1 2
=> mw.b 4f000000 0 200000
=> mmc write 4f000000 0 1000
=> reset
# Please interrupt autoboot
# 3. Reset default environment:
=> env default -a
# 4. Set ethernet hardware address (written on Ethernet port):
=> setenv ethaddr <board MAC addr>
# 5. Set board serial number of R-Car Starter Kit
=> editenv serialno
Edit: serialno=xxxxxxxx
# Padding 0 for a total of 8 digits
=> editenv bootargs
=> video=VGA-1:d init_time=xxxxxxxxxx
#”video” variable needs to set parameter related to display configuration.
#”init_time” variable needs to set UNIX time.
#You can get it by executing “date +%s” command on host PC.
#The board don't have any RTC.
#If time and date is not accurate, a few issues will be happened.
# 6. Save changes:
=> saveenv
# 7. And reboot the device:
=> reset
# 8. After reboot activate fastboot mode by running “fastboot” in u-boot environment:
=> fastboot
# Next commands are performed on host side:
$ cd ${images_dir}
$ chmod a+x ./fastboot
$ chmod a+x ./fastboot.sh
# 9. Connect host and board via USB port(CN13) on Kingfisher.
# 10. Create GPT table on eMMC:
$ sudo ./fastboot oem format
# 11. Reboot device into bootloader:
$ sudo ./fastboot reboot bootloader
# 12. Go to images directory and execute:
$ sudo ./fastboot.sh --noresetenv
Booting device
- 1) Connect Monitor to microHDMI(CN4) port in Starter Kit board(Mandatory).
- 2) Connect Starter Kit board to host PC via debug port(CN12).
- 3) Connect usb cable to Kingfisher OTG(CN13) for adb debug.
- 4) (Optional) Connect Ethernet cable(CN7).
- 5) Power on device.
- 6) Wait until Android boot is completed.
Tips
Screen configuration
Resolution parameters
By default HWComposer selects resolutions not higher than Full HD with display aspect ratio.
# Turn on the device and interrupt autoboot using minicom.
# Edit environment variable:
=> editenv bootargs
# Set video resolution:
# for display connected to Starter Kit:
androidboot.display.res.HDMI2=1280x720-32@60
# for display connected to Kingfisher
androidboot.display.res.HDMI1=1280x720-32@60
# for LVDS display on Kingfisher
androidboot.display.res.LVDS=1280x720-32@60
# Save changes:
=> saveenv
Measuring FPS on HWC level
To enable fps show:
$ ./adb shell setprop debug.hwc.showfps 1
Fps values can be found in logcat log like:
...
hwcomposer: fps: 22.0 (23 frame per 1.043099 sec)
...
To disable fps show:
$ ./adb shell setprop debug.hwc.showfps 0
Microphone level amplification
By default, audio volume may be low when recording from the microphone.
This can be affected by using a microphone preamplifier integrated into KF extension.
Microphone preamplifier is equipped with three switches (SW3, SW4 and SW5).
Every switch contains two toggles, responsible for the left and right audio channels.
Turning on the toggle will provide the microphone amplification by 20dB.
Known issues
- Suspend to RAM is not supported.
- UI is displayed with distortions on some displays if an interlaced resolution is set.
See also:
Q&A site
https://community.renesas.com/automotive/r-car-h3-m3-cockpit/
FAQ site
- https://en-support.renesas.com/knowledgeBase/category/31363 (English page)
- https://ja-support.renesas.com/knowledgeBase/category/31403 (Japanese page)