Requirements. FFS does not contain FAT. Every sector containig valid information includes sector header with filename, sequence number, checksumm and status fields. additionally last sector will be marked and will contain size of the file and number of sectors used. After power FFS will scan all sectors and create file look up table in RAM. Because of limited size of the flash device size of the lookup table can not exceed number of physical sectors on the flash.
Contains two levels - physical sectors data-base and RAM based FAT. FFS does not make any assumptions about availabiltiy of I/O,
dynamic memory allocation, multitask environment. mutual exclusion interface can be provided by the application if required.
The system can be used in the small embedded devices using raw flash memory with reelatively small sectors like 16K or 32K
on the 1M device. For example, when system stores large binary executable and one or two smaller configuration files.
Physical sector can be occupied only by one file. It means that total number of files is limited by the number of physical
sectors. File can occupy more than one physical sector.
Subfolders are not supported (can be easily added if required)
FFS expects that Flash device can be read directly using functions like memcpy() (it is not EEPROM, for example, with serial interface)
Max file name size is known at compilation time.
Sectors can have different size and can be placed in different memory regions. For example, FFS can work with two physicaly different types
of flash memory with different sector size and chipselects.
open - opens file for read operations
create - creat file
read - binary read to the supplied by application block
write - binary write from the supplied by the application block
close - end read/write operations
delete - remove file from the flash
find - find file with specified name
list - get list of existing files
getSize - returns size of the file
getFree - returns number of sectors/bytes free for writing
format - remove of files, erase the flash
cleanUp - erase unused sectors