* [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