[U-Boot] [PATCH v4 2/2] ORIGEN: Add MMC SPL support

Chander Kashyap chander.kashyap at linaro.org
Mon Aug 1 08:59:22 CEST 2011


Hi Lei Wen,

On 31 July 2011 12:26, Lei Wen <adrian.wenl at gmail.com> wrote:

> Hi Chander,
>
> On Fri, Jul 29, 2011 at 12:41 PM, Chander Kashyap
> <chander.kashyap at linaro.org> wrote:
> > Adds mmc boot support.
> >
> > Signed-off-by: Chander Kashyap <chander.kashyap at linaro.org>
> > ---
> >  mmc_spl/board/samsung/origen/Makefile             |  106
> ++++++++++++++++
> >  mmc_spl/board/samsung/origen/mmc_boot.c           |   57 +++++++++
> >  mmc_spl/board/samsung/origen/tools/mkv310_image.c |  140
> +++++++++++++++++++++
> >  mmc_spl/board/samsung/origen/u-boot.lds           |   88 +++++++++++++
> >  4 files changed, 391 insertions(+), 0 deletions(-)
> >  create mode 100644 mmc_spl/board/samsung/origen/Makefile
> >  create mode 100644 mmc_spl/board/samsung/origen/mmc_boot.c
> >  create mode 100644 mmc_spl/board/samsung/origen/tools/mkv310_image.c
> >  create mode 100644 mmc_spl/board/samsung/origen/u-boot.lds
> >
> > diff --git a/mmc_spl/board/samsung/origen/Makefile
> b/mmc_spl/board/samsung/origen/Makefile
> > new file mode 100644
> > index 0000000..1d61cc0
> > --- /dev/null
> > +++ b/mmc_spl/board/samsung/origen/Makefile
> > @@ -0,0 +1,106 @@
> > +#
> > +# (C) Copyright 2006-2007
> > +# Stefan Roese, DENX Software Engineering, sr at denx.de.
> > +#
> > +# (C) Copyright 2008
> > +# Guennadi Liakhovetki, DENX Software Engineering, <lg at denx.de>
> > +#
> > +# (C) Copyright 2011
> > +# Chander Kashyap, Samsung Electronics, <k.chander at samsung.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
> > +#
> > +
> > +CONFIG_MMC_SPL = y
> > +
> > +include $(TOPDIR)/config.mk
> > +
> > +LDSCRIPT= $(TOPDIR)/mmc_spl/board/$(BOARDDIR)/u-boot.lds
> > +LDFLAGS        = -Bstatic -T $(mmcobj)u-boot.lds -Ttext
> $(CONFIG_SYS_TEXT_BASE) $(PLATFORM_LDFLAGS)
> > +AFLAGS += -DCONFIG_MMC_SPL
> > +AFLAGS += -DCONFIG_SPL_BUILD
> > +CFLAGS += -DCONFIG_MMC_SPL
> > +CFLAGS += -DCONFIG_SPL_BUILD
> > +
> > +SOBJS  = start.o mem_setup.o lowlevel_init.o
> > +COBJS  = mmc_boot.o
> > +
> > +SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> > +OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
> > +__OBJS := $(SOBJS) $(COBJS)
> > +LNDIR  := $(OBJTREE)/mmc_spl/board/$(BOARDDIR)
> > +
> > +mmcobj := $(OBJTREE)/mmc_spl/
> > +
> > +
> > +MKV310_MMC_SPL_EXEC = mkv310_mmc_spl_exec
> > +MMC_SPL_BIN = u-boot-mmc-spl.bin
> > +
> > +ALL = $(mmcobj)u-boot-spl $(mmcobj)u-boot-spl.bin
> $(mmcobj)$(MMC_SPL_BIN)
> > +
> > +all:    $(obj).depend $(ALL)
> > +
> > +$(mmcobj)$(MMC_SPL_BIN):  $(mmcobj)u-boot-spl.bin
> tools/$(MKV310_MMC_SPL_EXEC)
> > +       ./tools/$(MKV310_MMC_SPL_EXEC) $(mmcobj)u-boot-spl.bin
> $(mmcobj)$(MMC_SPL_BIN)
> > +       rm -f tools/$(MKV310_MMC_SPL_EXEC)
> > +
> > +tools/$(MKV310_MMC_SPL_EXEC): tools/mkv310_image.c
> > +       $(HOSTCC) tools/mkv310_image.c -o tools/$(MKV310_MMC_SPL_EXEC)
> > +
> > +$(mmcobj)u-boot-spl.bin:       $(mmcobj)u-boot-spl
> > +       $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
> > +
> > +$(mmcobj)u-boot-spl:   $(OBJS) $(mmcobj)u-boot.lds
> > +       cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) \
> > +               -Map $(mmcobj)u-boot-spl.map \
> > +               -o $(mmcobj)u-boot-spl
> > +
> > +$(mmcobj)u-boot.lds: $(LDSCRIPT)
> > +       $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
> > +
> > +# create symbolic links for common files
> > +
> > +# from cpu directory
> > +start.S:
> > +       @rm -f $@
> > +       @ln -s $(TOPDIR)/arch/arm/cpu/armv7/start.S $@
> > +
> > +# from board directory
> > +mem_setup.S:
> > +       @rm -f $@
> > +       @ln -s $(TOPDIR)/board/samsung/origen/mem_setup.S $@
> > +
> > +lowlevel_init.S:
> > +       @rm -f $@
> > +       @ln -s $(TOPDIR)/board/samsung/origen/lowlevel_init.S $@
> > +
> >
> +#########################################################################
> > +
> > +$(obj)%.o:     %.S
> > +       $(CC) $(AFLAGS) -c -o $@ $<
> > +
> > +$(obj)%.o:     %.c
> > +       $(CC) $(CFLAGS) -c -o $@ $<
> > +
> > +# defines $(obj).depend target
> > +include $(SRCTREE)/rules.mk
> > +
> > +sinclude $(obj).depend
> > +
> >
> +#########################################################################
> > diff --git a/mmc_spl/board/samsung/origen/mmc_boot.c
> b/mmc_spl/board/samsung/origen/mmc_boot.c
> > new file mode 100644
> > index 0000000..d9b44d8
> > --- /dev/null
> > +++ b/mmc_spl/board/samsung/origen/mmc_boot.c
> > @@ -0,0 +1,57 @@
> > +/*
> > + * Copyright (C) 2011 Samsung Electronics
> > + *
> > + * 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
> > + */
> > +
> > +#include<common.h>
> > +#include<config.h>
> > +
> > +typedef u32(*copy_sd_mmc_to_mem) \
> > +       (u32 start_block, u32 block_count, u32 *dest_addr);
> > +
> > +
> > +void copy_uboot_to_ram(void)
> > +{
> > +       copy_sd_mmc_to_mem copy_bl2 = (copy_sd_mmc_to_mem)*(u32
> *)(0x02020030);
> > +       copy_bl2(BL2_START_OFFSET,\
> > +               BL2_SIZE_BLOC_COUNT, (u32 *)CONFIG_SYS_TEXT_BASE);
> > +}
>
> Curious to know, what the 0x02020030 hardcoding number means here?
> It is a pointer to a API or hardware register, or anything else, how
> this simple function perform the
> data transfer from mmc to ram?
>
>  0x02020030 is iROM address, which contains pointer to API (copy from mmc
from DDR) in iROM.

Best regards,
> Lei
>



-- 
with warm regards,
Chander Kashyap


More information about the U-Boot mailing list