On Friday 04 February 2011 12:22:57 Ketil Froyn wrote:
> On Thu, Feb 3, 2011 at 10:42 PM, Charles Manning
>
> <manningc2@actrix.gen.nz> wrote:
> > On Thursday 03 February 2011 13:38:48 Eugene Soh wrote:
> >> I've performed a nanddump of a YAFFS2 filesystem and would like to know
> >> the exact byte / hex structure of the spare OOB area.
> >
> > Sorry there is no such thing.
> >
> > The actual layout is controlled by the NAND driver. YAFFS2 just says
> > "store these bytes" and the NAND driver then determines where to store
> > those bytes and the other bytes (ECC, bad block markers, and possibly
> > more).
> >
> > Find the NAND driver for the device you are using. That will help.
>
> How undefined is the layout without knowing the driver? Is it just the
> offset of the data in the OOB that will vary? Or are there drivers
> that change endianness or something like that?
Anything is possible.
Most common would probably be the default layouts defined in
drivers/mtd/nand/nand_base.c
The yaffs tags will be stored in the area defined in .oobfree
eg.
static struct nand_ecclayout nand_oob_64 = {
.eccbytes = 24,
.eccpos = {
40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63},
.oobfree = {
{.offset = 2,
.length = 38} }
};
Here
bytes 0,1 are the bad block marker (should be 0xff)
bytes 2..39 contain the yaffs tags a struct yaffs_packed_tags2
bytes 40..63 contain ECC bytes.
-- Charles
-- Charles