x-boot (external boot code) is a first-stage boot-loader placed in eMMC, NAND flash, or SD cards, loaded into system SRAM by i-boot. As it runs on SRAM, its size (including code, data, and stack) must not exceed the system SRAM's capacity. The primary task of x-boot is to initialize the DRAM controller and PHY, perform calibration on DRAM PHY and signals, and once calibrated, the DRAM is ready for use. x-boot then switches the CPU from 32-bit mode to 64-bit mode and loads TF-A and U-Boot from external storage into DRAM, executing TF-A.
x-boot (external boot code) is the first-stage boot loader. It is loaded into internal SRAM and run by internal ROM code of SP7350. Note that before X-Boot initializes and trains DRAM controller, DRAM is not available.
x-boot initializes and trains the SDRAM controller, preparing the DRAM for use. Subsequently, it loads the TF-A (Trusted Firmware-A) and OP-TEE (Open Portable Trusted Execution Environment) images from the fip (firmware image package) partition within ISPBOOOT.BIN, storing them in DRAM. Additionally, the U-Boot image is extracted from offset 0x30000 of ISPBOOOT.BIN and stored in DRAM. Upon successful checksum verification for all images, the system proceeds to execute TF-A, followed by OP-TEE, and finally U-Boot.
x-boot is loaded and run at SRAM before DRAM is available.
x-boot is responsible for doing DDR SDRAM training.
x-boot is responsible for loading U-Boot image.
x-boot is responsible for loading and running TF-A and OP-TEE OS.
General features
Output log at UART0 (at 115,200 bps).
Support accessing OTP using Sunplus OTPTool via UART0.
Support loading firmware of LPDDR4/DDR4/DDR3 from boot devices.
Support 1D and 2D training of LPDDR4, DDR4 and DDR3 SDRAM.
Support loading image of TF-A (BL31), OP-TEE (BL32) and U-Boot (BL33) from boot devices.
Support secure-boot:
Verify digital signature of fip (TF-A and OP-TEE) and U-Boot images.
Decrypt fip image.
Support warm-boot.
Switch CA55 to 64-bit mode and jump to run TF-A.
Drivers locations and features
Drivers | Folders | Features |
8-bit NAND | nand/ |
|
ADC | adc/ | |
eMMC | sdmmc/ |
|
I2C driver | i2c/ |
|
NVMEN (OTP) | otp/ |
|
SD card | sdmmc/ |
|
SPI-NAND | nand/ |
|
USB2.0 Host | usb/ |
|
USB3.0 Host | usb/ |
|
Other files
Type | Folders | Files | |
machine | arch/arm/sp7350/ | a64up/ | |
aboot.S | |||
boot.ld | |||
cache.c | |||
cpu/ | |||
include/ | |||
page_table/ | |||
start.S | |||
default config files | configs/ | sp7350_emmc_ev_defconfig | |
sp7350_sdcard_ev_defconfig |
All defconfig files are placed at configs/. Normally, the file name proceed with sp7350- and followed by defconfig, like sp7350_emmc_ev_defconfig, sp7350_sdcard_ev_defconfig, and etc.