diff options
Diffstat (limited to 'tools/env/fw_env.c')
| -rw-r--r-- | tools/env/fw_env.c | 130 | 
1 files changed, 27 insertions, 103 deletions
| diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c index ab8c15d30..9b023e807 100644 --- a/tools/env/fw_env.c +++ b/tools/env/fw_env.c @@ -119,102 +119,8 @@ static unsigned char active_flag = 1;  /* obsolete_flag must be 0 to efficiently set it on NOR flash without erasing */  static unsigned char obsolete_flag = 0; - -static char default_environment[] = { -#if defined(CONFIG_BOOTARGS) -	"bootargs=" CONFIG_BOOTARGS "\0" -#endif -#if defined(CONFIG_BOOTCOMMAND) -	"bootcmd=" CONFIG_BOOTCOMMAND "\0" -#endif -#if defined(CONFIG_RAMBOOTCOMMAND) -	"ramboot=" CONFIG_RAMBOOTCOMMAND "\0" -#endif -#if defined(CONFIG_NFSBOOTCOMMAND) -	"nfsboot=" CONFIG_NFSBOOTCOMMAND "\0" -#endif -#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0) -	"bootdelay=" __stringify(CONFIG_BOOTDELAY) "\0" -#endif -#if defined(CONFIG_BAUDRATE) && (CONFIG_BAUDRATE >= 0) -	"baudrate=" __stringify(CONFIG_BAUDRATE) "\0" -#endif -#ifdef	CONFIG_LOADS_ECHO -	"loads_echo=" __stringify(CONFIG_LOADS_ECHO) "\0" -#endif -#ifdef	CONFIG_ETHADDR -	"ethaddr=" __stringify(CONFIG_ETHADDR) "\0" -#endif -#ifdef	CONFIG_ETH1ADDR -	"eth1addr=" __stringify(CONFIG_ETH1ADDR) "\0" -#endif -#ifdef	CONFIG_ETH2ADDR -	"eth2addr=" __stringify(CONFIG_ETH2ADDR) "\0" -#endif -#ifdef	CONFIG_ETH3ADDR -	"eth3addr=" __stringify(CONFIG_ETH3ADDR) "\0" -#endif -#ifdef	CONFIG_ETH4ADDR -	"eth4addr=" __stringify(CONFIG_ETH4ADDR) "\0" -#endif -#ifdef	CONFIG_ETH5ADDR -	"eth5addr=" __stringify(CONFIG_ETH5ADDR) "\0" -#endif -#ifdef	CONFIG_ETHPRIME -	"ethprime=" CONFIG_ETHPRIME "\0" -#endif -#ifdef	CONFIG_IPADDR -	"ipaddr=" __stringify(CONFIG_IPADDR) "\0" -#endif -#ifdef	CONFIG_SERVERIP -	"serverip=" __stringify(CONFIG_SERVERIP) "\0" -#endif -#ifdef	CONFIG_SYS_AUTOLOAD -	"autoload=" CONFIG_SYS_AUTOLOAD "\0" -#endif -#ifdef	CONFIG_ROOTPATH -	"rootpath=" CONFIG_ROOTPATH "\0" -#endif -#ifdef	CONFIG_GATEWAYIP -	"gatewayip=" __stringify(CONFIG_GATEWAYIP) "\0" -#endif -#ifdef	CONFIG_NETMASK -	"netmask=" __stringify(CONFIG_NETMASK) "\0" -#endif -#ifdef	CONFIG_HOSTNAME -	"hostname=" __stringify(CONFIG_HOSTNAME) "\0" -#endif -#ifdef	CONFIG_BOOTFILE -	"bootfile=" CONFIG_BOOTFILE "\0" -#endif -#ifdef	CONFIG_LOADADDR -	"loadaddr=" __stringify(CONFIG_LOADADDR) "\0" -#endif -#ifdef	CONFIG_PREBOOT -	"preboot=" CONFIG_PREBOOT "\0" -#endif -#ifdef	CONFIG_CLOCKS_IN_MHZ -	"clocks_in_mhz=" "1" "\0" -#endif -#if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0) -	"pcidelay=" __stringify(CONFIG_PCI_BOOTDELAY) "\0" -#endif -#ifdef	CONFIG_ENV_VARS_UBOOT_CONFIG -	"arch=" CONFIG_SYS_ARCH "\0" -	"cpu=" CONFIG_SYS_CPU "\0" -	"board=" CONFIG_SYS_BOARD "\0" -#ifdef CONFIG_SYS_VENDOR -	"vendor=" CONFIG_SYS_VENDOR "\0" -#endif -#ifdef CONFIG_SYS_SOC -	"soc=" CONFIG_SYS_SOC "\0" -#endif -#endif -#ifdef  CONFIG_EXTRA_ENV_SETTINGS -	CONFIG_EXTRA_ENV_SETTINGS -#endif -	"\0"		/* Termimate struct environment data with 2 NULs */ -}; +#define DEFAULT_ENV_INSTANCE_STATIC +#include <env_default.h>  static int flash_io (int mode);  static char *envmatch (char * s1, char * s2); @@ -494,6 +400,8 @@ int fw_setenv(int argc, char *argv[])  		char *val = argv[i];  		size_t val_len = strlen(val); +		if (value) +			value[len - 1] = ' ';  		value = realloc(value, len + val_len + 1);  		if (!value) {  			fprintf(stderr, @@ -504,9 +412,8 @@ int fw_setenv(int argc, char *argv[])  		memcpy(value + len, val, val_len);  		len += val_len; -		value[len++] = ' '; +		value[len++] = '\0';  	} -	value[len - 1] = '\0';  	fw_env_write(name, value); @@ -738,8 +645,8 @@ static int flash_read_buf (int dev, int fd, void *buf, size_t count,  			return -1;  		}  #ifdef DEBUG -		fprintf (stderr, "Read 0x%x bytes at 0x%llx\n", -			 rc, blockstart + block_seek); +		fprintf(stderr, "Read 0x%x bytes at 0x%llx on %s\n", +			 rc, blockstart + block_seek, DEVNAME(dev));  #endif  		processed += readlen;  		readlen = min (blocklen, count - processed); @@ -818,6 +725,18 @@ static int flash_write_buf (int dev, int fd, void *buf, size_t count,  		if (write_total != rc)  			return -1; +#ifdef DEBUG +		fprintf(stderr, "Preserving data "); +		if (block_seek != 0) +			fprintf(stderr, "0x%x - 0x%lx", 0, block_seek - 1); +		if (block_seek + count != write_total) { +			if (block_seek != 0) +				fprintf(stderr, " and "); +			fprintf(stderr, "0x%lx - 0x%x", +				block_seek + count, write_total - 1); +		} +		fprintf(stderr, "\n"); +#endif  		/* Overwrite the old environment */  		memcpy (data + block_seek, buf, count);  	} else { @@ -876,7 +795,8 @@ static int flash_write_buf (int dev, int fd, void *buf, size_t count,  		}  #ifdef DEBUG -		printf ("Write 0x%x bytes at 0x%llx\n", erasesize, blockstart); +		fprintf(stderr, "Write 0x%x bytes at 0x%llx\n", erasesize, +			blockstart);  #endif  		if (write (fd, data + processed, erasesize) != erasesize) {  			fprintf (stderr, "Write error on %s: %s\n", @@ -943,7 +863,7 @@ static int flash_write (int fd_current, int fd_target, int dev_target)  	}  #ifdef DEBUG -	printf ("Writing new environment at 0x%lx on %s\n", +	fprintf(stderr, "Writing new environment at 0x%lx on %s\n",  		DEVOFFSET (dev_target), DEVNAME (dev_target));  #endif  	rc = flash_write_buf(dev_target, fd_target, environment.image, @@ -957,7 +877,8 @@ static int flash_write (int fd_current, int fd_target, int dev_target)  		off_t offset = DEVOFFSET (dev_current) +  			offsetof (struct env_image_redundant, flags);  #ifdef DEBUG -		printf ("Setting obsolete flag in environment at 0x%lx on %s\n", +		fprintf(stderr, +			"Setting obsolete flag in environment at 0x%lx on %s\n",  			DEVOFFSET (dev_current), DEVNAME (dev_current));  #endif  		flash_flag_obsolete (dev_current, fd_current, offset); @@ -1224,6 +1145,9 @@ int fw_env_open(void)  			/* Other pointers are already set */  			free (addr1);  		} +#ifdef DEBUG +		fprintf(stderr, "Selected env in %s\n", DEVNAME(dev_current)); +#endif  	}  	return 0;  } |