[U-Boot] [PATCH v4 6/6] MX31: Add NAND SPL boot support to i.MX31 PDK board.

Magnus Lilja lilja.magnus at gmail.com
Mon Jun 29 21:11:36 CEST 2009


Jean-Christpohe,

Seems like you missed the last part in my series, could you apply this
one as well?

Regards, Magnus

2009/6/13 Magnus Lilja <lilja.magnus at gmail.com>:
> Signed-off-by: Magnus Lilja <lilja.magnus at gmail.com>
> ---
>  MAKEALL                                     |    1 +
>  Makefile                                    |   14 +++-
>  board/freescale/mx31pdk/config.mk           |    4 +
>  board/freescale/mx31pdk/lowlevel_init.S     |  114 +++++++++++++++++++++++++++
>  include/asm-arm/arch-mx31/mx31-regs.h       |   54 +++++++++++++
>  include/configs/mx31pdk.h                   |   21 ++++-
>  nand_spl/board/freescale/mx31pdk/Makefile   |   54 +++++++++++++
>  nand_spl/board/freescale/mx31pdk/config.mk  |    5 +
>  nand_spl/board/freescale/mx31pdk/u-boot.lds |   36 +++++++++
>  9 files changed, 297 insertions(+), 6 deletions(-)
>  create mode 100644 board/freescale/mx31pdk/lowlevel_init.S
>  create mode 100644 nand_spl/board/freescale/mx31pdk/Makefile
>  create mode 100644 nand_spl/board/freescale/mx31pdk/config.mk
>  create mode 100644 nand_spl/board/freescale/mx31pdk/u-boot.lds
>
> diff --git a/MAKEALL b/MAKEALL
> index 0757064..1f7cab4 100755
> --- a/MAKEALL
> +++ b/MAKEALL
> @@ -553,6 +553,7 @@ LIST_ARM11="                        \
>        imx31_phycore_eet       \
>        mx31ads                 \
>        mx31pdk                 \
> +       mx31pdk_nand            \
>        qong                    \
>        smdk6400                \
>  "
> diff --git a/Makefile b/Makefile
> index e445e51..29d1f22 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -376,7 +376,7 @@ $(LDSCRIPT):        depend
>  $(NAND_SPL):   $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
>                $(MAKE) -C nand_spl/board/$(BOARDDIR) all
>
> -$(U_BOOT_NAND):        $(NAND_SPL) $(obj)u-boot.bin
> +$(U_BOOT_NAND):        $(NAND_SPL) $(obj)u-boot.bin $(obj)include/autoconf.mk
>                cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
>
>  $(ONENAND_IPL):        $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
> @@ -3115,8 +3115,16 @@ imx31_phycore_config     : unconfig
>  mx31ads_config         : unconfig
>        @$(MKCONFIG) $(@:_config=) arm arm1136 mx31ads freescale mx31
>
> -mx31pdk_config         : unconfig
> -       @$(MKCONFIG) $(@:_config=) arm arm1136 mx31pdk freescale mx31
> +mx31pdk_config \
> +mx31pdk_nand_config    : unconfig
> +       @mkdir -p $(obj)include
> +       @if [ -n "$(findstring _nand_,$@)" ]; then                                      \
> +               echo "#define CONFIG_NAND_U_BOOT" >> $(obj)include/config.h;            \
> +       else                                                                            \
> +               echo "#define CONFIG_SKIP_LOWLEVEL_INIT" >> $(obj)include/config.h;     \
> +               echo "#define CONFIG_SKIP_RELOCATE_UBOOT" >> $(obj)include/config.h;    \
> +       fi
> +       @$(MKCONFIG) -a mx31pdk arm arm1136 mx31pdk freescale mx31
>
>  omap2420h4_config      : unconfig
>        @$(MKCONFIG) $(@:_config=) arm arm1136 omap2420h4 NULL omap24xx
> diff --git a/board/freescale/mx31pdk/config.mk b/board/freescale/mx31pdk/config.mk
> index d34dc02..dcaa09f 100644
> --- a/board/freescale/mx31pdk/config.mk
> +++ b/board/freescale/mx31pdk/config.mk
> @@ -1 +1,5 @@
> +ifdef CONFIG_NAND_SPL
> +TEXT_BASE = 0x87ec0000
> +else
>  TEXT_BASE = 0x87f00000
> +endif
> diff --git a/board/freescale/mx31pdk/lowlevel_init.S b/board/freescale/mx31pdk/lowlevel_init.S
> new file mode 100644
> index 0000000..f913f90
> --- /dev/null
> +++ b/board/freescale/mx31pdk/lowlevel_init.S
> @@ -0,0 +1,114 @@
> +/*
> + * (C) Copyright 2009 Magnus Lilja <lilja.magnus at gmail.com>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +.globl lowlevel_init
> +
> +#include <asm/arch/mx31-regs.h>
> +#include <asm/macro.h>
> +
> +#define CCM_CCMR_SETUP         0x074B0BF5
> +#define CCM_PDR0_SETUP_532MHZ  (PDR0_CSI_PODF(0x1ff) | PDR0_PER_PODF(7) | \
> +                                PDR0_HSP_PODF(3) | PDR0_NFC_PODF(5) |     \
> +                                PDR0_IPG_PODF(1) | PDR0_MAX_PODF(3) |     \
> +                                PDR0_MCU_PODF(0))
> +#define CCM_MPCTL_SETUP_532MHZ (PLL_PD(0) | PLL_MFD(51) | PLL_MFI(10) |   \
> +                                PLL_MFN(12))
> +
> +#define ESDMISC_MDDR_SETUP     0x00000004
> +#define ESDMISC_MDDR_RESET_DL  0x0000000c
> +#define ESDCFG0_MDDR_SETUP     0x006ac73a
> +
> +#define ESDCTL_ROW_COL         (ESDCTL_SDE | ESDCTL_ROW(2) | ESDCTL_COL(2))
> +#define ESDCTL_SETTINGS                (ESDCTL_ROW_COL | ESDCTL_SREFR(3) | \
> +                                ESDCTL_DSIZ(2) | ESDCTL_BL(1))
> +#define ESDCTL_PRECHARGE       (ESDCTL_ROW_COL | ESDCTL_CMD_PRECHARGE)
> +#define ESDCTL_AUTOREFRESH     (ESDCTL_ROW_COL | ESDCTL_CMD_AUTOREFRESH)
> +#define ESDCTL_LOADMODEREG     (ESDCTL_ROW_COL | ESDCTL_CMD_LOADMODEREG)
> +#define ESDCTL_RW              ESDCTL_SETTINGS
> +
> +.globl lowlevel_init
> +lowlevel_init:
> +       /* Also setup the Peripheral Port Remap register inside the core */
> +       ldr     r0, =ARM_PPMRR      /* start from AIPS 2GB region */
> +       mcr     p15, 0, r0, c15, c2, 4
> +
> +       write32 IPU_CONF, IPU_CONF_DI_EN
> +       write32 CCM_CCMR, CCM_CCMR_SETUP
> +
> +       wait_timer      0x40000
> +
> +       write32 CCM_CCMR, CCM_CCMR_SETUP | CCMR_MPE
> +       write32 CCM_CCMR, (CCM_CCMR_SETUP | CCMR_MPE) & ~CCMR_MDS
> +
> +       /* Set up clock to 532MHz */
> +       write32 CCM_PDR0, CCM_PDR0_SETUP_532MHZ
> +       write32 CCM_MPCTL, CCM_MPCTL_SETUP_532MHZ
> +
> +       write32 CCM_SPCTL, PLL_PD(1) | PLL_MFD(4) | PLL_MFI(12) | PLL_MFN(1)
> +
> +       /* Set up MX31 DDR pins */
> +       write32 IOMUXC_SW_PAD_CTL_SDCKE1_SDCLK_SDCLK_B, 0
> +       write32 IOMUXC_SW_PAD_CTL_CAS_SDWE_SDCKE0, 0
> +       write32 IOMUXC_SW_PAD_CTL_BCLK_RW_RAS, 0
> +       write32 IOMUXC_SW_PAD_CTL_CS2_CS3_CS4, 0x1000
> +       write32 IOMUXC_SW_PAD_CTL_DQM3_EB0_EB1, 0
> +       write32 IOMUXC_SW_PAD_CTL_DQM0_DQM1_DQM2, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD29_SD30_SD31, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD26_SD27_SD28, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD23_SD24_SD25, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD20_SD21_SD22, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD17_SD18_SD19, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD14_SD15_SD16, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD11_SD12_SD13, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD8_SD9_SD10, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD5_SD6_SD7, 0
> +       write32 IOMUXC_SW_PAD_CTL_SD2_SD3_SD4, 0
> +       write32 IOMUXC_SW_PAD_CTL_SDBA0_SD0_SD1, 0
> +       write32 IOMUXC_SW_PAD_CTL_A24_A25_SDBA1, 0
> +       write32 IOMUXC_SW_PAD_CTL_A21_A22_A23, 0
> +       write32 IOMUXC_SW_PAD_CTL_A18_A19_A20, 0
> +       write32 IOMUXC_SW_PAD_CTL_A15_A16_A17, 0
> +       write32 IOMUXC_SW_PAD_CTL_A12_A13_A14, 0
> +       write32 IOMUXC_SW_PAD_CTL_A10_MA10_A11, 0
> +       write32 IOMUXC_SW_PAD_CTL_A7_A8_A9, 0
> +       write32 IOMUXC_SW_PAD_CTL_A4_A5_A6, 0
> +       write32 IOMUXC_SW_PAD_CTL_A1_A2_A3, 0
> +       write32 IOMUXC_SW_PAD_CTL_VPG0_VPG1_A0, 0
> +
> +       /* Set up MX31 DDR Memory Controller */
> +       write32 WEIM_ESDMISC, ESDMISC_MDDR_SETUP
> +       write32 WEIM_ESDCFG0, ESDCFG0_MDDR_SETUP
> +
> +       /* Perform DDR init sequence */
> +       write32 WEIM_ESDCTL0, ESDCTL_PRECHARGE
> +       write32 CSD0_BASE | 0x0f00, 0x12344321
> +       write32 WEIM_ESDCTL0, ESDCTL_AUTOREFRESH
> +       write32 CSD0_BASE, 0x12344321
> +       write32 CSD0_BASE, 0x12344321
> +       write32 WEIM_ESDCTL0, ESDCTL_LOADMODEREG
> +       write8  CSD0_BASE | 0x00000033, 0xda
> +       write8  CSD0_BASE | 0x01000000, 0xff
> +       write32 WEIM_ESDCTL0, ESDCTL_RW
> +       write32 CSD0_BASE, 0xDEADBEEF
> +       write32 WEIM_ESDMISC, ESDMISC_MDDR_RESET_DL
> +
> +       mov     pc, lr
> diff --git a/include/asm-arm/arch-mx31/mx31-regs.h b/include/asm-arm/arch-mx31/mx31-regs.h
> index 76f4d53..51b02a2 100644
> --- a/include/asm-arm/arch-mx31/mx31-regs.h
> +++ b/include/asm-arm/arch-mx31/mx31-regs.h
> @@ -61,6 +61,29 @@
>  #define PLL_MFI(x)             (((x) & 0xf) << 10)
>  #define PLL_MFN(x)             (((x) & 0x3ff) << 0)
>
> +#define WEIM_ESDCTL0   0xB8001000
> +#define WEIM_ESDCFG0   0xB8001004
> +#define WEIM_ESDCTL1   0xB8001008
> +#define WEIM_ESDCFG1   0xB800100C
> +#define WEIM_ESDMISC   0xB8001010
> +
> +#define ESDCTL_SDE                     (1 << 31)
> +#define ESDCTL_CMD_RW                  (0 << 28)
> +#define ESDCTL_CMD_PRECHARGE           (1 << 28)
> +#define ESDCTL_CMD_AUTOREFRESH         (2 << 28)
> +#define ESDCTL_CMD_LOADMODEREG         (3 << 28)
> +#define ESDCTL_CMD_MANUALREFRESH       (4 << 28)
> +#define ESDCTL_ROW_13                  (2 << 24)
> +#define ESDCTL_ROW(x)                  ((x) << 24)
> +#define ESDCTL_COL_9                   (1 << 20)
> +#define ESDCTL_COL(x)                  ((x) << 20)
> +#define ESDCTL_DSIZ(x)                 ((x) << 16)
> +#define ESDCTL_SREFR(x)                        ((x) << 13)
> +#define ESDCTL_PWDT(x)                 ((x) << 10)
> +#define ESDCTL_FP(x)                   ((x) << 8)
> +#define ESDCTL_BL(x)                   ((x) << 7)
> +#define ESDCTL_PRCT(x)                 ((x) << 0)
> +
>  #define WEIM_BASE      0xb8002000
>  #define CSCR_U(x)      (WEIM_BASE + (x) * 0x10)
>  #define CSCR_L(x)      (WEIM_BASE + 4 + (x) * 0x10)
> @@ -181,6 +204,37 @@
>  #define MUX_CSPI2_MOSI__I2C2_SCL IOMUX_MODE(MUX_CTL_CSPI2_MOSI, MUX_CTL_ALT1)
>  #define MUX_CSPI2_MISO__I2C2_SDA IOMUX_MODE(MUX_CTL_CSPI2_MISO, MUX_CTL_ALT1)
>
> +/* PAD control registers for SDR/DDR */
> +#define IOMUXC_SW_PAD_CTL_SDCKE1_SDCLK_SDCLK_B (IOMUXC_BASE + 0x26C)
> +#define IOMUXC_SW_PAD_CTL_CAS_SDWE_SDCKE0      (IOMUXC_BASE + 0x270)
> +#define IOMUXC_SW_PAD_CTL_BCLK_RW_RAS          (IOMUXC_BASE + 0x274)
> +#define IOMUXC_SW_PAD_CTL_CS5_ECB_LBA          (IOMUXC_BASE + 0x278)
> +#define IOMUXC_SW_PAD_CTL_CS2_CS3_CS4          (IOMUXC_BASE + 0x27C)
> +#define IOMUXC_SW_PAD_CTL_OE_CS0_CS1           (IOMUXC_BASE + 0x280)
> +#define IOMUXC_SW_PAD_CTL_DQM3_EB0_EB1         (IOMUXC_BASE + 0x284)
> +#define IOMUXC_SW_PAD_CTL_DQM0_DQM1_DQM2       (IOMUXC_BASE + 0x288)
> +#define IOMUXC_SW_PAD_CTL_SD29_SD30_SD31       (IOMUXC_BASE + 0x28C)
> +#define IOMUXC_SW_PAD_CTL_SD26_SD27_SD28       (IOMUXC_BASE + 0x290)
> +#define IOMUXC_SW_PAD_CTL_SD23_SD24_SD25       (IOMUXC_BASE + 0x294)
> +#define IOMUXC_SW_PAD_CTL_SD20_SD21_SD22       (IOMUXC_BASE + 0x298)
> +#define IOMUXC_SW_PAD_CTL_SD17_SD18_SD19       (IOMUXC_BASE + 0x29C)
> +#define IOMUXC_SW_PAD_CTL_SD14_SD15_SD16       (IOMUXC_BASE + 0x2A0)
> +#define IOMUXC_SW_PAD_CTL_SD11_SD12_SD13       (IOMUXC_BASE + 0x2A4)
> +#define IOMUXC_SW_PAD_CTL_SD8_SD9_SD10         (IOMUXC_BASE + 0x2A8)
> +#define IOMUXC_SW_PAD_CTL_SD5_SD6_SD7          (IOMUXC_BASE + 0x2AC)
> +#define IOMUXC_SW_PAD_CTL_SD2_SD3_SD4          (IOMUXC_BASE + 0x2B0)
> +#define IOMUXC_SW_PAD_CTL_SDBA0_SD0_SD1                (IOMUXC_BASE + 0x2B4)
> +#define IOMUXC_SW_PAD_CTL_A24_A25_SDBA1                (IOMUXC_BASE + 0x2B8)
> +#define IOMUXC_SW_PAD_CTL_A21_A22_A23          (IOMUXC_BASE + 0x2BC)
> +#define IOMUXC_SW_PAD_CTL_A18_A19_A20          (IOMUXC_BASE + 0x2C0)
> +#define IOMUXC_SW_PAD_CTL_A15_A16_A17          (IOMUXC_BASE + 0x2C4)
> +#define IOMUXC_SW_PAD_CTL_A12_A13_A14          (IOMUXC_BASE + 0x2C8)
> +#define IOMUXC_SW_PAD_CTL_A10_MA10_A11         (IOMUXC_BASE + 0x2CC)
> +#define IOMUXC_SW_PAD_CTL_A7_A8_A9             (IOMUXC_BASE + 0x2D0)
> +#define IOMUXC_SW_PAD_CTL_A4_A5_A6             (IOMUXC_BASE + 0x2D4)
> +#define IOMUXC_SW_PAD_CTL_A1_A2_A3             (IOMUXC_BASE + 0x2D8)
> +#define IOMUXC_SW_PAD_CTL_VPG0_VPG1_A0         (IOMUXC_BASE + 0x2DC)
> +
>  /*
>  * Memory regions and CS
>  */
> diff --git a/include/configs/mx31pdk.h b/include/configs/mx31pdk.h
> index ca7b960..1795a7e 100644
> --- a/include/configs/mx31pdk.h
> +++ b/include/configs/mx31pdk.h
> @@ -43,10 +43,10 @@
>  #define CONFIG_SETUP_MEMORY_TAGS       1
>  #define CONFIG_INITRD_TAG              1
>
> -/* No support for NAND boot for i.MX31 PDK yet, so we rely on some other
> - * program to initialize the SDRAM.
> - */
> +#if defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)
>  #define CONFIG_SKIP_LOWLEVEL_INIT
> +#define CONFIG_SKIP_RELOCATE_UBOOT
> +#endif
>
>  /*
>  * Size of malloc() pool
> @@ -159,4 +159,19 @@
>
>  #define CONFIG_ENV_SIZE                (128 * 1024)
>
> +/* NAND configuration for the NAND_SPL */
> +
> +/* Start copying real U-boot from the second page */
> +#define CONFIG_SYS_NAND_U_BOOT_OFFS    0x800
> +#define CONFIG_SYS_NAND_U_BOOT_SIZE    0x30000
> +/* Load U-Boot to this address */
> +#define CONFIG_SYS_NAND_U_BOOT_DST     0x87f00000
> +#define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_NAND_U_BOOT_DST
> +
> +#define CONFIG_SYS_NAND_PAGE_SIZE      0x800
> +#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
> +#define CONFIG_SYS_NAND_PAGE_COUNT     64
> +#define CONFIG_SYS_NAND_SIZE           (256 * 1024 * 1024)
> +#define CONFIG_SYS_NAND_BAD_BLOCK_POS  0
> +
>  #endif /* __CONFIG_H */
> diff --git a/nand_spl/board/freescale/mx31pdk/Makefile b/nand_spl/board/freescale/mx31pdk/Makefile
> new file mode 100644
> index 0000000..a9572ba
> --- /dev/null
> +++ b/nand_spl/board/freescale/mx31pdk/Makefile
> @@ -0,0 +1,54 @@
> +CONFIG_NAND_SPL        = y
> +
> +include $(TOPDIR)/config.mk
> +include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk
> +
> +LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
> +LDFLAGS        = -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS)
> +AFLAGS += -DCONFIG_PRELOADER -DCONFIG_NAND_SPL
> +CFLAGS += -DCONFIG_PRELOADER -DCONFIG_NAND_SPL
> +
> +SOBJS  = start.o lowlevel_init.o
> +COBJS  = nand_boot_fsl_nfc.o
> +
> +SRCS   := $(SRCTREE)/nand_spl/nand_boot_fsl_nfc.c
> +SRCS   += $(SRCTREE)/cpu/arm1136/start.S
> +SRCS   += $(SRCTREE)/board/freescale/mx31pdk/lowlevel_init.S
> +OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
> +__OBJS := $(SOBJS) $(COBJS)
> +LNDIR  := $(OBJTREE)/nand_spl/board/$(BOARDDIR)
> +
> +nandobj        := $(OBJTREE)/nand_spl/
> +
> +ALL    = $(nandobj)u-boot-spl $(nandobj)u-boot-spl.bin $(nandobj)u-boot-spl-16k.bin
> +
> +all:   $(obj).depend $(ALL)
> +
> +$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl
> +       $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary $< $@
> +
> +$(nandobj)u-boot-spl.bin:      $(nandobj)u-boot-spl
> +       $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
> +
> +$(nandobj)u-boot-spl:  $(OBJS)
> +       cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) \
> +               -Map $(nandobj)u-boot-spl.map \
> +               -o $@
> +
> +#########################################################################
> +
> +$(obj)%.o:     $(SRCTREE)/cpu/arm1136/%.S
> +       $(CC) $(AFLAGS) -c -o $@ $<
> +
> +$(obj)%.o:     $(SRCTREE)/board/freescale/mx31pdk/%.S
> +       $(CC) $(AFLAGS) -c -o $@ $<
> +
> +$(obj)%.o:     $(SRCTREE)/nand_spl/%.c
> +       $(CC) $(CFLAGS) -c -o $@ $<
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/nand_spl/board/freescale/mx31pdk/config.mk b/nand_spl/board/freescale/mx31pdk/config.mk
> new file mode 100644
> index 0000000..198cafc
> --- /dev/null
> +++ b/nand_spl/board/freescale/mx31pdk/config.mk
> @@ -0,0 +1,5 @@
> +PAD_TO := 2048
> +
> +ifeq ($(debug),1)
> +PLATFORM_CPPFLAGS += -DDEBUG
> +endif
> diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds
> new file mode 100644
> index 0000000..edd8430
> --- /dev/null
> +++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds
> @@ -0,0 +1,36 @@
> +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
> +OUTPUT_ARCH(arm)
> +ENTRY(_start)
> +SECTIONS
> +{
> +       . = 0x00000000;
> +
> +       . = ALIGN(4);
> +       .text :
> +       {
> +               start.o                 (.text)
> +               lowlevel_init.o         (.text)
> +               nand_boot_fsl_nfc.o     (.text)
> +               *(.text)
> +               . = 2K;
> +       }
> +
> +       . = ALIGN(4);
> +       .rodata : { *(.rodata) }
> +
> +       . = ALIGN(4);
> +       .data : { *(.data) }
> +
> +       . = ALIGN(4);
> +       .got : { *(.got) }
> +
> +       . = .;
> +       __u_boot_cmd_start = .;
> +       .u_boot_cmd : { *(.u_boot_cmd) }
> +       __u_boot_cmd_end = .;
> +
> +       . = ALIGN(4);
> +       __bss_start = .;
> +       .bss : { *(.bss) }
> +       _end = .;
> +}
> --
> 1.5.6
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>


More information about the U-Boot mailing list