New program to generate u-boot parameter block with correct CRC to enable reprogrammi...
authorHamish Guthrie <hcg@openwrt.org>
Thu, 22 Mar 2007 17:33:29 +0000 (17:33 +0000)
committerHamish Guthrie <hcg@openwrt.org>
Thu, 22 Mar 2007 17:33:29 +0000 (17:33 +0000)
SVN-Revision: 6636

target/linux/at91-2.6/image/u-boot/patches/006-generate_params.patch [new file with mode: 0644]

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 (file)
index 0000000..abedf0c
--- /dev/null
@@ -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);
++      }
++      
++