
Sorry for the top post. Resending in plain text as original message was UTF-8
On Wed, Apr 7, 2010 at 11:14 AM, Brian Hutchinson b.hutchman@gmail.com wrote:
Hi,
I'm using u-boot 1.1.6 and have been using a single 256k flash sector for the environment. I want to use the redundant env. feature so I changed my config to:
#define CFG_ENV_IS_IN_FLASH 1 /* Environment variables stored in Flash memory */ #define CFG_ENV_ADDR (PC20X_BOOTABLE_FLASH_BASE+FLASH_SECTOR_SIZE) #define CFG_ENV_SECT_SIZE FLASH_SECTOR_SIZE /* One flash sector for environment info */ #define CFG_ENV_SIZE 0x10000 /* But 64K is sufficient */ //#define CFG_ENV_SIZE CFG_ENV_SECT_SIZE /* the whole sector */
/* Redundant environment */ #define CFG_ENV_ADDR_REDUND (CFG_ENV_ADDR + CFG_ENV_SECT_SIZE) #define CFG_ENV_SIZE_REDUND (CFG_ENV_SIZE)
#define CONFIG_ENV_OVERWRITE /* Turn off wite protection for vendor parameters */
When I use u-boot built with a CFG_ENV_SIZE of 0x10000 (what was working before I started) and enable CFG_ENV_ADDR_REDUND .... I get the following when trying to saveenv:
=> saveenv Saving Environment to Flash... Un-Protected 1 sectors Un-Protected 1 sectors Unable to save the rest of sector (196608) Protected 1 sectors Protected 1 sectors
My physical NOR flash is setup as: 0x20000000 = u-boot 0x20040000 = u-boot env. (the original env that works if I don't have redund turned on) 0x20080000 = u-boot redund env. (what I added)
I'm not certain what the problem is. I'm getting to the code in common/env_flash.c that has:
#if CFG_ENV_SECT_SIZE > CFG_ENV_SIZE up_data = (end_addr_new + 1 - ((long)flash_addr_new + CFG_ENV_SIZE)); debug ("Data to save 0x%x\n", up_data); if (up_data) { if ((saved_data = malloc(up_data)) == NULL) { printf("Unable to save the rest of sector (%ld)\n", up_data); goto Done; } memcpy(saved_data, (void *)((long)flash_addr_new + CFG_ENV_SIZE), up_data); debug ("Data (start 0x%x, len 0x%x) saved at 0x%x\n", (long)flash_addr_new + CFG_ENV_SIZE, up_data, saved_data); } #endif
... which to my understanding is intended to allow you to save RAM by using a env. smaller than your sector size which is my case.
I've also tried to set CFG_ENV_SIZE to be the flash sector size which gets me over the above "Unable to save the rest of sector" problem but I suspect that I'm having RAM issues as I only have 128M RAM and am trying to use two environments of 256k each and the problem I'm having then becomes when I try to nfs boot my board .... it just hangs.
Any ideas on what I should check? The "Unable to save the rest of sector (196608)" is kind of strange as 196608 in hex is 0x30000 which is the sector u-boot lives in!
Regards,
Brian