Libmetal and OpenAMP User Guide
Revision History
Table of Contents
Ch. 1: Overview
Introduction
Software Tools Requirements
Prerequisites
Ch. 2: Libmetal
Overview
Access Devices with Libmetal
Start Libmetal Environment, Add and Open the Devices
Register the Interrupt, Write and Read Device Registers
Close Device and Close Libmetal Environment
Access IPI and Shared Memory with Libmetal
Zynq UltraScale+ MPSoC IPI Hardware
Shared Memory
Xilinx Libmetal AMP Demo
Build Libmetal Bare-Metal Firmware with Xilinx SDK
Enable Linux Demo Application Using Libmetal with PetaLinux Tools
Build Libmetal Linux Demo in Xilinx SDK
Build the Linux Demo Application and the Linux Project
Testing on Hardware
Ch. 3: OpenAMP
Overview
Components in OpenAMP
Connection between OpenAMP and Libmetal
How to Write a Simple OpenAMP Application
OpenAMP Demos
Petalinux Images Quick Try
Building OpenAMP application for RPU Firmware
Introduction
Building Remote Applications in Xilinx SDK
Creating an Application Project for OpenAMP
OpenAMP Xilinx SDK Key Source Files
Building Linux Application that uses RPMsg in kernel space
Setting up PetaLinux with OpenAMP
Settings for the Device Tree Binary Source
Building the Applications and the Linux Project
Booting the PetaLinux Project
Booting on QEMU
Booting on Hardware
Setting Up the Board
Downloading the Images
Running the Example Applications
Running the Echo Test
Debugging an OpenAMP Application
Debugging RPU Firmware
Debugging Linux OpenAMP Application
Running the Matrix Multiplication Test
Running the Proxy Application
Building Linux Applications Using OpenAMP RPMsg in Linux Userspace
Build Linux Userspace RPMsg Demo Applications Using PetaLinux Tools
Building RPU Firmware
Testing on Hardware
Ch. 4: System Design Consideration
Supported Configuration
Other Consideration
Known Limitations
Linux RPMsg Buffer Size
Appx. A: Libmetal APIs
Libmetal API Functions
Top Level Interfaces
metal_init
Description
Arguments
Returns
Usage
metal_finish
Description
Usage
Interrupt Handling Interfaces
metal_irq_handler
Description
Arguments
Returns
Usage
metal_irq_register
Description
Arguments
Returns
Usage
metal_irq_save_disable
Description
Returns
Usage
metal_irq_restore_enable
Description
Arguments
Usage
metal_irq_enable
Description
Arguments
Usage
metal_irq_disable
Description
Arguments
Usage
Shared Memory Interfaces
metal_shmem_open
Description
Arguments
Returns
Usage
metal_shmem_register_generic
Description
Arguments
Returns
Usage
Spinlock Interfaces
metal_spinlock_init
Description
Arguments
Usage
metal_spinlock_acquire
Description
Arguments
Usage
metal_spinlock_release
Description
Arguments
Usage
Sleep Interfaces
metal_sleep_usec
Description
Arguments
Returns
Usage
Mutex Interfaces
metal_mutex_init
Description
Arguments
Usage
Description
Arguments
Usage
metal_mutex_deinit
Description
Arguments
Usage
metal_mutex_try_acquire
Description
Arguments
Returns
Usage
metal_mutex_acquire
Description
Arguments
Usage
metal_mutex_release
Description
Arguments
Usage
metal_mutex_is_acquired
Description
Arguments
Usage
I/O Interfaces
metal_io_init
Description
Arguments
Usage
metal_io_finish
Description
Arguments
Usage
metal_io_region_size
Description
Arguments
Returns
Usage
metal_io_virt
Description
Arguments
Returns
Usage
metal_io_virt_to_offset
Description
Arguments
Returns
Usage
metal_io_phys
Description
Arguments
Returns
Usage
metal_io_phys_to_offset
Description
Arguments
Returns
Usage
metal_io_phys_to_virt
Description
Arguments
Returns
Usage
metal_io_virt_to_phys
Description
Arguments
Returns
Usage
metal_io_read
Description
Arguments
Returns
Usage
metal_io_write
Description
Arguments
Usage
metal_io_block_read
Description
Arguments
Returns
Usage
metal_io_block_write
Description
Arguments
Returns
Usage
metal_io_block_set
Description
Arguments
Returns
Usage
Bus Abstraction
metal_bus_register
Description
Arguments
Returns
Usage
metal_bus_unregister
Description
Arguments
Returns
Usage
metal_bus_find
Description
Arguments
Returns
Usage
metal_register_generic_device
Description
Arguments
Returns
Usage
metal_device_open
Description
Arguments
Returns
Usage
metal_device_close
Description
Arguments
Usage
metal_device_io_region
Description
Arguments
Returns
Usage
Condition Variable Interfaces
metal_condition_init
Description
Arguments
Usage
metal_condition_signal
Description
Arguments
Returns
Usage
metal_condition_broadcast
Description
Arguments
Returns
Usage
metal_condition_wait
Description
Arguments
Returns
Usage
Allocation Interfaces
metal_allocate_memory
Description
Arguments
Returns
Usage
metal_free_memory
Description
Arguments
Usage
Libary Version Interfaces
metal_ver_major
Description
Returns
Usage
metal_ver_minor
Description
Returns
Usage
metal_ver_patch
Description
Returns
Usage
metal_ver
Description
Returns
Usage
Appx. B: OpenAMP APIs
Remoteproc APIs
Introduction
Remoteproc API Functions
remoteproc_init
Description
Usage
Arguments
Returns
remoteproc_remove
Description
Usage
Arguments
Returns
remoteproc_get_io_with_name
Usage
Arguments
Returns
remoteproc_get_io_with_pa
Usage
Arguments
Returns
remoteproc_get_io_with_da
Usage
Arguments
Returns
remoteproc_get_io_with_va
Usage
Arguments
Returns
remoteproc_mmap
Usage
Arguments
Returns
remoteproc_parse_rsc_table
Usage
Arguments
Returns
remoteproc_set_rsc_table
Usage
Arguments
Returns
remoteproc_create_virtio
Usage
Arguments
Returns
remoteproc_remove_virtio
Usage
Arguments
Returns
remoteproc_get_notification
Usage
Arguments
Returns
RPMsg Development
Introduction
RPMsg API Functions
rpmsg_send_offchannel_raw()
Description
Usage
Arguments
Returns
rpmsg_send()
Description
Usage
Arguments
Returns
rpmsg_sendto()
Description
Usage
Arguments
Returns
rpmsg_send_offchannel()
Description
Usage
Arguments
Returns
rpmsg_trysend()
Description
Usage
Arguments
Returns
rpmsg_trysendto()
Description
Usage
Arguments
Returns
rpmsg_trysend_offchannel()
Description
Usage
Arguments
Returns
rpmsg_init_ept
Description
Usage
Arguments
rpmsg_create_ept
Description
Usage
Arguments
rpmsg_destroy_ept
Description
Usage
Arguments
is_rpmsg_ept_ready
Description
Usage
Arguments
Returns
rpmsg_virtio_get_buffer_size
Description
Usage
Arguments
Returns
rpmsg_init_vdev
Description
Usage
Arguments
Returns
rpmsg_deinit_vdev
Description
Usage
Arguments
rpmsg_virtio_init_shm_pool
Description
Usage
Arguments
rpmsg_virtio_get_rpmsg_device
Description
Usage
Arguments
Returns
rpmsg_virtio_shm_pool_get_buffer
Description
Usage
Arguments
Returns
Appx. C: Additional Resources and Legal Notices
Xilinx Resources
Solution Centers
Documentation Navigator and Design Hubs
Xilinx Documentation
Please Read: Important Legal Notices