synquacer.rst 3.8 KB

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