Block grouping means that the driver treats multiple blocks as a single block to considerably reduce the memory used for administrating the NAND flash memory. When using external NAND memory with microcontrollers, RAM limitation is usually the bottleneck. NAND flash, however, is still the fastest and most cost-efficient way to store large amounts of data.
The size of a block group is scalable according to the user’s requirements. For example, an 8 GB NAND flash, with 4096 blocks, would normally require 8 kByte RAM – block grouping can bring down RAM consumption to less than 1 kByte. Critically, block grouping does not affect processing speed.
This feature further improves the efficiency of emFile’s NAND driver. The driver has outstanding read and write performance: almost 6 MBytes/sec for reading and 3.8 MBytes/sec for writing. It is fail safe, which means the file system remains intact even in cases of unexpected resets.
By adding the journalling feature, this safety can be extended to the data residing in the file system. Block grouping is a built-in feature of emFile with the latest release.
Segger’s emFile is a highly efficient file system optimised for resource usage and performance. Two versions are available, one for FAT-file systems and another for EFS, a proprietary file system which allows the use of long file names without royalties.
emFile’s driver level is fail-safe by design, removing the risk of corrupted data. To add fail-safety to the upper file-system, an efficient journalling option is available for both EFS and FAT.
All popular flash media are supported by emFile. Removable media such as SD-Cards, MMC, and CompactFlash are supported, as well as internal flash memories such as NOR, NAND, and data flash. The drivers for the internal flash memories include sophisticated wear levelling algorithms. The wear levelling also takes into account that files may be modified at different frequencies.