xref: /aosp_15_r20/external/arm-trusted-firmware/docs/plat/rcar-gen3.rst (revision 54fd6939e177f8ff529b10183254802c76df6d08)
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