AmpRelay is a QEMU-first AMP bring-up lab for Linux remoteproc and rpmsg.
It is a small, focused embedded systems project for booting a remote core from Linux, exchanging messages with remote firmware, and validating crash detection and recovery in a reproducible setup.
AmpRelay is not a generic application stack or a broad robotics platform. It is a narrow embedded systems repository centered on the lower layers of heterogeneous multicore systems:
remoteprocplatform integrationrpmsgcommunication- remote firmware lifecycle
- shared-memory transport and notification flow
- fault injection, crash handling, and recovery validation
The goal is to make this path easy to inspect, reproduce, test, and extend.
Linux remoteproc and rpmsg are practical and widely used, but real projects often run into a few recurring problems:
- the bring-up path is strongly tied to one vendor board or SoC
- communication demos usually stop at simple
echotraffic - crash handling and recovery are less often shown as a clean, reproducible workflow
- documentation for the full path from Linux host to remote firmware is often fragmented
AmpRelay is meant to reduce that friction by building one compact reference path that stays focused on:
- boot
- message exchange
- fault injection
- crash detection
- recovery
The first usable version is intentionally small. It aims to provide:
- a QEMU-based reference setup
- a Linux-side bring-up path for
remoteprocandrpmsg - a minimal remote firmware image
- one or more message channels such as
echo,command, ortelemetry - fault injection and recovery demonstrations
- testable and documented execution steps
It does not try to be:
- a full SoC emulation platform
- a board support package for many vendors
- a generic middleware framework
- a polished end-user product
The project is intentionally QEMU-first because reproducibility matters more than hardware volume in the first stage.
This approach makes it easier to:
- bring up the system without requiring a specific board
- inspect behavior with logs and controlled test inputs
- iterate on Linux-side integration and remote firmware behavior quickly
- turn the project into something others can clone and run
Physical hardware is still valuable, but it is not required to make the first version technically useful.
Planning / bootstrap
Right now the repository is focused on:
- project structure
- initial documentation
- licensing
- workstream separation for
kernel,firmware,qemu,tools, andtests
The actual bring-up code and first runnable path will be added incrementally.
The intended first architecture is straightforward:
qemu/: launch helpers, machine or device-model work, and reproducible run configurationkernel/: Linux-sideremoteprocintegration,rpmsghelpers, and configuration notesfirmware/: remote-core firmware, resource table definitions, endpoint setup, and fault hookstools/: host-side helper scripts for launching, collecting logs, and parsing resultstests/: smoke tests, message-flow tests, and crash/recovery validation
The first milestone does not depend on a large feature set. It only needs one narrow path that can demonstrate:
- Linux boots
- the remote core is started
- one
rpmsgchannel works - a forced remote failure is detected
- recovery behavior is observable and repeatable
.
|-- docs/ # Architecture notes, bring-up logs, and design docs
|-- firmware/ # Remote-core firmware and related support code
|-- kernel/ # Linux-side drivers, configs, and integration notes
|-- qemu/ # QEMU device model notes, launch helpers, and configs
|-- tests/ # Reproducible test cases and regression scenarios
|-- tools/ # Host-side helper tools and scripts
|-- .gitignore
|-- COPYRIGHT
|-- LICENSE
|-- README.md
`-- README.zh-CN.md
git clone https://github.com/Zw-awa/AmpRelay.git
cd AmpRelayStart with:
- Interested in Linux-side bring-up: start in
kernel/ - Interested in remote firmware: start in
firmware/ - Interested in emulation and runtime setup: start in
qemu/ - Interested in automation and validation: start in
tests/andtools/
- Bring up a minimal QEMU path with a Linux guest and a remote firmware image.
- Establish one working
rpmsgchannel. - Add remote-side fault injection and Linux-side crash handling.
- Automate the basic test flow and capture reproducible logs.
- Document the first full recovery walkthrough.
This repository is licensed under GPL-2.0-only.
See LICENSE and COPYRIGHT.