Zynq UltraScale MPSoC Base TRD 2016.4 - Design Module 4
Return to the Design Tutorials Overview.
This module demonstrates:
- Boot RPU1 from APU master via remoteproc
- Inter Process Communication (IPC)
- APU master: RPMsg
- RPU1 remote: OpenAMP
- RPU1 Bare-metal application (server)
- Reads performance counters and sends to APU
- APU Linux application (client)
- Receives performance counters from RPU1 and prints to UART0
This module requires the following components:
- device tree
- perfapm-server + perfapm
- perfapm-client-test + perfapm-client
Build Flow Tutorials
Please refer to design module 1 - PMU firmware
for instructions or skip this step if you have built the PMU firmware in a previous module.
The performance monitor server application perfapm-server is a bare-metal application that executes on RPU-1. The firmware binary is loaded by the APU master at the end of the Linux boot process. RPU-1 and APU establish a communication channel using the OpenAMP
framework. RPU-1 gathers performance data like memory throughput from the PS AXI performance monitor (APM) units and sends it across to the APU where the data is received by the perfapm-client library and then visualized on a plotted graph.
This tutorial shows how to build the Linux image and boot image using the PetaLinux build tool.
The petalinux-config step can be skipped if this was already done in a previous module
% cd $TRD_HOME/apu/petalinux_bsp
% petalinux-config --get-hw-description=./hw-description --oldconfig
Select the device-tree matching design module 4 and build all Linux image components. If you have run petalinux-build in a previous module, the build step will be incremental.
% cd subsystems/linux/configs/device-tree
% cp system-dm4.dts system-top.dts
% cd -
Create a boot image
% cd images/linux
% petalinux-package --boot --bif=dm4.bif --force
Copy the generated images to the dm4 SD card directory
% mkdir -p $TRD_HOME/images/dm4
% cp autostart.sh BOOT.BIN image.ub $TRD_HOME/images/dm4/
file inserts "rpmsg_user_dev_driver" in the kernel-tree to create "rpmsg0" device-node.
The application receives performance counter values from RPU-1 and prints them to UART-0.
Run Flow Tutorial