2.5 KiB
The eXecute In-Place File System
Description
xipfs is a file system designed to streamline post-issuance software
deployment. xipfs allows direct execution of programs from flash
memory, eliminating the need for prior copying to RAM. This approach
conserves memory space and accelerates boot times, as the
microcontroller can run code directly from storage memory without
preloading into RAM.
The xipfs structure is based on a linked list, where each file
occupies at least one flash memory page. To prevent fragmentation, when
a file is deleted, subsequent files are shifted to fill the vacant
space.
xipfs is compatible with all microcontrollers featuring addressable
flash memory and most operating systems, provided they implement the
necessary functions to interact with the flash controller.
Limitations
xipfs has the following limitations:
-
No journaling:
xipfsdoesn't provide journaling. Without journaling, the file system cannot keep track of changes in a way that allows for recovery in the event of a crash or power failure. This can lead to data corruption and loss. -
No checksums:
xipfsdoesn't provide checksums. The lack of checksums means that the file system cannot verify the integrity of files. This increases the risk of undetected data corruption, as there is no mechanism to ensure that files have not been altered or damaged. -
Per mountpoint file system lock:
xipfsneeds a file system lock per mountpoint. Such a mechanism can lead to performance bottlenecks, as it prevents multiple threads from accessing the file system montpoint simultaneously. -
Fixed file size:
xipfsprovide fixed file size. By default, a file created usingvfs_open(2)has a fixed space reserved in flash that is the size of a flash page. This size cannot be extended later. To create a file larger than the fixed size of one flash page, themk(1)command or thexipfs_new_file(3)function must be used. -
Limited character set:
xipfssupports only a subset of 7-bit ASCII characters, specifically[0-9A-Za-z\/\.\-_]. -
Limited path length:
xipfsmaximum path length is 64 characters.
Tested cards
xipfs is expected to be compatible with all boards that feature
addressable NVM. However, only the DWM1001 board has been tested and
is confirmed to function correctly.
Funding
The xipfs project is part of the TinyPART project funded by the
MESRI-BMBF German-French cybersecurity program under grant agreements
n°ANR-20-CYAL-0005 and 16KIS1395K.