Masami Hiramatsu | 7c74127 | 2021-06-04 18:45:10 +0900 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GPL-2.0+ |
| 2 | |
| 3 | Introduction |
| 4 | ============ |
| 5 | |
| 6 | DeveloperBox is a certified 96boards Enterprise Edition board. The board/SoC has: - |
| 7 | |
| 8 | * Socionext SC2A11 24-cores ARM Cortex-A53 on tbe Mini-ATX form factor motherboard |
| 9 | * 4 DIMM slots (4GB DDR4-2400 UDIMM shipped by default) |
| 10 | * 1 4xPCIe Gen2 slot and 2 1xPCIe Gen2 slots |
| 11 | (1x slots are connected via PCIe bridge chip) |
| 12 | * 4 USB-3.0 ports |
| 13 | * 2 SATA ports |
| 14 | * 1 GbE network port |
| 15 | * 1 USB-UART serial port (micro USB) |
| 16 | * 64MB SPI NOR Flash |
| 17 | * 8GB eMMC Flash Storage |
| 18 | * 96boards LS connector |
| 19 | |
| 20 | The DeveloperBox schematic can be found here: - |
| 21 | https://www.96boards.org/documentation/enterprise/developerbox/hardware-docs/mzsc2am_v03_20180115_a.pdf |
| 22 | |
| 23 | And the other documents can be found here: - |
| 24 | https://www.96boards.org/documentation/enterprise/developerbox/ |
| 25 | |
| 26 | |
| 27 | Currently, the U-Boot port supports: - |
| 28 | |
| 29 | * USB |
| 30 | * eMMC |
| 31 | * SPI-NOR |
| 32 | * SATA |
| 33 | * GbE |
| 34 | |
| 35 | The DeveloperBox boots the TF-A and EDK2 as a main bootloader by default. |
| 36 | The DeveloperBox U-Boot port will replace the EDK2 and boot from TF-A as |
| 37 | BL33, but no need to combine with it. |
| 38 | |
| 39 | Compile from source |
| 40 | =================== |
| 41 | |
| 42 | You can build U-Boot without any additinal source code.:: |
| 43 | |
| 44 | cd u-boot |
| 45 | export ARCH=arm64 |
| 46 | export CROSS_COMPILE=aarch64-linux-gnu- |
| 47 | make SynQuacer_defconfig |
| 48 | make -j `noproc` |
| 49 | |
| 50 | Then, expand the binary to 1MB for preparing flash.:: |
| 51 | |
| 52 | cp u-boot.bin SPI_NOR_UBOOT.fd |
| 53 | truncate -s 1M SPI_NOR_UBOOT.fd |
| 54 | |
| 55 | Installation |
| 56 | ============ |
| 57 | |
| 58 | You can install the SNI_NOR_UBOOT.fd via NOR flash writer. |
| 59 | |
Jassi Brar | eeee432 | 2023-05-31 00:29:56 -0500 | [diff] [blame] | 60 | Flashing the U-Boot image on DeveloperBox requires a 96boards UART mezzanine |
| 61 | or other mezzanine which can connect to the LS-UART0 port. |
| 62 | Connect USB cable from host to the LS-UART0 and set DSW2-7 to ON, and turn the |
| 63 | board on again. The flash writer program will be started automatically; |
| 64 | don't forget to turn the DSW2-7 off again after flashing. |
Masami Hiramatsu | 7c74127 | 2021-06-04 18:45:10 +0900 | [diff] [blame] | 65 | |
Jassi Brar | eeee432 | 2023-05-31 00:29:56 -0500 | [diff] [blame] | 66 | *!!CAUTION!! If you write the U-Boot image on wrong address, the board can |
| 67 | be bricked. See below page if you need to recover the bricked board. See |
| 68 | the following page for more details* |
Masami Hiramatsu | 7c74127 | 2021-06-04 18:45:10 +0900 | [diff] [blame] | 69 | |
| 70 | https://www.96boards.org/documentation/enterprise/developerbox/installation/board-recovery.md.html |
| 71 | |
Jassi Brar | eeee432 | 2023-05-31 00:29:56 -0500 | [diff] [blame] | 72 | When the serial flasher is running correctly it will show the following boot |
| 73 | messages printed to the LS-UART0 console:: |
Masami Hiramatsu | 7c74127 | 2021-06-04 18:45:10 +0900 | [diff] [blame] | 74 | |
| 75 | |
| 76 | /*------------------------------------------*/ |
| 77 | /* SC2A11 "SynQuacer" series Flash writer */ |
| 78 | /* */ |
| 79 | /* Version: cd254ac */ |
| 80 | /* Build: 12/15/17 11:25:45 */ |
| 81 | /*------------------------------------------*/ |
| 82 | |
| 83 | Command Input > |
| 84 | |
| 85 | Once the flasher tool is running we are ready flash the UEFI image:: |
| 86 | |
| 87 | flash rawwrite 200000 100000 |
| 88 | >> Send SPI_NOR_UBOOT.fd via XMODEM (Control-A S in minicom) << |
| 89 | |
Jassi Brar | eeee432 | 2023-05-31 00:29:56 -0500 | [diff] [blame] | 90 | *!!NOTE!! The flasher command parameter is different from the command for |
| 91 | board recovery. U-Boot uses the offset 200000 (2-five-0, 2M in hex) and the |
| 92 | size 100000 (1-five-0, 1M in hex).* |
Masami Hiramatsu | 7c74127 | 2021-06-04 18:45:10 +0900 | [diff] [blame] | 93 | |
Jassi Brar | eeee432 | 2023-05-31 00:29:56 -0500 | [diff] [blame] | 94 | After transferring the SPI_NOR_UBOOT.fd, turn off the DSW2-7 and |
| 95 | reset the board. |
| 96 | |
| 97 | |
| 98 | Enable FWU Multi Bank Update |
| 99 | ============================ |
| 100 | |
| 101 | DeveloperBox supports the FWU Multi Bank Update. You *MUST* update both |
| 102 | *SCP firmware* and *TF-A* for this feature. This will change the layout and |
| 103 | the boot process but you can switch back to the normal one by changing |
| 104 | the DSW 1-4 off. |
| 105 | |
| 106 | Configure U-Boot |
| 107 | ---------------- |
| 108 | |
| 109 | To enable the FWU Multi Bank Update on the DeveloperBox board the |
| 110 | configs/synquacer_developerbox_defconfig enables default FWU configuration :: |
| 111 | |
| 112 | CONFIG_FWU_MULTI_BANK_UPDATE=y |
| 113 | CONFIG_FWU_MDATA=y |
| 114 | CONFIG_FWU_MDATA_MTD=y |
| 115 | CONFIG_FWU_NUM_BANKS=2 |
| 116 | CONFIG_FWU_NUM_IMAGES_PER_BANK=1 |
| 117 | CONFIG_CMD_FWU_METADATA=y |
| 118 | |
| 119 | And build it:: |
| 120 | |
| 121 | cd u-boot/ |
| 122 | export ARCH=arm64 |
| 123 | export CROSS_COMPILE=aarch64-linux-gnu- |
| 124 | make synquacer_developerbox_defconfig |
| 125 | make -j `noproc` |
| 126 | cd ../ |
| 127 | |
| 128 | By default, the CONFIG_FWU_NUM_BANKS and CONFIG_FWU_NUM_IMAGES_PER_BANKS are |
| 129 | set to 2 and 1 respectively. This uses FIP (Firmware Image Package) type image |
| 130 | which contains TF-A, U-Boot and OP-TEE (the OP-TEE is optional). |
| 131 | You can use fiptool to compose the FIP image from those firmware images. |
| 132 | |
| 133 | Rebuild SCP firmware |
| 134 | -------------------- |
| 135 | |
| 136 | Rebuild SCP firmware which supports FWU Multi Bank Update as below:: |
| 137 | |
| 138 | cd SCP-firmware/ |
| 139 | OUT=./build/product/synquacer |
| 140 | ROMFW_FILE=$OUT/scp_romfw/$SCP_BUILD_MODE/bin/scp_romfw.bin |
| 141 | RAMFW_FILE=$OUT/scp_ramfw/$SCP_BUILD_MODE/bin/scp_ramfw.bin |
| 142 | ROMRAMFW_FILE=scp_romramfw_release.bin |
| 143 | |
| 144 | make CC=arm-none-eabi-gcc PRODUCT=synquacer MODE=release |
| 145 | tr "\000" "\377" < /dev/zero | dd of=${ROMRAMFW_FILE} bs=1 count=196608 |
| 146 | dd if=${ROMFW_FILE} of=${ROMRAMFW_FILE} bs=1 conv=notrunc seek=0 |
| 147 | dd if=${RAMFW_FILE} of=${ROMRAMFW_FILE} bs=1 seek=65536 |
| 148 | cd ../ |
| 149 | |
| 150 | And you can get the `scp_romramfw_release.bin` file. |
| 151 | |
| 152 | Rebuild OPTEE firmware |
| 153 | ---------------------- |
| 154 | |
| 155 | Rebuild OPTEE to use in new-layout FIP as below:: |
| 156 | |
| 157 | cd optee_os/ |
| 158 | make -j`nproc` PLATFORM=synquacer ARCH=arm \ |
| 159 | CROSS_COMPILE64=aarch64-linux-gnu- CFG_ARM64_core=y \ |
| 160 | CFG_CRYPTO_WITH_CE=y CFG_CORE_HEAP_SIZE=524288 CFG_CORE_DYN_SHM=y \ |
| 161 | CFG_CORE_ARM64_PA_BITS=48 CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_TA_LOG_LEVEL=1 |
| 162 | cp out/arm-plat-synquacer/core/tee-pager_v2.bin ../arm-trusted-firmware/ |
| 163 | |
| 164 | The produced `tee-pager_v2.bin` is to be used while building TF-A next. |
| 165 | |
| 166 | |
| 167 | Rebuild TF-A and FIP |
| 168 | -------------------- |
| 169 | |
| 170 | Rebuild TF-A which supports FWU Multi Bank Update as below:: |
| 171 | |
| 172 | cd arm-trusted-firmware/ |
| 173 | make CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` PLAT=synquacer \ |
| 174 | TRUSTED_BOARD_BOOT=1 SPD=opteed SQ_RESET_TO_BL2=1 GENERATE_COT=1 \ |
| 175 | MBEDTLS_DIR=../mbedtls BL32=tee-pager_v2.bin \ |
| 176 | BL33=../u-boot/u-boot.bin all fip fiptool |
| 177 | |
| 178 | And make a FIP image.:: |
| 179 | |
| 180 | cp build/synquacer/release/fip.bin SPI_NOR_NEWFIP.fd |
| 181 | tools/fiptool/fiptool update --tb-fw build/synquacer/release/bl2.bin SPI_NOR_NEWFIP.fd |
| 182 | |
| 183 | UUIDs for the FWU Multi Bank Update |
| 184 | ----------------------------------- |
| 185 | |
| 186 | FWU multi-bank update requires some UUIDs. The DeveloperBox platform uses |
| 187 | following UUIDs. |
| 188 | |
| 189 | - Location UUID for the FIP image: 17e86d77-41f9-4fd7-87ec-a55df9842de5 |
| 190 | - Image type UUID for the FIP image: 10c36d7d-ca52-b843-b7b9-f9d6c501d108 |
| 191 | - Image UUID for Bank0 : 5a66a702-99fd-4fef-a392-c26e261a2828 |
| 192 | - Image UUID for Bank1 : a8f868a1-6e5c-4757-878d-ce63375ef2c0 |
| 193 | |
| 194 | These UUIDs are used for making a FWU metadata image. |
| 195 | |
| 196 | u-boot$ ./tools/mkfwumdata -i 1 -b 2 \ |
| 197 | 17e86d77-41f9-4fd7-87ec-a55df9842de5,10c36d7d-ca52-b843-b7b9-f9d6c501d108,5a66a702-99fd-4fef-a392-c26e261a2828,a8f868a1-6e5c-4757-878d-ce63375ef2c0 \ |
| 198 | ../devbox-fwu-mdata.img |
| 199 | |
| 200 | Create Accept & Revert capsules |
| 201 | |
| 202 | u-boot$ ./tools/mkeficapsule -A -g 7d6dc310-52ca-43b8-b7b9-f9d6c501d108 NEWFIP_accept.Cap |
| 203 | u-boot$ ./tools/mkeficapsule -R NEWFIP_revert.Cap |
| 204 | |
| 205 | Install via flash writer |
| 206 | ------------------------ |
| 207 | |
| 208 | As explained in above section, the new FIP image and the FWU metadata image |
| 209 | can be installed via NOR flash writer. |
| 210 | |
| 211 | Once the flasher tool is running we are ready to flash the images.:: |
| 212 | Write the FIP image to the Bank-0 & 1 at 6MB and 10MB offset.:: |
| 213 | |
| 214 | flash rawwrite 600000 180000 |
| 215 | flash rawwrite a00000 180000 |
| 216 | >> Send SPI_NOR_NEWFIP.fd via XMODEM (Control-A S in minicom) << |
| 217 | |
| 218 | flash rawwrite 500000 1000 |
| 219 | flash rawwrite 530000 1000 |
| 220 | >> Send devbox-fwu-mdata.img via XMODEM (Control-A S in minicom) << |
| 221 | |
| 222 | And write the new SCP firmware.:: |
| 223 | |
| 224 | flash write cm3 |
| 225 | >> Send scp_romramfw_release.bin via XMODEM (Control-A S in minicom) << |
Masami Hiramatsu | 7c74127 | 2021-06-04 18:45:10 +0900 | [diff] [blame] | 226 | |
Jassi Brar | eeee432 | 2023-05-31 00:29:56 -0500 | [diff] [blame] | 227 | At last, turn on the DSW 3-4 on the board, and reboot. |
| 228 | Note that if DSW 3-4 is turned off, the DeveloperBox will boot from |
| 229 | the original EDK2 firmware (or non-FWU U-Boot if you already installed). |