xref: /rk3399_ARM-atf/docs/plat/nxp/nxp-layerscape.rst (revision 52a1e9ff37251987b71b743951038cd8d1fa0ba4)
17c78e4f7SPankaj GuptaNXP SoCs - Overview
27c78e4f7SPankaj Gupta=====================
37c78e4f7SPankaj Gupta.. section-numbering::
47c78e4f7SPankaj Gupta    :suffix: .
57c78e4f7SPankaj Gupta
67c78e4f7SPankaj GuptaThe QorIQ family of ARM based SoCs that are supported on TF-A are:
77c78e4f7SPankaj Gupta
8*52a1e9ffSJiafei Pan1. LX2160A
97c78e4f7SPankaj Gupta
10*52a1e9ffSJiafei Pan- SoC Overview:
117c78e4f7SPankaj Gupta
12*52a1e9ffSJiafei PanThe LX2160A multicore processor, the highest-performance member of the
13*52a1e9ffSJiafei PanLayerscape family, combines FinFET process technology's low power and
14*52a1e9ffSJiafei Pansixteen Arm® Cortex®-A72 cores with datapath acceleration optimized for
15*52a1e9ffSJiafei PanL2/3 packet processing, together with security offload, robust traffic
16*52a1e9ffSJiafei Panmanagement and quality of service.
17*52a1e9ffSJiafei Pan
18*52a1e9ffSJiafei PanDetails about LX2160A can be found at `lx2160a`_.
19*52a1e9ffSJiafei Pan
20*52a1e9ffSJiafei Pan- LX2160ARDB Board:
21*52a1e9ffSJiafei Pan
22*52a1e9ffSJiafei PanThe LX2160A reference design board provides a comprehensive platform
23*52a1e9ffSJiafei Panthat enables design and evaluation of the LX2160A or LX2162A processors. It
24*52a1e9ffSJiafei Pancomes preloaded with a board support package (BSP) based on a standard Linux
25*52a1e9ffSJiafei Pankernel.
26*52a1e9ffSJiafei Pan
27*52a1e9ffSJiafei PanBoard details can be fetched from the link: `lx2160ardb`_.
28*52a1e9ffSJiafei Pan
29*52a1e9ffSJiafei Pan2. LS1028A
30*52a1e9ffSJiafei Pan
31*52a1e9ffSJiafei Pan- SoC Overview:
32*52a1e9ffSJiafei Pan
33*52a1e9ffSJiafei PanThe Layerscape LS1028A applications processor for industrial and
34*52a1e9ffSJiafei Panautomotive includes a time-sensitive networking (TSN) -enabled Ethernet
35*52a1e9ffSJiafei Panswitch and Ethernet controllers to support converged IT and OT networks.
36*52a1e9ffSJiafei PanTwo powerful 64-bit Arm®v8 cores support real-time processing for
37*52a1e9ffSJiafei Panindustrial control and virtual machines for edge computing in the IoT.
38*52a1e9ffSJiafei PanThe integrated GPU and LCD controller enable Human-Machine Interface
39*52a1e9ffSJiafei Pan(HMI) systems with next-generation interfaces.
40*52a1e9ffSJiafei Pan
41*52a1e9ffSJiafei PanDetails about LS1028A can be found at `ls1028a`_.
42*52a1e9ffSJiafei Pan
43*52a1e9ffSJiafei Pan- LS1028ARDB Boards:
44*52a1e9ffSJiafei Pan
45*52a1e9ffSJiafei PanThe LS1028A reference design board (RDB) is a computing, evaluation,
46*52a1e9ffSJiafei Panand development platform that supports industrial IoT applications, human
47*52a1e9ffSJiafei Panmachine interface solutions, and industrial networking.
48*52a1e9ffSJiafei Pan
49*52a1e9ffSJiafei PanDetails about LS1028A RDB board can be found at `ls1028ardb`_.
507c78e4f7SPankaj Gupta
517c78e4f7SPankaj GuptaTable of supported boot-modes by each platform & platform that needs FIP-DDR:
527c78e4f7SPankaj Gupta-----------------------------------------------------------------------------
537c78e4f7SPankaj Gupta
54*52a1e9ffSJiafei Pan+---------------------+---------------------------------------------------------------------+-----------------+
55*52a1e9ffSJiafei Pan|                     |                            BOOT_MODE                                |                 |
56*52a1e9ffSJiafei Pan|       PLAT          +-------+--------+-------+-------+-------+-------------+--------------+ fip_ddr_needed  |
57*52a1e9ffSJiafei Pan|                     |  sd   |  qspi  |  nor  | nand  | emmc  | flexspi_nor | flexspi_nand |                 |
58*52a1e9ffSJiafei Pan+=====================+=======+========+=======+=======+=======+=============+==============+=================+
59*52a1e9ffSJiafei Pan|     lx2160ardb      |  yes  |        |       |       |  yes  |   yes       |              |       yes       |
60*52a1e9ffSJiafei Pan+---------------------+-------+--------+-------+-------+-------+-------------+--------------+-----------------+
61*52a1e9ffSJiafei Pan|     ls1028ardb      |  yes  |        |       |       |  yes  |   yes       |              |       no        |
62*52a1e9ffSJiafei Pan+---------------------+-------+--------+-------+-------+-------+-------------+--------------+-----------------+
63*52a1e9ffSJiafei Pan
647c78e4f7SPankaj Gupta
657c78e4f7SPankaj GuptaBoot Sequence
667c78e4f7SPankaj Gupta-------------
677c78e4f7SPankaj Gupta::
687c78e4f7SPankaj Gupta
697c78e4f7SPankaj Gupta+                           Secure World        |     Normal World
707c78e4f7SPankaj Gupta+ EL0                                           |
717c78e4f7SPankaj Gupta+                                               |
727c78e4f7SPankaj Gupta+ EL1                           BL32(Tee OS)    |     kernel
737c78e4f7SPankaj Gupta+                                ^ |            |       ^
747c78e4f7SPankaj Gupta+                                | |            |       |
757c78e4f7SPankaj Gupta+ EL2                            | |            |     BL33(u-boot)
767c78e4f7SPankaj Gupta+                                | |            |      ^
777c78e4f7SPankaj Gupta+                                | v            |     /
787c78e4f7SPankaj Gupta+ EL3        BootROM --> BL2 --> BL31 ---------------/
797c78e4f7SPankaj Gupta+
807c78e4f7SPankaj Gupta
817c78e4f7SPankaj GuptaBoot Sequence with FIP-DDR
827c78e4f7SPankaj Gupta--------------------------
837c78e4f7SPankaj Gupta::
847c78e4f7SPankaj Gupta
857c78e4f7SPankaj Gupta+                           Secure World        |     Normal World
867c78e4f7SPankaj Gupta+ EL0                                           |
877c78e4f7SPankaj Gupta+                                               |
887c78e4f7SPankaj Gupta+ EL1               fip-ddr     BL32(Tee OS)    |     kernel
897c78e4f7SPankaj Gupta+                     ^ |         ^ |           |       ^
907c78e4f7SPankaj Gupta+                     | |         | |           |       |
917c78e4f7SPankaj Gupta+ EL2                 | |         | |           |     BL33(u-boot)
927c78e4f7SPankaj Gupta+                     | |         | |           |      ^
937c78e4f7SPankaj Gupta+                     | v         | v           |     /
947c78e4f7SPankaj Gupta+ EL3     BootROM --> BL2 -----> BL31 ---------------/
957c78e4f7SPankaj Gupta+
967c78e4f7SPankaj Gupta
97*52a1e9ffSJiafei PanDDR Memory Layout
98*52a1e9ffSJiafei Pan--------------------------
99*52a1e9ffSJiafei Pan
100*52a1e9ffSJiafei PanNXP Platforms divide DRAM into banks:
101*52a1e9ffSJiafei Pan
102*52a1e9ffSJiafei Pan- DRAM0 Bank:  Maximum size of this bank is fixed to 2GB, DRAM0 size is defined in platform_def.h if it is less than 2GB.
103*52a1e9ffSJiafei Pan
104*52a1e9ffSJiafei Pan- DRAM1 ~ DRAMn Bank:  Greater than 2GB belongs to DRAM1 and following banks, and size of DRAMn Bank varies for one platform to others.
105*52a1e9ffSJiafei Pan
106*52a1e9ffSJiafei PanThe following diagram is default DRAM0 memory layout in which secure memory is at top of DRAM0.
107*52a1e9ffSJiafei Pan
108*52a1e9ffSJiafei Pan::
109*52a1e9ffSJiafei Pan
110*52a1e9ffSJiafei Pan  high  +---------------------------------------------+
111*52a1e9ffSJiafei Pan        |                                             |
112*52a1e9ffSJiafei Pan        |   Secure EL1 Payload Shared Memory (2 MB)   |
113*52a1e9ffSJiafei Pan        |                                             |
114*52a1e9ffSJiafei Pan        +---------------------------------------------+
115*52a1e9ffSJiafei Pan        |                                             |
116*52a1e9ffSJiafei Pan        |            Secure Memory (64 MB)            |
117*52a1e9ffSJiafei Pan        |                                             |
118*52a1e9ffSJiafei Pan        +---------------------------------------------+
119*52a1e9ffSJiafei Pan        |                                             |
120*52a1e9ffSJiafei Pan        |             Non Secure Memory               |
121*52a1e9ffSJiafei Pan        |                                             |
122*52a1e9ffSJiafei Pan  low   +---------------------------------------------+
1237c78e4f7SPankaj Gupta
1247c78e4f7SPankaj GuptaHow to build
1257c78e4f7SPankaj Gupta=============
1267c78e4f7SPankaj Gupta
1277c78e4f7SPankaj GuptaCode Locations
1287c78e4f7SPankaj Gupta--------------
1297c78e4f7SPankaj Gupta
1307c78e4f7SPankaj Gupta-  OP-TEE:
1317c78e4f7SPankaj Gupta   `link <https://source.codeaurora.org/external/qoriq/qoriq-components/optee_os>`__
1327c78e4f7SPankaj Gupta
1337c78e4f7SPankaj Gupta-  U-Boot:
1347c78e4f7SPankaj Gupta   `link <https://source.codeaurora.org/external/qoriq/qoriq-components/u-boot>`__
1357c78e4f7SPankaj Gupta
1367c78e4f7SPankaj Gupta-  RCW:
1377c78e4f7SPankaj Gupta   `link <https://source.codeaurora.org/external/qoriq/qoriq-components/rcw>`__
1387c78e4f7SPankaj Gupta
1397c78e4f7SPankaj Gupta-  ddr-phy-binary: Required by platforms that need fip-ddr.
1407c78e4f7SPankaj Gupta   `link <https:://github.com/NXP/ddr-phy-binary>`__
1417c78e4f7SPankaj Gupta
1427c78e4f7SPankaj Gupta-  cst: Required for TBBR.
1437c78e4f7SPankaj Gupta   `link <https:://source.codeaurora.org/external/qoriq/qoriq-components/cst>`__
1447c78e4f7SPankaj Gupta
1457c78e4f7SPankaj GuptaBuild Procedure
1467c78e4f7SPankaj Gupta---------------
1477c78e4f7SPankaj Gupta
1487c78e4f7SPankaj Gupta-  Fetch all the above repositories into local host.
1497c78e4f7SPankaj Gupta
1507c78e4f7SPankaj Gupta-  Prepare AARCH64 toolchain and set the environment variable "CROSS_COMPILE".
1517c78e4f7SPankaj Gupta
1527c78e4f7SPankaj Gupta   .. code:: shell
1537c78e4f7SPankaj Gupta
1547c78e4f7SPankaj Gupta       export CROSS_COMPILE=.../bin/aarch64-linux-gnu-
1557c78e4f7SPankaj Gupta
1567c78e4f7SPankaj Gupta-  Build RCW. Refer README from the respective cloned folder for more details.
1577c78e4f7SPankaj Gupta
1587c78e4f7SPankaj Gupta-  Build u-boot and OPTee firstly, and get binary images: u-boot.bin and tee.bin.
1597c78e4f7SPankaj Gupta   For u-boot you can use the <platform>_tfa_defconfig for build.
1607c78e4f7SPankaj Gupta
1617c78e4f7SPankaj Gupta-  Copy/clone the repo "ddr-phy-binary" to the tfa directory for platform needing ddr-fip.
1627c78e4f7SPankaj Gupta
1637c78e4f7SPankaj Gupta-  Below are the steps to build TF-A images for the supported platforms.
1647c78e4f7SPankaj Gupta
1657c78e4f7SPankaj GuptaCompilation steps without BL32
1667c78e4f7SPankaj Gupta~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1677c78e4f7SPankaj Gupta
1687c78e4f7SPankaj GuptaBUILD BL2:
1697c78e4f7SPankaj Gupta
1707c78e4f7SPankaj Gupta-To compile
1717c78e4f7SPankaj Gupta   .. code:: shell
1727c78e4f7SPankaj Gupta
1737c78e4f7SPankaj Gupta       make PLAT=$PLAT \
1747c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
1757c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
1767c78e4f7SPankaj Gupta       pbl
1777c78e4f7SPankaj Gupta
1787c78e4f7SPankaj GuptaBUILD FIP:
1797c78e4f7SPankaj Gupta
1807c78e4f7SPankaj Gupta   .. code:: shell
1817c78e4f7SPankaj Gupta
1827c78e4f7SPankaj Gupta       make PLAT=$PLAT \
1837c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
1847c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
1857c78e4f7SPankaj Gupta       BL33=$UBOOT_SECURE_BIN \
1867c78e4f7SPankaj Gupta       pbl \
1877c78e4f7SPankaj Gupta       fip
1887c78e4f7SPankaj Gupta
1897c78e4f7SPankaj GuptaCompilation steps with BL32
1907c78e4f7SPankaj Gupta~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1917c78e4f7SPankaj Gupta
1927c78e4f7SPankaj GuptaBUILD BL2:
1937c78e4f7SPankaj Gupta
1947c78e4f7SPankaj Gupta-To compile
1957c78e4f7SPankaj Gupta   .. code:: shell
1967c78e4f7SPankaj Gupta
1977c78e4f7SPankaj Gupta       make PLAT=$PLAT \
1987c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
1997c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
2007c78e4f7SPankaj Gupta       BL32=$TEE_BIN SPD=opteed\
2017c78e4f7SPankaj Gupta       pbl
2027c78e4f7SPankaj Gupta
2037c78e4f7SPankaj GuptaBUILD FIP:
2047c78e4f7SPankaj Gupta
2057c78e4f7SPankaj Gupta   .. code:: shell
2067c78e4f7SPankaj Gupta
2077c78e4f7SPankaj Gupta       make PLAT=$PLAT \
2087c78e4f7SPankaj Gupta       BOOT_MODE=<platform_supported_boot_mode> \
2097c78e4f7SPankaj Gupta       RCW=$RCW_BIN \
2107c78e4f7SPankaj Gupta       BL32=$TEE_BIN SPD=opteed\
2117c78e4f7SPankaj Gupta       BL33=$UBOOT_SECURE_BIN \
2127c78e4f7SPankaj Gupta       pbl \
2137c78e4f7SPankaj Gupta       fip
2147c78e4f7SPankaj Gupta
2157c78e4f7SPankaj Gupta
2167c78e4f7SPankaj GuptaBUILD fip-ddr (Mandatory for certain platforms, refer table above):
2177c78e4f7SPankaj Gupta~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2187c78e4f7SPankaj Gupta
2197c78e4f7SPankaj Gupta-To compile additional fip-ddr for selected platforms(Refer above table if the platform needs fip-ddr).
2207c78e4f7SPankaj Gupta   .. code:: shell
2217c78e4f7SPankaj Gupta
2227c78e4f7SPankaj Gupta	make PLAT=<platform_name> fip-ddr
2237c78e4f7SPankaj Gupta
2247c78e4f7SPankaj Gupta
2257c78e4f7SPankaj GuptaDeploy ATF Images
2267c78e4f7SPankaj Gupta=================
2277c78e4f7SPankaj Gupta
2287c78e4f7SPankaj GuptaNote: The size in the standard uboot commands for copy to nor, qspi, nand or sd
2297c78e4f7SPankaj Guptashould be modified based on the binary size of the image to be copied.
2307c78e4f7SPankaj Gupta
2317c78e4f7SPankaj Gupta-  Deploy ATF images on flexspi-Nor flash Alt Bank from U-Boot prompt.
2327c78e4f7SPankaj Gupta   --  Commands to flash images for bl2_xxx.pbl and fip.bin.
2337c78e4f7SPankaj Gupta
2347c78e4f7SPankaj Gupta   .. code:: shell
2357c78e4f7SPankaj Gupta
2367c78e4f7SPankaj Gupta        tftp 82000000  $path/bl2_flexspi_nor.pbl;
2377c78e4f7SPankaj Gupta        i2c mw 66 50 20;sf probe 0:0; sf erase 0 +$filesize; sf write 0x82000000 0x0 $filesize;
2387c78e4f7SPankaj Gupta
2397c78e4f7SPankaj Gupta        tftp 82000000  $path/fip.bin;
2407c78e4f7SPankaj Gupta        i2c mw 66 50 20;sf probe 0:0; sf erase 0x100000 +$filesize; sf write 0x82000000 0x100000 $filesize;
2417c78e4f7SPankaj Gupta
2427c78e4f7SPankaj Gupta   --  Next step is valid for platform where FIP-DDR is needed.
2437c78e4f7SPankaj Gupta
2447c78e4f7SPankaj Gupta   .. code:: shell
2457c78e4f7SPankaj Gupta
2467c78e4f7SPankaj Gupta        tftp 82000000  $path/ddr_fip.bin;
2477c78e4f7SPankaj Gupta        i2c mw 66 50 20;sf probe 0:0; sf erase 0x800000 +$filesize; sf write 0x82000000 0x800000 $filesize;
2487c78e4f7SPankaj Gupta
2497c78e4f7SPankaj Gupta   --  Then reset to alternate bank to boot up ATF.
2507c78e4f7SPankaj Gupta
2517c78e4f7SPankaj Gupta   .. code:: shell
2527c78e4f7SPankaj Gupta
2537c78e4f7SPankaj Gupta        qixisreset altbank;
2547c78e4f7SPankaj Gupta
2557c78e4f7SPankaj Gupta-  Deploy ATF images on SD/eMMC from U-Boot prompt.
2567c78e4f7SPankaj Gupta   -- file_size_in_block_sizeof_512 = (Size_of_bytes_tftp / 512)
2577c78e4f7SPankaj Gupta
2587c78e4f7SPankaj Gupta   .. code:: shell
2597c78e4f7SPankaj Gupta
2607c78e4f7SPankaj Gupta        mmc dev <idx>; (idx = 1 for eMMC; idx = 0 for SD)
2617c78e4f7SPankaj Gupta
2627c78e4f7SPankaj Gupta        tftp 82000000  $path/bl2_<sd>_or_<emmc>.pbl;
2637c78e4f7SPankaj Gupta        mmc write 82000000 8 <file_size_in_block_sizeof_512>;
2647c78e4f7SPankaj Gupta
2657c78e4f7SPankaj Gupta        tftp 82000000  $path/fip.bin;
2667c78e4f7SPankaj Gupta        mmc write 82000000 0x800 <file_size_in_block_sizeof_512>;
2677c78e4f7SPankaj Gupta
2687c78e4f7SPankaj Gupta    --  Next step is valid for platform that needs FIP-DDR.
2697c78e4f7SPankaj Gupta
2707c78e4f7SPankaj Gupta   .. code:: shell
2717c78e4f7SPankaj Gupta
2727c78e4f7SPankaj Gupta        tftp 82000000  $path/ddr_fip.bin;
2737c78e4f7SPankaj Gupta        mmc write 82000000 0x4000 <file_size_in_block_sizeof_512>;
2747c78e4f7SPankaj Gupta
2757c78e4f7SPankaj Gupta   --  Then reset to sd/emmc to boot up ATF from sd/emmc as boot-source.
2767c78e4f7SPankaj Gupta
2777c78e4f7SPankaj Gupta   .. code:: shell
2787c78e4f7SPankaj Gupta
2797c78e4f7SPankaj Gupta        qixisreset <sd or emmc>;
2807c78e4f7SPankaj Gupta
2817c78e4f7SPankaj GuptaTrusted Board Boot:
2827c78e4f7SPankaj Gupta===================
2837c78e4f7SPankaj Gupta
2847c78e4f7SPankaj GuptaFor TBBR, the binary name changes:
2857c78e4f7SPankaj Gupta
2867c78e4f7SPankaj Gupta+-------------+--------------------------+---------+-------------------+
2877c78e4f7SPankaj Gupta|  Boot Type  |           BL2            |   FIP   |      FIP-DDR      |
2887c78e4f7SPankaj Gupta+=============+==========================+=========+===================+
2897c78e4f7SPankaj Gupta| Normal Boot |  bl2_<boot_mode>.pbl     | fip.bin | ddr_fip.bin       |
2907c78e4f7SPankaj Gupta+-------------+--------------------------+---------+-------------------+
2917c78e4f7SPankaj Gupta| TBBR Boot   |  bl2_<boot_mode>_sec.pbl | fip.bin | ddr_fip_sec.bin   |
2927c78e4f7SPankaj Gupta+-------------+--------------------------+---------+-------------------+
2937c78e4f7SPankaj Gupta
2947c78e4f7SPankaj GuptaRefer `nxp-ls-tbbr.rst`_ for detailed user steps.
2957c78e4f7SPankaj Gupta
2967c78e4f7SPankaj Gupta
297*52a1e9ffSJiafei Pan.. _lx2160a: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/layerscape-processors/layerscape-lx2160a-lx2120a-lx2080a-processors:LX2160A
2987c78e4f7SPankaj Gupta.. _lx2160ardb: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/layerscape-communication-process/layerscape-lx2160a-multicore-communications-processor:LX2160A
299*52a1e9ffSJiafei Pan.. _ls1028a: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/layerscape-processors/layerscape-1028a-applications-processor:LS1028A
300*52a1e9ffSJiafei Pan.. _ls1028ardb: https://www.nxp.com/design/qoriq-developer-resources/layerscape-ls1028a-reference-design-board:LS1028ARDB
3017c78e4f7SPankaj Gupta.. _nxp-ls-tbbr.rst: ./nxp-ls-tbbr.rst
302