Introduction

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

How to enable

-> emacps driver can be found at
https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/emacps
The driver structure is as follows:
emacps
|
- 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 only: 64 bit descriptor support, Priority queue support, Jumbo frame support, CCI support

PHY configurations

emacps driver supports the following PHY configurations:
Family
PHY
Support
Zynq
RGMII
Yes - supported in HW and driver
ZynqMP
RGMII
Yes - supported in HW and driver
ZynqMP
SGMII
Yes - supported in HW and driver

Features not supported

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

Interop

- 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.

Performance

Standalone ethernet performance is benchmarked with the use of light weight IP library and application. Please refer to
http://www.wiki.xilinx.com/Standalone+LWIP+library#Performance

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 https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/emacps/examples/xemacps_example_readme.txt for more information.
Run fsbl and then the application elf.
Expected output is
Entering into main()
Success in examples

Known Issues/Limitations


Change log

2017.4

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

2017.3

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

2017.2

No changes

2017.1

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

2016.4

No changes

2016.3

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

Related Links

af6acc