This user guide describes how to develop a methodology to enable communication between multiple processors on AMD Zynq™ UltraScale+™ MPSoCs, and AMD Versal™ adaptive SoCs.
The libmetal shared memory user API that is based on the ION interface will be removed in a future release. This change is required because the Linux kernel is deprecating ION. For more information, refer to 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 application programming interfaces (APIs) that you can use to access devices, handle device interrupts, and request memory across different operating environments. You can use libmetal to build your own asymmetric multiprocessing (AMP) solution. AMD uses the open asymmetric multiprocessing (OpenAMP) project as the default AMP solution. OpenAMP builds on libmetal to provide a framework for remote processor management and inter-processor communication. The following sections describe the relationship between libmetal and OpenAMP.