Hello. A requirement for my target application is to play host for a USB mass storage class device that's formatted using FAT16. I've had success with all aspects (starting from the MSD_FILE example for the LPC1768 eval board MCB1700) except when attempting to use a 4GB FAT16 formatted thumb drive. Using FAT16 and a capacity of 4GB requires the use of 64kB clusters.
Whenever I specify 64kB clusters, whether it's a 2GB thumb drive or a 4GB thumb drive, the drive is not recognized as formatted by the example program. I traced this error to the function 'finit()', but was unable to find the return table using the online directory.
I found, in File_Config.h, a struct called FAT_INFO where a variable U32 ClusSize is specified, but was unable to find where this was defined in the example code.
So my question is 2-pronged:
1) Is it possible to interface with a FAT16 file system that uses 64kB clusters, and if so, how? 2) What are the specific error return values for finit()?
Thanks!
While theoretically possible, 64 KiB clusters never really worked in any use of FAT16. That's why pretty much no system (with the exception of some early versions of Windows NT) dares to even try.
So the answer is: forget it. FAT16 effectively ends at 2 GiB, as in: 64 Ki clusters of 32 KiB each.
Hans-
Thanks for the response! All the best,
Bryan