Hi,
I'm working with the AM35x WinEC 7 NAND Flash driver from Adeneo.
Where does the driver store the bad block table? I can't find this information in the source code.
Best regards,
Andreas
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
I'm working with the AM35x WinEC 7 NAND Flash driver from Adeneo.
Where does the driver store the bad block table? I can't find this information in the source code.
Best regards,
Andreas
Hi Andreas,
Every time the board is booted the NAND flash tells the board where it's bad blocks are. The board stores these information into RAM. In WINC there are two drivers that handle flash. The FMD driver handles the specific NAND which in turn talks to the FAL driver which handles the bad and reserved blocks for you. FAL is a driver that is handled by Microsoft. In WINCE7 I found the location for the FAL driver here: WINCE700\private\winceos\DRIVERS\FAL
The closest thing to a block table can be found in falmain.cpp, in the DSK_Init function. A quick search did not yield where the FAL keeps track of new bad blocks after booting the board.
FMD and FAL drivers have been upgraded for WINC 6.0 R2 and later to PDD (FMD equivalent) and MDD (FAL equivalent) drivers. There is also a rapper class that allows FMD drivers to talk to MDD drivers. Despite this upgrade, it looked like the BSP for AM35X WINC7 I have is still sourcing in FAL and FMD drivers.
There is a msdn site on flash drivers that gives a general description of how they are used: http://msdn.microsoft.com/en-us/library/ee483398(v=winembedded.60).aspx
Regards
Thanks for your answer.
You wrote, that the driver reads the bad block info on every startup an stores it to RAM. Where do I find this in the source code of the driver?
I read, that FAL handles the wear leveling in WinCE. Does FAL also include a write and erase counter to count the write and erase actions for every block? Wear leveling means for me, that the write and erase actions are equally divide to all the blocks of the flash for increasing the lifetime. If FAL uses an write and erase counter, where is this counter stored? Do you know something about that?
Thanks and best regards,
Andreas
Hi Andreas,
Have you had a chance to read through the FAL driver and find where it initializes, reads, and writes yet?