The QP-lwIP integration has been carefully designed for hard real-time control-type applications, in which the TCP/IP stack is used to monitor and configure the embedded device as well as to provide remote user interface (e.g., by means of a web browser). In particular, The lwIP stack, which is not reentrant, is strictly encapsulated inside a dedicated active object (lwIP-Manager), so interrupt locking is unnecessary, which is critical for low interrupt latency. Also, the Ethernet interrupt service routine (ISR) runs very fast without performing any lengthy copy operations. This means that hard-real-time processing can be done at the task level, especially when you use the preemptive QK™ kernel built into QP for executing your application. No external RTOS component is needed to achieve fully deterministic real-time response of active object tasks prioritized above the lwIP task.

The QP-lwIP integration uses exclusively the event-driven lwIP API. The heavyweight Berkeley-like socket API requiring a blocking RTOS and is not used, which results in much better performance of the lwIP stack and less memory consumption.

NOTE: The lwIP source code has not been modified in any way to match the event-driven, run-to-completion execution model underlying QP. In other words, QP works with the standard lwIP code, as distributed from the lwIP homepage.

The QP-lwIP integration has been also carefully designed for portability. All hardware-specific code is clearly separated in the Ethernet/lwIP device driver with the clean interface to the lwIP stack and the QP application.

NOTE: This QP™ Development Kit (QDK™) contains only the software dependent on the particular processor and the compiler, but does not contain the portable QP™ Baseline Code. In other words, you need to download and install the QP™ Baseline Code, before you install any QDK™.

LICENSING: The QDKs™ are licensed the same way as the QP™ frameworks.
learn more about QP™ licensing

QP™ Development Kits (QDKs) for lwIP TCP/IP

QP-lwIP Test Setup

The QP-lwIP example code available for download below provides all you need to develop professional TCP/IP applications with lwIP, including embedded code and host-based utilities. The example code is based on the Dining Philosopher Problem (DPP) sample application described in Chapter 7 of PSiCC2 as well as in the Application Note "Dining Philosophers Problem" (included in the example code distribution). The goal is to demonstrate lwIP running alongside an existing real-time application, as opposed to lwIP running all by itself that fails to show how lwIP can share the CPU and cooperate with other software components. The QP-lwIP example code includes the following components:

QDK™ Board QP™ Version Compiler Manual Download
QDK/C lwIP-IAR EK-LM3S6965 QP/C-5.2.1 & lwIP-1.4.1 IAR EWARM Manual (1.5MB) QDK-C_lwIP
QDK/C lwIP-GNU EK-LM3S6965 QP/C-5.2.1 & lwIP-1.4.1 GNU (Sourcery CodeBench) Notes (0.01MB) QDK-C_lwIP
QDK/C++ lwIP-IAR EK-LM3S6965 QP/C++-5.2.1 & lwIP-1.4.1 IAR EWARM Manual (1.5MB) QDK-Cpp_lwIP
QDK/C++ lwIP-GNU EK-LM3S6965 QP/C++-5.2.1 & lwIP-1.4.1 GNU (Sourcery CodeBench) Notes (0.01MB) QDK-Cpp_lwIP

Third Party QP™-lwIP Ports

MCU Board QP™ Version Compiler Manual Download
STM32F4xx STM324x9I-EVAL2 QP/C-5.3.0 & lwIP-1.4.1 GNU README (0.02MB) QP/C-lwIP-STM324x9I-EVAL2 on
STM32F207 STM3220G-EVAL QP/C-4.5.02 & lwIP-1.4.0 GNU (Sourcery CodeBench) README (0.01MB) QP/C-lwIP-STM3220G-EVAL on

Last updated: September 10, 2014