# espressif/esp8266_rtos_sdk architecture

> Architecture diagram of the GitHub repository espressif/esp8266_rtos_sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/espressif/esp8266_rtos_sdk
- Repository: https://github.com/espressif/esp8266_rtos_sdk

## Overview

ESP8266_RTOS_SDK is an embedded software framework: application code uses its APIs to run on ESP8266 hardware, with FreeRTOS, device drivers, networking, storage, and update/security facilities underneath. The README describes the developer’s configure/build/flash/monitor workflow; the graph focuses on the resulting device runtime rather than build tooling. Provisioning’s documented transports and other unsampled capabilities are retained, but their internal wiring is not inferred. The sampled source is partial, so some subsystem relationships are intentionally omitted.

Main entry points: [`components/esp8266/source/esp_wifi.c`](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp8266/source/esp_wifi.c) (Wi-Fi API), [`components/bootloader_support/src/bootloader_init.c`](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/bootloader_support/src/bootloader_init.c) (Boot support), [`components/esp_http_client/esp_http_client.c`](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_http_client/esp_http_client.c) (HTTP client), [`components/wifi_provisioning/src/manager.c`](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/wifi_provisioning/src/manager.c) (Wi-Fi provisioning)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Device runtime"]
  node_firmware["ESP8266 firmware"]
  node_bootloader["Bootloader<br/>[bootloader_start.c]"]
  node_boot_support["Boot support<br/>[bootloader_init.c]"]
  node_freertos["FreeRTOS tasks<br/>[tasks.c]"]
  node_pthread_tls["Pthread TLS"]
end

subgraph group_network["Network stack"]
  node_wifi["Wi-Fi API<br/>[esp_wifi.c]"]
  node_events["Event loop<br/>[esp_event.c]"]
  node_ip_adapter["TCP/IP adapter<br/>[event_handlers.c]"]
end

subgraph group_services["Application services"]
  node_http_client["HTTP client<br/>[esp_http_client.c]"]
  node_http_server["HTTP server<br/>[httpd_main.c]"]
  node_provisioning["Wi-Fi provisioning<br/>[manager.c]"]
  node_modbus["Modbus master/slave"]
end

subgraph group_state["State and updates"]
  node_nvs[("NVS storage<br/>[nvs_storage.cpp]")]
  node_ota["OTA update<br/>[esp_ota_ops.c]"]
  node_https_ota["HTTPS OTA<br/>[esp_https_ota.c]"]
  node_secure_boot["Secure boot<br/>[secure_boot.c]"]
  node_flash[("Device flash")]
end

subgraph group_hardware["Hardware interfaces"]
  node_drivers["Peripheral drivers<br/>[gpio.c]"]
end

node_developer(("Application developer"))
node_network_peer(("Network peer"))
node_provision_client(("Provisioning client"))
node_board(("ESP8266 board"))

node_developer -->|"uses APIs"| node_firmware
node_bootloader -->|"initializes"| node_boot_support
node_boot_support -->|"starts"| node_firmware
node_firmware -->|"runs tasks"| node_freertos
node_pthread_tls -->|"cleans task TLS"| node_freertos
node_firmware -->|"controls peripherals"| node_drivers
node_drivers -->|"accesses hardware"| node_board
node_firmware -->|"configures Wi-Fi"| node_wifi
node_wifi -->|"posts events"| node_events
node_events -->|"dispatches events"| node_ip_adapter
node_ip_adapter -->|"handles Wi-Fi events"| node_wifi
node_firmware -->|"makes requests"| node_http_client
node_http_client -->|"exchanges HTTP"| node_network_peer
node_firmware -->|"serves requests"| node_http_server
node_network_peer -->|"sends requests"| node_http_server
node_firmware -->|"starts setup"| node_provisioning
node_provision_client -->|"provides credentials"| node_provisioning
node_provisioning -->|"sets credentials"| node_wifi
node_firmware -->|"uses Modbus"| node_modbus
node_firmware -->|"reads and writes"| node_nvs
node_nvs -->|"stores values"| node_flash
node_firmware -->|"requests update"| node_ota
node_https_ota -->|"downloads image"| node_http_client
node_ota -->|"writes image"| node_flash
node_boot_support -->|"validates image"| node_secure_boot
node_secure_boot -->|"checks image"| node_flash

