SVN-Revision: 6870master
parent
a726e63349
commit
9a8ff3b05d
@ -0,0 +1,5 @@ |
||||
::sysinit:/etc/init.d/rcS |
||||
tts/0::askfirst:/bin/ash --login |
||||
ttyS0::askfirst:/bin/ash --login |
||||
|
||||
ttyS2::respawn:/sbin/getty -L ttyS2 115200 vt100 |
@ -0,0 +1,15 @@ |
||||
#
|
||||
|
||||
all: ubpar |
||||
|
||||
crc32.c: |
||||
ln -s ../lib_generic/crc32.c ./
|
||||
|
||||
%.o: %.c |
||||
$(CC) -I ../include $(CFLAGS) $(EXTRA_FLAGS) -c -o $@ $^
|
||||
|
||||
ubpar: ubpar.o crc32.o |
||||
$(CC) -o $@ $^
|
||||
|
||||
clean: |
||||
rm -f *.o ubpar
|
@ -0,0 +1,125 @@ |
||||
/*
|
||||
* 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 |
||||
|
||||
static char *environment[] = { |
||||
"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" |
||||
"ipaddr=10.0.1.73\0" |
||||
"serverip=10.0.1.210\0" |
||||
"\0" |
||||
}; |
||||
|
||||
int main(int argc, char *argv[]) { |
||||
env_t *envptr; |
||||
char *src, *srcptr; |
||||
char *dataptr; |
||||
FILE *params; |
||||
int argfail = 1; |
||||
char newmac[30]; |
||||
char newser[30]; |
||||
int paramlen = 0; |
||||
int progmac = 0; |
||||
int progser = 0; |
||||
|
||||
if (argc < 3) { |
||||
printf ("Invalid arguments\n"); |
||||
return 1; |
||||
} |
||||
|
||||
switch (argc) { |
||||
case 5: |
||||
if (strcmp(argv[3], "--serial") == 0) { |
||||
argfail = 0; |
||||
sprintf(newser, "serial#=%s", argv[4]); |
||||
progser = 1; |
||||
} |
||||
case 3: |
||||
if (strcmp(argv[1], "--mac") == 0) { |
||||
argfail = 0; |
||||
sprintf(newmac, "ethaddr=%s", argv[2]); |
||||
progmac = 1; |
||||
} |
||||
else |
||||
argfail = 1; |
||||
} |
||||
|
||||
if (argfail) { |
||||
printf("Invalid arguments\n"); |
||||
return 1; |
||||
} |
||||
|
||||
|
||||
src = srcptr = *environment; |
||||
envptr = (env_t *)malloc(CFG_ENV_SIZE); |
||||
dataptr = (char *)envptr + ENV_HEADER_SIZE; |
||||
|
||||
while(*srcptr) { |
||||
//printf("%d, %s\n", strlen(srcptr), srcptr);
|
||||
paramlen += strlen(srcptr) + 1; |
||||
srcptr += strlen(srcptr) + 1; |
||||
} |
||||
|
||||
printf("Make u-boot params\n"); |
||||
printf("Params size is %d\n", CFG_ENV_SIZE); |
||||
|
||||
memset(envptr, 0, CFG_ENV_SIZE); |
||||
memcpy(dataptr, src, paramlen); |
||||
dataptr += paramlen; |
||||
|
||||
if (progmac) { |
||||
memcpy(dataptr, newmac, strlen(newmac)); |
||||
dataptr += strlen(newmac) + 1; |
||||
} |
||||
|
||||
if (progser) { |
||||
memcpy(dataptr, newser, strlen(newser)); |
||||
dataptr += strlen(newser) + 1; |
||||
} |
||||
|
||||
envptr->crc = crc32(0, envptr->data, ENV_SIZE); |
||||
|
||||
params = fopen("params", "w"); |
||||
fwrite(envptr, CFG_ENV_SIZE, 1, params); |
||||
fclose(params); |
||||
|
||||
free(envptr); |
||||
return 0; |
||||
} |
Loading…
Reference in new issue