[U-Boot] fw_env bug for multi-sector environments on NOR flash

2011-08-25 Thread Fei, Yiyang
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  0x  0x2 0x1
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
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] fw_env bug for multi-sector environments on NOR flash

2011-08-25 Thread Wolfgang Denk
Dear Fei, Yiyang,

In message c2a5d1386c6db94198f2a5c8368eae6c14659...@dulmex02.barco.com you 
wrote:
 
 # MTD device name   Device offset   Env. size   Flash sector
 size   Number of sectors
 /dev/mtd12  0x  0x2 0x1
 2

Stupid question: why do you define an environment size of 128 kB?
I bet you use less than 10% of this, right?

Are you aware that this has a lof of disadvantages, lile
significantly slowing down your boot process?


 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.  
...
 Are there any objections to committing this change?

Your Signed-off-by: line is missing...

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Hiring experienced unix people is  like  a  built-in  filter  against
idiots. Hiring experienced NT people provides no such guarantee.
-- Miguel Cruz in WgL96.349$cc.122...@typhoon2.ba-dsg.net
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] fw_env bug for multi-sector environments on NOR flash

2011-08-25 Thread Fei, Yiyang
Dear Mr. Denk,

 Stupid question: why do you define an environment size of 128 kB?
 I bet you use less than 10% of this, right?

Correct

 Are you aware that this has a lof of disadvantages, lile
 significantly slowing down your boot process?

I am now, but the first product is already released and cannot be
changed easily.

 Your Signed-off-by: line is missing...

I resubmitted updated message.

Best regards,
Yiyang Fei
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot