[U-Boot]  fw_env bug for multi-sector environments on NOR flash
    Fei, Yiyang 
    YiYang.Fei at barco.com
       
    Thu Aug 25 20:28:02 CEST 2011
    
    
  
Hi,
I am storing u-boot environment variables on a NOR flash using two
sectors.  I encountered an error when writing changes using fw_setenv.  
/etc # cat fw_env.config
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundand
# environment sector is assumed present.
# MTD device name       Device offset   Env. size       Flash sector
size       Number of sectors
/dev/mtd12              0x0000          0x20000         0x10000
2
/etc # fw_setenv test test
End of range reached, aborting
Error: can't write fw_env to flash
The reason for the error is that although both sectors are written in
one pass, the loop for the write is executed twice because the
"processed" variable is incremented by the incorrect amount.  The
following change is needed to fix this issue for NOR multi-sector
environments.  
diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index ed6b53f..e6b2cae 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -880,9 +880,8 @@ static int flash_write_buf (int dev, int fd, void
*buf, size_t count,
                ioctl (fd, MEMLOCK, &erase);
-               processed  += blocklen;
-               block_seek = 0;
-               blockstart += blocklen;
+               processed  += erasesize;
+               blockstart += erasesize;
        }
        if (write_total > count)
Are there any objections to committing this change?
Yiyang Fei
    
    
More information about the U-Boot
mailing list