I just finished updating Sandeep's pico-rmii-ethernet library to enable line-rate Ethernet transmit and receive. The new library is available in Github: https://github.com/rscott2049/pico-rmii-ethernet_nce/tree/main.
From the readme:
This library uses DMA driven ring buffers for both transmit and receive. The transmit side is entirely DMA driven, while the receive side uses a per-packet interrupt to finalize a received packet. Performance does vary with system clock speed, and the memory region the executable is placed:
System Clock MHz | Iperf Mbit/sec (SRAM) | Iperf Mbit/sec (flash) |
---|---|---|
100 | 1.38 | 1.27 |
150 | 2.81 | Link not established |
200 | 65.4 | 31.4 |
250 | 83.4 | 69.3 |
300 | 94.9 | 85.9 |
The MDIO interface was changed from polled to interrupt driven, thus freeing up more processor time for packet processing.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.