Kinetis K60 with FreeRtos and uIP or lwIP

manug wrote on Wednesday, November 07, 2012:

Hello I am new i n the field of IP Stacks and  due to the fact that FreeRTOS recommends the use of either uIP or lwIP I would try one of these stacks. Does anybody knows about an example of a Kinetis controller and one of the above moentioned TCP Stacks? I am using CodeWarrior based on eclipse.

rtel wrote on Wednesday, November 07, 2012:

Just to be clear - FreeRTOS does not recommend the use of these stacks over and above any other.  There are several (oldish) demos that use them, but people use FreeRTOS with lots of different stacks.

uIP is a really good stack in the right situation, and the right situation is where RAM is extremely limited and throughput does not matter.

lwIP is under continuous development, but naturally more complex.

To port either of these stacks you don’t necessarily need a Kinetis example.  The only portion of the code that is specific to a platform is the MAC interface.  You can copy an integration from a FreeRTOS project, and copy a MAC driver from the Freescale processor expert - and put the two together.


woops_ wrote on Wednesday, November 07, 2012:

Here is IAR example

manug wrote on Thursday, November 08, 2012:


@ Richard: thanks for clarifying and providing me the information resecting the porting. I will try o port one of the stacks.

@woops, thanks for the IAR example

manug wrote on Friday, November 09, 2012:

Does anybody know what steps i have to do to port the IAR solution to a CW solution?

tahnks in advance!

rtel wrote on Friday, November 09, 2012:

Generally, the only part of the TCP/IP stack that is dependent on the compiler are:

1) The syntax required to pack structures - which is required for a TCP/IP stack.  If you search for the files pack_struct_start.h and pack_struct_end.h you will see that they contain a test for the compiler being used, then the syntax that is required by that compiler.  You would have to add something for the CW compiler.  If CW is using GCC then you probably won’t have to do anything.

2) How the interrupt service routines are installed.  On a Cortex-M3, if a CMSIS vector table is being used, and if the demo is using a CMSIS interrupt name, then again you probably won’t have to do anything.  Otherwise, just ensure the interrupt is installed in the Ethernet vector _.

As far as FreeRTOS goes, you would need to build the portable.c file that is correct for the compiler being used, and ensure the include path is set up to include the portmacro.h that is right for the compiler.