FreeRTOS Win32 project with lwIP web server

This is a temporary post used to host the source code.  The project hosted here will evolve, and eventually be hosted and documented on the FreeRTOS web site.  As this is a temporary post - do not create permanent links to the post or its hosted files.

The project uses the FreeRTOS Win32 simulator to create a simple http server and telnet "like" command interpreter.  

The http server comes from the lwIP contrib folder, and demonstrates the lwIP raw API.  Its source code can be found in Demo\WIN32-MSVC-lwIP\lwIP_Apps\apps\httpserver_raw_from_lwIP_download.  

The command interpreter demonstrates the lwIP sockets interface.  Its source code can be found in Demo\WIN32-MSVC-lwIP\lwIP_Apps\apps\BasicSocketCommandServer.  The command interpreter uses the standard Telnet port, allowing a Telnet client to be used to connect to the application.  Only Windows clients have been tested.

To use this project:

  • The Microsoft Visual Studio 2010 Express Edition (free) solution/project file is located in Demo\WIN32-MSVC-lwIP.
  • The IP address, net mask, etc. are configured by constants located at the bottom of Demo\WIN32-MSVC-lwIP\FreeRTOSConfig.h.
  • Also in FreeRTOSConfig.h, the constant configNETWORK_INTERFACE_TO_USE must be set to the network adapter that is to be used by the lwIP stack.  View the DOS window that opens when the project is executed for a list of the available network adapters on the host machine, and their respective numbers.  The network adapter chosen must have a link, but all communication is local, so no other nodes are required to be connected.  
  • Important:  The IP address set in FreeRTOSConfig.h must be compatible with the IP address used by Windows on the chosen network adapter.  The IP address set in FreeRTOSConfig.h is the 'virtual' IP address used by the lwIP stack.  The IP address used by Windows is the real IP address, used by the Windows TCP/IP stack.  This demo allows communication between the real IP address, and the virtual IP address, all on a single machine.
  • The main() function is located in main.c (see the Demo App Source folder in the Visual Studio project explorer).  

Remember - this is a simulation (emulation?) of FreeRTOS, so real time performance is not achievable.  Currently it uses the slow windows clock, so time runs about 30 times too slow.  It will be updated to use the faster clock to get a closer match between simulated and actual time.



Please sign in to leave a comment.