mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Vanalme Filip <F.Vanalme@TELEVIC.com>
To: Vanalme Filip <F.Vanalme@TELEVIC.com>,
	"barebox@lists.infradead.org" <barebox@lists.infradead.org>
Subject: RE: writing environment in NAND flash
Date: Fri, 25 Feb 2011 16:25:42 +0100	[thread overview]
Message-ID: <6EE7D1502C48E44E92DCADF9DD3E0DB9017FF3B00CF8@SRV-VS06.TELEVIC.COM> (raw)
In-Reply-To: <6EE7D1502C48E44E92DCADF9DD3E0DB9017FF3B00CD5@SRV-VS06.TELEVIC.COM>

> -----Original Message-----
> From: Vanalme Filip
> Sent: vrijdag 25 februari 2011 15:14
> To: Vanalme Filip; barebox@lists.infradead.org
> Subject: RE: writing environment in NAND flash
> 
> > -----Original Message-----
> > From: barebox-bounces@lists.infradead.org [mailto:barebox-
> > bounces@lists.infradead.org] On Behalf Of Vanalme Filip
> > Sent: vrijdag 25 februari 2011 14:50
> > To: barebox@lists.infradead.org
> > 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.

[Filip] 
I changed the code in nand_imx.c like this :

* This function is used by the upper layer to verify the data in NAND Flash
 * with the data in the \b buf.
 *
 * @param       mtd     MTD structure for the NAND Flash
 * @param       buf     data to be verified
 * @param       len     length of the data to be verified
 *
 * @return      -EFAULT if error else 0
 *
 */
static int
imx_nand_verify_buf(struct mtd_info *mtd, const u_char * buf, int len) {
  int i;
  struct nand_chip *chip = mtd->priv;
  struct imx_nand_host *host = chip->priv;

  for (i = 0; i < len; i++)
  {
    if (buf[i] != host->data_buf[i])
    {
      MTD_DEBUG(MTD_DEBUG_LEVEL0, "Verify failed on byte %d : 0x%0x <-> 0x%0x\n", i, buf[i], host->data_buf[i]);
      return -EFAULT;
    }
  }

  return 0;
}

It looks OK now. I can now save the environment.

Maybe someone can verify if this is correct. And maybe adjust the Barebox mainline sources like that ?

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

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

  reply	other threads:[~2011-02-25 15:25 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-25 13:50 Vanalme Filip
2011-02-25 13:56 ` Juergen Beisert
2011-02-25 14:13 ` Vanalme Filip
2011-02-25 15:25   ` Vanalme Filip [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-02-25  9:31 Vanalme Filip

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6EE7D1502C48E44E92DCADF9DD3E0DB9017FF3B00CF8@SRV-VS06.TELEVIC.COM \
    --to=f.vanalme@televic.com \
    --cc=barebox@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox