SPL and U-Boot placement

723 Views Asked by At

Storage device for an embedded system is organized as:

  • Non-partitioned space, saved for U-Boot.
  • BOOT-VAR6UL - A FAT16 partition containing the Linux image and the device tree blob/s.
  • "rootfs" - An ext4 partition containing the root file system (including the kernel modules).

Last two storage "space" are partitioned for BOOT and filesystem, in the format requested (FAT16 or ext4). Space for SPL and u-boot is defined as "Non-partitioned space": is there someone who can explain the reason of this?
A further question: surfing in a SD card or in eMMC memory I'm able to check which files are stored in the partitioned spaces.
How can I see or check SPL or u-boot? Is this not possible?
Paolo

2

There are 2 best solutions below

0
Tom Rini On

Making some assumptions based on what you say, BOOT-VAR6UL implies to me that you're on an NXP i.MX6UL-based system. If you look up the manuals for that SoC it will describe where it looks on eMMC (and, SD card) memory for binaries to boot. These areas will in turn often be marked as "non-partitioned space" or otherwise reserved so that the OS installer doesn't overwrite that part of the firmware. This is true of most SoCs and the locations will change from vendor to vendor, but less often with SoCs from the same semiconductor.

2
Daft Soft On
  1. The reason to locate SPL and Proper in non-partitioned space is limited abilities of SoCs built-in firmware. Realizing support of partiton table(s) and filesystem(s) in firmware requires more ROM. Some of SoCs, for example, are so limited that they can not boot from SATA (while controller is implemented on SoC) - and boot from SD and/or NAND only with direct access only.
  2. Yes you can see or check SPL and U-Boot Proper if you know blocks they are located in by using dd (same as you write boots to SD-card or any other device).