alpico is developing an ecosystem for embedded software development. We believe that by using a modular approach, software can be made a lot smaller and a lot less complex offering many benefits to embedded devices - both in performance and ease of development.
To facilitate modularity and ensure the smallest possible footprint in every use case, we divide functionality strongly between crates. Crates, in turn, use feature flags, so you only ever use what you need.
Read-only and read-write versions of filesystems will commonly be
split into two crates because write functionality often requires to
save additional information in structs compared to read-only.
Generating (mkfs
) and checking (fsck
) are not required at all for
normal interaction with a filesystem and are therefore separate crates
as well. Finally, there will be end-to-end integration tests in their
own crates.
All crates in this repo, except for the examples in ap-storage-examples
, are #![no_std]
compatible.
We have examples of the implementation of tools using our storage interface.
- pseudo disks
- /dev/zero - read returns nul-bytes, writes are ok
- concat aka RAID0
- unified FS - Use a single struct for interacting with any supported filesystem
- introduce derive macro to specialize the implementation
- partition support
- follow extended/logical partitions
- external memory cache
- support multiple ways