What's New In This Release

Major Changes to Core OS

Sched

* [#16148](https://github.com/apache/nuttx/pull/16148) Sched small sem cleanups
* [#16394](https://github.com/apache/nuttx/pull/16394) sched: Add max delay tick limitation for wdog/wqueue.
* [#16389](https://github.com/apache/nuttx/pull/16389) sched: Remove checking of WDOG_ISACTIVE when cancelling wdog
* [#15998](https://github.com/apache/nuttx/pull/15998) sched: simplify call of get current tcb
* [#16262](https://github.com/apache/nuttx/pull/16262) sched/affinity: Fix CPU_LOCKED functionality for some SMP calls
* [#16134](https://github.com/apache/nuttx/pull/16134) sched/gettid: Move thread ID to TLS
* [#15951](https://github.com/apache/nuttx/pull/15951) sched/init: Fix build error with CONFIG_BOARD_CRASHDUMP_CUSTOM
* [#16113](https://github.com/apache/nuttx/pull/16113) sched/mutex: add ticked lock version for mutex/rmutex
* [#16329](https://github.com/apache/nuttx/pull/16329) sched/queue: fix typo in dq_insert_mid macro
* [#15982](https://github.com/apache/nuttx/pull/15982) sched/sem_waitirq: Move kmm_map() call to sem_wait()
* [#16334](https://github.com/apache/nuttx/pull/16334) sched/signal: Fix signal delivered to a wrong thread
* [#16333](https://github.com/apache/nuttx/pull/16333) sched/signal: signal dispatch cleanups
* [#16301](https://github.com/apache/nuttx/pull/16301) sched/signal/sig_dispatch: Fix a race condition between nxsig_tcbdispatch and nxsig_deliver
* [#16383](https://github.com/apache/nuttx/pull/16383) sched/timedwait: Ensure critical section for nxsig_timeout
* [#15937](https://github.com/apache/nuttx/pull/15937) sched/wdog: Support for periodic wdog.
* [#16343](https://github.com/apache/nuttx/pull/16343) sched/wdog: watchdog timer improvements.
* [#16342](https://github.com/apache/nuttx/pull/16342) sched/wqueue: Fix wd_cancel_sync and improve work_queue performance.
* [#16231](https://github.com/apache/nuttx/pull/16231) sched/wqueue: Refactor delayed and periodic workqueue.

libs

* [#16130](https://github.com/apache/nuttx/pull/16130) libc/arm: optimize crc32/crc32c for arm
* [#16311](https://github.com/apache/nuttx/pull/16311) libc/backtrace: Fix compilation error when set LIBC_BACKTRACE_BUFFSIZE
* [#16374](https://github.com/apache/nuttx/pull/16374) libc/fdcheck: fix issue about  a double close check
* [#16149](https://github.com/apache/nuttx/pull/16149) libc/semaphore: Read semaphore value by using NXSEM_COUNT macro
* [#15944](https://github.com/apache/nuttx/pull/15944) libc/strings: fix compile warning if enable -Wshadow
* [#16142](https://github.com/apache/nuttx/pull/16142) libs/libc/crc16: add some comments for crc16ccitt
* [#16143](https://github.com/apache/nuttx/pull/16143) libs/libc/crc16: add support of CRC-16/ANSI(aka CRC-16/IBM)
* [#16360](https://github.com/apache/nuttx/pull/16360) libs/libc/semaphore: Enable semaphore fast wait/post paths for counting semaphores
* [#16147](https://github.com/apache/nuttx/pull/16147) libs/libc/crc16: Separate implementation of crc16xmodem from crc16

tools

* [#16241](https://github.com/apache/nuttx/pull/16241) tools: Update Unix.mk for CONFIG_ARCH_BOARD_COMMON
* [#16000](https://github.com/apache/nuttx/pull/16000) tools/bdf-converter: Fix loop termination condition.
* [#16015](https://github.com/apache/nuttx/pull/16015) tools/checkpatch: Use gmake on BSD, make otherwise.
* [#16402](https://github.com/apache/nuttx/pull/16402) tools/CMakeLists.txt: Improvements to CMakeLists.txt file
* [#16413](https://github.com/apache/nuttx/pull/16413) tools/Config.mk: add -DHAVE_STRNDUP=1
* [#16452](https://github.com/apache/nuttx/pull/16452) tools/doreleasenotes.py: remove deprecater API
* [#15854](https://github.com/apache/nuttx/pull/15854) tools/espressif: Improve version checking by subprocess
* [#16169](https://github.com/apache/nuttx/pull/16169) tools/host_info_dump.py: fix UnboundLocalError: local variable 'vendor_specific_module_path' referenced before assignment
* [#15953](https://github.com/apache/nuttx/pull/15953) tools/mksyscall: fix 106: Unexpected end of line: "FAR char * co"
* [#16396](https://github.com/apache/nuttx/pull/16396) tools/nxstyle.c: fix error Relative file path on Windows Native
* [#16426](https://github.com/apache/nuttx/pull/16426) tools/nxstyle.c: fix defined but not used warning
* [#16313](https://github.com/apache/nuttx/pull/16313) tools/process_config: remove unused unnecessary printing

Architectural Support

New Architecture Support

* [#16138](https://github.com/apache/nuttx/pull/16138) arch/arm: add stm32c0 support
* [#16296](https://github.com/apache/nuttx/pull/16296) arch/arm/stm32f0l0g0: Add support for STM32G0B1xx
* [#15996](https://github.com/apache/nuttx/pull/15996) arch/arm64/a527: Add support for Allwinner A527 SoC
* [#15921](https://github.com/apache/nuttx/pull/15921) arch/risc-v/eic7700x: Add support for ESWIN EIC7700X SoC

Improvements


ARM

* [#16018](https://github.com/apache/nuttx/pull/16018) arch/arm: add missing include for itm_syslog
* [#16019](https://github.com/apache/nuttx/pull/16019) arch/arm: Fix crash when using memcpy/memset as RAMFUNCS
* [#16344](https://github.com/apache/nuttx/pull/16344) arch/arm: fix arm-7a mmu using l1entry swap, we should use per-process mmu table, can speed up for above 10 times.
* [#15897](https://github.com/apache/nuttx/pull/15897) arch/arm: guard .thumb_func use
* [#16227](https://github.com/apache/nuttx/pull/16227) arch/arm/armv6-m/CMakeLists.txt: fix undefined reference to up_show_cpuinfo
* [#16120](https://github.com/apache/nuttx/pull/16120) arch/arm/armv8-r: Enable fpu before arm_el_init
* [#16112](https://github.com/apache/nuttx/pull/16112) arch/arm/imx6: fix missed comma
* [#16446](https://github.com/apache/nuttx/pull/16446) arch/arm/imxrt: rt10xx: MPU fixes and allow to put ramvectors inside ITCM.
* [#16460](https://github.com/apache/nuttx/pull/16460) arch/arm/imxrt: rt117x fix TCM/OCRAM ECC backdoor access
* [#15988](https://github.com/apache/nuttx/pull/15988) arch/arm/nucleo-f429zi: Add board flash size config for STM32F429ZI
* [#16308](https://github.com/apache/nuttx/pull/16308) arch/arm/nrf53: fix broken RPMSG HCI server
* [#16281](https://github.com/apache/nuttx/pull/16281) arch/arm/rp2040: Allow simultaneous selection of multiple interrupt modes
* [#16037](https://github.com/apache/nuttx/pull/16037) arch/arm/rp2040|rp23xx: remove ADC option from Kconfig
* [#16348](https://github.com/apache/nuttx/pull/16348) arch/arm/rp2040/gpio: Fix debug assertion for interrupts.
* [#16244](https://github.com/apache/nuttx/pull/16244) arch/arm/rp23xx: Address the spinlock errata RP2350-E2
* [#16306](https://github.com/apache/nuttx/pull/16306) arch/arm/rp23xx: add dsp/fpu extensions support
* [#16330](https://github.com/apache/nuttx/pull/16330) arch/arm/rp23xx: add missing fpu init for smp cores
* [#16363](https://github.com/apache/nuttx/pull/16363) arch/arm/rp23xx: allow to use armv8m systick lowerhalf
* [#16214](https://github.com/apache/nuttx/pull/16214) arch/arm/rp23xx: Fix IRQ prioritize
* [#16247](https://github.com/apache/nuttx/pull/16247) arch/arm/rp23xx: fix irq priority levels
* [#16253](https://github.com/apache/nuttx/pull/16253) arch/arm/rp23xx: fix linker scripts 100% RAM usage bug
* [#16304](https://github.com/apache/nuttx/pull/16304) arch/arm/rp23xx: fix not restart after TX error
* [#16210](https://github.com/apache/nuttx/pull/16210) arch/arm/rp23xx: Fix PWM registers access
* [#16299](https://github.com/apache/nuttx/pull/16299) arch/arm/rp23xx: fix watchdog, enable TICK blocks
* [#16331](https://github.com/apache/nuttx/pull/16331) arch/arm/rp23xx: update serial code to recent smp fixes from cxd56 serial code
* [#16300](https://github.com/apache/nuttx/pull/16300) arch/arm/rp23xx: update USB PLL/VCO/FBDIV
* [#16349](https://github.com/apache/nuttx/pull/16349) arch/arm/rp23xx: remove spinlock from up_txint
* [#16395](https://github.com/apache/nuttx/pull/16395) arch/arm/rp23xx: resets: do not reset USBCTL, SYSCFG
* [#16372](https://github.com/apache/nuttx/pull/16372) arch/arm/rp23xx: wdog: Ensure setup before register phase
* [#16398](https://github.com/apache/nuttx/pull/16398) arch/arm/rp23xx: xosc: Update startup delay calculation
* [#16303](https://github.com/apache/nuttx/pull/16303) arch/arm/sama5: Add support for reset reason logging
* [#16078](https://github.com/apache/nuttx/pull/16078) arch/arm/sama5/spi: fix ifdelay setup in spi_setdelay call
* [#16079](https://github.com/apache/nuttx/pull/16079) arch/arm/samv7: enable GPIO clock even if interrupt not enabled
* [#16434](https://github.com/apache/nuttx/pull/16434) arch/arm/samv7/sam_us.c: disable interrupts for flash access
* [#15900](https://github.com/apache/nuttx/pull/15900) arch/arm/samv7/spi: fix ifdelay setup in spi_setdelay call
* [#15991](https://github.com/apache/nuttx/pull/15991) arch/arm/stm32: fix stm32f1xx alarm support
* [#16102](https://github.com/apache/nuttx/pull/16102) arch/arm/stm32l4: Add CMakeLists for the STM32L4
* [#16206](https://github.com/apache/nuttx/pull/16206) arch/arm/stm32h5: Add USART6 serial driver config.
* [#16178](https://github.com/apache/nuttx/pull/16178) arch/arm/stm32h5: implement flash driver for progmem
* [#16204](https://github.com/apache/nuttx/pull/16204) arch/arm/stm32h5: copy bss and initialized data before configuring hardware
* [#16180](https://github.com/apache/nuttx/pull/16180) arch/arm/stm32h5: DTS Hardware Files
* [#16207](https://github.com/apache/nuttx/pull/16207) arch/arm/stm32h5: Fix ADC internal channel configuration.
* [#16422](https://github.com/apache/nuttx/pull/16422) arch/arm/stm32h5: Fix FLASH bank logic during erase operations.
* [#16205](https://github.com/apache/nuttx/pull/16205) arch/arm/stm32h5: Fix i2c compiler warnings.
* [#16218](https://github.com/apache/nuttx/pull/16218) arch/arm/stm32h5: GPDMA Hardware files
* [#15718](https://github.com/apache/nuttx/pull/15718) arch/arm/STM32H5: Initial ICACHE Support
* [#16220](https://github.com/apache/nuttx/pull/16220) arch/arm/stm32h5: organize peripheral Kconfig selection
* [#16224](https://github.com/apache/nuttx/pull/16224) arch/arm/stm32h7: unassigned ret variable in SIOCSCANBITRATE.
* [#16338](https://github.com/apache/nuttx/pull/16338) arch/arm/stm32f0l0g0: Add STM32G0 Flash driver.
* [#16150](https://github.com/apache/nuttx/pull/16150) arch/arm/stm32f0l0g0: add watchdog support
* [#15949](https://github.com/apache/nuttx/pull/15949) arch/arm/stm32f0l0g0: Fix SPI reads when nbits is 8
* [#16137](https://github.com/apache/nuttx/pull/16137) arch/arm/stm32f0l0g0/stm32_adc.c: fix ADC calibration


## ARM64
* [#15939](https://github.com/apache/nuttx/pull/15939) arch/arm64: Add up_perf_init for qemu.
* [#15938](https://github.com/apache/nuttx/pull/15938) arch/arm64: Improvements on ARM generic timer drivers.
* [#16387](https://github.com/apache/nuttx/pull/16387) arch/arm64/imx9: Extend ELE API with RNG support
* [#16458](https://github.com/apache/nuttx/pull/16458) arch/arm64/imx9: Guard EL3-only features when booting at EL1
* [#16332](https://github.com/apache/nuttx/pull/16332) arch/arm64/imx9: Support for AHAB authentication + ROMAPI
* [#15970](https://github.com/apache/nuttx/pull/15970) arch/arm64/imx9: Support for imx9 edgelock enclave
* [#16453](https://github.com/apache/nuttx/pull/16453) arch/arm64/toolchain: Add -fstack-usage for stack analysis

## AVR
* [#16365](https://github.com/apache/nuttx/pull/16365) arch/avr: AVR fixes and support for AVR DA/DB family
* [#16451](https://github.com/apache/nuttx/pull/16451) arch/avr: fix up_saveusercontext and other smaller changes
* [#16268](https://github.com/apache/nuttx/pull/16268) arch/avr: Fixes before adding support to AVRDB
* [#16457](https://github.com/apache/nuttx/pull/16457) arch/avr/atmega: Resolve memory corruption preventing boot

## RISC-V
* [#16223](https://github.com/apache/nuttx/pull/16223) arch/espressif: Add dedicated GPIO support for esp32[-s2|-s3|-c3|-c6|-h2]
* [#16350](https://github.com/apache/nuttx/pull/16350) arch/espressif: Add SDM support for esp32[-|-s2|-s3|-c3|-c6|-h2]
* [#16320](https://github.com/apache/nuttx/pull/16320) arch/espressif: Add variable to override MCUboot version and URL
* [#16391](https://github.com/apache/nuttx/pull/16391) arch/espressif: Fixes for Quadrature Encoder mode of PCNT peripheral
* [#16315](https://github.com/apache/nuttx/pull/16315) arch/risc-v: Add RS485 support for esp32[-c3|-c6|h2]
* [#16173](https://github.com/apache/nuttx/pull/16173) arch/risc-v: PANIC() on system call crash
* [#16014](https://github.com/apache/nuttx/pull/16014) arch/risc-v: Fix wrong source name in make script
* [#16266](https://github.com/apache/nuttx/pull/16266) arch/risc-v: save/restore fpu registers always when CONFIG_ARCH_LAZYFPU is off
* [#15929](https://github.com/apache/nuttx/pull/15929) arch/risc-v: tick timer improvements
* [#15941](https://github.com/apache/nuttx/pull/15941) arch/risc-v/common: Fix unaligned stack access on 64-bit risc-v
* [#16252](https://github.com/apache/nuttx/pull/16252) arch/risc-v/esp32{c6,c3,h2}: Fix bootloader flash compiler error
* [#16284](https://github.com/apache/nuttx/pull/16284) arch/risc-v/esp32{c6,c3,h2}: Fix bootloader crash when flash QIO is enabled
* [#15992](https://github.com/apache/nuttx/pull/15992) arch/risc-v/esp32[c3|c6|h2]: Fix efuse issue on MCUBoot
* [#16108](https://github.com/apache/nuttx/pull/16108) arch/risc-v/esp32h2: Set the default SPI flash frequency to 64MHz
* [#16219](https://github.com/apache/nuttx/pull/16219) arch/risc-v/espressif: Bump common source version
* [#16175](https://github.com/apache/nuttx/pull/16175) arch/risc-v/espressif: Fix bug with usbconsole and DEBUG_FEATURES
* [#15920](https://github.com/apache/nuttx/pull/15920) arch/risc-v/espressif: Remove usb serial workaround for esp32 modules
* [#16392](https://github.com/apache/nuttx/pull/16392) arch/risc-v/espressif/esp_pcnt.c: counter accumulation fix
* [#16292](https://github.com/apache/nuttx/pull/16292) arch/risc-v/k230: update documents
* [#15979](https://github.com/apache/nuttx/pull/15979) arch/risc-v/mpfs ethernet improvements
* [#16031](https://github.com/apache/nuttx/pull/16031) arch/risc-v/mpfs: Remove big kernel lock from several drivers
* [#16026](https://github.com/apache/nuttx/pull/16026) arch/risc-v/mpfs/mpfs_rcc: Add stub driver for FPGA clock and reset controller
* [#16126](https://github.com/apache/nuttx/pull/16126) arch/risc-v/mpfs/mpfs_entrypoints.c: Change atomic_load > atomic_read
* [#16177](https://github.com/apache/nuttx/pull/16177) arch/risc-v/mpfs/usb: Align usb_ctrlreq_s properly to 32-bit boundary

## SIM
* [#16285](https://github.com/apache/nuttx/pull/16285) arch/sim: add CAN interface support
* [#16162](https://github.com/apache/nuttx/pull/16162) arch/sim: Add i2c setup and shutdown interface
* [#16381](https://github.com/apache/nuttx/pull/16381) arch/sim/Kconfig: simulated CAN depends on LINUX host
* [#16433](https://github.com/apache/nuttx/pull/16433) arch/sim/sim_canchar.c: fix compilation when CAN FD is disabled
* [#16371](https://github.com/apache/nuttx/pull/16371) arch/sim/sim_canchar.c: notify upper-half driver that tx done
* [#16358](https://github.com/apache/nuttx/pull/16358) arch/sim/sim_oneshot: Calculate next oneshot time in ticks instead of…

## X86_64
* [#16287](https://github.com/apache/nuttx/pull/16287) arch/x86_64: add debug interface
* [#15935](https://github.com/apache/nuttx/pull/15935) arch/x86_64: Implement TSC frequency query via CPUID 0x40000010
* [#16288](https://github.com/apache/nuttx/pull/16288) arch/x86_64: support for stack canaries

## XTENSA
* [#15866](https://github.com/apache/nuttx/pull/15866) arch/esp32_partition: add some partition operation interfaces for esp32
* [#16260](https://github.com/apache/nuttx/pull/16260) arch/esp32_partition.c:  fix the incorrect boot sequence when switching from Factory to OTA_1
* [#15885](https://github.com/apache/nuttx/pull/15885) arch/esp32_himemcdev: Replace file descriptor with node
* [#15904](https://github.com/apache/nuttx/pull/15904) arch/esp32_spi: Add check to see if the TX_FIFO is empty
* [#16092](https://github.com/apache/nuttx/pull/16092) arch/xtensa/common: Make esp32 wlan device configurable
* [#16157](https://github.com/apache/nuttx/pull/16157) arch/xtensa/espressif: Fix ESP32-S2 SPI flash frequency selection
* [#15993](https://github.com/apache/nuttx/pull/15993) arch/xtensa/espressif: Fix I2C Slave driver error
* [#15855](https://github.com/apache/nuttx/pull/15855) arch/xtensa: add CONFIG_SPIRAM_MEMTEST from ESP-IDF
* [#16155](https://github.com/apache/nuttx/pull/16155) arch/xtensa: Add common I2S support for esp32[- |-s2|-s3]
* [#16208](https://github.com/apache/nuttx/pull/16208) arch/xtensa: add crt0 to initialize environment
* [#15907](https://github.com/apache/nuttx/pull/15907) arch/xtensa: initial support for debugpoint api
* [#16022](https://github.com/apache/nuttx/pull/16022) arch/xtensa: fix definition for `_int32_t` and `_uint32_t`
* [#16127](https://github.com/apache/nuttx/pull/16127) arch/xtensa: move espnow from esp32 to common/espressif
* [#16016](https://github.com/apache/nuttx/pull/16016) arch/xtensa/esp32: Add support for hardware accelerated SHA
* [#15962](https://github.com/apache/nuttx/pull/15962) arch/xtensa/esp32: espnow improvements
* [#16012](https://github.com/apache/nuttx/pull/16012) arch/xtensa/esp32s3: Add esp32s3 lcd ev v1.5 support
* [#16152](https://github.com/apache/nuttx/pull/16152) arch/xtensa/esp32s3: Fix bug regarding SPI flash operation mode
* [#16261](https://github.com/apache/nuttx/pull/16261) arch/xtensa/esp32s3: fix tickless mode timer unexpect interrupt handle
* [#16085](https://github.com/apache/nuttx/pull/16085) arch/xtensa/esp32s3: The MISO and C/S pins are optional
* [#15954](https://github.com/apache/nuttx/pull/15954) arch/xtensa/esp32[s2|s3]: Add number of IRQ status lists for PHY initialization configuration


Driver Support

New Driver Support

Drivers With Significant Improvements

Board Support

New Board Support

Boards With Significant Improvements

File System

Bug Fixes

Significant Improvements

Networking

Improvements

Bug Fixes

Security Issues Fixed In This Release

Compatibility Concerns

Changes to Build System

Renamed or Modified Kconfig Options

Known Problems In This Release

More Information

How to Download

Release artifacts for all current and past NuttX releases can be downloaded at:

How to Clone the Git Repository

The Apache NuttX project uses Git SCM as its version control system.

There are two primary repositories:

The main "Single Source of Truth" repositories are hosted by the ASF:

These are synchronized with repositories hosted at GitHub:

How to Contact the Community

The main forum for project communication, to ask a question, get involved, or contribute to NuttX, is our mailing list, dev@nuttx.apache.org. The list is publicly archived and searchable at https://lists.apache.org/list.html?dev@nuttx.apache.orgFor more information, see NuttX Community.

Enthusiastic Contributors Welcome!

NuttX is a free open-source project. If you'd like to participate, whether it's to enhance documentation (even these release notes) or dive into the nitty gritty of some low-level drivers, please join us! You can join the conversation at our dev mailing list by emailing dev-subscribe@nuttx.apache.org. The mailing list is open to the public and archived. You can browse older messages at https://lists.apache.org/list.html?dev@nuttx.apache.org.