Hi Tom, Hi Matt, On Tuesday, January 31, 2012, Tom Rini <tr...@ti.com> wrote: > From: Matt Porter <mpor...@ti.com> > > Adds support for loading U-Boot from UART using YMODEM protocol. > If YMODEM support is enabled in SPL and the romcode indicates > that SPL loaded via UART then SPL will wait for start of a > YMODEM transfer via the console port.
:-) I like this feature! I tried something similar a few month ago for the da850evm and my own board, it worked but I never had time to finished it and submit it, it was just a hack. For my tests I used the UART loader utility from TI to load the SPL and then minicom for loading u-boot. Do you have an automated solution for this? Would be nice to have something like this in tools/. > Signed-off-by: Matt Porter <mpor...@ti.com> > Signed-off-by: Tom Rini <tr...@ti.com> > --- > arch/arm/cpu/armv7/omap-common/Makefile | 3 + > arch/arm/cpu/armv7/omap-common/spl.c | 5 ++ > arch/arm/cpu/armv7/omap-common/spl_ymodem.c | 76 +++++++++++++++++++++++++++ > arch/arm/include/asm/omap_common.h | 3 + > common/Makefile | 3 + > lib/Makefile | 3 + > 6 files changed, 93 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/cpu/armv7/omap-common/spl_ymodem.c > [...] > diff --git a/arch/arm/cpu/armv7/omap-common/spl_ymodem.c b/arch/arm/cpu/armv7/omap-common/spl_ymodem.c Could this be somewhere where it's accessible for other SoC families like davinci? E.g. We have nand_spl_load.c in drivers/mtd/nand and something similar for SPI flash. Regards, Christian > new file mode 100644 > index 0000000..47663f7 > --- /dev/null > +++ b/arch/arm/cpu/armv7/omap-common/spl_ymodem.c > @@ -0,0 +1,76 @@ > +/* > + * (C) Copyright 2000-2004 > + * Wolfgang Denk, DENX Software Engineering, w...@denx.de. > + * > + * (C) Copyright 2011 > + * Texas Instruments, <www.ti.com> > + * > + * Matt Porter <mpor...@ti.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 > + */ > +#include <common.h> > +#include <xyzModem.h> > +#include <asm/u-boot.h> > +#include <asm/utils.h> > +#include <asm/arch/sys_proto.h> > +#include <asm/omap_common.h> > + > +#define BUF_SIZE 1024 > + > +static int getcymodem(void) { > + if (tstc()) > + return (getc()); > + return -1; > +} > + > +void spl_ymodem_load_image(void) > +{ > + int size = 0; > + int err; > + int res; > + int ret; > + connection_info_t info; > + char buf[BUF_SIZE]; > + ulong store_addr = ~0; > + ulong addr = 0; > + > + info.mode = xyzModem_ymodem; > + ret = xyzModem_stream_open(&info, &err); > + > + if (!ret) { > + while ((res = > + xyzModem_stream_read(buf, BUF_SIZE, &err)) > 0) { > + if (addr == 0) > + spl_parse_image_header((struct image_header *)buf); > + store_addr = addr + spl_image.load_addr; > + size += res; > + addr += res; > + memcpy((char *)(store_addr), buf, res); > + } > + } else { > + printf("spl: ymodem err - %s\n", xyzModem_error(err)); > + hang(); > + } > + > + xyzModem_stream_close(&err); > + xyzModem_stream_terminate(false, &getcymodem); > + > + printf("Loaded %d bytes\n", size); > +}
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot