
Hi Michal,
On Mon, 7 Sep 2020 at 07:02, Michal Simek michal.simek@xilinx.com wrote:
Hi,
On 06. 09. 20 2:18, Simon Glass wrote:
Hi Samuel,
On Sat, 5 Sep 2020 at 17:10, Samuel Holland samuel@sholland.org wrote:
On 9/1/20 6:14 AM, Simon Glass wrote:
At present 64-bit sunxi boards use the Makefile to create a FIT, using USE_SPL_FIT_GENERATOR. This is deprecated.
Update sunxi to use binman instead.
Signed-off-by: Simon Glass sjg@chromium.org
(no changes since v2)
Changes in v2:
- Add a 'fit-fdt-list' property
- Fix 'board' typo in commit message
Kconfig | 3 +- Makefile | 18 ++-------- arch/arm/dts/sunxi-u-boot.dtsi | 61 +++++++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 19 deletions(-)
diff --git a/Kconfig b/Kconfig index 883e3f71d01..837b2f517ae 100644 --- a/Kconfig +++ b/Kconfig @@ -659,12 +659,11 @@ config SPL_FIT_SOURCE
config USE_SPL_FIT_GENERATOR bool "Use a script to generate the .its script"
default y if SPL_FIT
default y if SPL_FIT && !ARCH_SUNXI
Now `make u-boot.itb` doesn't work.
u-boot.itb is helpful to have because, with CONFIG_OF_LIST, it can be shared across all boards of a platform. Only SPL is board-specific (on arm64 sunxi, at least).
It is generated, just with a different filename.
Is there a way to make binman also write the FIT without the SPL? Would that require duplicating the whole binman node?
Yes it would. We could get more complicated and allow an image to build on another perhaps. I'm not sure what is easiest here.
config SPL_FIT_GENERATOR string ".its file generator script for U-Boot FIT image" depends on USE_SPL_FIT_GENERATOR
default "board/sunxi/mksunxi_fit_atf.sh" if SPL_LOAD_FIT && ARCH_SUNXI default "arch/arm/mach-rockchip/make_fit_atf.py" if SPL_LOAD_FIT && ARCH_ROCKCHIP default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP default "arch/riscv/lib/mkimage_fit_opensbi.sh" if SPL_LOAD_FIT && RISCV
diff --git a/Makefile b/Makefile index 5b4e60496d6..65024c74089 100644 --- a/Makefile +++ b/Makefile @@ -923,11 +923,6 @@ INPUTS-$(CONFIG_REMAKE_ELF) += u-boot.elf INPUTS-$(CONFIG_EFI_APP) += u-boot-app.efi INPUTS-$(CONFIG_EFI_STUB) += u-boot-payload.efi
-# Build a combined spl + u-boot image for sunxi -ifeq ($(CONFIG_ARCH_SUNXI)$(CONFIG_ARM64)$(CONFIG_SPL),yyy) -INPUTS-y += u-boot-sunxi-with-spl.bin -endif
# Generate this input file for binman ifeq ($(CONFIG_SPL),) INPUTS-$(CONFIG_ARCH_MEDIATEK) += u-boot-mtk.bin @@ -1024,13 +1019,9 @@ PHONY += inputs inputs: $(INPUTS-y)
all: .binman_stamp inputs -# Hack for sunxi which doesn't have a proper binman definition for -# 64-bit boards -ifneq ($(CONFIG_ARCH_SUNXI)$(CONFIG_ARM64),yy) ifeq ($(CONFIG_BINMAN),y) $(call if_changed,binman) endif -endif
# Timestamp file to make sure that binman always runs .binman_stamp: FORCE @@ -1336,6 +1327,8 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \ $(if $(BINMAN_VERBOSE),-v$(BINMAN_VERBOSE)) \ build -u -d u-boot.dtb -O . -m --allow-missing \ -I . -I $(srctree) -I $(srctree)/board/$(BOARDDIR) \
-I arch/$(ARCH)/dts -a of-list=$(CONFIG_OF_LIST) \
-a atf-bl31-path=${BL31} \ $(BINMAN_$(@F))
OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex @@ -1625,13 +1618,6 @@ u-boot-x86-reset16.bin: u-boot FORCE
endif # CONFIG_X86
-ifneq ($(CONFIG_ARCH_SUNXI),) -ifeq ($(CONFIG_ARM64),y) -u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.itb FORCE
$(call if_changed,cat)
-endif -endif
Now `make u-boot-sunxi-with-spl.bin` doesn't work.
This is less of an issue, but still probably breaks some scripts. It breaks mine, at least.
Why do you specify a target? Doesn't it build the file without the target?
One problem with buildman is that there is no definitely of what files it will produce when run, or at least there is, but it is in the binman description itself.
This means that 'make clean' doesn't work fully, for example. I can think of a few ways to implement this. One would be to put a list of target files into a text file and have 'make clean' use that. We could also have an option to tell binman to produce a list of files it would generate if run. Then we might be able to tell binman to generate a particular file.
Why not just to generate all binman images to specific folder?
We need to put at least some of them in the build directory. We could perhaps have a 'binman' subdir of that where intermediate images go.
Regards, SImon