1*91f16700SchasingluluXilinx Versal 2*91f16700Schasinglulu============= 3*91f16700Schasinglulu 4*91f16700SchasingluluTrusted Firmware-A implements the EL3 firmware layer for Xilinx Versal. 5*91f16700SchasingluluThe platform only uses the runtime part of TF-A as Xilinx Versal already has a 6*91f16700SchasingluluBootROM (BL1) and PMC FW (BL2). 7*91f16700Schasinglulu 8*91f16700SchasingluluBL31 is TF-A. 9*91f16700SchasingluluBL32 is an optional Secure Payload. 10*91f16700SchasingluluBL33 is the non-secure world software (U-Boot, Linux etc). 11*91f16700Schasinglulu 12*91f16700SchasingluluTo build: 13*91f16700Schasinglulu```bash 14*91f16700Schasinglulumake RESET_TO_BL31=1 CROSS_COMPILE=aarch64-none-elf- PLAT=versal bl31 15*91f16700Schasinglulu``` 16*91f16700Schasinglulu 17*91f16700SchasingluluTo build ATF for different platform (supported are "silicon"(default) and "versal_virt") 18*91f16700Schasinglulu```bash 19*91f16700Schasinglulumake RESET_TO_BL31=1 CROSS_COMPILE=aarch64-none-elf- PLAT=versal VERSAL_PLATFORM=versal_virt bl31 20*91f16700Schasinglulu``` 21*91f16700Schasinglulu 22*91f16700SchasingluluTo build bl32 TSP you have to rebuild bl31 too 23*91f16700Schasinglulu```bash 24*91f16700Schasinglulumake CROSS_COMPILE=aarch64-none-elf- PLAT=versal SPD=tspd RESET_TO_BL31=1 bl31 bl32 25*91f16700Schasinglulu``` 26*91f16700Schasinglulu 27*91f16700SchasingluluTo build TF-A for JTAG DCC console 28*91f16700Schasinglulu```bash 29*91f16700Schasinglulumake RESET_TO_BL31=1 CROSS_COMPILE=aarch64-none-elf- PLAT=versal bl31 VERSAL_CONSOLE=dcc 30*91f16700Schasinglulu``` 31*91f16700Schasinglulu 32*91f16700SchasingluluTo build TF-A with Straight-Line Speculation(SLS) 33*91f16700Schasinglulu```bash 34*91f16700Schasinglulumake RESET_TO_BL31=1 CROSS_COMPILE=aarch64-none-elf- PLAT=versal bl31 HARDEN_SLS_ALL=1 35*91f16700Schasinglulu``` 36*91f16700Schasinglulu 37*91f16700SchasingluluXilinx Versal platform specific build options 38*91f16700Schasinglulu--------------------------------------------- 39*91f16700Schasinglulu 40*91f16700Schasinglulu* `VERSAL_ATF_MEM_BASE`: Specifies the base address of the bl31 binary. 41*91f16700Schasinglulu* `VERSAL_ATF_MEM_SIZE`: Specifies the size of the memory region of the bl31 binary. 42*91f16700Schasinglulu* `VERSAL_BL32_MEM_BASE`: Specifies the base address of the bl32 binary. 43*91f16700Schasinglulu* `VERSAL_BL32_MEM_SIZE`: Specifies the size of the memory region of the bl32 binary. 44*91f16700Schasinglulu 45*91f16700Schasinglulu* `VERSAL_CONSOLE`: Select the console driver. Options: 46*91f16700Schasinglulu - `pl011`, `pl011_0`: ARM pl011 UART 0 47*91f16700Schasinglulu - `pl011_1` : ARM pl011 UART 1 48*91f16700Schasinglulu 49*91f16700Schasinglulu* `VERSAL_PLATFORM`: Select the platform. Options: 50*91f16700Schasinglulu - `versal_virt` : Versal Virtual platform 51*91f16700Schasinglulu - `spp_itr6` : SPP ITR6 52*91f16700Schasinglulu - `emu_itr6` : EMU ITR6 53*91f16700Schasinglulu 54*91f16700Schasinglulu# PLM->TF-A Parameter Passing 55*91f16700Schasinglulu------------------------------ 56*91f16700SchasingluluThe PLM populates a data structure with image information for the TF-A. The TF-A 57*91f16700Schasingluluuses that data to hand off to the loaded images. The address of the handoff 58*91f16700Schasingluludata structure is passed in the ```PMC_GLOBAL_GLOB_GEN_STORAGE4``` register. 59*91f16700SchasingluluThe register is free to be used by other software once the TF-A is bringing up 60*91f16700Schasinglulufurther firmware images. 61