1*54fd6939SJiyong ParkIntel Agilex SoCFPGA 2*54fd6939SJiyong Park======================== 3*54fd6939SJiyong Park 4*54fd6939SJiyong ParkAgilex SoCFPGA is a FPGA with integrated quad-core 64-bit Arm Cortex A53 processor. 5*54fd6939SJiyong Park 6*54fd6939SJiyong ParkUpon boot, Boot ROM loads bl2 into OCRAM. Bl2 subsequently initializes 7*54fd6939SJiyong Parkthe hardware, then loads bl31 and bl33 (UEFI) into DDR and boots to bl33. 8*54fd6939SJiyong Park 9*54fd6939SJiyong Park:: 10*54fd6939SJiyong Park 11*54fd6939SJiyong Park Boot ROM --> Trusted Firmware-A --> UEFI 12*54fd6939SJiyong Park 13*54fd6939SJiyong ParkHow to build 14*54fd6939SJiyong Park------------ 15*54fd6939SJiyong Park 16*54fd6939SJiyong ParkCode Locations 17*54fd6939SJiyong Park~~~~~~~~~~~~~~ 18*54fd6939SJiyong Park 19*54fd6939SJiyong Park- Trusted Firmware-A: 20*54fd6939SJiyong Park `link <https://github.com/ARM-software/arm-trusted-firmware>`__ 21*54fd6939SJiyong Park 22*54fd6939SJiyong Park- UEFI (to be updated with new upstreamed UEFI): 23*54fd6939SJiyong Park `link <https://github.com/altera-opensource/uefi-socfpga>`__ 24*54fd6939SJiyong Park 25*54fd6939SJiyong ParkBuild Procedure 26*54fd6939SJiyong Park~~~~~~~~~~~~~~~ 27*54fd6939SJiyong Park 28*54fd6939SJiyong Park- Fetch all the above 2 repositories into local host. 29*54fd6939SJiyong Park Make all the repositories in the same ${BUILD\_PATH}. 30*54fd6939SJiyong Park 31*54fd6939SJiyong Park- Prepare the AARCH64 toolchain. 32*54fd6939SJiyong Park 33*54fd6939SJiyong Park- Build UEFI using Agilex platform as configuration 34*54fd6939SJiyong Park This will be updated to use an updated UEFI using the latest EDK2 source 35*54fd6939SJiyong Park 36*54fd6939SJiyong Park.. code:: bash 37*54fd6939SJiyong Park 38*54fd6939SJiyong Park make CROSS_COMPILE=aarch64-linux-gnu- device=agx 39*54fd6939SJiyong Park 40*54fd6939SJiyong Park- Build atf providing the previously generated UEFI as the BL33 image 41*54fd6939SJiyong Park 42*54fd6939SJiyong Park.. code:: bash 43*54fd6939SJiyong Park 44*54fd6939SJiyong Park make CROSS_COMPILE=aarch64-linux-gnu- bl2 fip PLAT=agilex 45*54fd6939SJiyong Park BL33=PEI.ROM 46*54fd6939SJiyong Park 47*54fd6939SJiyong ParkInstall Procedure 48*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~ 49*54fd6939SJiyong Park 50*54fd6939SJiyong Park- dd fip.bin to a A2 partition on the MMC drive to be booted in Agilex 51*54fd6939SJiyong Park board. 52*54fd6939SJiyong Park 53*54fd6939SJiyong Park- Generate a SOF containing bl2 54*54fd6939SJiyong Park 55*54fd6939SJiyong Park.. code:: bash 56*54fd6939SJiyong Park 57*54fd6939SJiyong Park aarch64-linux-gnu-objcopy -I binary -O ihex --change-addresses 0xffe00000 bl2.bin bl2.hex 58*54fd6939SJiyong Park quartus_cpf --bootloader bl2.hex <quartus_generated_sof> <output_sof_with_bl2> 59*54fd6939SJiyong Park 60*54fd6939SJiyong Park- Configure SOF to board 61*54fd6939SJiyong Park 62*54fd6939SJiyong Park.. code:: bash 63*54fd6939SJiyong Park 64*54fd6939SJiyong Park nios2-configure-sof <output_sof_with_bl2> 65*54fd6939SJiyong Park 66*54fd6939SJiyong ParkBoot trace 67*54fd6939SJiyong Park---------- 68*54fd6939SJiyong Park 69*54fd6939SJiyong Park:: 70*54fd6939SJiyong Park 71*54fd6939SJiyong Park INFO: DDR: DRAM calibration success. 72*54fd6939SJiyong Park INFO: ECC is disabled. 73*54fd6939SJiyong Park NOTICE: BL2: v2.1(debug) 74*54fd6939SJiyong Park NOTICE: BL2: Built 75*54fd6939SJiyong Park INFO: BL2: Doing platform setup 76*54fd6939SJiyong Park NOTICE: BL2: Booting BL31 77*54fd6939SJiyong Park INFO: Entry point address = 0xffe1c000 78*54fd6939SJiyong Park INFO: SPSR = 0x3cd 79*54fd6939SJiyong Park NOTICE: BL31: v2.1(debug) 80*54fd6939SJiyong Park NOTICE: BL31: Built 81*54fd6939SJiyong Park INFO: ARM GICv2 driver initialized 82*54fd6939SJiyong Park INFO: BL31: Initializing runtime services 83*54fd6939SJiyong Park WARNING: BL31: cortex_a53 84*54fd6939SJiyong Park INFO: BL31: Preparing for EL3 exit to normal world 85*54fd6939SJiyong Park INFO: Entry point address = 0x50000 86*54fd6939SJiyong Park INFO: SPSR = 0x3c9 87