| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- .. SPDX-License-Identifier: GPL-2.0+
- Introduction
- ============
- DeveloperBox is a certified 96boards Enterprise Edition board. The board/SoC has: -
- * Socionext SC2A11 24-cores ARM Cortex-A53 on tbe Mini-ATX form factor motherboard
- * 4 DIMM slots (4GB DDR4-2400 UDIMM shipped by default)
- * 1 4xPCIe Gen2 slot and 2 1xPCIe Gen2 slots
- (1x slots are connected via PCIe bridge chip)
- * 4 USB-3.0 ports
- * 2 SATA ports
- * 1 GbE network port
- * 1 USB-UART serial port (micro USB)
- * 64MB SPI NOR Flash
- * 8GB eMMC Flash Storage
- * 96boards LS connector
- The DeveloperBox schematic can be found here: -
- https://www.96boards.org/documentation/enterprise/developerbox/hardware-docs/mzsc2am_v03_20180115_a.pdf
- And the other documents can be found here: -
- https://www.96boards.org/documentation/enterprise/developerbox/
- Currently, the U-Boot port supports: -
- * USB
- * eMMC
- * SPI-NOR
- * SATA
- * GbE
- The DeveloperBox boots the TF-A and EDK2 as a main bootloader by default.
- The DeveloperBox U-Boot port will replace the EDK2 and boot from TF-A as
- BL33, but no need to combine with it.
- Compile from source
- ===================
- You can build U-Boot without any additinal source code.::
- cd u-boot
- export ARCH=arm64
- export CROSS_COMPILE=aarch64-linux-gnu-
- make SynQuacer_defconfig
- make -j `noproc`
- Then, expand the binary to 1MB for preparing flash.::
- cp u-boot.bin SPI_NOR_UBOOT.fd
- truncate -s 1M SPI_NOR_UBOOT.fd
- Installation
- ============
- You can install the SNI_NOR_UBOOT.fd via NOR flash writer.
- Flashing the U-Boot image on DeveloperBox requires a 96boards UART mezzanine
- or other mezzanine which can connect to the LS-UART0 port.
- Connect USB cable from host to the LS-UART0 and set DSW2-7 to ON, and turn the
- board on again. The flash writer program will be started automatically;
- don't forget to turn the DSW2-7 off again after flashing.
- *!!CAUTION!! If you write the U-Boot image on wrong address, the board can
- be bricked. See below page if you need to recover the bricked board. See
- the following page for more details*
- https://www.96boards.org/documentation/enterprise/developerbox/installation/board-recovery.md.html
- When the serial flasher is running correctly it will show the following boot
- messages printed to the LS-UART0 console::
- /*------------------------------------------*/
- /* SC2A11 "SynQuacer" series Flash writer */
- /* */
- /* Version: cd254ac */
- /* Build: 12/15/17 11:25:45 */
- /*------------------------------------------*/
- Command Input >
- Once the flasher tool is running we are ready flash the UEFI image::
- flash rawwrite 200000 100000
- >> Send SPI_NOR_UBOOT.fd via XMODEM (Control-A S in minicom) <<
- *!!NOTE!! The flasher command parameter is different from the command for
- board recovery. U-Boot uses the offset 200000 (2-five-0, 2M in hex) and the
- size 100000 (1-five-0, 1M in hex).*
- After transferring the SPI_NOR_UBOOT.fd, turn off the DSW2-7 and
- reset the board.
- Enable FWU Multi Bank Update
- ============================
- DeveloperBox supports the FWU Multi Bank Update. You *MUST* update both
- *SCP firmware* and *TF-A* for this feature. This will change the layout and
- the boot process but you can switch back to the normal one by changing
- the DSW 1-4 off.
- Configure U-Boot
- ----------------
- To enable the FWU Multi Bank Update on the DeveloperBox board the
- configs/synquacer_developerbox_defconfig enables default FWU configuration ::
- CONFIG_FWU_MULTI_BANK_UPDATE=y
- CONFIG_FWU_MDATA=y
- CONFIG_FWU_MDATA_MTD=y
- CONFIG_FWU_NUM_BANKS=2
- CONFIG_FWU_NUM_IMAGES_PER_BANK=1
- CONFIG_CMD_FWU_METADATA=y
- And build it::
- cd u-boot/
- export ARCH=arm64
- export CROSS_COMPILE=aarch64-linux-gnu-
- make synquacer_developerbox_defconfig
- make -j `noproc`
- cd ../
- By default, the CONFIG_FWU_NUM_BANKS and CONFIG_FWU_NUM_IMAGES_PER_BANKS are
- set to 2 and 1 respectively. This uses FIP (Firmware Image Package) type image
- which contains TF-A, U-Boot and OP-TEE (the OP-TEE is optional).
- You can use fiptool to compose the FIP image from those firmware images.
- Rebuild SCP firmware
- --------------------
- Rebuild SCP firmware which supports FWU Multi Bank Update as below::
- cd SCP-firmware/
- OUT=./build/product/synquacer
- ROMFW_FILE=$OUT/scp_romfw/$SCP_BUILD_MODE/bin/scp_romfw.bin
- RAMFW_FILE=$OUT/scp_ramfw/$SCP_BUILD_MODE/bin/scp_ramfw.bin
- ROMRAMFW_FILE=scp_romramfw_release.bin
- make CC=arm-none-eabi-gcc PRODUCT=synquacer MODE=release
- tr "\000" "\377" < /dev/zero | dd of=${ROMRAMFW_FILE} bs=1 count=196608
- dd if=${ROMFW_FILE} of=${ROMRAMFW_FILE} bs=1 conv=notrunc seek=0
- dd if=${RAMFW_FILE} of=${ROMRAMFW_FILE} bs=1 seek=65536
- cd ../
- And you can get the `scp_romramfw_release.bin` file.
- Rebuild OPTEE firmware
- ----------------------
- Rebuild OPTEE to use in new-layout FIP as below::
- cd optee_os/
- make -j`nproc` PLATFORM=synquacer ARCH=arm \
- CROSS_COMPILE64=aarch64-linux-gnu- CFG_ARM64_core=y \
- CFG_CRYPTO_WITH_CE=y CFG_CORE_HEAP_SIZE=524288 CFG_CORE_DYN_SHM=y \
- CFG_CORE_ARM64_PA_BITS=48 CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_TA_LOG_LEVEL=1
- cp out/arm-plat-synquacer/core/tee-pager_v2.bin ../arm-trusted-firmware/
- The produced `tee-pager_v2.bin` is to be used while building TF-A next.
- Rebuild TF-A and FIP
- --------------------
- Rebuild TF-A which supports FWU Multi Bank Update as below::
- cd arm-trusted-firmware/
- make CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` PLAT=synquacer \
- TRUSTED_BOARD_BOOT=1 SPD=opteed SQ_RESET_TO_BL2=1 GENERATE_COT=1 \
- MBEDTLS_DIR=../mbedtls BL32=tee-pager_v2.bin \
- BL33=../u-boot/u-boot.bin all fip fiptool
- And make a FIP image.::
- cp build/synquacer/release/fip.bin SPI_NOR_NEWFIP.fd
- tools/fiptool/fiptool update --tb-fw build/synquacer/release/bl2.bin SPI_NOR_NEWFIP.fd
- UUIDs for the FWU Multi Bank Update
- -----------------------------------
- FWU multi-bank update requires some UUIDs. The DeveloperBox platform uses
- following UUIDs.
- - Location UUID for the FIP image: 17e86d77-41f9-4fd7-87ec-a55df9842de5
- - Image type UUID for the FIP image: 10c36d7d-ca52-b843-b7b9-f9d6c501d108
- - Image UUID for Bank0 : 5a66a702-99fd-4fef-a392-c26e261a2828
- - Image UUID for Bank1 : a8f868a1-6e5c-4757-878d-ce63375ef2c0
- These UUIDs are used for making a FWU metadata image.
- u-boot$ ./tools/mkfwumdata -i 1 -b 2 \
- 17e86d77-41f9-4fd7-87ec-a55df9842de5,10c36d7d-ca52-b843-b7b9-f9d6c501d108,5a66a702-99fd-4fef-a392-c26e261a2828,a8f868a1-6e5c-4757-878d-ce63375ef2c0 \
- ../devbox-fwu-mdata.img
- Create Accept & Revert capsules
- u-boot$ ./tools/mkeficapsule -A -g 7d6dc310-52ca-43b8-b7b9-f9d6c501d108 NEWFIP_accept.Cap
- u-boot$ ./tools/mkeficapsule -R NEWFIP_revert.Cap
- Install via flash writer
- ------------------------
- As explained in above section, the new FIP image and the FWU metadata image
- can be installed via NOR flash writer.
- Once the flasher tool is running we are ready to flash the images.::
- Write the FIP image to the Bank-0 & 1 at 6MB and 10MB offset.::
- flash rawwrite 600000 180000
- flash rawwrite a00000 180000
- >> Send SPI_NOR_NEWFIP.fd via XMODEM (Control-A S in minicom) <<
- flash rawwrite 500000 1000
- flash rawwrite 530000 1000
- >> Send devbox-fwu-mdata.img via XMODEM (Control-A S in minicom) <<
- And write the new SCP firmware.::
- flash write cm3
- >> Send scp_romramfw_release.bin via XMODEM (Control-A S in minicom) <<
- At last, turn on the DSW 3-4 on the board, and reboot.
- Note that if DSW 3-4 is turned off, the DeveloperBox will boot from
- the original EDK2 firmware (or non-FWU U-Boot if you already installed).
|