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

Lei Wen adrian.wenl at gmail.com
Sun Jul 31 08:56:54 CEST 2011


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?

Best regards,
Lei


More information about the U-Boot mailing list