click node_bootloader "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/bootloader/subproject/main/bootloader_start.c"
click node_boot_support "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/bootloader_support/src/bootloader_init.c"
click node_freertos "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/freertos/freertos/tasks.c"
click node_pthread_tls "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/pthread/pthread_local_storage.c"
click node_drivers "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp8266/driver/gpio.c"
click node_wifi "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp8266/source/esp_wifi.c"
click node_events "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_event/esp_event.c"
click node_ip_adapter "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/tcpip_adapter/event_handlers.c"
click node_http_client "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_http_client/esp_http_client.c"
click node_http_server "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_http_server/src/httpd_main.c"
click node_provisioning "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/wifi_provisioning/src/manager.c"
click node_modbus "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/freemodbus/common/esp_modbus_master.c"
click node_nvs "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/nvs_flash/src/nvs_storage.cpp"
click node_ota "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/app_update/esp_ota_ops.c"
click node_https_ota "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_https_ota/src/esp_https_ota.c"
click node_secure_boot "https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/bootloader_support/src/secure_boot.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_firmware,node_bootloader,node_boot_support,node_freertos,node_pthread_tls,node_provision_client toneBlue
class node_wifi,node_events,node_ip_adapter toneAmber
class node_http_client,node_http_server,node_provisioning,node_modbus toneMint
class node_nvs,node_ota,node_https_ota,node_secure_boot,node_flash toneRose
class node_drivers,node_developer,node_network_peer,node_board toneIndigo
```

## Components

### Device runtime

- **ESP8266 firmware**
- [Bootloader](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/bootloader/subproject/main/bootloader_start.c): `components/bootloader/subproject/main/bootloader_start.c`
- [Boot support](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/bootloader_support/src/bootloader_init.c): `components/bootloader_support/src/bootloader_init.c`
- [FreeRTOS tasks](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/freertos/freertos/tasks.c): `components/freertos/freertos/tasks.c`
- [Pthread TLS](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/pthread/pthread_local_storage.c): `components/pthread/pthread_local_storage.c`

### Network stack

- [Wi-Fi API](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp8266/source/esp_wifi.c): `components/esp8266/source/esp_wifi.c`
- [Event loop](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_event/esp_event.c): `components/esp_event/esp_event.c`
- [TCP/IP adapter](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/tcpip_adapter/event_handlers.c): `components/tcpip_adapter/event_handlers.c`

### Application services

- [HTTP client](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_http_client/esp_http_client.c): `components/esp_http_client/esp_http_client.c`
- [HTTP server](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_http_server/src/httpd_main.c): `components/esp_http_server/src/httpd_main.c`
- [Wi-Fi provisioning](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/wifi_provisioning/src/manager.c): `components/wifi_provisioning/src/manager.c`
- [Modbus master/slave](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/freemodbus/common/esp_modbus_master.c): `components/freemodbus/common/esp_modbus_master.c`

### State and updates

- [NVS storage](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/nvs_flash/src/nvs_storage.cpp): `components/nvs_flash/src/nvs_storage.cpp`
- [OTA update](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/app_update/esp_ota_ops.c): `components/app_update/esp_ota_ops.c`
- [HTTPS OTA](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp_https_ota/src/esp_https_ota.c): `components/esp_https_ota/src/esp_https_ota.c`
- [Secure boot](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/bootloader_support/src/secure_boot.c): `components/bootloader_support/src/secure_boot.c`
- **Device flash**

### Hardware interfaces

- [Peripheral drivers](https://github.com/espressif/esp8266_rtos_sdk/blob/master/components/esp8266/driver/gpio.c): `components/esp8266/driver/gpio.c`

### Other components

- **Application developer**
- **Network peer**
- **Provisioning client**
- **ESP8266 board**

## Connections

- Application developer → ESP8266 firmware: uses APIs
- Bootloader → Boot support: initializes
- Boot support → ESP8266 firmware: starts
- ESP8266 firmware → FreeRTOS tasks: runs tasks
- Pthread TLS → FreeRTOS tasks: cleans task TLS
- ESP8266 firmware → Peripheral drivers: controls peripherals
- Peripheral drivers → ESP8266 board: accesses hardware
- ESP8266 firmware → Wi-Fi API: configures Wi-Fi
- Wi-Fi API → Event loop: posts events
- Event loop → TCP/IP adapter: dispatches events
- TCP/IP adapter → Wi-Fi API: handles Wi-Fi events
- ESP8266 firmware → HTTP client: makes requests
- HTTP client → Network peer: exchanges HTTP
- ESP8266 firmware → HTTP server: serves requests
- Network peer → HTTP server: sends requests
- ESP8266 firmware → Wi-Fi provisioning: starts setup
- Provisioning client → Wi-Fi provisioning: provides credentials
- Wi-Fi provisioning → Wi-Fi API: sets credentials
- ESP8266 firmware → Modbus master/slave: uses Modbus
- ESP8266 firmware → NVS storage: reads and writes
- NVS storage → Device flash: stores values
- ESP8266 firmware → OTA update: requests update
- HTTPS OTA → HTTP client: downloads image
- OTA update → Device flash: writes image
- Boot support → Secure boot: validates image
- Secure boot → Device flash: checks image
