12f11d548SHadi AsyrafiIntel Agilex SoCFPGA 22f11d548SHadi Asyrafi======================== 32f11d548SHadi Asyrafi 42f11d548SHadi AsyrafiAgilex SoCFPGA is a FPGA with integrated quad-core 64-bit Arm Cortex A53 processor. 52f11d548SHadi Asyrafi 62f11d548SHadi AsyrafiUpon boot, Boot ROM loads bl2 into OCRAM. Bl2 subsequently initializes 72f11d548SHadi Asyrafithe hardware, then loads bl31 and bl33 (UEFI) into DDR and boots to bl33. 82f11d548SHadi Asyrafi 92f11d548SHadi Asyrafi:: 102f11d548SHadi Asyrafi 112f11d548SHadi Asyrafi Boot ROM --> Trusted Firmware-A --> UEFI 122f11d548SHadi Asyrafi 132f11d548SHadi AsyrafiHow to build 142f11d548SHadi Asyrafi------------ 152f11d548SHadi Asyrafi 162f11d548SHadi AsyrafiCode Locations 172f11d548SHadi Asyrafi~~~~~~~~~~~~~~ 182f11d548SHadi Asyrafi 192f11d548SHadi Asyrafi- Trusted Firmware-A: 202f11d548SHadi Asyrafi `link <https://github.com/ARM-software/arm-trusted-firmware>`__ 212f11d548SHadi Asyrafi 222f11d548SHadi Asyrafi- UEFI (to be updated with new upstreamed UEFI): 232f11d548SHadi Asyrafi `link <https://github.com/altera-opensource/uefi-socfpga>`__ 242f11d548SHadi Asyrafi 252f11d548SHadi AsyrafiBuild Procedure 262f11d548SHadi Asyrafi~~~~~~~~~~~~~~~ 272f11d548SHadi Asyrafi 282f11d548SHadi Asyrafi- Fetch all the above 2 repositories into local host. 292f11d548SHadi Asyrafi Make all the repositories in the same ${BUILD\_PATH}. 302f11d548SHadi Asyrafi 312f11d548SHadi Asyrafi- Prepare the AARCH64 toolchain. 322f11d548SHadi Asyrafi 332f11d548SHadi Asyrafi- Build UEFI using Agilex platform as configuration 342f11d548SHadi Asyrafi This will be updated to use an updated UEFI using the latest EDK2 source 352f11d548SHadi Asyrafi 362f11d548SHadi Asyrafi.. code:: bash 372f11d548SHadi Asyrafi 382f11d548SHadi Asyrafi make CROSS_COMPILE=aarch64-linux-gnu- device=agx 392f11d548SHadi Asyrafi 402f11d548SHadi Asyrafi- Build atf providing the previously generated UEFI as the BL33 image 412f11d548SHadi Asyrafi 422f11d548SHadi Asyrafi.. code:: bash 432f11d548SHadi Asyrafi 44*650a435cSMark Dykes make CROSS_COMPILE=aarch64-linux-gnu- bl2 fip PLAT=agilex 452f11d548SHadi Asyrafi BL33=PEI.ROM 462f11d548SHadi Asyrafi 472f11d548SHadi AsyrafiInstall Procedure 482f11d548SHadi Asyrafi~~~~~~~~~~~~~~~~~ 492f11d548SHadi Asyrafi 502f11d548SHadi Asyrafi- dd fip.bin to a A2 partition on the MMC drive to be booted in Agilex 512f11d548SHadi Asyrafi board. 522f11d548SHadi Asyrafi 532f11d548SHadi Asyrafi- Generate a SOF containing bl2 542f11d548SHadi Asyrafi 552f11d548SHadi Asyrafi.. code:: bash 562f11d548SHadi Asyrafi 572f11d548SHadi Asyrafi aarch64-linux-gnu-objcopy -I binary -O ihex --change-addresses 0xffe00000 bl2.bin bl2.hex 582f11d548SHadi Asyrafi quartus_cpf --bootloader bl2.hex <quartus_generated_sof> <output_sof_with_bl2> 592f11d548SHadi Asyrafi 602f11d548SHadi Asyrafi- Configure SOF to board 612f11d548SHadi Asyrafi 622f11d548SHadi Asyrafi.. code:: bash 632f11d548SHadi Asyrafi 642f11d548SHadi Asyrafi nios2-configure-sof <output_sof_with_bl2> 652f11d548SHadi Asyrafi 662f11d548SHadi AsyrafiBoot trace 672f11d548SHadi Asyrafi---------- 682f11d548SHadi Asyrafi 692f11d548SHadi Asyrafi:: 70f1e0f152SPaul Beesley 712f11d548SHadi Asyrafi INFO: DDR: DRAM calibration success. 722f11d548SHadi Asyrafi INFO: ECC is disabled. 732f11d548SHadi Asyrafi NOTICE: BL2: v2.1(debug) 742f11d548SHadi Asyrafi NOTICE: BL2: Built 752f11d548SHadi Asyrafi INFO: BL2: Doing platform setup 762f11d548SHadi Asyrafi NOTICE: BL2: Booting BL31 772f11d548SHadi Asyrafi INFO: Entry point address = 0xffe1c000 782f11d548SHadi Asyrafi INFO: SPSR = 0x3cd 792f11d548SHadi Asyrafi NOTICE: BL31: v2.1(debug) 802f11d548SHadi Asyrafi NOTICE: BL31: Built 812f11d548SHadi Asyrafi INFO: ARM GICv2 driver initialized 822f11d548SHadi Asyrafi INFO: BL31: Initializing runtime services 832f11d548SHadi Asyrafi WARNING: BL31: cortex_a53 842f11d548SHadi Asyrafi INFO: BL31: Preparing for EL3 exit to normal world 852f11d548SHadi Asyrafi INFO: Entry point address = 0x50000 862f11d548SHadi Asyrafi INFO: SPSR = 0x3c9 87