xref: /rk3399_ARM-atf/docs/plat/nxp/nxp-layerscape.rst (revision 7c78e4f7df43f09e54c26637711c6341761f3314)
1*7c78e4f7SPankaj GuptaNXP SoCs - Overview
2*7c78e4f7SPankaj Gupta=====================
3*7c78e4f7SPankaj Gupta.. section-numbering::
4*7c78e4f7SPankaj Gupta    :suffix: .
5*7c78e4f7SPankaj Gupta
6*7c78e4f7SPankaj GuptaThe QorIQ family of ARM based SoCs that are supported on TF-A are:
7*7c78e4f7SPankaj Gupta
8*7c78e4f7SPankaj Gupta1. LX2160ARDB:
9*7c78e4f7SPankaj Gupta        Platform Name:
10*7c78e4f7SPankaj Gupta
11*7c78e4f7SPankaj Gupta        a. lx2160ardb (Board details can be fetched from the link: `lx2160ardb`_)
12*7c78e4f7SPankaj Gupta
13*7c78e4f7SPankaj Gupta
14*7c78e4f7SPankaj GuptaTable of supported boot-modes by each platform & platform that needs FIP-DDR:
15*7c78e4f7SPankaj Gupta-----------------------------------------------------------------------------
16*7c78e4f7SPankaj Gupta
17*7c78e4f7SPankaj Gupta+---+-----------------+-------+--------+-------+-------+-------+-------------+--------------+-----------------+
18*7c78e4f7SPankaj Gupta|   |     BOOT_MODE-->|  sd   |  qspi  |  nor  | nand  | emmc  | flexspi_nor | flexspi_nand | fip_ddr needed  |
19*7c78e4f7SPankaj Gupta|   |                 |       |        |       |       |       |             |              |                 |
20*7c78e4f7SPankaj Gupta|   |     PLAT        |       |        |       |       |       |             |              |                 |
21*7c78e4f7SPankaj Gupta+===+=================+=======+========+=======+=======+=======+=============+==============+=================+
22*7c78e4f7SPankaj Gupta| 1.| lx2160ardb      |  yes  |        |       |       |  yes  |   yes       |              |       yes       |
23*7c78e4f7SPankaj Gupta+---+-----------------+-------+--------+-------+-------+-------+-------------+--------------+-----------------+
24*7c78e4f7SPankaj Gupta
25*7c78e4f7SPankaj GuptaBoot Sequence
26*7c78e4f7SPankaj Gupta-------------
27*7c78e4f7SPankaj Gupta::
28*7c78e4f7SPankaj Gupta
29*7c78e4f7SPankaj Gupta+                           Secure World        |     Normal World
30*7c78e4f7SPankaj Gupta+ EL0                                           |
31*7c78e4f7SPankaj Gupta+                                               |
32*7c78e4f7SPankaj Gupta+ EL1                           BL32(Tee OS)    |     kernel
33*7c78e4f7SPankaj Gupta+                                ^ |            |       ^
34*7c78e4f7SPankaj Gupta+                                | |            |       |
35*7c78e4f7SPankaj Gupta+ EL2                            | |            |     BL33(u-boot)
36*7c78e4f7SPankaj Gupta+                                | |            |      ^
37*7c78e4f7SPankaj Gupta+                                | v            |     /
38*7c78e4f7SPankaj Gupta+ EL3        BootROM --> BL2 --> BL31 ---------------/
39*7c78e4f7SPankaj Gupta+
40*7c78e4f7SPankaj Gupta
41*7c78e4f7SPankaj GuptaBoot Sequence with FIP-DDR
42*7c78e4f7SPankaj Gupta--------------------------
43*7c78e4f7SPankaj Gupta::
44*7c78e4f7SPankaj Gupta
45*7c78e4f7SPankaj Gupta+                           Secure World        |     Normal World
46*7c78e4f7SPankaj Gupta+ EL0                                           |
47*7c78e4f7SPankaj Gupta+                                               |
48*7c78e4f7SPankaj Gupta+ EL1               fip-ddr     BL32(Tee OS)    |     kernel
49*7c78e4f7SPankaj Gupta+                     ^ |         ^ |           |       ^
50*7c78e4f7SPankaj Gupta+                     | |         | |           |       |
51*7c78e4f7SPankaj Gupta+ EL2                 | |         | |           |     BL33(u-boot)
52*7c78e4f7SPankaj Gupta+                     | |         | |           |      ^
53*7c78e4f7SPankaj Gupta+                     | v         | v           |     /
54*7c78e4f7SPankaj Gupta+ EL3     BootROM --> BL2 -----> BL31 ---------------/
55*7c78e4f7SPankaj Gupta+
56*7c78e4f7SPankaj Gupta
57*7c78e4f7SPankaj Gupta
58*7c78e4f7SPankaj GuptaHow to build
59*7c78e4f7SPankaj Gupta=============
60*7c78e4f7SPankaj Gupta
61*7c78e4f7SPankaj GuptaCode Locations
62*7c78e4f7SPankaj Gupta--------------
63*7c78e4f7SPankaj Gupta
64*7c78e4f7SPankaj Gupta-  OP-TEE:
65*7c78e4f7SPankaj Gupta   `link <https://source.codeaurora.org/external/qoriq/qoriq-components/optee_os>`__
66*7c78e4f7SPankaj Gupta
67*7c78e4f7SPankaj Gupta-  U-Boot:
68*7c78e4f7SPankaj Gupta   `link <https://source.codeaurora.org/external/qoriq/qoriq-components/u-boot>`__
69*7c78e4f7SPankaj Gupta
70*7c78e4f7SPankaj Gupta-  RCW:
71*7c78e4f7SPankaj Gupta   `link <https://source.codeaurora.org/external/qoriq/qoriq-components/rcw>`__
72*7c78e4f7SPankaj Gupta
73*7c78e4f7SPankaj Gupta-  ddr-phy-binary: Required by platforms that need fip-ddr.
74*7c78e4f7SPankaj Gupta   `link <https:://github.com/NXP/ddr-phy-binary>`__
75*7c78e4f7SPankaj Gupta
76*7c78e4f7SPankaj Gupta-  cst: Required for TBBR.
77*7c78e4f7SPankaj Gupta   `link <https:://source.codeaurora.org/external/qoriq/qoriq-components/cst>`__
78*7c78e4f7SPankaj Gupta
79*7c78e4f7SPankaj GuptaBuild Procedure
80*7c78e4f7SPankaj Gupta---------------
81*7c78e4f7SPankaj Gupta
82*7c78e4f7SPankaj Gupta-  Fetch all the above repositories into local host.
83*7c78e4f7SPankaj Gupta
84*7c78e4f7SPankaj Gupta-  Prepare AARCH64 toolchain and set the environment variable "CROSS_COMPILE".
85*7c78e4f7SPankaj Gupta
86*7c78e4f7SPankaj Gupta   .. code:: shell
87*7c78e4f7SPankaj Gupta
88*7c78e4f7SPankaj Gupta       export CROSS_COMPILE=.../bin/aarch64-linux-gnu-
89*7c78e4f7SPankaj Gupta
90*7c78e4f7SPankaj Gupta-  Build RCW. Refer README from the respective cloned folder for more details.
91*7c78e4f7SPankaj Gupta
92*7c78e4f7SPankaj Gupta-  Build u-boot and OPTee firstly, and get binary images: u-boot.bin and tee.bin.
93*7c78e4f7SPankaj Gupta   For u-boot you can use the <platform>_tfa_defconfig for build.
94*7c78e4f7SPankaj Gupta
95*7c78e4f7SPankaj Gupta-  Copy/clone the repo "ddr-phy-binary" to the tfa directory for platform needing ddr-fip.
96*7c78e4f7SPankaj Gupta
97*7c78e4f7SPankaj Gupta-  Below are the steps to build TF-A images for the supported platforms.
98*7c78e4f7SPankaj Gupta
99*7c78e4f7SPankaj GuptaCompilation steps without BL32
100*7c78e4f7SPankaj Gupta~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101*7c78e4f7SPankaj Gupta
102*7c78e4f7SPankaj GuptaBUILD BL2:
103*7c78e4f7SPankaj Gupta
104*7c78e4f7SPankaj Gupta-To compile
105*7c78e4f7SPankaj Gupta   .. code:: shell
106*7c78e4f7SPankaj Gupta
107*7c78e4f7SPankaj Gupta       make PLAT=$PLAT \
108*7c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
109*7c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
110*7c78e4f7SPankaj Gupta       pbl
111*7c78e4f7SPankaj Gupta
112*7c78e4f7SPankaj GuptaBUILD FIP:
113*7c78e4f7SPankaj Gupta
114*7c78e4f7SPankaj Gupta   .. code:: shell
115*7c78e4f7SPankaj Gupta
116*7c78e4f7SPankaj Gupta       make PLAT=$PLAT \
117*7c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
118*7c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
119*7c78e4f7SPankaj Gupta       BL33=$UBOOT_SECURE_BIN \
120*7c78e4f7SPankaj Gupta       pbl \
121*7c78e4f7SPankaj Gupta       fip
122*7c78e4f7SPankaj Gupta
123*7c78e4f7SPankaj GuptaCompilation steps with BL32
124*7c78e4f7SPankaj Gupta~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125*7c78e4f7SPankaj Gupta
126*7c78e4f7SPankaj GuptaBUILD BL2:
127*7c78e4f7SPankaj Gupta
128*7c78e4f7SPankaj Gupta-To compile
129*7c78e4f7SPankaj Gupta   .. code:: shell
130*7c78e4f7SPankaj Gupta
131*7c78e4f7SPankaj Gupta       make PLAT=$PLAT \
132*7c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
133*7c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
134*7c78e4f7SPankaj Gupta       BL32=$TEE_BIN SPD=opteed\
135*7c78e4f7SPankaj Gupta       pbl
136*7c78e4f7SPankaj Gupta
137*7c78e4f7SPankaj GuptaBUILD FIP:
138*7c78e4f7SPankaj Gupta
139*7c78e4f7SPankaj Gupta   .. code:: shell
140*7c78e4f7SPankaj Gupta
141*7c78e4f7SPankaj Gupta       make PLAT=$PLAT \
142*7c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
143*7c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
144*7c78e4f7SPankaj Gupta       BL32=$TEE_BIN SPD=opteed\
145*7c78e4f7SPankaj Gupta       BL33=$UBOOT_SECURE_BIN \
146*7c78e4f7SPankaj Gupta       pbl \
147*7c78e4f7SPankaj Gupta       fip
148*7c78e4f7SPankaj Gupta
149*7c78e4f7SPankaj Gupta
150*7c78e4f7SPankaj GuptaBUILD fip-ddr (Mandatory for certain platforms, refer table above):
151*7c78e4f7SPankaj Gupta~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
152*7c78e4f7SPankaj Gupta
153*7c78e4f7SPankaj Gupta-To compile additional fip-ddr for selected platforms(Refer above table if the platform needs fip-ddr).
154*7c78e4f7SPankaj Gupta   .. code:: shell
155*7c78e4f7SPankaj Gupta
156*7c78e4f7SPankaj Gupta	make PLAT=<platform_name> fip-ddr
157*7c78e4f7SPankaj Gupta
158*7c78e4f7SPankaj Gupta
159*7c78e4f7SPankaj GuptaDeploy ATF Images
160*7c78e4f7SPankaj Gupta=================
161*7c78e4f7SPankaj Gupta
162*7c78e4f7SPankaj GuptaNote: The size in the standard uboot commands for copy to nor, qspi, nand or sd
163*7c78e4f7SPankaj Guptashould be modified based on the binary size of the image to be copied.
164*7c78e4f7SPankaj Gupta
165*7c78e4f7SPankaj Gupta-  Deploy ATF images on flexspi-Nor flash Alt Bank from U-Boot prompt.
166*7c78e4f7SPankaj Gupta   --  Commands to flash images for bl2_xxx.pbl and fip.bin.
167*7c78e4f7SPankaj Gupta
168*7c78e4f7SPankaj Gupta   .. code:: shell
169*7c78e4f7SPankaj Gupta
170*7c78e4f7SPankaj Gupta        tftp 82000000  $path/bl2_flexspi_nor.pbl;
171*7c78e4f7SPankaj Gupta        i2c mw 66 50 20;sf probe 0:0; sf erase 0 +$filesize; sf write 0x82000000 0x0 $filesize;
172*7c78e4f7SPankaj Gupta
173*7c78e4f7SPankaj Gupta        tftp 82000000  $path/fip.bin;
174*7c78e4f7SPankaj Gupta        i2c mw 66 50 20;sf probe 0:0; sf erase 0x100000 +$filesize; sf write 0x82000000 0x100000 $filesize;
175*7c78e4f7SPankaj Gupta
176*7c78e4f7SPankaj Gupta   --  Next step is valid for platform where FIP-DDR is needed.
177*7c78e4f7SPankaj Gupta
178*7c78e4f7SPankaj Gupta   .. code:: shell
179*7c78e4f7SPankaj Gupta
180*7c78e4f7SPankaj Gupta        tftp 82000000  $path/ddr_fip.bin;
181*7c78e4f7SPankaj Gupta        i2c mw 66 50 20;sf probe 0:0; sf erase 0x800000 +$filesize; sf write 0x82000000 0x800000 $filesize;
182*7c78e4f7SPankaj Gupta
183*7c78e4f7SPankaj Gupta   --  Then reset to alternate bank to boot up ATF.
184*7c78e4f7SPankaj Gupta
185*7c78e4f7SPankaj Gupta   .. code:: shell
186*7c78e4f7SPankaj Gupta
187*7c78e4f7SPankaj Gupta        qixisreset altbank;
188*7c78e4f7SPankaj Gupta
189*7c78e4f7SPankaj Gupta-  Deploy ATF images on SD/eMMC from U-Boot prompt.
190*7c78e4f7SPankaj Gupta   -- file_size_in_block_sizeof_512 = (Size_of_bytes_tftp / 512)
191*7c78e4f7SPankaj Gupta
192*7c78e4f7SPankaj Gupta   .. code:: shell
193*7c78e4f7SPankaj Gupta
194*7c78e4f7SPankaj Gupta        mmc dev <idx>; (idx = 1 for eMMC; idx = 0 for SD)
195*7c78e4f7SPankaj Gupta
196*7c78e4f7SPankaj Gupta        tftp 82000000  $path/bl2_<sd>_or_<emmc>.pbl;
197*7c78e4f7SPankaj Gupta        mmc write 82000000 8 <file_size_in_block_sizeof_512>;
198*7c78e4f7SPankaj Gupta
199*7c78e4f7SPankaj Gupta        tftp 82000000  $path/fip.bin;
200*7c78e4f7SPankaj Gupta        mmc write 82000000 0x800 <file_size_in_block_sizeof_512>;
201*7c78e4f7SPankaj Gupta
202*7c78e4f7SPankaj Gupta    --  Next step is valid for platform that needs FIP-DDR.
203*7c78e4f7SPankaj Gupta
204*7c78e4f7SPankaj Gupta   .. code:: shell
205*7c78e4f7SPankaj Gupta
206*7c78e4f7SPankaj Gupta        tftp 82000000  $path/ddr_fip.bin;
207*7c78e4f7SPankaj Gupta        mmc write 82000000 0x4000 <file_size_in_block_sizeof_512>;
208*7c78e4f7SPankaj Gupta
209*7c78e4f7SPankaj Gupta   --  Then reset to sd/emmc to boot up ATF from sd/emmc as boot-source.
210*7c78e4f7SPankaj Gupta
211*7c78e4f7SPankaj Gupta   .. code:: shell
212*7c78e4f7SPankaj Gupta
213*7c78e4f7SPankaj Gupta        qixisreset <sd or emmc>;
214*7c78e4f7SPankaj Gupta
215*7c78e4f7SPankaj GuptaTrusted Board Boot:
216*7c78e4f7SPankaj Gupta===================
217*7c78e4f7SPankaj Gupta
218*7c78e4f7SPankaj GuptaFor TBBR, the binary name changes:
219*7c78e4f7SPankaj Gupta
220*7c78e4f7SPankaj Gupta+-------------+--------------------------+---------+-------------------+
221*7c78e4f7SPankaj Gupta|  Boot Type  |           BL2            |   FIP   |      FIP-DDR      |
222*7c78e4f7SPankaj Gupta+=============+==========================+=========+===================+
223*7c78e4f7SPankaj Gupta| Normal Boot |  bl2_<boot_mode>.pbl     | fip.bin | ddr_fip.bin       |
224*7c78e4f7SPankaj Gupta+-------------+--------------------------+---------+-------------------+
225*7c78e4f7SPankaj Gupta| TBBR Boot   |  bl2_<boot_mode>_sec.pbl | fip.bin | ddr_fip_sec.bin   |
226*7c78e4f7SPankaj Gupta+-------------+--------------------------+---------+-------------------+
227*7c78e4f7SPankaj Gupta
228*7c78e4f7SPankaj GuptaRefer `nxp-ls-tbbr.rst`_ for detailed user steps.
229*7c78e4f7SPankaj Gupta
230*7c78e4f7SPankaj Gupta
231*7c78e4f7SPankaj Gupta.. _lx2160ardb: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/layerscape-communication-process/layerscape-lx2160a-multicore-communications-processor:LX2160A
232*7c78e4f7SPankaj Gupta.. _nxp-ls-tbbr.rst: ./nxp-ls-tbbr.rst
233