[En-Nut-Discussion] Large number of simultaneous network connections with the Ethernut OS.

Louis B louisjbarman at hotmail.com
Tue Aug 31 14:24:11 CEST 2004


Hello,

I have selected the Ethernut for a new project and I require your help with 
the design of the software. I am totally new to the Ethernut API and I am 
not sure which approach to take when writing the software.

First I need to fill you in with some details of this project. There is an 
existing project, for which I wrote all the code, that runs on an embedded 
board that has 16 UARTs. To simplify it slightly 15 of these UARTs are used 
as a giant cross point  switch, so that messages received by one of these 
UARTs may be passed through to one or more of the other UARTs. (In reality 
there are also polling engines within the software that is collecting 
information and sending commands to the devices connected to the UARTs). Two 
of these boards have been cross linked together using the 16th UARTs to 
produce a giant 30 channel system.

We now wish to expand the system into a 64 channel system (with 64 UARTs in 
total) and it is for this project that I have selected the Ethernut boards. 
We have designed a board with eight UARTs that plugs into the Ethernut 
board. (These UARTs have 64 byte hardware buffers and so we do not need to 
worry about interrupts). Eight of these boards will be used with 8 Ethernut 
boards all linked together by a network to produce a giant 64 channel 
system. It is how to port the original software onto the Ethernut system for 
which I need your help. The original software does not use tasks, but 
instead uses a round robin control loop.

Now for the questions.

1. Is it possible for the Ethernut board to send messages simultaneously to 
seven other boards. (there is a low data rate with short fixed length 
message so bandwidth should not be a problem). Is there a limit to the 
number of simultaneous connections that can be handled by the Ethernut 
board?

2. Which protocol do you recommend that I used to send messages between the 
eight Ethernut boards; TCP/IP or UDP? (Please bear in mind that each 
Ethernut may be required to send messages simultaneously to seven others. I 
am using short fixed length packets of 16 bytes).

3. What is the best way of integrating the Ethernut threads with the round 
robin approach I have taken with the original software? Currently I am 
thinking that there will need to be a separate thread for each of the 7  
network connections. These messages would need to be queued up so that they 
could be handled by the idle task which would contain the round robin 
control loop.

4. As an alternative, is it possible not to use threads with the Ethernut 
OS, but instead use a polling method for talking to the network connections. 
For example having a system call that determines if there are any packets 
available from the network that need to be read. This would allow the round 
robin control loop to continue without being halted.

5. Are network connections bi-directional? Would seven network connections 
and seven tasks be needed to set up seven bi-directional links with the 
other Ethernut boards? Or would 14 network connections and 14 tasks be 
needed to set up single directional links?


I would be most grateful if you could point me in the right direction for 
this project. It would be most useful if you could provide me with the bare 
bones out line of how I should start coding this project. Finally what is 
the most relevant sample code that I should look at when starting this 
project.

Thanks in advance for your help.

(if you are interested the website for this my company website is 
http://www.radamecbroadcast.co.uk)

Louis B.

_________________________________________________________________
It's fast, it's easy and it's free. Get MSN Messenger today! 
http://www.msn.co.uk/messenger




More information about the En-Nut-Discussion mailing list