From patchwork Sun Mar 29 16:10:46 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=C3=B6rg_Krause?= X-Patchwork-Id: 455807 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137]) by ozlabs.org (Postfix) with ESMTP id D88D11400DE for ; Mon, 30 Mar 2015 03:11:04 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 50064A28F3; Sun, 29 Mar 2015 16:11:03 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V7QbZtXmrB_s; Sun, 29 Mar 2015 16:11:02 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id DD0C3A2313; Sun, 29 Mar 2015 16:11:01 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 8A2C91C2982 for ; Sun, 29 Mar 2015 16:11:00 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 85E52A2313 for ; Sun, 29 Mar 2015 16:11:00 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id L8zTjB23TBQS for ; Sun, 29 Mar 2015 16:10:58 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mx02.posteo.de (mx02.posteo.de [89.146.194.165]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 7F750A14EF for ; Sun, 29 Mar 2015 16:10:58 +0000 (UTC) Received: from dovecot03.posteo.de (unknown [185.67.36.28]) by mx02.posteo.de (Postfix) with ESMTPS id BC1B825A3DED; Sun, 29 Mar 2015 18:10:54 +0200 (CEST) Received: from mail.posteo.de (localhost [127.0.0.1]) by dovecot03.posteo.de (Postfix) with ESMTPSA id 3lFMNF6P6Xz5vN3; Sun, 29 Mar 2015 18:10:53 +0200 (CEST) Received: from nzxt.fritz.box (nzxt.localdomain [192.168.178.46]) (Authenticated sender: joerg.krause@embedded.rocks) by embedded.rocks (Postfix) with ESMTPSA id CF553980166; Sun, 29 Mar 2015 18:10:52 +0200 (CEST) From: =?UTF-8?q?J=C3=B6rg=20Krause?= To: buildroot@buildroot.org Date: Sun, 29 Mar 2015 18:10:46 +0200 Message-Id: <1427645447-2419-1-git-send-email-joerg.krause@embedded.rocks> X-Mailer: git-send-email 2.3.4 MIME-Version: 1.0 Subject: [Buildroot] [PATCH 1/1] boot/uboot: add support for i.MX28 NAND format X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Allow to generate 'u-boot.nand', Freescale i.MX28 BootStream format (.sb) 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. 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 Commit Note: This patch is based on top of "[PATCH v2 1/2] boot/uboot: add support for i.MX28 SD format" http://patchwork.ozlabs.org/patch/453116/ --- Changes v1 -> v2 (all suggested by Arnout Vandecappelle): - Rebase on top of boot/uboot: add support for i.MX28 SD format http://patchwork.ozlabs.org/patch/453116/ - Remove trailing whitespace - Fix typo and wrapping - Add an explanation like in the commit log to the help text, so the user knows why he gets two images (u-boot.nand and u-boot.sb) in the binaries directory - Explicitly mention in mxsboots options help text that the value has to be "a decimal integer value" - erase -> eraseblock in BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE - Add dependency on host-elftosb Signed-off-by: Jörg Krause Cc: Arnout Vandecappelle Cc: Vincent Stehlé --- boot/uboot/Config.in | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ boot/uboot/uboot.mk | 12 +++++++++++ 2 files changed, 69 insertions(+) diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in index 3f39ee8..1b3c17c 100644 --- a/boot/uboot/Config.in +++ b/boot/uboot/Config.in @@ -129,6 +129,63 @@ config BR2_TARGET_UBOOT_FORMAT_SD See doc/README.mxs (or doc/README.mx28_common before 2013.07) +config BR2_TARGET_UBOOT_FORMAT_NAND + depends on BR2_arm + bool "u-boot.nand" + help + This is Freescale i.MX28 BootStream format (.sb), with a header + for booting from a NAND flash. + + U-boot includes an mxsboot tool to generate this format, + starting from 2011.12. + + 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, the 'u-boot.nand' image obtained from + mxsboot as well as the U-Boot make target 'u-boot.sb' are copied + to the binaries directory. + + See doc/README.mxs (or doc/README.mx28_common before 2013.07) + +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 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 as a + decimal 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 eraseblock size of the targets NAND flash in bytes as + a decimal 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 630619a..d9f4398 100644 --- a/boot/uboot/uboot.mk +++ b/boot/uboot/uboot.mk @@ -54,6 +54,10 @@ else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y) UBOOT_BIN = u-boot.sd UBOOT_MAKE_TARGET = u-boot.sb UBOOT_DEPENDENCIES += host-elftosb +else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y) +UBOOT_BIN = u-boot.nand +UBOOT_MAKE_TARGET = u-boot.sb +UBOOT_DEPENDENCIES += host-elftosb else ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y) UBOOT_BIN = $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME)) else @@ -123,6 +127,12 @@ define UBOOT_BUILD_CMDS $(UBOOT_MAKE_TARGET) $(if $(BR2_TARGET_UBOOT_FORMAT_SD), $(@D)/tools/mxsboot sd $(@D)/u-boot.sb $(@D)/u-boot.sd) + $(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 @@ -132,6 +142,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)/) $(if $(BR2_TARGET_UBOOT_ENVIMAGE),