RE: writing environment in NAND flash

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: barebox-bounces@xxxxxxxxxxxxxxxxxxx [mailto:barebox-
> bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Vanalme Filip
> Sent: vrijdag 25 februari 2011 14:50
> To: barebox@xxxxxxxxxxxxxxxxxxx
> Subject: writing environment in NAND flash
> 
> I have problems to save my environment settings. Although I set e.g. the MAC
> address and some other values and do the saveenv command, after reset, all
> settings have disappeared.
> In the logging on the console port, I detected this :
> "wrong crc on env
> no valid environment found on /dev/env0. Using default environment"
> 
> That will be, of course, the cause why the settings disappear.
> Further investigation with debugging enabled in nand_imx.c showed that Barebox
> reads 4 pages when starting up (0x80..0x83). That looks OK, because the
> environment's size is 6156 bytes. So, indeen 4 pages needed. However, when
> saving the environment, I only see appear one page write, i.e. on page 0x80. Of
> course, when reading back the four pages, the 2nd, 3rd and 4th page have all FF
> because they have never been written (causing a wrong CRC). Any idea why I
> only see 1 page write when saving the environment although the size is 6156
> bytes ? Any hints where to look in the sources ?
> 
> Thanks in advance !
> 
> 
> 
> Filip
> 
[Filip]  Sorry for sending this message twice to the mailing list....

I have found the cause of this problem.
I have CONFIG_MTD_NAND_VERIFY_WRITE=y.
So, after a write, the code performs a read to verify the written data. For i.MX27, this mean that the function imx_nand_very_buf() is called. Well, that function looks like this :

static int
imx_nand_verify_buf (struct mtd_info *mtd, const u_char * buf, int len) {
  return -EFAULT;
}

Yep...verification always fails... !
Must be a function that still is under development, no ? (although I would have expected a "TODO" somewhere in that function....).

Two things I can do : set the configuration flag to n or add code to this function to really verify the written data.

> _______________________________________________
> barebox mailing list
> barebox@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/barebox

_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox


[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux