Re: [Yaffs] need yaffs2 port help!

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: ian@brightstareng.com
Date:  
To: ygl_bj, yaffs
Subject: Re: [Yaffs] need yaffs2 port help!
ybl_bj,

On Friday 08 June 2007 05:54, wrote:
> 1. i use K9F1G08U0A(2048+64,64page/block,1024blocks/chip), in
> nand flash datasheet says "Samsung makes sure that either the
> 1st or 2nd page of every invalid block has non-FFh data at the
> column address of 2048". i port yaffs2 to vc++ 2005 and
> implement a simulation driver on pc. I find yaffs2 check bad
> block only checked the 1st page's 2048 byte. do yaffs2 already
> check the 2nd page's 2048 byte?


We also use a large page device with Yaffs, but with MTD, not the
direct interface. However I too saw a similar description of the
bad block marking for large page STMicroElectronics NAND01GW3B2AN6
chip. I added the function included below to our MTD nand driver to
implement this test. I also brought this up on the Yaffs list in 8/2005
but nobody agreed with my interpretation of the data-sheet text,
see http://lists.aleph1.co.uk/pipermail/yaffs/2005q3/001413.html
and the next few messages that thread. Looking at both the
first and second pages certainly is not incorrect.

-imcd

/* Examine the 1st and 6th byte of the oob area in the 1st page of
 * the specified block.  Ref. STMicroelectronics datasheet page 36.
 */
static int
nand_large_block_bad(struct mtd_info *mtd, loff_t ofs, int dummy)
{
        const struct nand_chip *chip = mtd->priv;
        int addr = (int)ofs & ~(mtd->erasesize-1); /* 1st page in block */
        int page = addr >> chip->page_shift;
        unsigned char buf[6];


        chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
        chip->read_buf(mtd, buf, 6);
        return (buf[0] != 0xff || buf[5] != 0xff);
}