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. > >> >>> >>> 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.*) >>>> + } >>>> +} >>>> >>> -- - Daniel
signature.asc
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot