[PATCH 0/5] sunxi: enable automatic eMMC boot partition support
Peter Robinson
pbrobinson at gmail.com
Sun Nov 8 15:59:30 CET 2020
On Sun, Nov 8, 2020 at 1:14 PM Andre Przywara <andre.przywara at arm.com> wrote:
>
> The eMMC standard describes the concept of boot partitions, consisting
> of two storage areas separate from the main user data partition.
> The Allwinner BootROM supports loading SPL/Boot0 from such a boot
> partition, if that is configured in the eMMC device [1].
>
> To load U-Boot proper along with the SPL from there, currently this
> requires to enable CONFIG_SUPPORT_EMMC_BOOT, and this means that this
> build won't boot from the normal eMMC user partition anymore.
> Also the raw MMC sector offset needs to be adjusted manually, preventing
> a boot from an SD card.
>
> This series introduces automatic detection of eMMC boot partition boot.
> Patch 3/5 automates the raw MMC sector offset decision, allowing such
> a build to also boot from an SD card.
> Unfortunately the BootROM does not mark an eMMC boot partition boot
> differently from the normal eMMC user data partition boot, so patch 4/5
> introduces a function that repeats the BootROM algorithm, so that the SPL
> comes to the same conclusion as the BootROM. This allows to build one
> single image that boots from everywhere: eMMC user data, eMMC boot,
> SD card, SPI flash.
> Patch 1/5 contains a bugfix that's needed in a later patch, patch 2/5
> extends the generic spl_mmc_boot_mode() interface to make 4/5 feasible.
>
> Without enabling CONFIG_SUPPORT_EMMC_BOOT, the AArch64 SPL grows by
> 92 bytes, ARMv7 grows by 36 bytes. With enabling the feature, the size
> goes up by 444 bytes (AArch64) and 260 bytes (ARMv7).
> Even for AArch64 this is still 4.5 KB below the SPL limit, so patch 5/5
> enables this new mechanism for some boards I could test this on.
>
> Please have a look and test this if you have a board with eMMC.
> I put installation instructions into the linux-sunxi Wiki:
> http://linux-sunxi.org/Bootable_eMMC
It would probably be good to put that link in the local Allwinner docs
so it's easier for people to find.
Peter
> Cheers,
> Andre
>
> [1] http://linux-sunxi.org/Bootable_eMMC#The_BROM_implementation_details
>
> Andre Przywara (5):
> sunxi: Fix is_boot0_magic macro
> spl: mmc: extend spl_mmc_boot_mode() to take mmc argument
> sunxi: Simplify eMMC boot partition booting
> sunxi: eMMC: Add automatic boot detection
> sunxi: defconfig: enable eMMC boot partition support
>
> arch/arm/include/asm/arch-sunxi/spl.h | 2 +-
> arch/arm/mach-imx/spl.c | 2 +-
> arch/arm/mach-k3/am6_init.c | 2 +-
> arch/arm/mach-k3/j721e_init.c | 2 +-
> arch/arm/mach-omap2/boot-common.c | 2 +-
> arch/arm/mach-rockchip/spl.c | 2 +-
> arch/arm/mach-socfpga/spl_a10.c | 2 +-
> arch/arm/mach-socfpga/spl_agilex.c | 2 +-
> arch/arm/mach-socfpga/spl_gen5.c | 2 +-
> arch/arm/mach-socfpga/spl_s10.c | 2 +-
> arch/arm/mach-stm32mp/spl.c | 2 +-
> arch/arm/mach-sunxi/board.c | 94 +++++++++++++++++++++-
> arch/arm/mach-uniphier/mmc-boot-mode.c | 5 +-
> common/spl/spl_mmc.c | 4 +-
> configs/bananapi_m64_defconfig | 1 +
> configs/emlid_neutis_n5_devboard_defconfig | 1 +
> configs/pine64-lts_defconfig | 1 +
> configs/pine_h64_defconfig | 1 +
> include/spl.h | 3 +-
> 19 files changed, 113 insertions(+), 19 deletions(-)
>
> --
> 2.17.5
>
More information about the U-Boot
mailing list