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 defineffconfigMIN_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.