GSoC 2012

Joel Sherrill joel.sherrill at OARcorp.com
Sun Mar 25 15:25:19 UTC 2012


On 03/24/2012 08:08 PM, Kevin Polulak wrote:
> I've begun working on my proposal. Right now, I'm filling out all the 
> general information like the project description and work experience. 
> I want to have it so that everything is filled out except for the 
> timeline. At that point, I'll put it up on Google Docs and begin 
> breaking the project down into smaller tasks. I should have it up 
> later tonight.
>
And it is up now.
> To begin identifying the general deliverables of the project, I'm 
> looking through the current LWIP port at the moment and I have a few 
> questions. I'm a little confused by all the ports in 
> contrib-20050213.tgz. There are ports for different operating systems 
> like eCos and UNIX. Why are these here? Shouldn't there only be one: 
> RTEMS? Why would a port of LWIP for RTEMS include ports for other 
> unrelated operating systems? Also, why is msvc6 there? It's not even 
> an operating system to begin with.
>
Each FOSS project has a goal. In the case of RTEMS, we are a free 
deterministic, robust
real-time operating system. LWIP is a low footprint TCP/IP stack which 
supports multiple
execution environments.

Thus it makes sense for them to support as many OSes as possible just as 
we want to
have as many target architectures and BSPs as possible.

RTEMS is just one execution environment to them.
> How is it possible to make LWIP portable across different 
> architectures? Isn't LWIP high-level enough that it doesn't rely on 
> architecture-dependent features? Refer to the RTEMS architecture 
> diagram 
> <http://www.rtems.org/wiki/index.php/Media:RTEMSArchitecture.png> on 
> the wiki. LWIP is at the same abstraction level as the BSD stack since 
> they're supposed to be freely interchangeable. Wouldn't something at 
> the highest level of abstraction not be concerned with 
> architecture-specific features?
>
Not knowing the details of LWIP but knowing some about the FreeBSD 
TCP/IP stack,
I can point out that there are a few general areas of portability they 
have to deal with.

+ LWIP has to be concerned about portability across OSes.
    FreeBSD's stack has some OS specific ifdef's but not much.

+Both have threading, synchronization, timeout, and interrupt
    concerns. FreeBSD has its own APIs. LWIP has to rely on the
    host environment and provide adapters.

+ Both should have CPU architecture optimized routines like the
     packet and packet header checksum routines. These are in_cksum*
     in FreeBSD. Optimizing these would make up to a 30% improvement
     in the old FreeBSD TCP/IP stack in RTEMS.

+ Both rely on optimized memory copy routines. Same as above

+ Device drivers. There are lots of these. If done well, the stack will
     have a division which separates "chip specifics" from "how do I
     access the chip". In FreeBSD, this is the "bus API"


> How do I build RTEMS so that it uses LWIP instead of the BSD stack? 
> I'm going to need to be able to run test applications like the CHARGEN 
> service in the current port. I would like to set up an environment so 
> that I can easily test two communicating applications as soon as 
> possible. That way I can better gauge how long things will take when 
> writing my proposal timeline.
configure with --disable-networking. That's what we are doing to build
the new FreeBSD TCP/IP stack outside the tree.

Getting the stack to work and integrating it into our build process are two
different problems.

--joel


>
> -- 
> - Kevin Polulak (soh_cah_toa)
> - http://cybercrud.net
>




More information about the devel mailing list