From: Wolfgang Denk <wd@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 5/6] Support environment anywhere within erase area
Date: Sun, 31 Aug 2008 20:57:32 +0200 [thread overview]
Message-ID: <20080831185732.BE669242FF@gemini.denx.de> (raw)
In-Reply-To: <Pine.LNX.4.64.0808271747470.6718@axis700.grange>
Dear Guennadi Liakhovetski,
In message <Pine.LNX.4.64.0808271747470.6718@axis700.grange> you wrote:
> This will become more important with NAND support, in which case the minimum
> erase region is a block, which consists of several pages and can be 256KiB
> large.
Please explain.
What does "anywhere" mean? At offset 0, 1, 5, 17 or 42? Or what? And
what exactly is the "erase area" ?
And where's the difference between NAND and NOR flash? For NOR, the
minimum "erase region" is a "block", either, which also can be 256KiB
large.
> + /*
> + * Support environment anywhere within erase sectors: read out the
> + * complete area to be erased, replace the environment image, write
> + * the whole block back again.
> + */
> + if (DEVESIZE (dev_target) > CFG_ENV_SIZE) {
> + data = malloc (DEVESIZE (dev_target));
> + if (!data) {
> + fprintf (stderr,
> + "Cannot malloc %lu bytes: %s\n",
> + DEVESIZE (dev_target),
> + strerror (errno));
> + return -1;
> + }
> +
> + rc = ioctl (fd_target, MEMGETINFO, &mtdinfo_target);
> + if (rc < 0) {
> + perror ("Cannot get MTD information");
> + return -1;
> + }
> +
> + /* Erase sector size is always a power of 2 */
> + erase_offset = DEVOFFSET (dev_target) &
> + ~(mtdinfo_target.erasesize - 1);
> +
> + rc = flash_read_buf (dev_target, fd_target, data,
> + DEVESIZE (dev_target), erase_offset);
> + if (rc < 0)
> + return rc;
> +
> + /* Overwrite the old environment */
> + memcpy(DEVOFFSET (dev_target) - erase_offset + data,
> + environment.image, CFG_ENV_SIZE);
> + } else {
> + data = (char *)environment.image;
> + erase_offset = DEVOFFSET (dev_target);
> + }
You are talking about "several pages" above. Where is this refelected
in the code?
Frankly, I don't understand what you are trying to do. Please explain
your implementation.
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: wd at denx.de
Bugs are by far the largest and most successful class of
entity, with nearly a million known species. In this res-
pect they outnumber all the other known creatures about
four to one. -- Professor Snope's Encyclopedia of Animal
next prev parent reply other threads:[~2008-08-31 18:57 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-27 15:52 [U-Boot] [PATCH 0/6] Support NAND in fw_printenv/fw_setenv Guennadi Liakhovetski
2008-08-27 15:52 ` [U-Boot] [PATCH 1/6] Convert fw_env.c to use a single environment image union Guennadi Liakhovetski
2008-08-31 14:36 ` Wolfgang Denk
2008-08-31 15:57 ` Guennadi Liakhovetski
2008-08-31 18:57 ` Wolfgang Denk
2008-08-27 15:52 ` [U-Boot] [PATCH 2/6] Separate flash read and write operations Guennadi Liakhovetski
2008-08-31 14:58 ` Wolfgang Denk
2008-08-31 16:04 ` Guennadi Liakhovetski
2008-08-31 18:57 ` Wolfgang Denk
2008-08-31 19:45 ` Guennadi Liakhovetski
2008-08-31 19:56 ` Wolfgang Denk
2008-08-27 15:52 ` [U-Boot] [PATCH 3/6] "return" is not a function Guennadi Liakhovetski
2008-08-31 14:59 ` Wolfgang Denk
2008-08-31 16:10 ` Guennadi Liakhovetski
2008-08-31 18:57 ` Wolfgang Denk
2008-08-31 19:17 ` Guennadi Liakhovetski
2008-08-27 15:52 ` [U-Boot] [PATCH 4/6] Unify active vs. redundant environment variable naming Guennadi Liakhovetski
2008-08-31 15:04 ` Wolfgang Denk
2008-08-31 16:18 ` Guennadi Liakhovetski
2008-08-31 18:57 ` Wolfgang Denk
2008-08-31 19:27 ` Guennadi Liakhovetski
2008-08-31 19:44 ` Wolfgang Denk
2008-08-27 15:52 ` [U-Boot] [PATCH 5/6] Support environment anywhere within erase area Guennadi Liakhovetski
2008-08-31 18:57 ` Wolfgang Denk [this message]
2008-08-31 19:39 ` Guennadi Liakhovetski
2008-08-31 19:53 ` Wolfgang Denk
2008-08-27 15:52 ` [U-Boot] [PATCH 6/6] Support environment in NAND Guennadi Liakhovetski
2008-08-29 9:29 ` [U-Boot] [PATCH 6/6 v2] " Guennadi Liakhovetski
2008-08-31 18:57 ` [U-Boot] [PATCH 6/6] " Wolfgang Denk
2008-08-31 21:53 ` Guennadi Liakhovetski
2008-08-31 20:21 ` [U-Boot] [PATCH 0/6] Support NAND in fw_printenv/fw_setenv Wolfgang Denk
2008-08-31 20:37 ` Guennadi Liakhovetski
2008-08-31 20:55 ` Wolfgang Denk
2008-09-01 9:08 ` Guennadi Liakhovetski
2008-09-01 9:31 ` Guennadi Liakhovetski
2008-09-01 22:42 ` Wolfgang Denk
2008-09-01 22:41 ` Wolfgang Denk
2008-09-01 23:33 ` Guennadi Liakhovetski
2008-09-02 0:13 ` Wolfgang Denk
2008-09-02 16:00 ` Guennadi Liakhovetski
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=20080831185732.BE669242FF@gemini.denx.de \
--to=wd@denx.de \
--cc=u-boot@lists.denx.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.