GSoC project: #3850 Modular Network Stacks
Christian Mauderer
oss at c-mauderer.de
Sun Mar 21 19:35:55 UTC 2021
On 21/03/2021 18:53, Joel Sherrill wrote:
>
>
> On Sun, Mar 21, 2021, 12:47 PM Vijay Kumar Banerjee <vijay at rtems.org
> <mailto:vijay at rtems.org>> wrote:
>
> Hi Rajiv and Joel,
>
> On Sun, Mar 21, 2021 at 9:06 AM Joel Sherrill <joel at rtems.org
> <mailto:joel at rtems.org>> wrote:
> >
> >
> >
> > On Sun, Mar 21, 2021, 9:20 AM Rajiv Vaidyanathan
> <rajiv.vaidyanathan4 at gmail.com
> <mailto:rajiv.vaidyanathan4 at gmail.com>> wrote:
> >>
> >> Hello RTEMS community,
> >>
> >> I found the ticket: Modular Network Stacks interesting. It would
> be great if someone can tell the current status of this ticket and
> what contributions can be done as a GSoC project.
> >>
> >> In the prerequisites list given, I have experience in UNIX
> socket programming (in C and python), OSI model, basic Wireshark but
> I don't have much experience in assembly (I can read assembly but
> haven't written assembly code) and device drivers. It would be great
> if someone can guide me if I can take up this project.
> >
> >
> > Vijay is the primary mentor for this but I can give you an
> outline of what there is to do.
> >
> > RTEMS historically had a 20 to 25 year old port of the FreeBSD
> tcpip stack. This was ipv4 only and the source was included in the
> main RTEMS repository. It was enabled or disabled via a configure flag.
> >
> > There is now the libbsd repository which is a port of the current
> FreeBSD with many features and drivers. It has a focus on what we
> call source transparency which means that we do not make changes to
> it unless I absolutely necessary and try to preserve the original
> source as much as possible. This makes it possible to largely update
> the source using scripts. We currently track the FreeBSD 12 release
> branch and their development version.
> >
> > With two tcp/ip stacks, it becomes necessary to be able to switch
> between them. This project had a first step which was to move the
> legacy stack into its own repository. Thanks to Vijay, you can now
> build RTEMS without a tcpip stack at all. Then you download and add
> on the tcp/ip stack of your choice - legacy or libbsd.
> >
> > But there's a third tcp/ip stack we are interested in. The lwip
> stack is targeted at lower memory profiles and is not as full
> featured as libbsd. We need an lwip RTEMS repository which includes
> lwip, drivers for a variety of BSPs, its own build system, tests,
> examples, and any services specific to lwip. Lwip as a project does
> not do a good job of providing a central location for device drivers
> so the RTEMS lwip repo will be a collection point. providing a
> robust set of drivers and keeping track of where they came from and
> maintaining Source transparency is key.
> >
> > This arrangement allows anyone to pick from the set of stacks we
> support as long as they deal with the device driver.
> >
> > The GSoC project you would be proposing is the lwip part. We have
> a build of it from a user's application to go by for a working
> example of the stack. Probably completely ignore the default lwip
> build system and uae a waf build system (Python).
> >
> The prototype for this repository is ready!
> rtems-lwip: https://git.rtems.org/vijay/rtems-lwip.git/
> <https://git.rtems.org/vijay/rtems-lwip.git/>
>
> This build follows a similar approach to rtems-libbsd and I have
> also added a testcase to it, by modifying the networking01.exe from
> the legacy repo.
>
> > I think this is very doable as GSoC project. Vijay already did
> separate the legacy stack into its own repository, we have a test
> case BSP, and there is a defined patter to follow.
> >
> I think the first step would be identify a target that we can run on
> qemu as well as hardware and focus on that target. Porting that
> target to LWIP would involve adding a driver to rtems-lwip, along
> with a set up to manage the drivers. For managing different drivers,
> I propose an ini or yaml configuration file that can be used by waf
> scripts to decide which driver to build for a particular bsp.
>
>
> I think Gedare and I chatted about this so I had some in mind. Zynq and
> MPSoC have lwip drivers from xilinx and both run on qemu.
>
> https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842366/Standalone+LWIP+library
> <https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842366/Standalone+LWIP+library>
If it works with the zynq qemu BSP, I think that would be great for that
kind of stuff. That BSP is always great for debugging (although most
likely there will be few C-Code-Work in this repo) because you don't
need extra hardware.
>
> The other top alternative is the PC.
PC is hard for debugging. I never searched but I think you most likely
don't find many with JTAG connectors ;-)
Beagle could be an alternative for real hardware. I found at least one
lwip driver for that.
>
> I can't remember what Alan Cudmore was using but it would be good to at
> least include it so he can possibly provide feedback on his target.
>
> I would expect STM boards also have l whip drivers from the vendor in
> their device driver kit.
If there is a driver for one of the supported boards, that would be a
nice target too. Most of the STM boards have debuggers already on board.
Best regards
Christian
>
>
> So, roughly the todos for the application phase would be to identify
> a potential target and divide the driver work in two phases as per
> GSoC schedule. This also involves collecting all the old/previously
> ported drivers in one place inside lwip, this will also act as a
> reference on how to proceed with the driver for a new target.
>
>
> Lwip is particularly bad at providing a unified place for drivers. This
> is something I never wanted to happen with RTEMS. I think a big value of
> this effort will be collecting drivers that can work with RTEMS bsps.
>
>
>
>
> Best regards,
> Vijay
>
> > That's the project in a nutshell. Vijay should speak up and add on.
> >
> >>
> >> Thanks and regards,
> >> Rajiv
> >> _______________________________________________
> >> devel mailing list
> >> devel at rtems.org <mailto:devel at rtems.org>
> >> http://lists.rtems.org/mailman/listinfo/devel
> <http://lists.rtems.org/mailman/listinfo/devel>
> >
> > _______________________________________________
> > devel mailing list
> > devel at rtems.org <mailto:devel at rtems.org>
> > http://lists.rtems.org/mailman/listinfo/devel
> <http://lists.rtems.org/mailman/listinfo/devel>
>
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
More information about the devel
mailing list