[U-Boot] [RFC PATCH 0/22] RFC: image: Reduce code duplication and refactor
Simon Glass
sjg at chromium.org
Thu Jan 10 15:58:03 CET 2013
In creating a new feature[*] I found that the image code includes quite
a bit of duplication in places. In particular the code to load a kernel,
FDT and ramdisk is all fairly similar, but subtly different.
This series introduces a new function fit_image_load() which loads an image
from a FIT and supports the various features. For the bootstage updates,
these are standardised so that each file has its own range and the events
within that range have corresponding numbers. This means that the boot
progress numbers will change slightly with this series.
The image.c file is still very long. Rather than perpetuate the #ifdefs
in the code I have split out the image.c code that is dependent on
CONFIG_OF_LIBFDT into image-fdt.c.
Several architectures have their own way of setting up a ramdisk and FDT
for booting. An attempt is made here to unify these by providing a function
image_setup_linux() to handle the overall task, and image_setup_fdt() to set
up the FDT.
For ARM, the bootm code is a maze of #ifdefs, which means that many boards
compile the code differently and it takes longer to detect breakages. To get
around this, some defines are added to ARM's bootm.h to permit the use of
if() instead of #ifdef, making use of the compiler's dead code elimination.
Also this series introduces a very basic test of image loading using sandbox.
Some patches add bootm support for sandbox, and also a 'sb save' command to
save memory to a host file (used to check that the bootm actually worked).
A test program for sandbox is added as a basic sanity check of image loading
as performed by bootm.
This series depends on the verified boot series since it builds on the
clean-up in that. You can get this series from:
http://git.denx.de/u-boot-x86.git
branch name 'image'.
* The new feature is support for FIT booting on x86, will get back to this
later.
Simon Glass (22):
sandbox: Allow -c argument to provide a command list
sandbox: Support 'source' command
fs: Add support for saving data to filesystems
sandbox: fs: Add support for saving files to host filesystem
image: Split libfdt code into image-fdt.c
image: Add device tree setup to image library
arm: Refactor bootm to reduce #ifdefs
arm: Use image_setup_linux() instead of local code
powerpc: Use image_setup_linux() instead of local code
m68k: Use image_setup_linux() instead of local code
sparc: Use image_setup_linux() instead of local code
bootstage: Introduce sub-IDs for use with image loading
mkimage: Add map_sysmem() and IH_ARCH_DEFAULT to simplfy building
image: Introduce fit_image_load() to load images from FITs
image: Use fit_image_load() to load ramdisk
image: Use fit_image_load() to load FDT
sandbox: Adjust bootm command to work with sandbox
image: Use fit_image_load() to load kernel
sandbox: image: Adjust FIT image printing to work with sandbox
bootstage: Remove unused entries related to kernel/ramdisk/fdt load
sandbox: image: Create a test for loading FIT images
WIP: sandbox: config: Remove boot command
arch/arm/include/asm/bootm.h | 54 +++-
arch/arm/include/asm/u-boot-arm.h | 2 -
arch/arm/lib/Makefile | 1 +
arch/arm/lib/bootm-fdt.c | 52 +++
arch/arm/lib/bootm.c | 145 +-------
arch/m68k/lib/bootm.c | 15 +-
arch/powerpc/lib/bootm.c | 84 +-----
arch/sandbox/cpu/start.c | 2 +-
arch/sparc/lib/bootm.c | 13 +-
common/Makefile | 1 +
common/cmd_bootm.c | 182 ++--------
common/cmd_sandbox.c | 18 +-
common/cmd_source.c | 11 +-
common/image-fdt.c | 512 +++++++++++++++++++++++++
common/image-fit.c | 293 +++++++++++-----
common/image.c | 738 ++++---------------------------------
fs/fs.c | 75 ++++
fs/sandbox/sandboxfs.c | 33 ++
include/bootstage.h | 51 ++--
include/common.h | 9 +
include/configs/sandbox.h | 1 -
include/fdt_support.h | 2 -
include/fs.h | 2 +
include/image.h | 145 +++++++-
include/lmb.h | 2 -
include/sandboxfs.h | 1 +
test/image/test-fit.py | 422 +++++++++++++++++++++
tools/mkimage.h | 12 +
28 files changed, 1674 insertions(+), 1204 deletions(-)
create mode 100644 arch/arm/lib/bootm-fdt.c
create mode 100644 common/image-fdt.c
create mode 100755 test/image/test-fit.py
--
1.7.7.3
More information about the U-Boot
mailing list