Does there exist for Arduino library to access the ethernet at a low level, without TCP/IP stack?
Ogogon.
Does there exist for Arduino library to access the ethernet at a low level, without TCP/IP stack?
Ogogon.
What ethernet hardware are you using?
What level do you want?
Do you want to be able to recognize Novell or Token Ring or ??
AFAIK you can use the UDP sample to create IP packets directly and that is it with the standard ethernet library (don't know about the ENC... the other one)
johnwasser:
What ethernet hardware are you using?
At the moment, no. I plan to buy "ENC28J60 Ethernet Shield for ARDUINO Duemilanove ATMEGA328".
Ogogon.
robtillaart:
What level do you want?
I want to use ethernet level without the level of TCP/IP. (Ethernet Level 2.)
Transfer data between the adapter with the address MAC1 and MAC2.
Ogogon.
think you need to dive into the datasheets of the wiznet and/or the ENC28j60 chips.
Can you tell us why you want to do that, what is your goal?
robtillaart:
think you need to dive into the datasheets of the wiznet and/or the ENC28j60 chips.
Why wiznet? ENC28J60 manufactured by Microchip...
Obviously, I can ask the seller. (And apparently the manufacturer.)
But it's fun and lively Chinese guy. I think he churns these cards are not particularly going into their subtle nuances.
http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=290552073894&ssPageName=STRK:MEWAX:IT
robtillaart:
Can you tell us why you want to do that, what is your goal?
I want to two devices to communicate without using the level of TCP/IP.
This will simplify and accelerate the exchange.
Since the client DHCP for Ethernet Shield exists, programmatic access to the level of the ethernet MAC should be.
Ogogon.
ogogon:
johnwasser:
What ethernet hardware are you using?At the moment, no. I plan to buy "ENC28J60 Ethernet Shield for ARDUINO Duemilanove ATMEGA328".
Ogogon.
Read the data sheet starting at page 39: 7.0 TRANSMITTING AND RECEIVING PACKETS
It looks to me like the ethershield library (for the enc28j60, not to be confused with the "ethernet" library for Wiznet) includes functions enc28j60PacketSend() and enc28j60PacketReceive() for sending/receiving raw ethernet packets.
Since the client DHCP for Ethernet Shield exists, programmatic access to the level of the ethernet MAC should be.
Then reverse engineering that code should give you your answer, but for what its worth, DHCP is running on top of TCP IP. See - OSI model - Wikipedia (below @examples)
I want to two devices to communicate without using the level of TCP/IP.
This will simplify and accelerate the exchange.
TCP adds a handshake to get robustness, as it confirms reception of every packet (simplified but OK)
if you want it faster you can use UDP (user datagram protocol) it does not confirm any packet and is therefor faster (factor 2 a 3 max, but it depends on many var's)
However as no packet is confirmed, the sender does not know a packet is not received and the receiver does not know that a packet is send.
Yes, there are ways (I will not discuss) to solve that but that adds quite some complexity to your code, in fact you will be reinventing some sort of TCP in the end.
To get a better understanding. What information must be send so fast? can you tell more about the specs of your application?
How many bytes must be send how fast with which frequency? [e.g. 10 bytes, 2 ms, 100/second]
Rob
The general feeling is that if you need the reliable delivery features of TCP, you have to add complexity pretty close to TCP on top of something more primitive (raw ethernet.) A lot of work for only a tiny payback in increased complexity, and the added expense of having an incompatible protocol.
Simpler protocols can be simpler. Short transaction protocols probably benefit most. If you can put everything in one packet and get everything back in one packet (possibly after retransmissions), then you've hit a sweet spot that TCP can't touch.
UDP isn't necessarily faster than TCP, especially if you're talking about throughput, where you need a windowing strategy (like TCPs) send be able to send packets quicker. FTP (tcp based) is significantly faster than TFTP (UDP based), for example.