# paulneja/linux-esp32s3 architecture

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

- Interactive diagram: https://gitdiagram.com/paulneja/linux-esp32s3
- Repository: https://github.com/paulneja/linux-esp32s3

## Overview

This repository is a Linux kernel fork for ESP32-S3 boards. The documented runtime centers on Linux executing on core 1 while ESP-IDF on core 0 provides WiFi, BLE, and flash services; platform drivers and IPC support that split. Other major capabilities include hardware RSA, a BLE setup device, and NOMMU fork with cache-MMU-assisted memory swapping. The supplied tree and excerpts do not include ESP32-S3 implementation files, so those components have null paths and the documented relationships cite only the README.

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Platform support"]
  node_platform_drivers["Platform drivers"]
  node_interrupt_matrix["Interrupt matrix"]
  node_gpio["GPIO"]
  node_spi_clock["SPI and clocks"]
  node_trng["TRNG"]
  node_flash["Flash driver"]
  node_cache_mmu["Cache MMU"]
end

subgraph group_connectivity["Connectivity and IPC"]
  node_ipc["Core IPC"]
  node_esp_idf["ESP-IDF firmware"]
  node_wifi_ble["esp32-ng WiFi/BLE"]
  node_ble_device["BLE setup device"]
end

subgraph group_kernel["Kernel runtime"]
  node_linux["Linux kernel"]
  node_nommu_fork["NOMMU fork"]
  node_context_switch["Memory swapping"]
  node_user_program["User program"]
end

subgraph group_acceleration["Hardware acceleration"]
  node_rsa["RSA accelerator"]
end

node_boards(("ESP32-S3 boards"))

node_boards -->|"runs on core 1"| node_linux
node_boards -->|"runs on core 0"| node_esp_idf
node_esp_idf -->|"provides connectivity"| node_wifi_ble
node_esp_idf -->|"handles flash"| node_flash
node_platform_drivers -->|"supports interrupts"| node_interrupt_matrix
node_platform_drivers -->|"provides GPIO"| node_gpio
node_platform_drivers -->|"provides interfaces"| node_spi_clock
node_platform_drivers -->|"provides IPC"| node_ipc
node_platform_drivers -->|"provides entropy"| node_trng
node_linux -->|"uses driver"| node_wifi_ble
node_linux -->|"uses accelerator"| node_rsa
node_linux -->|"exposes device"| node_ble_device
node_user_program -->|"requests fork"| node_nommu_fork
node_nommu_fork -->|"swaps private memory"| node_context_switch
node_context_switch -->|"exchanges chunk mappings"| node_cache_mmu

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_platform_drivers,node_interrupt_matrix,node_gpio,node_spi_clock,node_trng,node_flash,node_cache_mmu toneBlue
class node_ipc,node_esp_idf,node_wifi_ble,node_ble_device toneAmber
class node_linux,node_nommu_fork,node_context_switch,node_user_program toneMint
class node_rsa toneRose
class node_boards toneIndigo
```

## Components

### Platform support

- **Platform drivers**
- **Interrupt matrix**
- **GPIO**
- **SPI and clocks**
- **TRNG**
- **Flash driver**
- **Cache MMU**

### Connectivity and IPC

- **Core IPC**
- **ESP-IDF firmware**
- **esp32-ng WiFi/BLE**
- **BLE setup device**

### Kernel runtime

- **Linux kernel**
- **NOMMU fork**
- **Memory swapping**
- **User program**

### Hardware acceleration

- **RSA accelerator**

### Other components

- **ESP32-S3 boards**

## Connections

- ESP32-S3 boards → Linux kernel: runs on core 1 (evidence: `README`)
- ESP32-S3 boards → ESP-IDF firmware: runs on core 0 (evidence: `README`)
- ESP-IDF firmware → esp32-ng WiFi/BLE: provides connectivity (evidence: `README`)
- ESP-IDF firmware → Flash driver: handles flash (evidence: `README`)
- Platform drivers → Interrupt matrix: supports interrupts (evidence: `README`)
- Platform drivers → GPIO: provides GPIO (evidence: `README`)
- Platform drivers → SPI and clocks: provides interfaces (evidence: `README`)
- Platform drivers → Core IPC: provides IPC (evidence: `README`)
- Platform drivers → TRNG: provides entropy (evidence: `README`)
- Linux kernel → esp32-ng WiFi/BLE: uses driver (evidence: `README`)
- Linux kernel → RSA accelerator: uses accelerator (evidence: `README`)
- Linux kernel → BLE setup device: exposes device (evidence: `README`)
- User program → NOMMU fork: requests fork (evidence: `README`)
- NOMMU fork → Memory swapping: swaps private memory (evidence: `README`)
- Memory swapping → Cache MMU: exchanges chunk mappings (evidence: `README`)
