uBlaze: Cannot make ram disk smaller than 3 mb

Hi, I’m trying to optimize a footprint and reduce size of Ram disk, but get error if I define it smaller than 3 mb. Image contains backtrace, place where it fails and some local variables. I’d appreciate any idea. https://rslutsker-gmail.tinytake.com/sf/ODUzNjA5XzM3MTEwMTE Thanks Rasty

uBlaze: Cannot make ram disk smaller than 3 mb

Backtrace and variables

uBlaze: Cannot make ram disk smaller than 3 mb

FAT imposes some minimum volume sizes. For example see the following thread: http://superuser.com/questions/74392/minimum-volume-size-for-fat16 The minimum size for FAT12 is smaller.

uBlaze: Cannot make ram disk smaller than 3 mb

How can I force it to use FAT12?

uBlaze: Cannot make ram disk smaller than 3 mb

Unfortunately, the FF_Format() routine does not (yet) support FAT12, only FAT16 and FAT32. Two parameters indicate your preference: xPreferFAT16: try to use FAT16, if not possible, try FAT32 xSmallClusters: try small clusters first, if not possibly, try larger clusters. Larger clusters are more efficient in terms of speed, small clusters have less waste of space. Microsoft states that: ~~~~ if( CountofClusters < 4085 ) { /* Volume is FAT12 / } else if( CountofClusters < 65525 ) { / Volume is FAT16 / } else { / Volume is FAT32 */ } ~~~~ +FAT is following Microsoft’s guidelines to get a maximum compatibility. However, you are not going to exchange your RAM disk with another system. You could try the following in ff_format.c : ~~~~

ifdef ffconfigMINCLUSTERSFAT16

#define MIN_CLUSTERS_FAT16    ffconfigMIN_CLUSTERS_FAT16

else

#define MIN_CLUSTERS_FAT16    ( 4085 + 1 )

endif

~~~~ And define ffconfigMIN_CLUSTERS_FAT16 in your FreeRTOSFATConfig.h with a smaller value of e.g. : ~~~~ #define ffconfigMINCLUSTERSFAT16 1800 ~~~~ Regards.

uBlaze: Cannot make ram disk smaller than 3 mb

Just tested in the WIN32 demo project and it works as expected. A 2MB RAM-disk will get 4023 clusters, a 1MB disk gets1991 clusters. In these cases, each cluster will contain a single sector of 512 bytes.