[Yaffs] How to do "low-level format" on NAND MTD partiton?

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Tian Jin
Date:  
To: yaffs
Subject: [Yaffs] How to do "low-level format" on NAND MTD partiton?
Hi, I'm using a 4GB(4 x 1GB NAND chips) NAND partition on my at91rm9200 ARM
board, recently, I found half of my NAND eraseblocks were reported as "bad
block" by yaffs2(v1.59, v1.48) at mount time. I think those blocks must be
marked "BAD" by mistake, because those NAND chips are quite new and show few
bad blocks by MTD driver at boot time:

NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V
8-bit)
4 NAND chips detected
Scanning device for bad blocks
Bad eraseblock 1422 at 0x0b1c0000
Bad eraseblock 3085 at 0x181a0000
Bad eraseblock 6618 at 0x33b40000
Bad eraseblock 7773 at 0x3cba0000
Bad eraseblock 8055 at 0x3eee0000
Bad eraseblock 8785 at 0x44a20000
Bad eraseblock 12568 at 0x62300000
Bad eraseblock 13067 at 0x66160000
Bad eraseblock 13431 at 0x68ee0000
Bad eraseblock 14546 at 0x71a40000
Bad eraseblock 15241 at 0x77120000
Bad eraseblock 15525 at 0x794a0000
Bad eraseblock 16075 at 0x7d960000
Bad eraseblock 24212 at 0xbd280000
Bad eraseblock 25755 at 0xc9360000
Bad eraseblock 28638 at 0xdfbc0000
Bad eraseblock 28639 at 0xdfbe0000
Bad eraseblock 28704 at 0xe0400000
Bad eraseblock 29231 at 0xe45e0000
Bad eraseblock 29573 at 0xe70a0000
Bad eraseblock 29892 at 0xe9880000
Bad eraseblock 30116 at 0xeb480000
Bad eraseblock 32735 at 0xffbe0000
Creating 1 MTD partitions on "NAND 1GiB 3,3V 8-bit":
0x00000000-0xfffe0000 : "NAND Data Storage"

The flowing badblocks are reported by yaffs2:
...
find next checkpt block: search: block 32765 oid 0 seq 0 eccr 0
find next checkpt block: search: block 32766 oid 0 seq 0 eccr 0
find next checkpt block: search: block 32767 oid 0 seq 0 eccr 0
found no more checkpt blocks
checkpoint byte count 0
restore exit: isCheckpointed 0
block 1423 is bad
block 3086 is bad
block 6619 is bad
block 7774 is bad
block 8056 is bad
block 8786 is bad
block 12569 is bad
block 13068 is bad
block 13432 is bad
block 14547 is bad
block 15242 is bad
block 15526 is bad
block 16076 is bad
block 16385 is bad <- first bad block of last two chips
block 16386 is bad
block 16388 is bad
block 16389 is bad
block 16390 is bad
...
block 32737 is bad
block 32738 is bad
block 32739 is bad
block 32742 is bad
block 32743 is bad
block 32745 is bad
block 32746 is bad
block 32747 is bad
block 32750 is bad
block 32752 is bad
block 32753 is bad
block 32755 is bad
block 32756 is bad
block 32758 is bad
block 32759 is bad
block 32760 is bad
block 32761 is bad
block 32763 is bad
block 32764 is bad
block 32765 is bad
block 32766 is bad

As we can see, the first two NAND chips are reported correctlly, but the
last two chips are reported 99% bad blocks, but the freespace of 4GB
partiton is 3.5GB NOT 2GB:

ARM nand]# du
2    ./lost+found
4    .
[ARM nand]# df
Filesystem           1k-blocks      Used Available Use% Mounted on
tmpfs                    14984         4     14980   0% /dev
/dev/mtdblock6         4194176    620032   3574144  15% /mnt/nand


I have used nand_erase to erase entire NAND partiton but the problem
remains.
Is it a yaffs bug? If it's not, how can I low-level format it (to clear
those bad block marks) ?

Thanx.

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search!
http://search.msn.com/