Apache NuttX is a mature, real-time embedded operating system (RTOS) https://nuttx.apache.org/
Find a file
Tiago Medicci Serrano c17e16eaed xtensa/espressif: Update common-source integration for Xtensa devices
This commit updates the common-source integration for Xtensa-based
Espressif devices (ESP32, ESP32-S2, and ESP32-S3). This is part of a larger
common-source update split by architecture for better maintainability.

Major components updated:
- IRQ allocator refactoring with intr_alloc integration
- Common-source drivers (GPIO, RMT, I2C, SPI, UART, etc.)
- Espressif components upgrade to release/master.b-test
- Peripheral drivers (ADC, PWM, LEDC, MCPWM, PCNT, Temperature Sensor, etc.)
- Wireless adapters (Wi-Fi and BLE)
- esp_timer migration to the common-source path for Xtensa devices
- Common-source power management implementation (auto-sleep and wakeup paths)
- Board defconfigs for all Xtensa Espressif boards
- SMP support improvements for ESP32-S3
- Critical section handling improvements

Key architectural changes:
- IRQ Allocator: The new interrupt allocator enables multiple mapping
  options from interrupt sources to CPU interrupts, providing flexibility
  required by modern peripherals. Although this introduces breaking changes
  to the interrupt handling API, the required ARCH_MINIMAL_VECTORTABLE
  Kconfig option is explicitly checked during startup to ensure proper
  configuration. This validation prevents runtime issues from configuration
  mismatches.
- Xtensa-specific interrupt handling via esp_xtensa_intr.c providing
  NuttX-native implementations of xt_ints_on/off and interrupt handlers,
  avoiding conflicts with NuttX's core Xtensa macros.
- Timer/RTC unification: ESP32/ESP32-S2/ESP32-S3 move from chip-specific
  RTC/RT-timer code to common-source Espressif integration, including
  esp_timer_adapter/esp_rtc paths and the required bringup/defconfig updates.
- Power management consolidation: Xtensa PM follows the common-source
  implementation, including common-source auto-sleep behavior, UART/Wi-Fi
  wakeup coordination, and tickless-safe sleep flow compatibility.

Note: This is a large commit to maintain bisectability. Breaking the
changes into smaller commits would result in non-building intermediate
states across the common-source infrastructure update.

Tested configurations:
- All defconfigs were tested, including `ostest`.

Signed-off-by: Tiago Medicci Serrano <tiago.medicci@espressif.com>
2026-03-29 00:33:11 +08:00
.github ci: split xtensa jobs into three separate jobs (instead of two) 2026-03-28 06:14:34 +08:00
arch xtensa/espressif: Update common-source integration for Xtensa devices 2026-03-29 00:33:11 +08:00
audio style: Fix "is is" typo across the codebase. 2026-03-24 09:39:26 +08:00
binfmt Makefile: Remove make depend files by make distclean 2026-02-16 16:27:57 +01:00
boards xtensa/espressif: Update common-source integration for Xtensa devices 2026-03-29 00:33:11 +08:00
cmake style: Fix "the the" typo across the codebase. 2026-03-23 11:07:49 +01:00
crypto Makefile: Remove make depend files by make distclean 2026-02-16 16:27:57 +01:00
Documentation Documentation: Add getevent input event monitor documentation. 2026-03-27 08:09:24 -03:00
drivers drivers/net/telnet: Fix typo. 2026-03-25 20:49:43 +08:00
dummy build: add initial cmake build system 2023-07-08 13:50:48 +08:00
fs style: Fix "is is" typo across the codebase. 2026-03-24 09:39:26 +08:00
graphics style: Fix "the the" typo across the codebase. 2026-03-23 11:07:49 +01:00
include style: Fix "is is" typo across the codebase. 2026-03-24 09:39:26 +08:00
libs style: Fix "is is" typo across the codebase. 2026-03-24 09:39:26 +08:00
mm mm: Fix Kconfig style 2026-03-12 09:08:18 +08:00
net net/nat: fix missed nat_unlock 2026-03-24 13:49:12 +08:00
openamp openamp: Fix Make style 2026-03-23 18:16:46 -04:00
pass1 Makefile: Remove make depend files by make distclean 2026-02-16 16:27:57 +01:00
sched sched/group_foreachchild.c: fix warning 2026-03-24 10:56:23 -03:00
syscall Makefile: Remove make depend files by make distclean 2026-02-16 16:27:57 +01:00
tools ci: split xtensa jobs into three separate jobs (instead of two) 2026-03-28 06:14:34 +08:00
video Makefile: Remove make depend files by make distclean 2026-02-16 16:27:57 +01:00
wireless style: Fix "the the" typo across the codebase. 2026-03-23 11:07:49 +01:00
.asf.yaml github: master branch protection tune. 2025-05-07 18:37:13 -05:00
.codespell-ignore-lines net/icmpv6: replace net_lock with conn_lock and conn_lock_dev 2025-12-29 09:42:18 +08:00
.codespellrc codespellrc: add ist to ignorelist 2025-10-14 17:42:01 +08:00
.editorconfig .editorconfig: fix character encoding property specification 2025-11-28 19:12:13 +08:00
.gitignore gitignore: add more vim swap files 2025-06-18 15:44:51 -04:00
.gitmessage docs/contributing: Add a commit message template 2025-06-03 17:33:24 +08:00
.pre-commit-config.yaml pre-commit: enable codespell checks 2025-05-05 12:34:39 +08:00
.yamllint feat: add a GitHub action to lint the YAML files 2020-12-15 09:52:04 -06:00
AUTHORS AUTHORS: add Donny Jiuzhu 2026-02-25 10:17:40 +01:00
CMakeLists.txt cmake: Enhance .config handling and comparison logic 2026-02-26 09:46:02 -03:00
CONTRIBUTING.md docs: Fix typos, formatting, and numbering in README.md and CONTRIBUTING.md. 2026-03-23 12:05:24 +01:00
INVIOLABLES.md
Kconfig tools/stackusage.py: use toolchain binaries instead of Python libraries 2026-03-17 11:26:44 -03:00
LICENSE style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
Makefile tools: migrate to SPDX identifier 2024-09-10 23:11:11 +08:00
NOTICE Remove the double blank line from source files 2022-02-20 20:10:14 +01:00
README.md docs: Fix typos, formatting, and numbering in README.md and CONTRIBUTING.md. 2026-03-23 12:05:24 +01:00
ReleaseNotes Documentation: move ReleaseNotes 2023-09-26 20:41:00 +08:00

POSIX Badge License Issues Tracking Badge Contributors GitHub Build Badge Documentation Badge

Apache NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOSs (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).

For brevity, many parts of the documentation will refer to Apache NuttX as simply NuttX.

Getting Started

First time on NuttX? Read the Getting Started guide! If you don't have a board available, NuttX has its own simulator that you can run on terminal.

Documentation

You can find the current NuttX documentation on the Documentation Page.

Alternatively, you can build the documentation yourself by following the Documentation Build Instructions.

The old NuttX documentation is still available in the Apache wiki.

Supported Boards

NuttX supports a wide variety of platforms. See the full list on the Supported Platforms page.

Contributing

If you wish to contribute to the NuttX project, read the Contributing guidelines for information on Git usage, coding standard, workflow and the NuttX principles.

License

The code in this repository is under either the Apache 2 license, or a license compatible with the Apache 2 license. See the License Page for more information.