The ConnectCore MP15 uses a NAND flash as main storage media.
The flash is divided into logical partitions per the U-Boot variable mtdparts
, which contains a string in the format described by the Linux kernel parameters in drivers/mtd/parsers/cmdlinepart.c
.
Partition table
The default NAND partition table on the ConnectCore MP15 establishes the following partitions:
-
fsbl1, fsbl2: FSBL stands for First Stage Bootloader. These partitions contain (in duplicate) the ARM Trusted Firmware (TF-A), which is the first piece of firmware that runs after the ROM loader. Its primary purpose is to perform any additional initialization required to load and authenticate all third-level firmware images into their executable RAM locations.
Partitions are redundant. If the ROM loader cannot boot from fsbl1, it will fall back to boot from fsbl2.
-
metadata1, metadata2: These partitions contain (in duplicate) information for the TF-A to localize the FIP partition to use (the active system, A or B).
-
fip-a, fip-b: FIP stands for Firmware Image Package. These partitions contain a FIP image that contains the Trusted Execution Environment (TEE) firmware and the U-Boot bootloader.
Partitions are redundant. If the TF-A cannot boot from fip-a, it will fall back to boot from fip-b.
-
UBI: This partition extends to all the remaining space and contains the U-Boot environment and the system partitions as UBI volumes.
Dual boot UBI volumes (default)
The ConnectCore MP15 enables Dual boot by default. On a dual boot-enabled system the UBI partition contains the following UBI volumes:
-
uboot_config, uboot_config_r: (UBI volumes) Contain the U-Boot environment and its redundant copy.
-
linux_a: (UBI volume) Contains the Linux kernel, device tree files, and U-Boot boot scripts. U-Boot reads the operating system files from this default volume.
-
linux_b: (UBI volume) Same as linux_a (for system B).
-
rootfs_a: (UBI volume) Linux root file system volume (for system A)
-
rootfs_b: (UBI volume) Linux root file system volume (for system B)
-
data: Placeholder volume for user data.
Single system UBI volumes
When the NAND capacity doesn’t allow for a dual boot UBI volumes layout, you can alternatively define a single system UBI volumes layout:
-
uboot_config, uboot_config_r: (UBI volumes) Contain the U-Boot environment and its redundant copy.
-
linux: (UBI volume) Contains the Linux kernel, device tree files, and U-Boot boot scripts. U-Boot reads the operating system files from this default volume.
-
recovery: (UBI volume) Contains a Linux kernel, device tree files, U-Boot boot scripts, and a recovery ramdisk image that can be launched (instead of the default operating system) to perform firmware updates on the device.
-
rootfs: (UBI volume) Contains the Linux root file system.
-
update: (UBI volume) Placeholder volume to store firmware update files prior to launching a firmware update process on the device.
-
data: Placeholder volume for user data.
To prepare your NAND for single system UBI volumes, run the following in U-Boot:
=> setenv dualboot no
=> run ubivolscript
=> saveenv