Live data from Hacker News

Raspberry Pi Pico does line rate 100M Ethernet

github.com

21–30 of 67 posts

Re: Raspberry Pi Pico does line rate 100M Ethernet

#21
post #19
post #14

Earlier quoted context omitted.

Latency kills...and Ethernet uses exponential backoff.

More specifically TCP uses exponential backoff. Ethernet will happily keep drowning you in packages at line rate, if I'm not mistaken.

CSMA/CD does use exponential back off, though I'm not sure if anyone is still using it.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#22
post #19

Earlier quoted context omitted.

More specifically TCP uses exponential backoff. Ethernet will happily keep drowning you in packages at line rate, if I'm not mistaken.

CSMA/CD does use exponential back off, though I'm not sure if anyone is still using it.

This is only for half-duplex ethernet communication so no one apart from some archaic systems.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#23
post #18

Earlier quoted context omitted.

For added clarity, the Pico includes an RP2040 which is where the PIO runs.

Thanks, and you're correct; not sure why you got downvoted for this. For anyone curious here are the data sheets for RP2040 [for original Pico] and RP2350 [for Pico 2], which describe the systems in detail. RP2040: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.p... RP2350: https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.p...

"the Pico includes an RP2040 which is where the PIO runs" to me sounds like it implies either

- The original Pico was not built around the RP2040 as its central part ("includes" sounds to me like it was an addition)

- The Pico 2 includes a RP2040 (in addition to the RP2350) which runs PIO

Neither of which are true. I'm guessing some other people had a similar reaction.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#24

I see some examples that show this can be used as a lite http daemon. Is there enough room to have it control the ethernet port for another weaker or perhaps more powerful microcontroller? Can you combine multiple picos with one being the ethernet stack and another that modifies certain packets? Are there any other interesting things that can be done?

> Is there enough room to have it control the ethernet port for another weaker or perhaps more powerful microcontroller?

Well there is a whole unused core and plenty of built in SRAM. Seems like a good way to have an open-source version of Wiznet chips [1]. It could support full protocol offloading like Wiznet's or a lower-level raw packet sender/receiver like the ENC424J600.

[1] https://docs.wiznet.io/Product/iEthernet

Re: Raspberry Pi Pico does line rate 100M Ethernet

#25

I see some examples that show this can be used as a lite http daemon. Is there enough room to have it control the ethernet port for another weaker or perhaps more powerful microcontroller? Can you combine multiple picos with one being the ethernet stack and another that modifies certain packets? Are there any other interesting things that can be done?

Make a package that has a rp2050 mounted on a microSD and you've got a NAS that nobody will ever find.

Back when I was doing a dumb-server/smart-client desktop environment. Something like this would have been pretty cool. It needed a tiny API to save files, but the bulk of the environment worked as a static server.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#26
post #22

Earlier quoted context omitted.

CSMA/CD does use exponential back off, though I'm not sure if anyone is still using it.

This is only for half-duplex ethernet communication so no one apart from some archaic systems.

Like WiFi?

Re: Raspberry Pi Pico does line rate 100M Ethernet

#27
post #13

Very impressive! It would be interesting to see a short writeup of what kind of magic was required to achieve this, as there have been multiple failed attempts before this. I'm also curious about the performance boost from 2.81Mbit/link failure at 150MHz to 65.4Mbit/31.4Mbit at 200MHz. That doesn't sound like basic processor bottlenecks, but rather some kind of catastrophic breakdown at a lower level? Does it just oc…

I did some further investigating - it's apparently due to not having enough setup time on the RX pio SM. Even though the PIO clocking is fixed at 100 MHz, there are CRC errors at the lower system clocks. I tried changing the delay in the PIO instruction that starts the RX sampling, but that only made things worse (as expected). Also tried disabling the synchronizers with no improvement.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#30

I see some examples that show this can be used as a lite http daemon. Is there enough room to have it control the ethernet port for another weaker or perhaps more powerful microcontroller? Can you combine multiple picos with one being the ethernet stack and another that modifies certain packets? Are there any other interesting things that can be done?

This stuff all already exists, Raspberry Pi Zero 2 W. Board is slightly bigger than a Pico but has a full blown Linux system, 4 core arm64 cpu, 512MB ram, SD card slot, wifi, no ethernet though (add-ons are available). Or you could use a larger Pi.
Post reply on HN