Hi, El 15/04/2017 a las 19:19, Álvaro Fernández Rojas escribió: > > > El 14/04/2017 a las 21:05, Daniel Schwierzeck escribió: >> >> >> Am 13.04.2017 um 17:52 schrieb Álvaro Fernández Rojas: >>> CFE supports loading .elf images instead of raw binaries. >>> >>> Signed-off-by: Álvaro Fernández Rojas <nolt...@gmail.com> >>> --- >>> Makefile | 22 ++++++++++++++++++++++ >>> arch/mips/cpu/u-boot-elf.lds | 10 ++++++++++ >>> 2 files changed, 32 insertions(+) >>> create mode 100644 arch/mips/cpu/u-boot-elf.lds >>> >>> diff --git a/Makefile b/Makefile >>> index 09b597d..667b5f2 100644 >>> --- a/Makefile >>> +++ b/Makefile >>> @@ -568,6 +568,15 @@ ifndef LDSCRIPT >>> endif >>> endif >>> >>> +ifndef LDSCRIPT_ELF >>> + ifeq ($(wildcard $(LDSCRIPT_ELF)),) >>> + LDSCRIPT_ELF := $(srctree)/$(CPUDIR)/u-boot-elf.lds >>> + endif >>> + ifeq ($(wildcard $(LDSCRIPT_ELF)),) >>> + LDSCRIPT_ELF := $(srctree)/arch/$(ARCH)/cpu/u-boot-elf.lds >>> + endif >>> +endif >> >> could you try to build the ELF binary without a custom linker script? I >> think the built-in one should work too. >> >>> + >>> else >>> # Dummy target needed, because used as prerequisite >>> include/config/auto.conf: ; >>> @@ -786,6 +795,7 @@ ifneq ($(CONFIG_SPL_TARGET),) >>> ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) >>> endif >>> ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf >>> +ALL-$(CONFIG_ARCH_BMIPS) += u-boot-bmips.elf >>> ALL-$(CONFIG_EFI_APP) += u-boot-app.efi >>> ALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi >>> >>> @@ -1192,6 +1202,15 @@ u-boot.elf: u-boot.bin >>> --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \ >>> -Ttext=$(CONFIG_SYS_TEXT_BASE) >>> >>> +# Rules to link u-boot-bmips >>> +quiet_cmd_u-boot-bmips ?= LD $@ >>> + cmd_u-boot-bmips ?= $(LD) -e startup -T u-boot-elf.lds \ >>> + -Ttext $(CONFIG_SYS_TEXT_BASE) -o $@ u-boot-bmips.o >>> + >>> +u-boot-bmips.elf: u-boot.bin u-boot-elf.lds >>> + $(Q)$(LD) -r -b binary --oformat elf32-tradbigmips -o u-boot-bmips.o $< >>> + $(call if_changed,u-boot-bmips) >> >> could you try to generate the ELF binary like in the existing rule >> above? If that works, we could refactor the generic rule to remove the >> hard-coded aarch64 flags. If not, move this code and the >> "ALL-$(CONFIG_ARCH_BMIPS) += u-boot-bmips.elf" to arch/mips/Makefile > Sure, I will try and see if it works. It works, but it has to be changed: u-boot.elf: u-boot.bin @$(OBJCOPY) -B mips -I binary -O elf32-tradbigmips \ $< u-boot-elf.o @$(LD) u-boot-elf.o -o $@ \ --defsym=__start=$(CONFIG_SYS_TEXT_BASE) \ -Ttext=$(CONFIG_SYS_TEXT_BASE) Changes: 1) __start symbol instead of _start 2) mips instead of aarch64 3) elf32-tradbigmips instead of elf64-littleaarch64
> >> >> Also don't forget to add new binaries to .gitignore and the Makefile >> clean targets. > Right, my fault :). > >> >>> + >>> # Rule to link u-boot >>> # May be overridden by arch/$(ARCH)/config.mk >>> quiet_cmd_u-boot__ ?= LD $@ >>> @@ -1340,6 +1359,9 @@ cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) >>> $(LDPPFLAGS) \ >>> u-boot.lds: $(LDSCRIPT) prepare FORCE >>> $(call if_changed_dep,cpp_lds) >>> >>> +u-boot-elf.lds: $(LDSCRIPT_ELF) prepare >>> + $(call if_changed_dep,cpp_lds) >>> + >>> spl/u-boot-spl.bin: spl/u-boot-spl >>> @: >>> spl/u-boot-spl: tools prepare \ >>> diff --git a/arch/mips/cpu/u-boot-elf.lds b/arch/mips/cpu/u-boot-elf.lds >>> new file mode 100644 >>> index 0000000..db0bb46 >>> --- /dev/null >>> +++ b/arch/mips/cpu/u-boot-elf.lds >>> @@ -0,0 +1,10 @@ >>> +OUTPUT_ARCH(mips) >>> +SECTIONS { >>> + .text : { >>> + startup = .; >>> + *(.text) >>> + *(.text.*) >>> + *(.data) >>> + *(.data.*) >>> + } >>> +} >>> >> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot