1*54fd6939SJiyong ParkIntel Stratix 10 SoCFPGA 2*54fd6939SJiyong Park======================== 3*54fd6939SJiyong Park 4*54fd6939SJiyong ParkStratix 10 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 Stratix 10 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=s10 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=stratix10 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 Stratix 10 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 INFO: Init HPS NOC's DDR Scheduler. 74*54fd6939SJiyong Park NOTICE: BL2: v2.0(debug):v2.0-809-g7f8474a-dirty 75*54fd6939SJiyong Park NOTICE: BL2: Built : 17:38:19, Feb 18 2019 76*54fd6939SJiyong Park INFO: BL2: Doing platform setup 77*54fd6939SJiyong Park INFO: BL2: Loading image id 3 78*54fd6939SJiyong Park INFO: Loading image id=3 at address 0xffe1c000 79*54fd6939SJiyong Park INFO: Image id=3 loaded: 0xffe1c000 - 0xffe24034 80*54fd6939SJiyong Park INFO: BL2: Loading image id 5 81*54fd6939SJiyong Park INFO: Loading image id=5 at address 0x50000 82*54fd6939SJiyong Park INFO: Image id=5 loaded: 0x50000 - 0x550000 83*54fd6939SJiyong Park NOTICE: BL2: Booting BL31 84*54fd6939SJiyong Park INFO: Entry point address = 0xffe1c000 85*54fd6939SJiyong Park INFO: SPSR = 0x3cd 86*54fd6939SJiyong Park NOTICE: BL31: v2.0(debug):v2.0-810-g788c436-dirty 87*54fd6939SJiyong Park NOTICE: BL31: Built : 15:17:16, Feb 20 2019 88*54fd6939SJiyong Park INFO: ARM GICv2 driver initialized 89*54fd6939SJiyong Park INFO: BL31: Initializing runtime services 90*54fd6939SJiyong Park WARNING: BL31: cortex_a53: CPU workaround for 855873 was missing! 91*54fd6939SJiyong Park INFO: BL31: Preparing for EL3 exit to normal world 92*54fd6939SJiyong Park INFO: Entry point address = 0x50000 93*54fd6939SJiyong Park INFO: SPSR = 0x3c9 94*54fd6939SJiyong Park UEFI firmware (version 1.0 built at 11:26:18 on Nov 7 2018) 95