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