diff options
| author | hcg <hcg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-03-22 17:33:29 +0000 | 
|---|---|---|
| committer | hcg <hcg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-03-22 17:33:29 +0000 | 
| commit | 41e0816fe36a5e2e03e664aae6f8dd25e7b501e6 (patch) | |
| tree | 50ae3cf39dc65c519ed9f7d8149b80b3b97c30bd | |
| parent | 6e38bb04576b38458e3c2b66edb72f875fc662a5 (diff) | |
New program to generate u-boot parameter block with correct CRC to
enable reprogramming parameters from Linux.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6636 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | target/linux/at91-2.6/image/u-boot/patches/006-generate_params.patch | 115 | 
1 files changed, 115 insertions, 0 deletions
| diff --git a/target/linux/at91-2.6/image/u-boot/patches/006-generate_params.patch b/target/linux/at91-2.6/image/u-boot/patches/006-generate_params.patch new file mode 100644 index 000000000..abedf0ca8 --- /dev/null +++ b/target/linux/at91-2.6/image/u-boot/patches/006-generate_params.patch @@ -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); ++	} ++	 ++	 | 
