Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Next »


This page provides details related to the standalone emacps driver.
This driver supports GEM on Zynq, Zynq Ultrascale+ MPSoC and Versal

How to enable

emacps driver can be found at
The driver structure is as follows:
- doc - Provides the API and data structure details
- examples - Reference application to show how to use the driver.
- src - Driver source files

Features supported

Controller/Driver features supported

  • 10/100/1000 speeds, phy/external loop back (supported in emacps
  • PHY management
  • DMA, Packet buffer support, Checksum offload, FCS stripping, programmable IPG, multicasting, promiscuous and broadcast modes.
  • Flow control and half duplex features are supported by controller but not demonstrated in the examples.
  • ZynqMP and Versal only: 64 bit descriptor support, Priority queue support, Jumbo frame support, CCI support

PHY configurations

emacps driver supports the following PHY configurations:

ZynqRGMIIYes - supported in HW and driver
ZynqMPRGMIIYes - supported in HW and driver
ZynqMPSGMIIYes - supported in HW and driver
VersalRGMIIYes - supported in HW and driver

Features not supported

  • External FIFO interface - this driver only targets DMA
  • Partial store and forward not supported


  • PHY device Marvell 88E1116 has been tested on Zynq evaluation board
  • PHY devices Marvell 88E1512, TI DP83867 (RGMII and SGMII), VSC8211 and RTL8211 have been tested on ZynqMP.
  • PHY devices Marvell 88E1512, TI DP83867, VSC8531_02 and RTL8211DN have been tested on Versal.


Standalone ethernet performance is benchmarked with the use of light weight IP library and application. Please refer to

Test cases

Emacps example

Emacps basic DMA loopbakc example can be tested by selecting xemacps_intr_dma.c, xemacps_example_util.c and xemacps_example.h from the driver.
Refer to for more information.
Run fsbl and then the application elf.
Expected output is

Entering into main()
Success in examples

Known Issues/Limitations


Change log




  • Removed deprecated Zynq IEEE1588 example.
  • Updated parallel makefile execution




  • Baremetal clocking support.




  • Minor enhancements. Bug fix in clearing status register.


bc126d5 emapcs: Clear status registers properly in reset
761c9af Fixed trivial typos reported by codespell utility
e5bfe9c emacps: Remove peripheral test app support
4ac1709 emacps: Move common variable definition to _util example file



  • Minor enhancements
  • Bugfixes


6a7d6b2 emacps: Add provision to set RX watermark register
d4f92e6 emacps: Use selected speed in loopback mode
625c97b emacps: Fix BD space handling in examples
de0a89f emacps: Fix pointer cast warnings in examples
53a68ac emacps: Add support for psv_ethernet IP name
f626344 emacps: Fix data alignment for IAR compiler in example
7477196 emacps: Update example to use PSV_ suffix 



  • Cleanup and fixes for GCC and coverity warnings
  • Support for 64 bit addressing on Microblaze


07c73dd emacps: Fix GCC warnings and add an additional canonical property
40d00e8 emacps: Fix coverity warnings
6ea92b1 emacps: Fix unused variable warning in example
05be3ac emacps: Remove duplicate definition of XEmacPs_BdSetLength
5b51039 emacps: Fix PTP interrupt masks and cleanup stale comments
848ceb0 emacps: Fix warning for redefining interrupt number
b87f96d drivers: Support 64 bit DMA addresses for Microblaze-X


No changes


6f4d0c9 emacps: Export TSU clock frequency to xparameters.h


baf6acc emacps: Export PL PCS PMA information for ETH1/2/3


cee2171 emacps: Export CCI enablement information
e0f9615 emacps: Update examples for CCI


No changes


56fc262 emacps: Modify tcl to detect Xilinx PCS PMA without PHY address - This patch adds support for use of PL PCS/PMA with ZynqMP GEM and also supports latest PL PCS/PMA IP.
2449879 emacps: Fixed compilation warnings
5322e65 emacps : Modified xil_printf statement in examples


No changes


commit: Fix the IEEE1588 example for Zynq
commit: Use sleep routine where delay is needed to avoid issues with optimization

Related Links

Baremetal Drivers and Libraries

Standalone LWIP library

  • No labels