Patchwork SPARC: added U-Boot build target: uImage

login
register
mail settings
Submitter Daniel Hellstrom
Date Jan. 5, 2011, 10:42 a.m.
Message ID <1294224160-7333-2-git-send-email-daniel@gaisler.com>
Download mbox | patch
Permalink /patch/77584/
State Changes Requested
Delegated to: David Miller
Headers show

Comments

Daniel Hellstrom - Jan. 5, 2011, 10:42 a.m.
This is only for LEON as u-boot for SPARC only supports LEON.

Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
---
 arch/sparc/Makefile      |    3 ++-
 arch/sparc/boot/Makefile |   36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletions(-)
Sam Ravnborg - Jan. 5, 2011, 7:19 p.m.
Hi Daniel.

On Wed, Jan 05, 2011 at 11:42:40AM +0100, Daniel Hellstrom wrote:
> This is only for LEON as u-boot for SPARC only supports LEON.
> 
> Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
> ---
>  arch/sparc/Makefile      |    3 ++-
>  arch/sparc/boot/Makefile |   36 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 38 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
> index 113225b..012d289 100644
> --- a/arch/sparc/Makefile
> +++ b/arch/sparc/Makefile
> @@ -88,7 +88,7 @@ boot := arch/sparc/boot
>  # Default target
>  all: zImage
>  
> -image zImage tftpboot.img vmlinux.aout: vmlinux
> +image zImage uImage tftpboot.img vmlinux.aout: vmlinux
>  	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
>  
>  archclean:
> @@ -102,6 +102,7 @@ ifeq ($(ARCH),sparc)
>  define archhelp
>    echo  '* image        - kernel image ($(boot)/image)'
>    echo  '* zImage       - stripped kernel image ($(boot)/zImage)'
> +  echo  '  uImage       - U-Boot SPARC32/LEON Image'
>    echo  '  tftpboot.img - image prepared for tftp'
>  endef
>  else
> diff --git a/arch/sparc/boot/Makefile b/arch/sparc/boot/Makefile
> index 97e3feb..9574958 100644
> --- a/arch/sparc/boot/Makefile
> +++ b/arch/sparc/boot/Makefile
> @@ -5,6 +5,7 @@
>  
>  ROOT_IMG	:= /usr/src/root.img
>  ELFTOAOUT	:= elftoaout
> +MKIMAGE 	:= $(srctree)/scripts/mkuboot.sh
>  
>  hostprogs-y	:= piggyback_32 piggyback_64 btfixupprep
>  targets		:= tftpboot.img btfix.o btfix.S image zImage vmlinux.aout
> @@ -90,5 +91,40 @@ $(obj)/tftpboot.img: $(obj)/image $(obj)/piggyback_64 System.map $(ROOT_IMG) FOR
>  $(obj)/vmlinux.aout: vmlinux FORCE
>  	$(call if_changed,elftoaout)
>  	@echo '  kernel: $@ is ready'
> +else
> +
> +# The following lines make a readable image for U-Boot.
> +#  uImage   - Binary file read by U-boot
> +#  uImage.o - object file of uImage for loading with a
> +#             flash programmer understanding ELF.
> +
> +OBJCOPYFLAGS_image.bin := -S -O binary -R .note -R .comment
> +$(obj)/image.bin: $(obj)/image FORCE
> +	$(call if_changed,objcopy)
> +
> +$(obj)/image.gz: $(obj)/image.bin
> +	$(call if_changed,gzip)
> +
> +# Start of Main memory which this Linux kernel will be loaded to.
> +ifndef UIMAGE_LOADADDR
> +UIMAGE_LOADADDR=0x40004000
>  endif
>

Rather than hardcoding such addresses in the Makefile could
we come up with something so we get board support
included in the KConfig files?

I for once would love to be able to select
"GR-LEON4-ITX" in Kconfig and then everything is
set correct up concerning LOADADDR for uimage.

Same goes for the start address which is hardcoded to 0xf0004000.

