08-15-2011 07:34 AM
I have been using Spartan-3E board (XC3S500E) to do some ethernet experiments with the PC. I am using the lwIP in raw API mode. I used the default rxperf application to measure the throughput of the receiver, and I am getting a maximum bandwidth of 286 Kbps in iperf. My MicroBlaze system is running at 50 MHz, is there a way I can increase the throughput? I would like to get something in the range of 100 Mbps. I have also changed the compiler optimization level to "-O2." Please let me know.
Solved! Go to Solution.
08-15-2011 06:13 PM
This exact issue has been discussed a lot on this forum. Just search for "lwip performance", and you'll get a wealth of information, including links to Xilinx whitepapers and appnotes.
08-15-2011 07:05 PM
Refer to xapp1026 for expected lwip performance on various platforms.
Some software related tunings:
1. CPU Cache. Enable the cache space for external memory if lwip code is located in external memory.
08-16-2011 03:39 PM
Thank you so much for your software solutions and I am now able to get a bandwidth of 5 Mbps. I referred to many other posts in the forums, and looked at things like checksum options. Is there anything more I can do to significantly enchance the throuhgput?
08-16-2011 03:49 PM
One option to significantly increase the bandwidth is to have all-hardware implementation (no processor). That can achieve bandwidth close to the wire speed. I've implemented such a protocol stack for one of the commercial products, so I know it's possible and it's small enough to fit into your device.
There are some open-source implementations of UDP, but you'd probably want to have other protocols as well, such as ARP, DHCP, ICMP, etc.
08-16-2011 04:00 PM
Alright. But I need the processor in my system, and hence, I am looking for other lwip related software tunings. Even 20 Mbps would serve the needs of my application. Do you have any other software solutions for lwip and EMAC lite core in MicroBlaze-based systems?