HTTP server implementation on a microcontroller

using different frameworks and libraries, performance benchmark and analysis

Nucleo-F429ZI

  • Cortex-M4 core
  • 180 MHz max CPU frequency
  • 2048 KB Flash
  • 192 KB SRAM, (+64 KB CCM  RAM)
  • Ethernet
    • Built-in 10/100Mbit MAC
    • LAN8720 PHY

Hardware Setup

Frameworks

IDE OS IP stack
Cube FreeRTOS lwIP
- Zephyr Zephyr
Keil RTX MDK
make + GCC FreeRTOS FreeRTOS-TCP
make + GCC bare metal Mongoose MIP

Application

  • A very simple HTTP server
  • Request: GET / HTTP/1.0
  • Response: HTTP/1.0 200 OK

const http = require('http');

const requestListener = function(req, res) {
  res.writeHead(200);
  res.end('hi');
};

http.createServer(requestListener).listen(8000);

deck

By Sergey Lyubka