[U-Boot] [PATCH v2 2/3] arm:at91: enable ROM loadable atmel image
Andreas Bießmann
andreas.devel at googlemail.com
Fri May 16 11:59:14 CEST 2014
For sama5d3xek we need to modify the SPL image for correct detection by ROM
code.
Signed-off-by: Andreas Bießmann <andreas.devel at googlemail.com>
---
Changes in v2:
* add -n switch to mkimage for PMECC type NAND and CONFIG_SYS_NANDFLASH
arch/arm/cpu/armv7/at91/config.mk | 10 ++++++++++
doc/README.atmel_pmecc | 30 ++++++++++++++++++++++++++++++
spl/Makefile | 18 ++++++++++++++++++
3 files changed, 58 insertions(+)
create mode 100644 arch/arm/cpu/armv7/at91/config.mk
diff --git a/arch/arm/cpu/armv7/at91/config.mk b/arch/arm/cpu/armv7/at91/config.mk
new file mode 100644
index 0000000..09eab70
--- /dev/null
+++ b/arch/arm/cpu/armv7/at91/config.mk
@@ -0,0 +1,10 @@
+#
+# Copyright (C) 2014, Andreas Bießmann <andreas.devel at googlemail.com>
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+ifdef CONFIG_SPL_BUILD
+ALL-y += boot.bin
+else
+ALL-y += u-boot.img
+endif
diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
index cf8373b..5a93123 100644
--- a/doc/README.atmel_pmecc
+++ b/doc/README.atmel_pmecc
@@ -27,3 +27,33 @@ Take AT91SAM9X5EK as an example, the board definition file likes:
#define CONFIG_ATMEL_NAND_HW_PMECC 1
#define CONFIG_PMECC_CAP 2
#define CONFIG_PMECC_SECTOR_SIZE 512
+
+How to enable PMECC header for direct programmable boot.bin
+-----------------------------------------------------------
+2014-05-15 Andreas Bießmann <andreas.devel at googlemail.com>
+
+The usual way to program SPL into NAND flash is to use the SAM-BA Atmel tool.
+This however is often not usable when doing field updates. To be able to
+program a SPL binary into NAND flash we need to add the PMECC header to the
+binary before. Chapter '12.4.4.1 NAND Flash Boot: NAND Flash Detection' in
+sama5d3 SoC spec (as of 03. April 2014). We have a new image type added to
+mkimage to generate this PMECC header and integrated into the build process of
+SPL.
+The required parameters in board configuration header are as follows:
+
+This example is working for sama5d3xek:
+
+#define CONFIG_SPL_AT91_HEADER_USE_PMECC 1
+#define CONFIG_SPL_AT91_HEADER_SECTOR_PER_PAGE 4
+#define CONFIG_SPL_AT91_HEADER_SECTOR_SIZE CONFIG_PMECC_SECTOR_SIZE
+#define CONFIG_SPL_AT91_HEADER_SPARE_SIZE 64
+#define CONFIG_SPL_AT91_HEADER_ECC_BITS CONFIG_PMECC_CAP
+#define CONFIG_SPL_AT91_HEADER_ECC_OFFSET 36
+
+It enables the PMECC hardware and set the relevant parameters as known from
+the SAM-BA tool. We are able to use other defined values here cause we check
+these values in the buildsystem. Therefore the CONFIG_PMECC_SECTOR_SIZE is
+expanded to the correct value set some lines above.
+
+The mkimage image type atmelimage also set the 6'th interrupt vector to the
+correct value. This feature can also be used to setup a boot.bin for MMC boot.
diff --git a/spl/Makefile b/spl/Makefile
index 55500fd..8c6397e 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -183,6 +183,24 @@ MKIMAGEFLAGS_MLO.byteswap = -T omapimage -n byteswap -a $(CONFIG_SPL_TEXT_BASE)
MLO MLO.byteswap: $(obj)/u-boot-spl.bin
$(call if_changed,mkimage)
+ATMEL_NAND_HEADER = usePmecc=$(CONFIG_SPL_AT91_HEADER_USE_PMECC), \
+ sectorPerPage=$(CONFIG_SPL_AT91_HEADER_SECTOR_PER_PAGE), \
+ sectorSize=$(CONFIG_SPL_AT91_HEADER_SECTOR_SIZE), \
+ spareSize=$(CONFIG_SPL_AT91_HEADER_SPARE_SIZE), \
+ eccBits=$(CONFIG_SPL_AT91_HEADER_ECC_BITS), \
+ eccOffset=$(CONFIG_SPL_AT91_HEADER_ECC_OFFSET)
+
+MKIMAGEFLAGS_boot.bin = -T atmelimage
+
+ifdef CONFIG_ATMEL_NAND_HW_PMECC
+ifeq ($(CONFIG_SYS_USE_NANDFLASH),y)
+MKIMAGEFLAGS_boot.bin += -n $(subst $(space),,$(ATMEL_NAND_HEADER))
+endif
+endif
+
+boot.bin: $(obj)/u-boot-spl.bin
+ $(call if_changed,mkimage)
+
ALL-y += $(obj)/$(SPL_BIN).bin
ifdef CONFIG_SAMSUNG
--
1.7.10.4
More information about the U-Boot
mailing list