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