FreeRTOS Plus TCP vs FreeRTOS + lwip


Can anybody explain the difference between FreeRTOS Plus TCP and from linking FreeRTOS and lwip?, please

The question caused of necessity to realize TCP based on FreeRTOS
And I do not know which way to choose(as it at first time)

FreeRTOS+TCP provides its own TCP stack. lwIP is an other TCP stack implementation which can also be used with FreeRTOS (with a thin porting layer to FreeRTOS) but probably also on other platforms or bare metal.

Hi addi,
Just wanted to add a few more things.
FreeRTOS-Plus-TCP is a scalable, open source and thread safe TCP/IP stack for FreeRTOS maintained by Amazon Web Services.
The stack is misra compliant, unit tested, CBMC proofed and Protocol Tested for IPv4 using the Maxwell Pro Tester.
It has 2 main branches:

  1. main:
    1. supports IPv4
    2. has a LTS(Long Term Support) release
  2. dev/ipv6_integration:
    1. supports both IPv4 and IPv6
    2. This is a work in progress branch with Release Candidates coming up soon.

Thanks!!, now I choosed FreeRTOS-Plus-TCP!


Hi @Shub

Is there any timeline for merging dev/ipv6_integration branch with the main branch?

I noticed the demo project is empty for dev/ipv6_integration. Does anyone from Amazon have a working demo for Windows simulator?

I’m also curious to know about IGMP protocol support, to know if it will be added to the implementation?

Thanks in advance

Hi Saeed,
Welcome to the FreeRTOS community.
We are planning to merge dev/ipv6_integration branch to main this summer. Keep a close watch.
However, we already have a RC1 (release candidate) available and the page (rc1-page) has all the details.

All the demos(including IPv4 and IPv6 WinSIM demos) are working with dev/ipv6_integartion and the above page has the details.

Can you share a few more details on the IGMP support ? Is it IGMP packet parsing, or IGMP group creation, join , leave etc. It will also be great if you can share some details on the IGMP use-case.


Thanks for the update! Working with rc1 will be very helpful.

As for the IGMP support, there will be some devices joining the multicast group and waiting to receive data from a server. They will also receive unicast packets as well at the same time with multicast packets. They need to stay in multicast group as long as they are doing their job.

Having this in mind I’m still not sure if the devices need to have packet parsing based on what you said. Do they?

Do you think FreeRTOS+TCP will support IGMP protocol in a near future?

I’ve found basic implementation for IGMP support by @epopov. Do you have a plan to work on this and merge it to the main branch before the next +TCP release?

Hey @xerox ,
Just a side note, I started experimenting with rc1 as well and am currently moving my IGMP code to that codebase. I don’t know if my code will ever get integrated into the official repository, but even if it doesn’t I’m actively using it and will soon push a version based on dev/IPv6_integration


Thanks @epopov . It will be great if we can have a PR for dev/ipv6_integration branch. We will be happy to help you in every possible way in the process and merge the same in the branch.

Hi @xerox
For the use case that you specified, we will need IGMP parsing, Group create, join and leave functionalities.
Yes, The changes for @epopov at GitHub - evpopov/FreeRTOS-Plus-TCP at Multicasts_Draft_2 support the same.

1 Like

Sorry for getting up already closed topic, but maybe somebody knows, what is less memory usage realization of TCP/IP stack with link of FreeRTOS?

I run out of memory of “my” mips

Hello @addi,

You wrote:

what is less memory usage realization of TCP/IP stack with link of FreeRTOS?

I am not sure what you are asking for here? Are you asking for the “memory footprint” of FreeRTOS and FreeRTOS+TCP?

I run out of memory of “my” mips

MIPS stands for processing speed.

Are you worried about the speed or about the usage of memory? RAM or flash memory?

Im asking about memroy footpront of TCP/IP stack what suitable for intergration with FreeRTOS
I have 256K RAM only and I have to locate all only in RAM
I tried to locate also with optimization level but with optimization I have got another problem)

You want to put data in RAM or do you want to execute out of RAM? When you say, you are running out of memory, what are the symptoms do you see? Is it a link failure? Can you share complete logs?

What is the problem that you see with optimization enabled?

Thank you for your replay!
Yes I want to put all, - data and code into RAM and execute from RAM 256 KB
When I do optimization I have some problem with operation, and I have got the reason yet
And the question is in Lightweight, - does lwip more lightweight rather TCP stack that comes with FreeRTOS plus??

Can you describe what problem do you see? Do you see compilation failure or run time failure?