Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Output log at UART0 (at 115,200 bps).

  2. Support accessing OTP using Sunplus OTPTool via UART0.

  3. Support loading firmware of LPDDR4/DDR4/DDR3 from boot devices.

  4. Support 1D and 2D training of LPDDR4, DDR4 and DDR3 SDRAM.

  5. Support loading image of TF-A (BL31), OP-TEE (BL32) and U-Boot (BL33) from boot devices.

  6. Support secure-boot:

    1. Verify digital signature of fip (TF-A and OP-TEE) and U-Boot images.

    2. Decrypt fip image.

  7. Support warm-boot.

  8. Switch CA55 to 64-bit mode and jump to run TF-A.

Flow

...

image-20240125-055619.pngImage Removed

image-20240122-104526.pngImage Removed

Drivers locations and features

...

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.

Flow

...

image-20240125-055619.pngImage Added

image-20240122-104526.pngImage Added

SRAM Space Allocation

To facilitate program maintenance and data sharing, x-boot and i-boot utilize the same SRAM segment division and structure. Figure 4.2 illustrates the segmentation of SRAM into 9 segments, ranging from low to high addresses: xboot_buf, bootinfo, boothead, a64up, cdata, storage_buf, stack, bootcompat, and spacc_ram.

Below are explanations of each segment's purpose:

  • xboot_buf: x-boot program segment, where the x-boot program is loaded and executed.

  • bootinfo: bootinfo segment containing the g_bootinfo structure, which records boot-related information.

  • boothead: boothead segment holding the g_boothead array, used to store GPT data for eMMC or header data for NAND flash.

  • a64up: a64up segment where the a64up program resides, responsible for transitioning the CPU from 32-bit mode to 64-bit mode.

  • cdata: C data segment containing global variables or static variables in C.

  • storage_buf: Device driver data segment for boot devices such as eMMC and NAND flash. Different boot device drivers share the same space here during a single boot, as only one boot device driver is utilized per boot.

  • stack: Stack segment where the stack for C is located.

  • stack: Stack segment where the stack for C is located.

  • spacc_ram: spacc data segment containing data used by SPAcc.

During system boot, i-boot reads boot-related information from the boot switch and the OTP (One-Time Programmable) memory within the C chip. This information is then stored in the g_bootinfo structure. Consequently, the data in the g_bootinfo structure determines the i-boot boot mode and the subsequent boot process. x-boot directly utilizes the data in the g_bootinfo structure to determine the boot mode and process.