rpmsgfs-server is a Rust-based RPMsg File System (RPMsgFS) server designed to run in Linux user space. It implements the RPMsgFS protocol originally introduced in NuttX and is compatible with both NuttX RPMsgFS and Zephyr RPMsgFS implementations. This server is intended to run on the master / host processor in a heterogeneous multi-core system and export a local file system over RPMsg to a remote processor.
This repository provides the server-side component, enabling a remote core (for example running NuttX) to mount and access files that physically reside on the server core.
- RPMsg-based file system server
- Written in Rust
- Designed for heterogeneous SoCs (e.g. Cortex-A ↔ Cortex-M)
- Compatible with NuttX and Zephyr
RPMsgFS allows a remote core to mount a directory from another core as if it were a local file system.
Typical use cases include:
- Debugging and inspection of remote file systems
- Sharing configuration, logs, or runtime data
- Simplifying multi-core software architectures
On the server side, a process exposes a directory tree via RPMsg. On the client side, an RPMsgFS driver mounts that directory into the local VFS.
This project implements the server side of that architecture.
- Rust toolchain (stable)
- Linux kernel with RPMsg and RPMsg char device support enabled
- Tooling to export the RPMsg channel through IOCTL (eg. rpmsgexport)
- NuttX OS or an RPMsgFS-compatible client on the remote core
Clone the repository and build using Cargo:
git clone https://github.com/NXP-Robotics/rpmsgfs-server.git
cd rpmsgfs-server
cargo build --releaseThe server is intended to be launched on the CPU responsible for hosting the exported file system.
A typical workflow is:
- Start RPMsg infrastructure on both processors
- Mount the exported directory on the remote core.
An example for NuttX would be:
mount -t rpmsgfs -o cpu=netcore,fs=/shared /mnt/rpmsg
- On the host core, the RPMsg channel need to be exported through IOCTL. An example with rpmsgexport is:
rpmsgexport /dev/rpmsg_ctrl0 rpmsgfs 1024 1025
- Launch rpmsgfs-server on the host:
./rpmsgfs-server /dev/rpmsg0