Supported platforms
Built-in TCP/IP stack
Mongoose has its own built-in TCP/IP stack with drivers, so it needs no additional software to implement networking. The built-in stack runs on bare metal and under any RTOS. Platforms supported by the Mongoose built-in TCP/IP stack:
| MCU | Connectivity | Notes |
|---|---|---|
| STM32 | Built-in Ethernet | Ethernet-capable STM32F, STM32H5, STM32H7, STM32N6, STM32C5 variants |
| NXP i.MX RT | Built-in Ethernet | RT102x, RT104x, RT105x, RT106x, RT117x, RT118x (NETC) |
| NXP MCX | Built-in Ethernet | MCXN94x, MCXE247 |
| NXP RW612 | Eth, WiFi, 802.15.4 | Separate Ethernet and radio drivers |
| Microchip ATSAME54 | Built-in Ethernet | GMAC driver |
| Renesas RA | Built-in Ethernet | RA6M, RA8M |
| Infineon XMC | Built-in Ethernet | XMC4, XMC7 |
| Texas Instruments | Built-in Ethernet | TM4C, TMS570 |
| RP2040, RP2350, STM32, others | CYW43xx Wi-Fi chips | SPI or SDIO; Pico W, Pico 2 W, Pico RM2, Arduino Portenta H7 |
| STM32, others | ST67W6 Wi-Fi modules | SPI; for example, STM32U5 with the ST67W611M1 module |
| MCUs with an NXP Wi-Fi SDK port | NXP Wi-Fi | Requires the SDK's Wi-Fi port implementing the driver's network hooks |
| NXP MCXW71 | Built-in 802.15.4 radio | IPv4 over IEEE 802.15.4 |
| NXP RW612 | Built-in 802.15.4 radio | IPv4 over IEEE 802.15.4; requires NXP radio firmware |
| Any MCU with SPI | W5500 or W5100 Ethernet chips | External Wiznet MAC+PHY |
| MCUs connected to a cellular modem | Cellular | AT commands and PPP; for example, SIM800 |
| MCUs with CMSIS Ethernet drivers | Ethernet via CMSIS-Driver | Requires CMSIS Ethernet MAC and PHY drivers |
Third-party TCP/IP stacks
Mongoose can also run on top of any TCP/IP stack that supports the BSD sockets API. Platforms supported via 3rd party TCP/IP stacks:
| TCP/IP stack | Notes |
|---|---|
| lwIP | All devices running lwIP, for example ESP32, ESP32S3, ESP32C3, ESP32C6, etc |
| Zephyr | All devices supported by Zephyr |
| Other | Any other TCP/IP stack that supports BSD socket API, for example Amazon FreeRTOS-TCP |
| Linux, Mac, Windows | Workstations, server, single board computers, embedded Linux devices running on MPUs or FPGAs |
Build environments
One of the most important settings is the platform selection, which determines the target environment Mongoose runs on.
The build environment is driven by the MG_ARCH setting in the mongoose_config.h configuration file.
For example, in order to build in STM32 Cube framework, set this in your mongoose_config.h:
#define MG_ARCH MG_ARCH_CUBE
// ... other build options ...
Below is the list of supported build environments
| MG_ARCH_* | Platform / notes |
|---|---|
| MG_ARCH_CUSTOM | Custom user-defined platform (via mongoose_config.h) |
| MG_ARCH_UNIX | Unix-like systems (Linux, BSD, macOS, POSIX) |
| MG_ARCH_WIN32 | Microsoft Windows |
| MG_ARCH_ESP32 | Espressif ESP32 |
| MG_ARCH_THREADX | ThreadX RTOS (Azure RTOS) |
| MG_ARCH_ZEPHYR | Zephyr RTOS |
| MG_ARCH_ARMGCC | ARM using the GCC toolchain |
| MG_ARCH_ARMCC | Arm Compiler / Keil MDK |
| MG_ARCH_CMSIS_RTOS1 | CMSIS-RTOS v1 (RTX, Keil) |
| MG_ARCH_CMSIS_RTOS2 | CMSIS-RTOS v2 (RTX5, CMSIS wrapper) |
| MG_ARCH_CUBE | STM32Cube environment (HAL-based projects) |
| MG_ARCH_TIRTOS | Texas Instruments TI-RTOS |
| MG_ARCH_ARMCGT | TI ARM Code Generation Tools |
| MG_ARCH_RTTHREAD | RT-Thread RTOS |
| MG_ARCH_PICOSDK | Raspberry Pi Pico SDK (RP2040, RP2350) |
Note: If you're using FreeRTOS, set
MG_ENABLE_FREERTOS. Typically it is used withMG_ARCH_ARMGCC,MG_ARCH_CUBE,MG_ARCH_PICOSDKorMG_ARCH_ARMCC
#define MG_ARCH MG_ARCH_CUBE
#define MG_ENABLE_FREERTOS 1
// ... other build options ...
Links
- Build environments: see https://github.com/cesanta/mongoose/blob/master/src/arch.h
- Nework drivers: see https://github.com/cesanta/mongoose/tree/master/src/drivers
- Build Options Guide