Refer to the EDF boot instructions (linked above) to boot the image on your target system.
- Identify the correct
remoteprocnode for R52-0 cluster 0 for ELF load. After the system boots, run the following:
For example, the following output shows the correct node because the base address is 0xEBA00000:dmesg | grep remoteproc | grep eba00000
The R52 cluster 0, core 0 node uses TCM0A with base address 0xEBA00000, which corresponds to /sys/class/remoteproc/remoteproc4.[ 2.818393] remoteproc remoteproc4: eba00000.r52f is available # Correct node because the base address is 0xEBA00000. - Set the firmware path. The firmware ELF file is located at: /lib/firmware/xilinx/vek385/rpu/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv_slot0/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv.elf
- Save the path without
/lib/firmware/:
export FW=xilinx/vek385/rpu/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv_slot0/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv.elf - Start the remote processor. Run the following commands as root to start the
remote
processor:
sudo -s echo $FW > /sys/class/remoteproc/remoteproc4/firmware echo start > /sys/class/remoteproc/remoteproc4/state - Verify communication by running the following
commands:
cat /dev/ttyRPMSG0 & echo "Hello Zephyr" > /dev/ttyRPMSG0 # Output: TTY 0: Hello Zephyr echo "Goodbye Zephyr" > /dev/ttyRPMSG0 # Output: TTY 0: Goodbye Zephyr - Use the following helper script to automate
remoteprocdetection and firmware start:echo 8 > /proc/sys/kernel/printk ; export BASE_ADDR=eba00000 export FW=xilinx/vek385/rpu/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv_slot0/vek385-r5-0-zephyr-openamp-rpmsg-multi-srv.elf # Find the correct remoteproc node (e.g., /sys/class/remoteproc/remoteproc4) NODE=$(grep -l "$BASE_ADDR" /sys/class/remoteproc/*/name | sed 's|/name||') echo "Found node: $NODE" echo $FW > $NODE/firmware echo start > $NODE/state - Set up and test RPMsg devices by preparing endpoints with the following
commands:
rpmsg_export_dev /dev/rpmsg_ctrl0 rpmsg-tty 256 -1 rpmsg_export_dev /dev/rpmsg_ctrl0 rpmsg-tty 257 -1 rpmsg_export_ept /dev/rpmsg_ctrl0 my_endpoint1 100 1 rpmsg_export_ept /dev/rpmsg_ctrl0 my_endpoint2 101 1 - Run the following ping test to verify
endpoints:
rpmsg_ping /dev/rpmsg0 # message for /dev/rpmsg0: "from ept 0x0402: ping /dev/rpmsg0" rpmsg_ping /dev/rpmsg1 # message for /dev/rpmsg1: "from ept 0x0001: ping /dev/rpmsg1" - Run the following commands to clean up
endpoints:
rpmsg_destroy_ept /dev/rpmsg1 rpmsg_destroy_ept /dev/rpmsg2