[PATCH u-boot-mvebu v2 00/41] kwboot / kwbimage improvements reducing image size

Stefan Roese sr at denx.de
Thu Jul 22 09:35:30 CEST 2021


Hi Marek & Pali,

while building this series via Azure CI I noticed this problem for
controlcenterdc_defconfig:

arm-linux-gnueabi-ld.bfd: common/spl/spl.o: in function `board_init_r':
common/spl/spl.c:702: undefined reference to `spl_board_init'

Could you please fix this? And make sure that all boards (not only
Marvell) compile clean?

And I also had merge issues (patches did not apply) with these patches,
which I needed to fix manually:

[PATCH u-boot-mvebu v2 19/41] tools: kwbimage: Do not hide usage of 
secure header under CONFIG_ARMADA_38X
[PATCH u-boot-mvebu v2 37/41] tools: kwbimage: Remove v1 kwbimage SPL 
padding to CONFIG_SYS_U_BOOT_OFFS bytes

Please fix this as well while working on v3.

Thanks,
Stefan

On 19.07.21 14:20, Marek Behún wrote:
> Hi Stefan and others,
> 
> this is v2 of the series of improvements to kwboot, kwbimage and mvebu,
> with main motivation the reduction of KWB image size.
> 
> Changes since v1:
> - change of cover letter message + information about boot times added
> - some additional small fix patches are added
> - we do not remove the SPL code for loading U-Boot, but add the option to
>    make BootROM do it. By default SPL code is used to load main U-Boot
>    binary, since it seems to be faster than BootROM (at least on Turris
>    Omnia). If users want to use BootROM for this, they need to disable
>    the necessary media (SPI NOR / NAND / SATA) support in SPL
> 
> This series makes correct usage of BootROM's code for loading U-Boot
> from NOR / NAND: currently, only SPL is read by BootROM and the main
> U-Boot is read by SPL.
> 
> We can use BootROM to also load main U-Boot. This reduces the size of
> the u-boot-spl.bin by about ~7 KiB, since it does not need to contain
> code for reading NOR / NAND. This patch series makes it possible to
> use BootROM for this, but since SPL code may read the main U-Boot
> binary faster, we leave it to board maintainers to decide whether they
> want to use BootROM or SPL code to load the main U-Boot binary. (The
> rule of thumb, I guess, is to use SPL if you have enough space, and
> BootROM if you need the additional 7 KiB.)
> 
> This patch series also reduces the size of the u-boot-spl.kwb binary
> by addutuibak ~29 KiB (depending on board, this is on Turris Omnia),
> by getting rid of the offseting of main U-Boot binary to a specific
> point on the boot device, and instead using information from the
> kwbimage header to find main U-Boot binary.
> 
> On Turris Omnia, the size differences and boot time differences are:
>                    before     after      after with booting via BootROM
>    u-boot-spl.kwb  901632 B   872960 B   864768 B
>    u-boot-spl.bin  115526 B   115898 B   107994 B
>    boot time         2426 ms    2411 ms    3283 ms
> 
> As can be seen, after this patch series, when still loading main U-Boot
> binary via SPL code, the boot time is on Turris Omnia reduced from
> 2426 ms to 2411 ms. When booting via BootROM is preferred, the boot time
> increases to 3283 ms, but we save additional 7 KiB in the u-boot-spl.kwb
> binary.
> 
> Before merging, this series should be tested on as many relevant
> boards as possible. The affected boards are:
> - clearfog
> - controlcenterdc
> - db-88f6720
> - db-88f6820-amc
> - db-88f6820-gp
> - db-mv784mp-gp
> - ds414
> - helios4
> - theadorable_debug
> - turris_omnia
> - x530
> 
> Marek Behún (2):
>    tools: kwbimage: Add constant for SDIO bootfrom
>    tools: kwbimage: Cosmetic fix - remove redundant space character
> 
> Pali Rohár (39):
>    tools: kwbimage: Fix compilation without CONFIG_SYS_U_BOOT_OFFS
>    tools: kwbimage: Simplify aligning and calculating checksum
>    tools: kwbimage: Align SPI and NAND images to 256 bytes
>    tools: kwbimage: Fix generation of SATA, SDIO and PCIe images
>    tools: kwbimage: Don't crash when binary file name does not contain
>      '/'
>    tools: kwbimage: Fix check for v0 extended header checksum
>    tools: kwbimage: Validate extended headers of v1 images
>    tools: kwbimage: Validate data checksum of v1 images
>    tools: kwbimage: Print size of binary header in
>      kwbimage_print_header()
>    tools: kwbimage: Use -a parameter (load address) for v1 images
>    tools: kwbimage: Change maximum number of arguments in binary header
>      to 256
>    tools: kwbimage: Fix calculating size of binary header
>    tools: kwbimage: Add support for more BINARY headers
>    tools: kwbimage: Don't parse PAYLOAD keyword
>    tools: kwbimage: Add support for DATA command also for v1 images
>    tools: kwbimage: Add support for a new DATA_DELAY command
>    tools: kwbimage: Do not hide usage of secure header under
>      CONFIG_ARMADA_38X
>    tools: kwbimage: Mark all BootROM structures __packed
>    tools: dumpimage: Fix crashing when trying to extract data from
>      kwbimage
>    tools: dumpimage: Show error message when trying to extract data from
>      kwbimage
>    tools: kwboot: Fix wrong parameter passed to read()
>    tools: kwboot: Fix restoring terminal
>    tools: kwboot: Print trailing newline after terminal is terminated
>    tools: kwboot: Cosmetic fix - add missing curly brackets
>    tools: kwboot: Check for v1 header size
>    tools: kwboot: Fix checking image header version
>    arm: mvebu: Fix return_to_bootrom()
>    arm: mvebu: Mark return_to_bootrom() as a noreturn function
>    arm: mvebu: Implement return_to_bootrom() via U-Boot's SPL framework
>    arm: mvebu: Use U-Boot's SPL BootROM framework for booting from
>      NAND/UART
>    SPL: Add support for specifying offset between header and image
>    SPL: Add support for parsing board / BootROM specific image types
>    arm: mvebu: Load main U-Boot binary in SPL code based on kwbimage
>      header
>    arm: mvebu: Remove legacy U-Boot header from kwbimage v1 files
>    tools: kwbimage: Remove v1 kwbimage SPL padding to
>      CONFIG_SYS_U_BOOT_OFFS bytes
>    arm: mvebu: Remove unused macro CONFIG_SYS_U_BOOT_OFFS
>    arm: mvebu: gdsys: Remove custom spl_board_init()
>    kwbimage: Add support for extracting images via dumpimage tool
>    kwbimage: Update help message about how to extract from an existing
>      image
> 
>   Makefile                               |   2 +-
>   arch/arm/mach-mvebu/Kconfig            |  26 +-
>   arch/arm/mach-mvebu/include/mach/cpu.h |   2 +-
>   arch/arm/mach-mvebu/lowlevel_spl.S     |   3 +-
>   arch/arm/mach-mvebu/spl.c              | 248 ++++++++++++--
>   board/gdsys/a38x/Makefile              |   2 +-
>   board/gdsys/a38x/spl.c                 |  20 --
>   board/kobol/helios4/Kconfig            |   5 -
>   board/solidrun/clearfog/Kconfig        |   5 -
>   common/spl/Kconfig                     |   4 +-
>   common/spl/spl.c                       |   9 +
>   common/spl/spl_mmc.c                   |  16 +-
>   common/spl/spl_sata.c                  |  12 +-
>   common/spl/spl_spi.c                   |   2 +-
>   configs/clearfog_defconfig             |   1 -
>   configs/controlcenterdc_defconfig      |   1 -
>   configs/db-88f6720_defconfig           |   1 -
>   configs/db-88f6820-amc_defconfig       |   1 -
>   configs/db-88f6820-gp_defconfig        |   2 -
>   configs/db-mv784mp-gp_defconfig        |   1 -
>   configs/ds414_defconfig                |   1 -
>   configs/helios4_defconfig              |   1 -
>   configs/maxbcm_defconfig               |   1 -
>   configs/theadorable_debug_defconfig    |   1 -
>   configs/turris_omnia_defconfig         |   1 -
>   configs/x530_defconfig                 |   1 -
>   include/configs/clearfog.h             |   7 +-
>   include/configs/controlcenterdc.h      |   9 -
>   include/configs/db-88f6720.h           |   3 -
>   include/configs/db-88f6820-amc.h       |   5 -
>   include/configs/db-88f6820-gp.h        |   7 -
>   include/configs/db-mv784mp-gp.h        |   3 -
>   include/configs/ds414.h                |   5 -
>   include/configs/helios4.h              |   7 +-
>   include/configs/theadorable.h          |   3 -
>   include/configs/turris_omnia.h         |   7 -
>   include/configs/x530.h                 |   3 -
>   include/spl.h                          |   1 +
>   scripts/config_whitelist.txt           |   1 -
>   tools/Makefile                         |   8 -
>   tools/kwbimage.c                       | 437 ++++++++++++++++++-------
>   tools/kwbimage.h                       |  54 ++-
>   tools/kwboot.c                         |  24 +-
>   43 files changed, 651 insertions(+), 302 deletions(-)
>   delete mode 100644 board/gdsys/a38x/spl.c
> 


Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list