Standalone Ethernet Driver

Introduction

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
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 and Versal only: 64 bit descriptor support, Priority queue support, Jumbo frame support, CCI support

PHY configurations

emacps driver supports the following PHY configurations:

FamilyPHYSupport
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

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.
  • PHY devices Marvell 88E1512, TI DP83867, VSC8531_02 and RTL8211DN have been tested on Versal.

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

Known Issues/Limitations

None

Change log

2020.2

Summary:

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

Commits:

https://github.com/Xilinx/embeddedsw/commits/xilinx-v2020.2/XilinxProcessorIPLib/drivers/emacps

2020.1

Summary:

  • Baremetal clocking support.

Commits:

https://github.com/Xilinx/embeddedsw/commits/xilinx-v2020.1/XilinxProcessorIPLib/drivers/emacps


2019.2

Summary:

  • Minor enhancements. Bug fix in clearing status register.

Commits:

https://github.com/Xilinx/embeddedsw/commits/xilinx-v2019.2/XilinxProcessorIPLib/drivers/emacps

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


2019.1

Summary:

  • Minor enhancements
  • Bugfixes

Commits:

https://github.com/Xilinx/embeddedsw/commits/xilinx-v2019.1/XilinxProcessorIPLib/drivers/emacps

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 


2018.3

Summary:

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

Commits:

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


2018.2

No changes


2018.1

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

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

Baremetal Drivers and Libraries

Standalone LWIP library