Hi all,

In Windows Mobile 5.0 documentation, "NAND Flash Block Driver Overview
(SP Only)" , it mentions that "The FAL is responsible for handling all I/O
requests from the upper-level file systems, implementing all of the
necessary wear-leveling operations, maintaining data integrity, handling
power-failure situations etc. The FAL also handles the conversion between
logical and physical sectors and bad block remapping".

However, does FAL need a bad block table to remap, and where does the
table locate. And if meet a bad block during read operation, which the
kernel partion locate on, what will happen? The OS will be collapsed?

Any suggestion maybe helpful.


Thanks,

Knight Lin

Re: FAL in NAND Flash Driver by Steve

Steve
Tue Apr 11 09:09:13 CDT 2006

1) Windows Mobile Build details are under NDA and not allowed in the public
forums. However since this question is really about the FAL which is part of
the public PB we're ok

You need to look into and understand NAND flash technologies better. There
is a lot of information available on exactly when and how FLASH can fail. If
the system detects bad blocks it can move the data to somewhere else after
applying ECC to correct the data, however bad blocks don't usually just
randomly appear, they are either bad at manufacturing or not. If the
physical flash is so physically damaged that it can't find a good block to
move things to then it's possible that you could have a system that won't
boot at all. This is really no different than booting your desktop system
from the hard drive. If the drive (or more likely the drive controller on
the disk) becomes damaged to the point that it can't provide valid data
anymore the system won't boot.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com



Re: FAL in NAND Flash Driver by Knight

Knight
Wed Apr 12 20:43:37 CDT 2006

Hi Steve,
Thanks for your reply.

As you said "If the system detects bad blocks it can move the data to
somewhere else after applying ECC to correct the data....". I do not know
what the "system" means, file system ,FAL or FMD? And as you said "it can
move the data to somewhere else ", so I think it must need a table, which
contains block info.

And as help doc said "The FAL also handles the conversion between
logical and physical sectors and bad block remapping" , FAL need a bad block
table to do remapping, but where does the table locate?

Thanks,

Knight Lin

"Steve Maillet (eMVP)" <nospam1@EntelechyConsulting.com> дÈëÏûÏ¢ÐÂÎÅ:eX6oGGXXGHA.3740@TK2MSFTNGP03.phx.gbl...
> 1) Windows Mobile Build details are under NDA and not allowed in the
> public forums. However since this question is really about the FAL which
> is part of the public PB we're ok
>
> You need to look into and understand NAND flash technologies better. There
> is a lot of information available on exactly when and how FLASH can fail.
> If the system detects bad blocks it can move the data to somewhere else
> after applying ECC to correct the data, however bad blocks don't usually
> just randomly appear, they are either bad at manufacturing or not. If the
> physical flash is so physically damaged that it can't find a good block to
> move things to then it's possible that you could have a system that won't
> boot at all. This is really no different than booting your desktop system
> from the hard drive. If the drive (or more likely the drive controller on
> the disk) becomes damaged to the point that it can't provide valid data
> anymore the system won't boot.
>
> --
> Steve Maillet
> EmbeddedFusion
> www.EmbeddedFusion.com
> smaillet at EmbeddedFusion dot com
>
>



Re: FAL in NAND Flash Driver by Steve

Steve
Wed Apr 12 22:07:00 CDT 2006

It doesn't store a table in actuality. Although for performance reasons the
FAL will cache the information in RAM. Each sector in the NAND contains
"meta data" that is used to manage the logical to physical mapping and store
the ECC codes for the data in the sector. The FAL manages this all for you,
the only thing you need to do for a specific flash part is implement the
FMD_xxx APIs that hide the details of talking to that particular chip.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com