summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhcg <hcg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-03-22 17:33:29 +0000
committerhcg <hcg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-03-22 17:33:29 +0000
commit41e0816fe36a5e2e03e664aae6f8dd25e7b501e6 (patch)
tree50ae3cf39dc65c519ed9f7d8149b80b3b97c30bd
parent6e38bb04576b38458e3c2b66edb72f875fc662a5 (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.patch115
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 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 <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);
++ }
++
++