1*54fd6939SJiyong ParkRenesas R-Car 2*54fd6939SJiyong Park============= 3*54fd6939SJiyong Park 4*54fd6939SJiyong Park"R-Car" is the nickname for Renesas' system-on-chip (SoC) family for 5*54fd6939SJiyong Parkcar information systems designed for the next-generation of automotive 6*54fd6939SJiyong Parkcomputing for the age of autonomous vehicles. 7*54fd6939SJiyong Park 8*54fd6939SJiyong ParkThe scalable R-Car hardware platform and flexible software platform 9*54fd6939SJiyong Parkcover the full product range, from the premium class to the entry 10*54fd6939SJiyong Parklevel. Plug-ins are available for multiple open-source software tools. 11*54fd6939SJiyong Park 12*54fd6939SJiyong Park 13*54fd6939SJiyong ParkRenesas R-Car Gen3 evaluation boards: 14*54fd6939SJiyong Park------------------------------------- 15*54fd6939SJiyong Park 16*54fd6939SJiyong Park+------------+-----------------+-----------------------------+ 17*54fd6939SJiyong Park| | Standard | Low Cost Boards (LCB) | 18*54fd6939SJiyong Park+============+=================+=============================+ 19*54fd6939SJiyong Park| R-Car H3 | - Salvator-X | - R-Car Starter Kit Premier | 20*54fd6939SJiyong Park| | - Salvator-XS | | 21*54fd6939SJiyong Park+------------+-----------------+-----------------------------+ 22*54fd6939SJiyong Park| R-Car M3-W | - Salvator-X | | 23*54fd6939SJiyong Park| | - Salvator-XS | - R-Car Starter Kit Pro | 24*54fd6939SJiyong Park+------------+-----------------+-----------------------------+ 25*54fd6939SJiyong Park| R-Car M3-N | - Salvator-X | | 26*54fd6939SJiyong Park| | - Salvator-XS | | 27*54fd6939SJiyong Park+------------+-----------------+-----------------------------+ 28*54fd6939SJiyong Park| R-Car V3M | - Eagle | - Starter Kit | 29*54fd6939SJiyong Park+------------+-----------------+-----------------------------+ 30*54fd6939SJiyong Park| R-Car V3H | - Condor | - Starter Kit | 31*54fd6939SJiyong Park+------------+-----------------+-----------------------------+ 32*54fd6939SJiyong Park| R-Car D3 | - Draak | | 33*54fd6939SJiyong Park+------------+-----------------+-----------------------------+ 34*54fd6939SJiyong Park 35*54fd6939SJiyong Park`boards info <https://elinux.org/R-Car>`__ 36*54fd6939SJiyong Park 37*54fd6939SJiyong ParkThe current TF-A port has been tested on the R-Car H3 Salvator-X 38*54fd6939SJiyong ParkSoc_id r8a7795 revision ES1.1 (uses a Secure Payload Dispatcher) 39*54fd6939SJiyong Park 40*54fd6939SJiyong Park 41*54fd6939SJiyong Park:: 42*54fd6939SJiyong Park 43*54fd6939SJiyong Park ARM CA57 (ARMv8) 1.5 GHz quad core, with NEON/VFPv4, L1$ I/D 44*54fd6939SJiyong Park 48K/32K, L2$ 2MB 45*54fd6939SJiyong Park ARM CA53 (ARMv8) 1.2 GHz quad core, with NEON/VFPv4, L1$ I/D 32K/32K, 46*54fd6939SJiyong Park L2$ 512K 47*54fd6939SJiyong Park Memory controller for LPDDR4-3200 4GB in 2 channels, each 64-bit wide 48*54fd6939SJiyong Park Two- and three-dimensional graphics engines, 49*54fd6939SJiyong Park Video processing units, 50*54fd6939SJiyong Park 3 channels Display Output, 51*54fd6939SJiyong Park 6 channels Video Input, 52*54fd6939SJiyong Park SD card host interface, 53*54fd6939SJiyong Park USB3.0 and USB2.0 interfaces, 54*54fd6939SJiyong Park CAN interfaces 55*54fd6939SJiyong Park Ethernet AVB 56*54fd6939SJiyong Park PCI Express Interfaces 57*54fd6939SJiyong Park Memories 58*54fd6939SJiyong Park INTERNAL 384KB SYSTEM RAM 59*54fd6939SJiyong Park DDR 4 GB LPDDR4 60*54fd6939SJiyong Park HYPERFLASH 64 MB HYPER FLASH (512 MBITS, 160 MHZ, 320 MBYTES/S) 61*54fd6939SJiyong Park QSPI FLASH 16MB QSPI (128 MBITS,80 MHZ,80 MBYTES/S)1 HEADER QSPI 62*54fd6939SJiyong Park MODULE 63*54fd6939SJiyong Park EMMC 32 GB EMMC (HS400 240 MBYTES/S) 64*54fd6939SJiyong Park MICROSD-CARD SLOT (SDR104 100 MBYTES/S) 65*54fd6939SJiyong Park 66*54fd6939SJiyong Park 67*54fd6939SJiyong ParkOverview 68*54fd6939SJiyong Park-------- 69*54fd6939SJiyong ParkOn the rcar-gen3 the BOOTROM starts the cpu at EL3; for this port BL2 70*54fd6939SJiyong Parkwill therefore be entered at this exception level (the Renesas' ATF 71*54fd6939SJiyong Parkreference tree [1] resets into EL1 before entering BL2 - see its 72*54fd6939SJiyong Parkbl2.ld.S) 73*54fd6939SJiyong Park 74*54fd6939SJiyong ParkBL2 initializes DDR (and on some platforms i2c to interface to the 75*54fd6939SJiyong ParkPMIC) before determining the boot reason (cold or warm). 76*54fd6939SJiyong Park 77*54fd6939SJiyong ParkDuring suspend all CPUs are switched off and the DDR is put in backup 78*54fd6939SJiyong Parkmode (some kind of self-refresh mode). This means that BL2 is always 79*54fd6939SJiyong Parkentered in a cold boot scenario. 80*54fd6939SJiyong Park 81*54fd6939SJiyong ParkOnce BL2 boots, it determines the boot reason, writes it to shared 82*54fd6939SJiyong Parkmemory (BOOT_KIND_BASE) together with the BL31 parameters 83*54fd6939SJiyong Park(PARAMS_BASE) and jumps to BL31. 84*54fd6939SJiyong Park 85*54fd6939SJiyong ParkTo all effects, BL31 is as if it is being entered in reset mode since 86*54fd6939SJiyong Parkit still needs to initialize the rest of the cores; this is the reason 87*54fd6939SJiyong Parkbehind using direct shared memory access to BOOT_KIND_BASE _and_ 88*54fd6939SJiyong ParkPARAMS_BASE instead of using registers to get to those locations (see 89*54fd6939SJiyong Parkel3_common_macros.S and bl31_entrypoint.S for the RESET_TO_BL31 use 90*54fd6939SJiyong Parkcase). 91*54fd6939SJiyong Park 92*54fd6939SJiyong ParkDepending on the boot reason BL31 initializes the rest of the cores: 93*54fd6939SJiyong Parkin case of suspend, it uses a MBOX memory region to recover the 94*54fd6939SJiyong Parkprogram counters. 95*54fd6939SJiyong Park 96*54fd6939SJiyong Park[1] https://github.com/renesas-rcar/arm-trusted-firmware 97*54fd6939SJiyong Park 98*54fd6939SJiyong Park 99*54fd6939SJiyong ParkHow to build 100*54fd6939SJiyong Park------------ 101*54fd6939SJiyong Park 102*54fd6939SJiyong ParkThe TF-A build options depend on the target board so you will have to 103*54fd6939SJiyong Parkrefer to those specific instructions. What follows is customized to 104*54fd6939SJiyong Parkthe H3 SiP Salvator-X development system used in this port. 105*54fd6939SJiyong Park 106*54fd6939SJiyong ParkBuild Tested: 107*54fd6939SJiyong Park~~~~~~~~~~~~~ 108*54fd6939SJiyong ParkRCAR_OPT="LSI=H3 RCAR_DRAM_SPLIT=1 RCAR_LOSSY_ENABLE=1" 109*54fd6939SJiyong ParkMBEDTLS_DIR=$mbedtls_src 110*54fd6939SJiyong Park 111*54fd6939SJiyong Park$ MBEDTLS_DIR=$mbedtls_src_tree make clean bl2 bl31 rcar_layout_tool \ 112*54fd6939SJiyong ParkPLAT=rcar ${RCAR_OPT} SPD=opteed 113*54fd6939SJiyong Park 114*54fd6939SJiyong ParkSystem Tested: 115*54fd6939SJiyong Park~~~~~~~~~~~~~~ 116*54fd6939SJiyong Park* mbed_tls: 117*54fd6939SJiyong Park [email protected]:ARMmbed/mbedtls.git [devel] 118*54fd6939SJiyong Park 119*54fd6939SJiyong Park commit 552754a6ee82bab25d1bdf28c8261a4518e65e4d 120*54fd6939SJiyong Park Merge: 68dbc94 f34a4c1 121*54fd6939SJiyong Park Author: Simon Butcher <[email protected]> 122*54fd6939SJiyong Park Date: Thu Aug 30 00:57:28 2018 +0100 123*54fd6939SJiyong Park 124*54fd6939SJiyong Park* optee_os: 125*54fd6939SJiyong Park https://github.com/BayLibre/optee_os 126*54fd6939SJiyong Park 127*54fd6939SJiyong Park Until it gets merged into OP-TEE, the port requires Renesas' 128*54fd6939SJiyong Park Trusted Environment with a modification to support power 129*54fd6939SJiyong Park management. 130*54fd6939SJiyong Park commit 80105192cba9e704ebe8df7ab84095edc2922f84 131*54fd6939SJiyong Park 132*54fd6939SJiyong Park Author: Jorge Ramirez-Ortiz <[email protected]> 133*54fd6939SJiyong Park Date: Thu Aug 30 16:49:49 2018 +0200 134*54fd6939SJiyong Park plat-rcar: cpu-suspend: handle the power level 135*54fd6939SJiyong Park Signed-off-by: Jorge Ramirez-Ortiz <[email protected]> 136*54fd6939SJiyong Park 137*54fd6939SJiyong Park* u-boot: 138*54fd6939SJiyong Park The port has beent tested using mainline uboot. 139*54fd6939SJiyong Park 140*54fd6939SJiyong Park commit 4cdeda511f8037015b568396e6dcc3d8fb41e8c0 141*54fd6939SJiyong Park Author: Fabio Estevam <[email protected]> 142*54fd6939SJiyong Park Date: Tue Sep 4 10:23:12 2018 -0300 143*54fd6939SJiyong Park 144*54fd6939SJiyong Park* linux: 145*54fd6939SJiyong Park The port has beent tested using mainline kernel. 146*54fd6939SJiyong Park 147*54fd6939SJiyong Park commit 7876320f88802b22d4e2daf7eb027dd14175a0f8 148*54fd6939SJiyong Park Author: Linus Torvalds <[email protected]> 149*54fd6939SJiyong Park Date: Sun Sep 16 11:52:37 2018 -0700 150*54fd6939SJiyong Park Linux 4.19-rc4 151*54fd6939SJiyong Park 152*54fd6939SJiyong ParkTF-A Build Procedure 153*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~ 154*54fd6939SJiyong Park 155*54fd6939SJiyong Park- Fetch all the above 4 repositories. 156*54fd6939SJiyong Park 157*54fd6939SJiyong Park- Prepare the AARCH64 toolchain. 158*54fd6939SJiyong Park 159*54fd6939SJiyong Park- Build u-boot using r8a7795_salvator-x_defconfig. 160*54fd6939SJiyong Park Result: u-boot-elf.srec 161*54fd6939SJiyong Park 162*54fd6939SJiyong Park.. code:: bash 163*54fd6939SJiyong Park 164*54fd6939SJiyong Park make CROSS_COMPILE=aarch64-linux-gnu- 165*54fd6939SJiyong Park r8a7795_salvator-x_defconfig 166*54fd6939SJiyong Park 167*54fd6939SJiyong Park make CROSS_COMPILE=aarch64-linux-gnu- 168*54fd6939SJiyong Park 169*54fd6939SJiyong Park- Build atf 170*54fd6939SJiyong Park Result: bootparam_sa0.srec, cert_header_sa6.srec, bl2.srec, bl31.srec 171*54fd6939SJiyong Park 172*54fd6939SJiyong Park.. code:: bash 173*54fd6939SJiyong Park 174*54fd6939SJiyong Park RCAR_OPT="LSI=H3 RCAR_DRAM_SPLIT=1 RCAR_LOSSY_ENABLE=1" 175*54fd6939SJiyong Park 176*54fd6939SJiyong Park MBEDTLS_DIR=$mbedtls_src_tree make clean bl2 bl31 rcar \ 177*54fd6939SJiyong Park PLAT=rcar ${RCAR_OPT} SPD=opteed 178*54fd6939SJiyong Park 179*54fd6939SJiyong Park- Build optee-os 180*54fd6939SJiyong Park Result: tee.srec 181*54fd6939SJiyong Park 182*54fd6939SJiyong Park.. code:: bash 183*54fd6939SJiyong Park 184*54fd6939SJiyong Park make -j8 PLATFORM="rcar" CFG_ARM64_core=y 185*54fd6939SJiyong Park 186*54fd6939SJiyong ParkInstall Procedure 187*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~ 188*54fd6939SJiyong Park 189*54fd6939SJiyong Park- Boot the board in Mini-monitor mode and enable access to the 190*54fd6939SJiyong Park Hyperflash. 191*54fd6939SJiyong Park 192*54fd6939SJiyong Park 193*54fd6939SJiyong Park- Use the XSL2 Mini-monitor utility to accept all the SREC ascii 194*54fd6939SJiyong Park transfers over serial. 195*54fd6939SJiyong Park 196*54fd6939SJiyong Park 197*54fd6939SJiyong ParkBoot trace 198*54fd6939SJiyong Park---------- 199*54fd6939SJiyong Park 200*54fd6939SJiyong ParkNotice that BL31 traces are not accessible via the console and that in 201*54fd6939SJiyong Parkorder to verbose the BL2 output you will have to compile TF-A with 202*54fd6939SJiyong ParkLOG_LEVEL=50 and DEBUG=1 203*54fd6939SJiyong Park 204*54fd6939SJiyong Park:: 205*54fd6939SJiyong Park 206*54fd6939SJiyong Park Initial Program Loader(CA57) Rev.1.0.22 207*54fd6939SJiyong Park NOTICE: BL2: PRR is R-Car H3 Ver.1.1 208*54fd6939SJiyong Park NOTICE: BL2: Board is Salvator-X Rev.1.0 209*54fd6939SJiyong Park NOTICE: BL2: Boot device is HyperFlash(80MHz) 210*54fd6939SJiyong Park NOTICE: BL2: LCM state is CM 211*54fd6939SJiyong Park NOTICE: AVS setting succeeded. DVFS_SetVID=0x53 212*54fd6939SJiyong Park NOTICE: BL2: DDR1600(rev.0.33)NOTICE: [COLD_BOOT]NOTICE: ..0 213*54fd6939SJiyong Park NOTICE: BL2: DRAM Split is 4ch 214*54fd6939SJiyong Park NOTICE: BL2: QoS is default setting(rev.0.37) 215*54fd6939SJiyong Park NOTICE: BL2: Lossy Decomp areas 216*54fd6939SJiyong Park NOTICE: Entry 0: DCMPAREACRAx:0x80000540 DCMPAREACRBx:0x570 217*54fd6939SJiyong Park NOTICE: Entry 1: DCMPAREACRAx:0x40000000 DCMPAREACRBx:0x0 218*54fd6939SJiyong Park NOTICE: Entry 2: DCMPAREACRAx:0x20000000 DCMPAREACRBx:0x0 219*54fd6939SJiyong Park NOTICE: BL2: v2.0(release):v2.0-rc0-32-gbcda69a 220*54fd6939SJiyong Park NOTICE: BL2: Built : 16:41:23, Oct 2 2018 221*54fd6939SJiyong Park NOTICE: BL2: Normal boot 222*54fd6939SJiyong Park INFO: BL2: Doing platform setup 223*54fd6939SJiyong Park INFO: BL2: Loading image id 3 224*54fd6939SJiyong Park NOTICE: BL2: dst=0xe6322000 src=0x8180000 len=512(0x200) 225*54fd6939SJiyong Park NOTICE: BL2: dst=0x43f00000 src=0x8180400 len=6144(0x1800) 226*54fd6939SJiyong Park WARNING: r-car ignoring the BL31 size from certificate,using 227*54fd6939SJiyong Park RCAR_TRUSTED_SRAM_SIZE instead 228*54fd6939SJiyong Park INFO: Loading image id=3 at address 0x44000000 229*54fd6939SJiyong Park NOTICE: rcar_file_len: len: 0x0003e000 230*54fd6939SJiyong Park NOTICE: BL2: dst=0x44000000 src=0x81c0000 len=253952(0x3e000) 231*54fd6939SJiyong Park INFO: Image id=3 loaded: 0x44000000 - 0x4403e000 232*54fd6939SJiyong Park INFO: BL2: Loading image id 4 233*54fd6939SJiyong Park INFO: Loading image id=4 at address 0x44100000 234*54fd6939SJiyong Park NOTICE: rcar_file_len: len: 0x00100000 235*54fd6939SJiyong Park NOTICE: BL2: dst=0x44100000 src=0x8200000 len=1048576(0x100000) 236*54fd6939SJiyong Park INFO: Image id=4 loaded: 0x44100000 - 0x44200000 237*54fd6939SJiyong Park INFO: BL2: Loading image id 5 238*54fd6939SJiyong Park INFO: Loading image id=5 at address 0x50000000 239*54fd6939SJiyong Park NOTICE: rcar_file_len: len: 0x00100000 240*54fd6939SJiyong Park NOTICE: BL2: dst=0x50000000 src=0x8640000 len=1048576(0x100000) 241*54fd6939SJiyong Park INFO: Image id=5 loaded: 0x50000000 - 0x50100000 242*54fd6939SJiyong Park NOTICE: BL2: Booting BL31 243*54fd6939SJiyong Park INFO: Entry point address = 0x44000000 244*54fd6939SJiyong Park INFO: SPSR = 0x3cd 245*54fd6939SJiyong Park VERBOSE: Argument #0 = 0xe6325578 246*54fd6939SJiyong Park VERBOSE: Argument #1 = 0x0 247*54fd6939SJiyong Park VERBOSE: Argument #2 = 0x0 248*54fd6939SJiyong Park VERBOSE: Argument #3 = 0x0 249*54fd6939SJiyong Park VERBOSE: Argument #4 = 0x0 250*54fd6939SJiyong Park VERBOSE: Argument #5 = 0x0 251*54fd6939SJiyong Park VERBOSE: Argument #6 = 0x0 252*54fd6939SJiyong Park VERBOSE: Argument #7 = 0x0 253*54fd6939SJiyong Park 254*54fd6939SJiyong Park 255*54fd6939SJiyong Park U-Boot 2018.09-rc3-00028-g3711616 (Sep 27 2018 - 18:50:24 +0200) 256*54fd6939SJiyong Park 257*54fd6939SJiyong Park CPU: Renesas Electronics R8A7795 rev 1.1 258*54fd6939SJiyong Park Model: Renesas Salvator-X board based on r8a7795 ES2.0+ 259*54fd6939SJiyong Park DRAM: 3.5 GiB 260*54fd6939SJiyong Park Flash: 64 MiB 261*54fd6939SJiyong Park MMC: sd@ee100000: 0, sd@ee140000: 1, sd@ee160000: 2 262*54fd6939SJiyong Park Loading Environment from MMC... OK 263*54fd6939SJiyong Park In: serial@e6e88000 264*54fd6939SJiyong Park Out: serial@e6e88000 265*54fd6939SJiyong Park Err: serial@e6e88000 266*54fd6939SJiyong Park Net: eth0: ethernet@e6800000 267*54fd6939SJiyong Park Hit any key to stop autoboot: 0 268*54fd6939SJiyong Park => 269