This article provides an in-depth look at the partition layout of the ISP and boot image file, ISPBOOOT.BIN, specifically for the SP7350. As the name suggests, ISPBOOOT.BIN serves dual purposes: ISP (In-System Programming) and booting. The extra "O" in the name ensures compatibility with the legacy DOS 8.3 file name format while also creating a unique identifier.
...
X-Boot: The X-Boot image resides at offset 0 within ISPBOOOT.BIN and has a maximum size of 192 KiB, with the actual size specified in the X-Boot image header. After a successful checksum verification, the system executes X-Boot.
DRAM Initialization: X-Boot initializes and trains the DRAM controller, preparing the DRAM for subsequent operations.
Loading TF-A, OP-TEE and U-Boot: Once the DRAM is ready, X-Boot 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. The U-Boot image is also extracted from offset 0x30000 of ISPBOOOT.BIN and stored in DRAM.
Executing TF-A, OP-TEE and U-Boot: After verifying the checksums for all images, the system proceeds to execute TF-A, followed by OP-TEE, and finally U-Boot.
Executing U-Boot ISP script: U-Boot automatically runs scripts located at the end of the ISPBOOOT.BIN file to program the flash devices.
1.2
...
Layout of ISPBOOOT.BIN
The partition layout of ISPBOOOT.BIN is as follows, beginning with the X-Boot image (partition name: xboot0), followed by the U-Boot image (partition name: uboot0), and a header that details the subsequent partitions.
...
X-Boot: The X-Boot image resides at offset 0 within ISPBOOOT.BIN and has a maximum size of 192 KiB, with its actual size specified in the X-Boot image header. After a successful checksum verification, the system executes X-Boot.
DRAM Initialization: X-Boot initializes and trains the SDRAM controller, preparing the DRAM for subsequent operations.
Loading TF-A, OP-TEE and U-Boot: Once the DRAM is ready, X-Boot loads the TF-A (Trusted Firmware-A) and OP-TEE (Open Portable Trusted Execution Environment) images from the fip (firmware image package) image file, fip.img, on the boot device, storing them in DRAM. The U-Boot image is then loaded from the u-boot.img file on the boot device and stored in DRAM.
Executing TF-A, OP-TEE and U-Boot: After verifying the checksums for all images, the system proceeds to execute TF-A, followed by OP-TEE, and finally U-Boot.
U-Boot Execution of the Linux kernel: U-Boot automatically runs scripts to load the Linux kernel image (uImage) from the boot device, decompress and verify it, and then execute the Linux kernel.
...