[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