xref: /aosp_15_r20/external/arm-trusted-firmware/docs/plat/intel-stratix10.rst (revision 54fd6939e177f8ff529b10183254802c76df6d08)
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