1NXP i.MX 8M Series 2================== 3 4The i.MX 8M family of applications processors based on Arm Corte-A53 and Cortex-M4 5cores provide high-performance computing, power efficiency, enhanced system 6reliability and embedded security needed to drive the growth of fast-growing 7edge node computing, streaming multimedia, and machine learning applications. 8 9imx8mq is dropped in TF-A CI build due to the small OCRAM size, but still actively 10maintained in NXP official release. 11 12Boot Sequence 13------------- 14 15Bootrom --> SPL --> BL31 --> BL33(u-boot) --> Linux kernel 16 17How to build 18------------ 19 20Build Procedure 21~~~~~~~~~~~~~~~ 22 23- Prepare AARCH64 toolchain. 24 25- Build spl and u-boot firstly, and get binary images: u-boot-spl.bin, 26 u-boot-nodtb.bin and dtb for the target board. 27 28- Build TF-A 29 30 Build bl31: 31 32 .. code:: shell 33 34 CROSS_COMPILE=aarch64-linux-gnu- make PLAT=<Target_SoC> bl31 35 36 Target_SoC should be "imx8mq" for i.MX8MQ SoC. 37 Target_SoC should be "imx8mm" for i.MX8MM SoC. 38 Target_SoC should be "imx8mn" for i.MX8MN SoC. 39 Target_SoC should be "imx8mp" for i.MX8MP SoC. 40 41Deploy TF-A Images 42~~~~~~~~~~~~~~~~~~ 43 44TF-A binary(bl31.bin), u-boot-spl.bin u-boot-nodtb.bin and dtb are combined 45together to generate a binary file called flash.bin, the imx-mkimage tool is 46used to generate flash.bin, and flash.bin needs to be flashed into SD card 47with certain offset for BOOT ROM. the u-boot and imx-mkimage will be upstreamed 48soon, this doc will be updated once they are ready, and the link will be posted. 49 50TBBR Boot Sequence 51------------------ 52 53When setting NEED_BL2=1 on imx8mm. We support an alternative way of 54boot sequence to support TBBR. 55 56Bootrom --> SPL --> BL2 --> BL31 --> BL33(u-boot with UEFI) --> grub 57 58This helps us to fulfill the SystemReady EBBR standard. 59BL2 will be in the FIT image and SPL will verify it. 60All of the BL3x will be put in the FIP image. BL2 will verify them. 61In U-boot we turn on the UEFI secure boot features so it can verify 62grub. And we use grub to verify linux kernel. 63