public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot-Users] [PATCH 4/6] cmdximg
@ 2003-12-15 18:50 Robert Schwebel
  2004-01-03 20:25 ` Wolfgang Denk
  0 siblings, 1 reply; 2+ messages in thread
From: Robert Schwebel @ 2003-12-15 18:50 UTC (permalink / raw)
  To: u-boot


-------------- next part --------------

#
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
#

--- /dev/null	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-patches/common/cmd_ximg.c	2003-12-09 19:31:51.000000000 +0100
@@ -0,0 +1,150 @@
+/*
+ * (C) Copyright 2000-2002
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ * 
+ * (C) Copyright 2003
+ * Kai-Uwe Bloem, Auerswald GmbH & Co KG, <linux-development@auerswald.de>
+ *
+ * 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
+ */
+
+#if (CONFIG_COMMANDS & CFG_CMD_XIMG)
+
+/*
+ * Multi Image extract
+ */
+#include <common.h>
+#include <command.h>
+#include <image.h>
+#include <asm/byteorder.h>
+
+#undef DEBUG
+
+int do_imgextract (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	ulong	addr = load_addr, dest = 0;
+	ulong	data, len, checksum;
+	ulong  *len_ptr;
+	int	i, verify, part = 0;
+	char	pbuf[10], *s;
+	image_header_t header;
+
+	s = getenv ("verify");
+	verify = (s && (*s == 'n')) ? 0 : 1;
+
+	if (argc > 1) {
+		addr = simple_strtoul(argv[1], NULL, 16);
+	}
+	if (argc > 2) {
+		part = simple_strtoul(argv[2], NULL, 16);
+	}
+	if (argc > 3) {
+		dest = simple_strtoul(argv[3], NULL, 16);
+	}
+
+	printf ("## Copying from image at %08lx ...\n", addr);
+
+	/* Copy header so we can blank CRC field for re-calculation */
+	memmove (&header, (char *)addr, sizeof(image_header_t));
+
+	if (ntohl(header.ih_magic) != IH_MAGIC) {
+	    {
+		printf ("Bad Magic Number\n");
+		return 1;
+	    }
+	}
+
+	data = (ulong)&header;
+	len  = sizeof(image_header_t);
+
+	checksum = ntohl(header.ih_hcrc);
+	header.ih_hcrc = 0;
+
+	if (crc32 (0, (char *)data, len) != checksum) {
+		printf ("Bad Header Checksum\n");
+		return 1;
+	}
+
+#ifdef DEBUG
+	print_image_hdr ((image_header_t *) addr);
+#endif
+
+	data = addr + sizeof(image_header_t);
+	len  = ntohl(header.ih_size);
+
+	if (header.ih_type != IH_TYPE_MULTI) {
+		printf ("Wrong Image Type for %s command\n", cmdtp->name);
+		return 1;
+	}
+
+	if (header.ih_comp != IH_COMP_NONE) {
+		printf ("Wrong Compression Type for %s command\n", cmdtp->name);
+		return 1;
+	}
+
+	if (verify) {
+		printf ("   Verifying Checksum ... ");
+		if (crc32 (0, (char *)data, len) != ntohl(header.ih_dcrc)) {
+			printf ("Bad Data CRC\n");
+			return 1;
+		}
+		printf ("OK\n");
+	}
+
+	len_ptr = (ulong *)data;
+
+	data += 4; /* terminator */
+	for (i=0; len_ptr[i]; ++i) {
+		data += 4;
+		if (argc > 2 && part > i) {
+			u_long tail;
+			len = ntohl(len_ptr[i]);
+			tail = len % 4;
+			data += len;
+			if (tail) {
+				data += 4 - tail;
+			}
+		}
+	}
+	if (argc > 2 && part >= i) {
+		printf("Bad Image Part\n");
+		return 1;
+	}
+	len = ntohl(len_ptr[part]);
+
+	if (argc > 3) {
+		memcpy((char *)dest, (char *)data, len);
+	}
+
+	sprintf(pbuf, "%8lx", data);
+	setenv("fileaddr", pbuf);
+	sprintf(pbuf, "%8lx", len);
+	setenv("filesize", pbuf);
+
+	return 0;
+}
+
+U_BOOT_CMD(
+	imxtract,	4,	1,	do_imgextract,
+	"imxtract- extract a part of a multi-image\n",
+	"addr part [dest]\n"
+	"    - extract <part> from image at <addr> and copy to <dest>\n"
+);
+
+#endif
--- u-boot-patches/common/Makefile~cmdximg	2003-12-09 19:31:18.000000000 +0100
+++ u-boot-patches/common/Makefile	2003-12-09 19:31:51.000000000 +0100
@@ -39,7 +39,7 @@
 	  cmd_mem.o cmd_mii.o cmd_misc.o cmd_mmc.o \
 	  cmd_nand.o cmd_net.o cmd_nvedit.o \
 	  cmd_pci.o cmd_pcmcia.o cmd_portio.o \
-	  cmd_reginfo.o cmd_scsi.o cmd_spi.o cmd_usb.o cmd_vfd.o \
+	  cmd_reginfo.o cmd_scsi.o cmd_spi.o cmd_usb.o cmd_ximg.o cmd_vfd.o \
 	  command.o console.o devices.o dlmalloc.o docecc.o \
 	  environment.o env_common.o \
 	  env_dataflash.o env_flash.o env_eeprom.o env_nvram.o env_nowhere.o exports.o \
--- u-boot-patches/include/cmd_confdefs.h~cmdximg	2003-12-09 19:31:34.000000000 +0100
+++ u-boot-patches/include/cmd_confdefs.h	2003-12-09 19:31:51.000000000 +0100
@@ -85,6 +85,7 @@
 #define CFG_CMD_MMC	0x0008000000000000U	/* MMC support			*/
 #define CFG_CMD_FAT	0x0010000000000000U	/* FAT support			*/
 #define CFG_CMD_IMLS	0x0020000000000000U	/* List all found images        */
+#define CFG_CMD_XIMG	0x0040000000000000U	/* load part of multi image     */
 
 #define CFG_CMD_ALL	0xFFFFFFFFFFFFFFFFU	/* ALL commands			*/
 
--- u-boot-patches/README~cmdximg	2003-12-09 19:31:45.000000000 +0100
+++ u-boot-patches/README	2003-12-09 19:31:51.000000000 +0100
@@ -648,6 +648,7 @@
 		CFG_CMD_SPI	* SPI serial bus support
 		CFG_CMD_USB	* USB support
 		CFG_CMD_VFD     * VFD support (TRAB)
+		CFG_CMD_XIMG	* load part of a multi image
 		CFG_CMD_BSP	* Board SPecific functions
 		-----------------------------------------------
 		CFG_CMD_ALL	all

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [U-Boot-Users] [PATCH 4/6] cmdximg
  2003-12-15 18:50 [U-Boot-Users] [PATCH 4/6] cmdximg Robert Schwebel
@ 2004-01-03 20:25 ` Wolfgang Denk
  0 siblings, 0 replies; 2+ messages in thread
From: Wolfgang Denk @ 2004-01-03 20:25 UTC (permalink / raw)
  To: u-boot

In message <20031215185041.GC10680@pengutronix.de> you wrote:
> 
> #
> # Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
> #

Please provide CHANGELOG entries for your patches,  or  at  least  an
explanation what the patch does!!!!

> --- /dev/null	1970-01-01 01:00:00.000000000 +0100
> +++ u-boot-patches/common/cmd_ximg.c	2003-12-09 19:31:51.000000000 +0100

Rejected for now. In the current form the patch adds this feature  to
a  couple  of boards (DK1C20, DK1S10, LANTEC, MPC8260ADS, MPC8266ADS,
RBC823, RPXClassic, ZPC1900, ep8260, hymod) which don't know about it
and probably don't want it.

Please fix this, and resubmit.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
Inform all the troops  that  communications  have  completely  broken
down.                                            - Ashleigh Brilliant

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-01-03 20:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-12-15 18:50 [U-Boot-Users] [PATCH 4/6] cmdximg Robert Schwebel
2004-01-03 20:25 ` Wolfgang Denk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox