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 athttps://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:
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 |
Versal | RGMII | 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.
- 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
Entering into main() Success in examples
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