This demo uses the Linux kernel rpmsg framework to send various size of data buffer to remote processor and validates integrity of received buffer from remote processor. If buffer data does not match, then number of different bytes are reported on console.
Platform: Xilinx Zynq UltraScale+ MPSoC(a.k.a ZynqMP)
Board: ZynqMP Zcu102
-
Remote processor firmware for Xilinx ZynqMP cortex-r5 platform based on: rpmsg-echo.c
-
Instructions to compile: ZynqMP r5f generic baremetal
-
RPU firmware elf file is expected in sdk at path: /lib/firmware/
-
Xilinx Vendor specific SDK is required to build RPU firmware: Xilinx Petalinux
-
More information is provided here: Xilinx Wiki page for OpenAMP
Assume all the binaries are board specific.
# Specify remote processor firmware to be loaded.
echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware
# Load and start target firmware onto remote processor
echo start > /sys/class/remoteproc/remoteproc0/state
# check remote processor state
cat /sys/class/remoteproc/remoteproc0/state
# load rpmsg_char driver
modprobe rpmsg_char
# load rpmsg_ctrl driver
modprobe rpmsg_ctrl
# Run echo_test application on host processor
echo_test
# unload rpmsg_ctrl driver
modprobe -r rpmsg_ctrl
#unload rpmsg_char driver
modprobe -r rpmsg_char
# Stop remote processor
echo stop > /sys/class/remoteproc/remoteproc0/state