Hi, El 15/04/2017 a las 20:54, Daniel Schwierzeck escribió: > > > Am 15.04.2017 um 20:10 schrieb Álvaro Fernández Rojas: >> 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 > > 2) and 3) are expected, that's what could be fixed with a small > refactoring. But why --defsym=__start? The U-Boot entry point is _start. --defsym=_start throws the following error: mips-openwrt-linux-ld.bfd: warning: cannot find entry symbol __start; defaulting to 0000000080010000 However, --defsym=__start throws no errors...
> >> >>> >>>> >>>> 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