mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	New program to generate u-boot parameter block with correct CRC to enable reprogramming parameters from Linux.
SVN-Revision: 6636
This commit is contained in:
		
							parent
							
								
									ec63c08be8
								
							
						
					
					
						commit
						5bd6518456
					
				@ -0,0 +1,115 @@
 | 
			
		||||
--- u-boot-1.1.4.old/tools/Makefile	2007-03-22 18:17:25.000000000 +0100
 | 
			
		||||
+++ u-boot-1.1.4/tools/Makefile	2007-03-22 17:08:46.000000000 +0100
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
 # MA 02111-1307 USA
 | 
			
		||||
 #
 | 
			
		||||
 
 | 
			
		||||
-BINS	= img2srec$(SFX) mkimage$(SFX) envcrc$(SFX) gen_eth_addr$(SFX) bmp_logo$(SFX)
 | 
			
		||||
+BINS	= img2srec$(SFX) mkimage$(SFX) envcrc$(SFX) gen_eth_addr$(SFX) bmp_logo$(SFX) ubparams$(SFX)
 | 
			
		||||
 
 | 
			
		||||
-OBJS	= environment.o img2srec.o mkimage.o crc32.o envcrc.o gen_eth_addr.o bmp_logo.o
 | 
			
		||||
+OBJS	= environment.o img2srec.o mkimage.o crc32.o envcrc.o gen_eth_addr.o bmp_logo.o ubparams.o
 | 
			
		||||
 
 | 
			
		||||
 ifeq ($(ARCH),mips)
 | 
			
		||||
 BINS   += inca-swap-bytes$(SFX)
 | 
			
		||||
@@ -118,6 +118,9 @@
 | 
			
		||||
 
 | 
			
		||||
 all:	.depend $(BINS) $(LOGO_H) subdirs
 | 
			
		||||
 
 | 
			
		||||
+ubparams$(SFX): ubparams.o crc32.o
 | 
			
		||||
+		$(CC) $(CFLAGS) -o $@ $^
 | 
			
		||||
+
 | 
			
		||||
 envcrc$(SFX):	envcrc.o crc32.o environment.o
 | 
			
		||||
 		$(CC) $(CFLAGS) -o $@ $^
 | 
			
		||||
 
 | 
			
		||||
@@ -149,6 +152,9 @@
 | 
			
		||||
 		$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
 | 
			
		||||
 		$(STRIP) $@
 | 
			
		||||
 
 | 
			
		||||
+ubparams.o: ubparams.c
 | 
			
		||||
+		$(CC) -g $(CFLAGS) -c $<
 | 
			
		||||
+
 | 
			
		||||
 envcrc.o:	envcrc.c
 | 
			
		||||
 		$(CC) -g $(CFLAGS) -c $<
 | 
			
		||||
 
 | 
			
		||||
--- u-boot-1.1.4.old/tools/ubparams.c	1970-01-01 01:00:00.000000000 +0100
 | 
			
		||||
+++ u-boot-1.1.4/tools/ubparams.c	2007-03-22 18:09:52.000000000 +0100
 | 
			
		||||
@@ -0,0 +1,78 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * ubparams.c
 | 
			
		||||
+ * 
 | 
			
		||||
+ * Generate a u-boot parameter block with correct crc
 | 
			
		||||
+ *
 | 
			
		||||
+ * (C) 1007 Guthrie Consulting
 | 
			
		||||
+ * hamish@prodigi.ch
 | 
			
		||||
+ *
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include <stdio.h>
 | 
			
		||||
+#include <stdlib.h>
 | 
			
		||||
+#include <string.h>
 | 
			
		||||
+
 | 
			
		||||
+#ifndef __ASSEMBLY__
 | 
			
		||||
+#define __ASSEMBLY__
 | 
			
		||||
+#endif
 | 
			
		||||
+#define __ASM_STUB_PROCESSOR_H__
 | 
			
		||||
+#include <config.h>
 | 
			
		||||
+#undef __ASSEMBLY__
 | 
			
		||||
+#include "environment.h"
 | 
			
		||||
+
 | 
			
		||||
+#define XMK_STR(x)  #x
 | 
			
		||||
+#define MK_STR(x)  XMK_STR(x)
 | 
			
		||||
