[Buildroot] [PATCH 1/1] boot/uboot: add support for i.MX28 NAND format

Arnout Vandecappelle arnout at mind.be
Sun Mar 22 14:46:13 UTC 2015


 Hi Joerg,

 Since this patch interacts badly with the SD card patches, it's better to
rebase it on top of that series and repost the entire series. I started to do
that but since I can't really test the result I decided not to.

On 19/03/15 10:02, Jörg Krause wrote:
> Allow to generate 'u-boot.nand', Freescale i.MX28 SB format with a header
> for booting from NAND flash.
> 
> There are two possibilities when preparing an image writable to NAND flash:
> 1) The NAND was not written at all yet or the BCB (Boot Control Blocks) is
>    broken. In this case, the NAND image 'u-boot.nand' needs to written.
> 2) The NAND flash was already written with a good BCB. This applies after
>    'u-boot.nand' was correctly written. There is no need to write the BCB
>    again. In this case, the bootloader can be upgraded by writing 'u-boot.sb'.
> 
> To satisfy both cases 'u-boot.nand' as well as the make target 'u-boot.sb' are
> copied to the binaries directory. 

 [nit] Trailing space

> 
> mxsboot for NAND images needs all three parameters typed in as integer values
> (hex values do not work). The default values choosen are typical sizes for a
> NAND flash.
> 
> For more information see:
> http://www.denx-cs.de/doku/?q=m28evkrunuboot
> 
> This patch is motivated by
> "[PATCH 1/2] boot/uboot: add support for i.MX28 SD format"
> http://patchwork.ozlabs.org/patch/451565/
> 
> Signed-off-by: Jörg Krause <joerg.krause at embedded.rocks>
> ---
>  boot/uboot/Config.in | 43 +++++++++++++++++++++++++++++++++++++++++++
>  boot/uboot/uboot.mk  | 11 +++++++++++
>  2 files changed, 54 insertions(+)
> 
> diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
> index 03e6acc..aaf9dc6 100644
> --- a/boot/uboot/Config.in
> +++ b/boot/uboot/Config.in
> @@ -117,6 +117,49 @@ config BR2_TARGET_UBOOT_FORMAT_SB
>  	depends on BR2_arm
>  	bool "u-boot.sb"
>  
> +config BR2_TARGET_UBOOT_FORMAT_NAND
> +	depends on BR2_arm
> +	bool "u-boot.nand"
> +	help
> +	  This is Freescale i.MX28 SB format, with a header for booting from an

 a NAND flash. And wrapping at 72 columns.

> +	  NAND flash.
> +
> +	  U-boot includes an mxsboot tool to generate this format, starting
> +	  from v2011.12.
> +
> +	  See doc/README.mxs.

 Same comment about the location of the document.

 Add an explanation like in the commit log, so the user knows why he gets two
images.

> +
> +if BR2_TARGET_UBOOT_FORMAT_NAND
> +
> +config BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE
> +	int "NAND page size"
> +	default 2048
> +	help
> +	  The NAND page size of the targets NAND flash in bytes and as an
> +	  integer value.

 Perhaps explicitly mention it has to be decimal: "as a decimal integer value".

> +
> +	  The value provided here is passed to the -w option of mxsboot.
> +
> +config BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE
> +	int "NAND OOB size"
> +	default 64
> +	help
> +	  The NAND OOB size of the targets NAND flash in bytes and as an
> +	  integer value.
> +
> +	  The value provided here is passed to the -o option of mxsboot.
> +
> +config BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE
> +	int "NAND erase size"
> +	default 131072
> +	help
> +	  The NAND erase size of the targets NAND flash in bytes and as an

 erase -> eraseblock

> +	  integer value.
> +
> +	  The value provided here is passed to the -e option of mxsboot.
> +
> +endif
> +
>  config BR2_TARGET_UBOOT_FORMAT_CUSTOM
>  	bool "Custom (specify below)"
>  	help
> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> index a9ba054..15c5a84 100644
> --- a/boot/uboot/uboot.mk
> +++ b/boot/uboot/uboot.mk
> @@ -49,6 +49,9 @@ else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y)
>  UBOOT_BIN = u-boot.sb
>  UBOOT_MAKE_TARGET = $(UBOOT_BIN)
>  UBOOT_DEPENDENCIES += host-elftosb
> +else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)
> +UBOOT_BIN = u-boot.nand
> +UBOOT_MAKE_TARGET = u-boot.sb

 Dependency on host-elftosb

>  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)
>  UBOOT_BIN = $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))
>  else
> @@ -116,6 +119,12 @@ define UBOOT_BUILD_CMDS
>  	$(TARGET_CONFIGURE_OPTS) 	\
>  		$(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) 		\
>  		$(UBOOT_MAKE_TARGET)
> +	$(if $(BR2_TARGET_UBOOT_FORMAT_NAND),
> +		$(@D)/tools/mxsboot \
> +			-w $(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE)	\
> +			-o $(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE)	\
> +			-e $(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE)	\
> +			nand $(@D)/u-boot.sb $(@D)/u-boot.nand)
>  endef
>  
>  define UBOOT_BUILD_OMAP_IFT
> @@ -125,6 +134,8 @@ endef
>  
>  define UBOOT_INSTALL_IMAGES_CMDS
>  	cp -dpf $(@D)/$(UBOOT_BIN) $(BINARIES_DIR)/
> +	$(if $(BR2_TARGET_UBOOT_FORMAT_NAND),
> +		cp -dpf $(@D)/$(UBOOT_MAKE_TARGET) $(BINARIES_DIR))
>  	$(if $(BR2_TARGET_UBOOT_SPL),
>  		cp -dpf $(@D)/$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)) $(BINARIES_DIR)/)

 I think it's time to do some refactoring so UBOOT_BIN can be multiple files.
Something like:

	cp -dpf $(addprefix $(@D),$(UBOOT_BIN)) $(BINARIES_DIR)/

 But that should be in a separate follow-up (or preparatory) patch.


 Regards,
 Arnout


>  	$(if $(BR2_TARGET_UBOOT_ENVIMAGE),
> 


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F


More information about the buildroot mailing list