All silicon can have bad areas in it, if the bad area falls in a necessary part of the product then it goes in the dumpster the yield goes down and the unit cost goes up. By specifying the product to work around the bad areas, all the parts can be shipped, the yield goes up and the unit cost is less.
This gives Nand another advantage. In both Nand and Nor, blocks will go bad during use (the most common failure mode is to get stuck bits which won't erase). The Nand spec 'automatically' handles this, but if working with Nor you have to develop your own mechansim for dealing with bad blocks (or not!)
No idea. Not a name that I recognise. Googling gave me lots of hits.
For a fixed flash, this is up to you, but for a removable flash it has to sit on the flash (doesn't it?) (and presumably, if there is any chance of removing the disk, it has to be on the flash)
Um, what are your priorities. Sorry, this is a near impossible question for a third party to answer on so little info.
 Unless the bad area is the first block (or is that page?).
A journaling file system first records a write operation it's about to do into a special area on the file system called the journal.
It then performs the write to the target area, and lastly erases the journal.
The purpose of journaling is to get fast recovery if a write operation is aborted before all parts of it are done. The journal contains the details of what was being written at the moment of the interruption.
There are two kinds of data in a file system:
- the data itself (payload), - metadata, the data about the file system structure.
A journaling file system can journal the metadata or all the data. The metadata-only file journaling system simplifies recovery after a crash, but there is not the data protection full journaling gives. It's quite obvious that the full journaling is the slower of the two options, and it also needs more space for the journal.
Flash translation layers (code) can handle these errors in blocks but there is no automatic error handling in the NAND flash itself. YOu must keep track of bad blocks and avoid erasing or programming them.
The best file system for NAND is one that does NOT repetetively use write to the same areas of the flash. The idea is to spread the erase/writes out evenly across the chip. This may be what you are referring to.
First block is ALWAYS guaranteed to be flawless from the factory.
1.what are the general considerations while choosing a file system?
on what you said about 'where the file system should sit', i have another question: if i have a removable flash, and i use a particular flash file system and put it on to flash. that means to say the OS which i am using should be able to recognize that fie system. is it that way? if i use a fixed flash onto an embedded system, then it should sit on the flash. right?
"Write levelling" is, I believe, the term for spreading erase and write operations out throughout the chip. "Journalling" means that any changes to the file system are logged before the change is actually made, in a way that it is always possible to get back to a consistant state despite errors during the erase/write cycles (such as turning the power off during a write). This can be either data journalling (which ensures that a data file is either completely the old version, or completely the new version) or meta-data journalling (which only ensures the integrity of the file structures). Meta-data journalling is by far the most common - data journalling is normally too expensive (in time, erase/write cycles, and spare flash) and frequently inappropriate anyway.
"Write levelling" and "journalling" are orthogonal concepts in theory, but often turn up together in practice. For example, FAT file systems provide neither, while jffs2 provides both.