+
 | 
			
		||||
+extern unsigned long crc32 (unsigned long, const unsigned char *, unsigned int);
 | 
			
		||||
+
 | 
			
		||||
+#if !defined(ENV_CRC)
 | 
			
		||||
+#define ENV_CRC ~0
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+unsigned int env_size = 0x8400;
 | 
			
		||||
+env_t environment = {
 | 
			
		||||
+	ENV_CRC,
 | 
			
		||||
+	"bootdelay=3\0"
 | 
			
		||||
+	"baudrate=115200\0"
 | 
			
		||||
+	"stdin=serial\0"
 | 
			
		||||
+	"stdout=serial\0"
 | 
			
		||||
+	"stderr=serial\0"
 | 
			
		||||
+	"partitions=mtdparts=AT45DB642.spi0:132k(bootloader),33k(ubparams),99k(spare),1056k(linux),1056k(rootfs),33k(nvram),-(rootfs_data)\0"
 | 
			
		||||
+	"fbargs=setenv bootargs mtdparts=AT45DB642.spi0:132k(bootloader),33k(ubparams),99k(spare),1056k(linux),1056k(rootfs),33k(nvram),-(rootfs_data) root=/dev/mtdblock4 ro init=/etc/preinit console=/dev/ttyS0,115200,mem=32M\0"
 | 
			
		||||
+	"rdba=setenv bootargs mtdparts=AT45DB642.spi0:132k(bootloader),33k(ubparams),99k(spare),1056k(linux),1056k(rootfs),33k(nvram),-(rootfs_data) root=/dev/ram rw initrd=0x21200000,6000000 ramdisk_size=20000 init=/etc/preinit console=/dev/ttyS0,115200,mem=32M\0"
 | 
			
		||||
+	"rdram=run rdba; tftp 21000000 vImage; tftp 21200000 root.squashfs; bootm 21000000\0"
 | 
			
		||||
+	"flash=run fbargs; bootm 0xc0042000\0"
 | 
			
		||||
+	"bootargs=setenv bootargs mtdparts=AT45DB642.spi0:132k(bootloader),33k(ubparams),99k(spare),1056k(linux),1056k(rootfs),33k(nvram),-(rootfs_data) root=/dev/mtdblock4 ro init=/etc/preinit console=/dev/ttyS0,115200,mem=32M\0"
 | 
			
		||||
+	"bootcmd=bootm 0xc0042000\0"
 | 
			
		||||
+	"ethaddr=00:30:49:00:00:01\0"
 | 
			
		||||
+	"ipaddr=10.0.1.73\0"
 | 
			
		||||
+	"serverip=10.0.1.210\0"
 | 
			
		||||
+	"serial#=MX070205484\0"
 | 
			
		||||
+	"\0"
 | 
			
		||||
+	};
 | 
			
		||||
+
 | 
			
		||||
+int main(void) {
 | 
			
		||||
+	env_t *envptr, *source;
 | 
			
		||||
+	unsigned char *dataptr;
 | 
			
		||||
+	FILE *params;
 | 
			
		||||
+
 | 
			
		||||
+	source = &environment;
 | 
			
		||||
+	envptr = (env_t *)malloc(CFG_ENV_SIZE);
 | 
			
		||||
+	dataptr = (unsigned char *)envptr + ENV_HEADER_SIZE;
 | 
			
		||||
+
 | 
			
		||||
+	printf("Make u-boot params\n");
 | 
			
		||||
+	printf("Params size is %d\n", CFG_ENV_SIZE);
 | 
			
		||||
+
 | 
			
		||||
+	memset(envptr, 0, CFG_ENV_SIZE);
 | 
			
		||||
+	memcpy(envptr, source, sizeof(environment));
 | 
			
		||||
+
 | 
			
		||||
+	envptr->crc = crc32(0, envptr->data, ENV_SIZE);
 | 
			
		||||
+
 | 
			
		||||
+	params = fopen("params", "w");
 | 
			
		||||
+	fwrite(envptr, CFG_ENV_SIZE, 1, params);
 | 
			
		||||
+	fclose(params);
 | 
			
		||||
+
 | 
			
		||||
+	free(envptr);
 | 
			
		||||
+	}
 | 
			
		||||
+	
 | 
			
		||||
+	
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user