xref: /aosp_15_r20/external/arm-trusted-firmware/docs/plat/synquacer.rst (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong ParkSocionext Synquacer
2*54fd6939SJiyong Park===================
3*54fd6939SJiyong Park
4*54fd6939SJiyong ParkSocionext's Synquacer SC2A11 is a multi-core processor with 24 cores of Arm
5*54fd6939SJiyong ParkCortex-A53. The Developerbox, of 96boards, is a platform that contains this
6*54fd6939SJiyong Parkprocessor. This port of the Trusted Firmware only supports this platform at
7*54fd6939SJiyong Parkthe moment.
8*54fd6939SJiyong Park
9*54fd6939SJiyong ParkMore information are listed in `link`_.
10*54fd6939SJiyong Park
11*54fd6939SJiyong ParkHow to build
12*54fd6939SJiyong Park------------
13*54fd6939SJiyong Park
14*54fd6939SJiyong ParkCode Locations
15*54fd6939SJiyong Park~~~~~~~~~~~~~~
16*54fd6939SJiyong Park
17*54fd6939SJiyong Park-  Trusted Firmware-A:
18*54fd6939SJiyong Park   `link <https://github.com/ARM-software/arm-trusted-firmware>`__
19*54fd6939SJiyong Park
20*54fd6939SJiyong Park-  edk2:
21*54fd6939SJiyong Park   `link <https://github.com/tianocore/edk2>`__
22*54fd6939SJiyong Park
23*54fd6939SJiyong Park-  edk2-platforms:
24*54fd6939SJiyong Park   `link <https://github.com/tianocore/edk2-platforms>`__
25*54fd6939SJiyong Park
26*54fd6939SJiyong Park-  edk2-non-osi:
27*54fd6939SJiyong Park   `link <https://github.com/tianocore/edk2-non-osi>`__
28*54fd6939SJiyong Park
29*54fd6939SJiyong ParkBoot Flow
30*54fd6939SJiyong Park~~~~~~~~~
31*54fd6939SJiyong Park
32*54fd6939SJiyong ParkSCP firmware --> TF-A BL31 --> UEFI(edk2)
33*54fd6939SJiyong Park
34*54fd6939SJiyong ParkBuild Procedure
35*54fd6939SJiyong Park~~~~~~~~~~~~~~~
36*54fd6939SJiyong Park
37*54fd6939SJiyong Park-  Firstly, in addition to the “normal” build tools you will also need a
38*54fd6939SJiyong Park   few specialist tools. On a Debian or Ubuntu operating system try:
39*54fd6939SJiyong Park
40*54fd6939SJiyong Park   .. code:: shell
41*54fd6939SJiyong Park
42*54fd6939SJiyong Park       sudo apt install acpica-tools device-tree-compiler uuid-dev
43*54fd6939SJiyong Park
44*54fd6939SJiyong Park-  Secondly, create a new working directory and store the absolute path to this
45*54fd6939SJiyong Park   directory in an environment variable, WORKSPACE. It does not matter where
46*54fd6939SJiyong Park   this directory is created but as an example:
47*54fd6939SJiyong Park
48*54fd6939SJiyong Park   .. code:: shell
49*54fd6939SJiyong Park
50*54fd6939SJiyong Park       export WORKSPACE=$HOME/build/developerbox-firmware
51*54fd6939SJiyong Park       mkdir -p $WORKSPACE
52*54fd6939SJiyong Park
53*54fd6939SJiyong Park-  Run the following commands to clone the source code:
54*54fd6939SJiyong Park
55*54fd6939SJiyong Park   .. code:: shell
56*54fd6939SJiyong Park
57*54fd6939SJiyong Park       cd $WORKSPACE
58*54fd6939SJiyong Park       git clone https://github.com/ARM-software/arm-trusted-firmware -b master
59*54fd6939SJiyong Park       git clone https://github.com/tianocore/edk2.git -b master
60*54fd6939SJiyong Park       git clone https://github.com/tianocore/edk2-platforms.git -b master
61*54fd6939SJiyong Park       git clone https://github.com/tianocore/edk2-non-osi.git -b master
62*54fd6939SJiyong Park
63*54fd6939SJiyong Park-  Build ATF:
64*54fd6939SJiyong Park
65*54fd6939SJiyong Park   .. code:: shell
66*54fd6939SJiyong Park
67*54fd6939SJiyong Park       cd $WORKSPACE/arm-trusted-firmware
68*54fd6939SJiyong Park       make -j`nproc` PLAT=synquacer PRELOADED_BL33_BASE=0x8200000 bl31 fiptool
69*54fd6939SJiyong Park       tools/fiptool/fiptool create \
70*54fd6939SJiyong Park             --tb-fw ./build/synquacer/release/bl31.bin \
71*54fd6939SJiyong Park             --soc-fw ./build/synquacer/release/bl31.bin \
72*54fd6939SJiyong Park             --scp-fw ./build/synquacer/release/bl31.bin \
73*54fd6939SJiyong Park             ../edk2-non-osi/Platform/Socionext/DeveloperBox/fip_all_arm_tf.bin
74*54fd6939SJiyong Park
75*54fd6939SJiyong Park-  Build EDK2:
76*54fd6939SJiyong Park
77*54fd6939SJiyong Park   .. code:: shell
78*54fd6939SJiyong Park
79*54fd6939SJiyong Park       cd $WORKSPACE
80*54fd6939SJiyong Park       export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms:$WORKSPACE/edk2-non-osi
81*54fd6939SJiyong Park       export ACTIVE_PLATFORM="Platform/Socionext/DeveloperBox/DeveloperBox.dsc"
82*54fd6939SJiyong Park       export GCC5_AARCH64_PREFIX=aarch64-linux-gnu-
83*54fd6939SJiyong Park       unset ARCH
84*54fd6939SJiyong Park
85*54fd6939SJiyong Park       . edk2/edksetup.sh
86*54fd6939SJiyong Park       make -C edk2/BaseTools
87*54fd6939SJiyong Park
88*54fd6939SJiyong Park       build -p $ACTIVE_PLATFORM -b RELEASE -a AARCH64 -t GCC5 -n `nproc` -D DO_X86EMU=TRUE
89*54fd6939SJiyong Park
90*54fd6939SJiyong Park-  The firmware image, which comprises the option ROM, ARM trusted firmware and
91*54fd6939SJiyong Park   EDK2 itself, can be found $WORKSPACE/../Build/DeveloperBox/RELEASE_GCC5/FV/.
92*54fd6939SJiyong Park   Use SYNQUACERFIRMWAREUPDATECAPSULEFMPPKCS7.Cap for UEFI capsule update and
93*54fd6939SJiyong Park   SPI_NOR_IMAGE.fd for the serial flasher.
94*54fd6939SJiyong Park
95*54fd6939SJiyong Park   Note #1: -t GCC5 can be loosely translated as “enable link-time-optimization”;
96*54fd6939SJiyong Park   any version of gcc >= 5 will support this feature and may be used to build EDK2.
97*54fd6939SJiyong Park
98*54fd6939SJiyong Park   Note #2: Replace -b RELEASE with -b DEBUG to build a debug.
99*54fd6939SJiyong Park
100*54fd6939SJiyong ParkInstall the System Firmware
101*54fd6939SJiyong Park~~~~~~~~~~~~~~~~~~~~~~~~~~~
102*54fd6939SJiyong Park
103*54fd6939SJiyong Park-  Providing your Developerbox is fully working and has on operating system
104*54fd6939SJiyong Park   installed then you can adopt your the newly compiled system firmware using
105*54fd6939SJiyong Park   the capsule update method:.
106*54fd6939SJiyong Park
107*54fd6939SJiyong Park   .. code:: shell
108*54fd6939SJiyong Park
109*54fd6939SJiyong Park       sudo apt install fwupdate
110*54fd6939SJiyong Park       sudo fwupdate --apply {50b94ce5-8b63-4849-8af4-ea479356f0e3} \
111*54fd6939SJiyong Park                     SYNQUACERFIRMWAREUPDATECAPSULEFMPPKCS7.Cap
112*54fd6939SJiyong Park       sudo reboot
113*54fd6939SJiyong Park
114*54fd6939SJiyong Park-  Alternatively you can install SPI_NOR_IMAGE.fd using the `board recovery method`_.
115*54fd6939SJiyong Park
116*54fd6939SJiyong Park.. _link: https://www.96boards.org/product/developerbox/
117*54fd6939SJiyong Park.. _board recovery method: https://www.96boards.org/documentation/enterprise/developerbox/installation/board-recovery.md.html
118