From: Hamish Guthrie Date: Thu, 22 Mar 2007 17:33:29 +0000 (+0000) Subject: New program to generate u-boot parameter block with correct CRC to enable reprogrammi... X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=5bd651845669c5df531d0dfc9976aad65e81a451;p=openwrt%2Fstaging%2Frobimarko.git New program to generate u-boot parameter block with correct CRC to enable reprogramming parameters from Linux. SVN-Revision: 6636 --- 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 0000000000..abedf0ca80 --- /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 ++#include ++#include ++ ++#ifndef __ASSEMBLY__ ++#define __ASSEMBLY__ ++#endif ++#define __ASM_STUB_PROCESSOR_H__ ++#include ++#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); ++ } ++ ++