This is the documentation for the latest (main) development branch. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

OpenAMP Replicate Firmware Demo

Replicate Firmware Intro

The Replicate Firmware Demo is provided to demonstrate the use of two remote processors each loaded with the same firmware.

../_images/replicate-firmware-intro.svg

Replicate Firmware Components

This demonstration uses a single application, sent independently to the two remotes, utilising a demo script on the main controller.

The underlying OpenAMP architectural components used by these applications are

The following architecture diagram shows the components involved in the demonstration.

../_images/replicate-firmware-components.svg

The top-level control flow is shown in the following message diagram.

../_images/replicate-firmware-control-flow.svg

Replicate Firmware Remote Application

The remote application is a hello world application, which once loaded calls printf. The output of printf is directed to a UART.

Replicate Firmware Main Script

The main controller is responsible for loading the firmware and starting the remote processors by writing start and stop to /sys/class/remoteproc/remoteproc0 and /sys/class/remoteproc/remoteproc1 alternately.

The same firmware is loaded, and this is made possible as the system uses Tightly Coupled Memory, so each processor is assigned its own bank of memory.

The script is available in the Demo Docker Images as demo3.

Replicate Firmware Main Configuration

The remoteproc configuration binding cluster-mode is set to 0 for split-mode as per the system reference implementation.

Replicate Firmware Remote Application Source

Replicate Firmware Zephyr OS Source

The application is implemented for Zephyr OS as hello_world.

Reference Board Implementations

This Replicate Firmware Samples are demonstrated in the following reference implementations.