Daniel Simon wrote:
> I've been looking around at embedded ethernet
> interface modules, most seem to have a serial
> interface with a max bit rate of 115200 or 230400
> so I can only move about 20kbytes/sec with them.
> Are there any with byte-wide interfaces and higher
> data rates?
If you can handle the code and CPU overhead, why not add in an Ethernet
chipset directly? Both the Realtek (10Mbps) and ASIX (10/100) support
8-bit or 16-bit I/O mode).
http://www.edtp.com is a great starting
point for driver code and prototype boards.
> I have a project where I'd like to move a byte
> stream of 250k bytes per second reliably from a
> microcontroller to a windows app thru a lightly
> used lan.
The key to direct Ethernet support depends on the protocol you're using
to transmit to the Windows PC. TCP is reliable, but very overhead
intensive (RAM, CPU, code). UDP provides no guarantees, but can be done
with essentially no RAM (all in the NIC buffer). UDP without checksums
would be even faster, if you have other data integrity measures (or
don't care).
For UDP, an NE2000 driver can probably be done in ~100 instructions,
with most of that being NIC initialization. I've got an ASIX
implemented on AVR that'll do 6000+ packets/sec easily (UDP w/o cksum),
so the volume's definitely there for small chips.
> In general, what are the practical speed limits of
> moving data streams between devices on 10base and
> 100base lans?
On shared hubs, 60% of the bandwidth; on switches, 100%. There will be
additional reductions if you use a protocol like TCP that requires
round-trip acknowledgements and buffer tracking.
Cheers,
Richard