I looked briefly at the other archs but did not find a good one
to copy this from.

  
> +# The first sector after the U-Boot image (512k). Override this accoring to
> +# your u-boot binary size and FLASH block size.
> +ifndef UIMAGE_FLASHADDR
> +UIMAGE_FLASHADDR=0x00080000
> +endif
> +
> +quiet_cmd_uimage = UIMAGE  $@
> +      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sparc -O linux -T kernel \
> +               -C gzip -a $(UIMAGE_LOADADDR) -e 0xf0004000 -n 'Linux-$(KERNELRELEASE)' \
> +               -d $< $@
> +
> +targets += uImage
> +$(obj)/uImage: $(obj)/image.gz
> +	$(call if_changed,uimage)
> +	sparc-linux-ld -Tdata $(UIMAGE_FLASHADDR) -r -b binary arch/sparc/boot/uImage -o arch/sparc/boot/uImage.o
> +	@echo '  Image $@ is ready'

What is the purpose of uImage.o?
At least sh does not have it - but thay have a lot of other U-boot targets.
And can we fix is so we get a nice display when the command is executed?

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
index 113225b..012d289 100644
--- a/arch/sparc/Makefile
+++ b/arch/sparc/Makefile
@@ -88,7 +88,7 @@  boot := arch/sparc/boot
 # Default target
 all: zImage
 
-image zImage tftpboot.img vmlinux.aout: vmlinux
+image zImage uImage tftpboot.img vmlinux.aout: vmlinux
 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 
 archclean:
@@ -102,6 +102,7 @@  ifeq ($(ARCH),sparc)
 define archhelp
   echo  '* image        - kernel image ($(boot)/image)'
   echo  '* zImage       - stripped kernel image ($(boot)/zImage)'
+  echo  '  uImage       - U-Boot SPARC32/LEON Image'
   echo  '  tftpboot.img - image prepared for tftp'
 endef
 else
diff --git a/arch/sparc/boot/Makefile b/arch/sparc/boot/Makefile
index 97e3feb..9574958 100644
--- a/arch/sparc/boot/Makefile
+++ b/arch/sparc/boot/Makefile
@@ -5,6 +5,7 @@ 
 
 ROOT_IMG	:= /usr/src/root.img
 ELFTOAOUT	:= elftoaout
+MKIMAGE 	:= $(srctree)/scripts/mkuboot.sh
 
 hostprogs-y	:= piggyback_32 piggyback_64 btfixupprep
 targets		:= tftpboot.img btfix.o btfix.S image zImage vmlinux.aout
@@ -90,5 +91,40 @@  $(obj)/tftpboot.img: $(obj)/image $(obj)/piggyback_64 System.map $(ROOT_IMG) FOR
 $(obj)/vmlinux.aout: vmlinux FORCE
 	$(call if_changed,elftoaout)
 	@echo '  kernel: $@ is ready'
+else
+
+# The following lines make a readable image for U-Boot.
+#  uImage   - Binary file read by U-boot
+#  uImage.o - object file of uImage for loading with a
+#             flash programmer understanding ELF.
+
+OBJCOPYFLAGS_image.bin := -S -O binary -R .note -R .comment
+$(obj)/image.bin: $(obj)/image FORCE
+	$(call if_changed,objcopy)
+
+$(obj)/image.gz: $(obj)/image.bin
+	$(call if_changed,gzip)
+
+# Start of Main memory which this Linux kernel will be loaded to.
+ifndef UIMAGE_LOADADDR
+UIMAGE_LOADADDR=0x40004000
 endif
 
+# The first sector after the U-Boot image (512k). Override this accoring to
+# your u-boot binary size and FLASH block size.
+ifndef UIMAGE_FLASHADDR
+UIMAGE_FLASHADDR=0x00080000
+endif
+
+quiet_cmd_uimage = UIMAGE  $@
+      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sparc -O linux -T kernel \
+               -C gzip -a $(UIMAGE_LOADADDR) -e 0xf0004000 -n 'Linux-$(KERNELRELEASE)' \
+               -d $< $@
+
+targets += uImage
+$(obj)/uImage: $(obj)/image.gz
+	$(call if_changed,uimage)
+	sparc-linux-ld -Tdata $(UIMAGE_FLASHADDR) -r -b binary arch/sparc/boot/uImage -o arch/sparc/boot/uImage.o
+	@echo '  Image $@ is ready'
+
+endif