1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-14 17:13:50 +01:00
2025-07-23 12:44:38 +02:00
..
2025-07-23 12:44:38 +02:00
2025-07-23 12:44:38 +02:00
2025-07-23 12:44:38 +02:00
2025-07-23 12:44:38 +02:00

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: xipfs doesn'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: xipfs doesn'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: xipfs needs 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: xipfs provide fixed file size. By default, a file created using vfs_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, the mk(1) command or the xipfs_new_file(3) function must be used.

  • Limited character set: xipfs supports only a subset of 7-bit ASCII characters, specifically [0-9A-Za-z\/\.\-_].

  • Limited path length: xipfs maximum 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.