cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer
Observer
447 Views
Registered: ‎07-10-2019

How to get the xemacps_example_intr_dma to work

Jump to solution

Hello,

I am currently trying to get to work the Ethernet on my FPGA Zynq XC7Z014S. For this purpose I am using the example code provided by Xilinx from the "xemacps_example_intr_dma" (I`ll attach the code to the post). It compiles and runs until line 780 of the file "xemacps_example_intr_dma.c":

/*
* Wait for transmission to complete
*/
while (!FramesTx);

Here the code gets stucked because the DMA never issues an interrupt. The communication with the PHY works totally fine, it`s the Marvell Alaska 88E1512, by the way.

 

I am using the Trenz FPGA board TE0720 with the TE0701 Carrier Board and the Vivado 2019.1 version. For boot-up I use the FPGA with the FSBL adapted by Trenz for their specific board (but it also did not work without the custom FSBL either).

 

My HW design consists of the Trenz Reference Design (+ 2x Uart light modules). The PS has been configured to enable Enet0 & MDIO both configured to the MIO pins.

 

The ethernet hardware has been tested as well not in loopback mode, with FreeRTOS and the FreeRTOS TCP/IP stack (with the Zynq Port) with the default test application. In this configuration the problem is the same. I never get any interrupts, neither on sending nor on receiving.

 

It would be great if anybody could help me with this problem. I did not change the standard code so it should be some kind of configuration issue.

Thanks in advance for your time!

 

Tags (4)
0 Kudos
1 Solution

Accepted Solutions
Highlighted
Observer
Observer
273 Views
Registered: ‎07-10-2019

Re: How to get the xemacps_example_intr_dma to work

Jump to solution

@nanz wrote:

Hi @stonebull ,

When you say " The communication with the PHY works totally fine", what does this mean? Have you tested with a different application to know the ethernet is working and you are able to ping, for example, LWIP echo example from SDK?

In SDK, you can add debug to the code and check where exactly the applicaton stopped. This may give you some clues that where might cause the issue.

 


Hello!

"The communication with the PHY works totally fine" - I was referring to the communication from the MAC to the PHY using the MDIO.

I was debugging the code when I discoverred that it got stuck in line 780 of the "xemacps_example_intr_dma.c".

Anyways, I could solve the problem, and it was caused due to a wrong HW design. I selected "external" as clock source of the ENET0 component, altough no source was actually connected externally. As it was entirely my fault and not due to a tool mistake, I did not post this solution.

However thanks for taking your time and replying to me.

 

Best Regards,

View solution in original post

3 Replies
Highlighted
Moderator
Moderator
285 Views
Registered: ‎08-25-2009

Re: How to get the xemacps_example_intr_dma to work

Jump to solution

Hi @stonebull ,

When you say " The communication with the PHY works totally fine", what does this mean? Have you tested with a different application to know the ethernet is working and you are able to ping, for example, LWIP echo example from SDK?

In SDK, you can add debug to the code and check where exactly the applicaton stopped. This may give you some clues that where might cause the issue.

 

"Don't forget to reply, kudo and accept as solution."
0 Kudos
Highlighted
Observer
Observer
274 Views
Registered: ‎07-10-2019

Re: How to get the xemacps_example_intr_dma to work

Jump to solution

@nanz wrote:

Hi @stonebull ,

When you say " The communication with the PHY works totally fine", what does this mean? Have you tested with a different application to know the ethernet is working and you are able to ping, for example, LWIP echo example from SDK?

In SDK, you can add debug to the code and check where exactly the applicaton stopped. This may give you some clues that where might cause the issue.

 


Hello!

"The communication with the PHY works totally fine" - I was referring to the communication from the MAC to the PHY using the MDIO.

I was debugging the code when I discoverred that it got stuck in line 780 of the "xemacps_example_intr_dma.c".

Anyways, I could solve the problem, and it was caused due to a wrong HW design. I selected "external" as clock source of the ENET0 component, altough no source was actually connected externally. As it was entirely my fault and not due to a tool mistake, I did not post this solution.

However thanks for taking your time and replying to me.

 

Best Regards,

View solution in original post

Highlighted
Moderator
Moderator
260 Views
Registered: ‎08-25-2009

Re: How to get the xemacps_example_intr_dma to work

Jump to solution

Hi @stonebull ,

Thanks for the updates!

Please mark this thread as "accepted solution" even though it's a custom mistake. This will help other forum users to double check it too and surely be useful. Thank you!

 

"Don't forget to reply, kudo and accept as solution."
0 Kudos