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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot