[Buildroot] [PATCH] [RFC] Add a LOADADDR= option when building uImage

Daniel Price daniel.price at gmail.com
Tue Mar 12 08:39:20 UTC 2013


Julien,

I would appreciate this patch because I spent a lot of time
discovering LOADADDR and this would have really helped me.  My
suggestions:

1) Should this variable be exposed only for ARM for now?  ("depends on
BR2_arm || BR2_armeb")

2) Should this variable only be exposed for linux versions >= 3.7?
3.7 is when CONFIG_ARCH_MULTIPLATFORM appears.

3) The description in the help text might not help someone new to this
topic (like me).  I would suggest something like:

"If your ARM system's kernel is configured via the new (3.7+)
multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y in your linux
kernel .config), then it is necessary to specify a kernel load address
for the uImage.  This should be a hexadecimal string beginning with
0x.  Example setting: 0x00008000."

Thanks and best of luck,

       -dp


On Mon, Mar 11, 2013 at 3:35 AM,  <julien.boibessot at free.fr> wrote:
> From: Julien Boibessot <julien.boibessot at armadeus.com>
>
> This seems mandatory in recent Linux kernels configured with ARCH_MULTIPLATFORM
> (well at least on ARM/i.MX).
> If LOADADDR variable is not set when building multi-arch uImage then a dummy
> loadaddr is used, that prevent this image to boot in U-Boot (2012.04 in my
> case).
> Anyone else who need the same fix ?
>
> Signed-off-by: Julien Boibessot <julien.boibessot at armadeus.com>
> ---
>  linux/Config.in |    8 ++++++++
>  linux/linux.mk  |    4 ++++
>  2 files changed, 12 insertions(+), 0 deletions(-)
>
> diff --git a/linux/Config.in b/linux/Config.in
> index 94ce951..c582439 100644
> --- a/linux/Config.in
> +++ b/linux/Config.in
> @@ -213,6 +213,14 @@ config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
>           Specify the kernel make target to build the kernel that you
>           need.
>
> +config BR2_LINUX_KERNEL_UIMAGE_LOADADDR
> +       string "loadaddr for uImage"
> +       depends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE
> +       help
> +         When configured for multi-arch support, it is mandatory to define
> +         LOADADDR=0x... when asking recent kernels to generate a uImage.
> +         Let this option empty if your kernel is single-arch only.
> +
>  config BR2_LINUX_KERNEL_DTS_SUPPORT
>         bool "Device tree support"
>         help
> diff --git a/linux/linux.mk b/linux/linux.mk
> index 0352acd..361ce3c 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -95,6 +95,10 @@ LINUX_IMAGE_NAME=vmlinuz
>  endif
>  endif
>
> +ifeq ($(LINUX_IMAGE_NAME),uImage)
> +LINUX_MAKE_FLAGS+=LOADADDR=$(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR))
> +endif
> +
>  ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
>  LINUX_IMAGE_TARGET=zImage
>  else
> --
> 1.7.5.4
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot



--
Daniel.Price at gmail.com; Twitter: @danielbprice



More information about the buildroot mailing list