This user guide describes how to develop a methodology to enable communication between multiple processors on AMD Zynq™ 7000 devices, AMD Zynq™ UltraScale+™ MPSoCs, and AMD Versal™ adaptive SoCs.
The libmetal shared memory user API based on the ION interface will be obsoleted and replaced in future releases. This decision is due to the fact that the Linux kernel is 'Destaging ION'. For more information, see Destaging ION Article.
The libmetal AMD Vitis™ tools flow uses its own copy of libmetal from its own code repository. To reduce code management overhead this local repository is replaced with an AMD external repository.
The basic development concept uses the foundational principles of Interrupts and Shared Memory as the method of communicating between elements:
The libmetal library provides common user APIs (Application Programming Interfaces), used to access devices, handle device interrupts, and request memory across different operating environments. You can use libmetal to build your own AMP (Asymmetric Multi-/Processing) solution. AMD uses the OpenAMP (Open Asymmetric Multi-processing) project as the default AMP solution. OpenAMP builds on top of libmetal to provide a framework for remote processor management and inter-processor communication. This document describes the relationship between Libmetal and OpenAMP in the subsequent sections.