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