DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
What's New In This Release
Major Changes to Core OS
Sched
- #16554 sched: assert: Print Stack pointer value when not within the stack
- #16673 sched: Fix smp scheduling
- #16919 sched/init/nx_bringup.c: Add support for CONFIG_INIT_NONE in a flat build
- #16927 sched/signal: Old signal action need save sa_user
- #16481 sched/wdog: Replace periodical timer with the wd_start_next.
- #16545 sched/wqueue: Fix windows compilation errors.
- #16593 sched/wqueue: Fix windows compilation errors.
MM
libc
- #16568 libc: Change atomic_fetch_cxx to macro
- #16768 libc: fix assert "Free memory from the wrong heap" with flat mode and…
- #16713 libc/idr: Fix Use-After-Free during idr_destroy()
- #16675 libc/mcount: add armv6m mcount implementation
- #16811 libs/libc/netdb: Optimize the DNS timeout calculation logic
- #16932 libs/libc/semaphore: allow nxsem_init to negative value
- #16614 libbuiltin/gcov: Upgrade gcov function
- #16786 Revert "libs/libc/stdlib/lib_exit.c: fix multiple definition of __dso…
Tools
- #16563 tools: Modify refresh.sh to support update all configs from a board
- #16650 tools/checkpatch.sh: add -x option to auto-format Python files.
- #16912 tools/checkpatch.sh: check git commit format
- #16724 tools/espressif: Add risc-v compiler info dump for Espressif devices
- #16763 tools/nix: Add Nix flake for reproducible dev environment
- #16924 tools/nix: move nix flakes to tools/
- #16831 tools/nix: split flake into root and Documentation
- #16759 tools/nxstyle.c: Updating white list to xedge example
- #16855 tools/rp{2040,23xx}: Ensure that picotool is found or built
- #16667 tools/process_config.sh: Fix sed errors
- #16546 tools/testbuild.ps1: Windows fix the redirect error stream
- #16711 toolchain/arm: Fix crash caused by clang compiling with -mfpu=fpv5-d16 and -march=armv8.1-m.main+mve.fp+fp.dp
- #16709 toolchain/arm: Fix link parameter error
- #16720 toolchain/armclang: Fix armclang config
Build System
Improvements
- #16880 arch: Add Cmake build support for raspberrypi-4b board & bcm2711 chip
- #16475 arch/arm/src/mcx-nxxx/CMakeLists.txt: Aligned Cmake with Make
- #16579 arch/arm/src/mcx-nxxx/CMakeLists.txt: Aligned Cmake with Make
- #16647 arch/arm64/fvp-v8r: support cmake compile
- #16581 arch/risc-v/src/qemu-rv/CMakeLists.txt: removed repeated addition of …
- #16477 arch/risc-v/src/qemu-rv/CMakeLists.txt: removed repeated addition of the file qemu_rv_userspace.c
- #16794 arm: CMake build for the i.MX RT series implemented.
- #16627 Arm32 v8m support cmake clang compile
- #16922 boards/arm/imxrt: CMake added imxrt1020-evk imxrt1050-evk boards
- #16918 boards/arm/imxrt: CMake added imxrt1060-evk imxrt1064-evk imxrt1170-evk boards
- #16639 cmake/arm64: support clang compile
- #16547 cmake(bugfix):fix VERSION genarator strip error in CMake build
- #16594 cmake(bugfix):fix VERSION genarator strip error in CMake build
- #16751 cmake(bugfix):add default c++ search path
- #16897 Cmake: add defconfig preprocess capability in Cmake build environment(recursively expand #include)
- #16721 cmake: enhance the function of cmake nuttx_wildcard_sources
- #16867 drivers/analog/CMakeLists.txt: Aligned Cmake with Make
- #16870 drivers/audio/CMakeLists.txt: Aligned Cmake with Make
- #16873 drivers/ioexpander/CMakeLists.txt: Aligned Cmake with Make
- #16871 drivers/leds/CMakeLists.txt: Aligned Cmake with Make
- #16913 drivers/net/CMakeLists.txt: Aligned Cmake with Make
- #16620 drivers/segger/CMakeLists.txt: Aligned Cmake with Make
- #16633 drivers/segger/CMakeLists.txt: Aligned Cmake with Make
- #16616 drivers/sensors/CMakeLists.txt: Aligned Cmake with Make
- #16634 drivers/sensors/CMakeLists.txt: Aligned Cmake with Make
- #16737 toolchain/arm64/cmake: Corrected the writing of arm64 cmake search library
- #16849 Make/Toolchain.defs: add the AR_EXTRACT command
Architectural Support
New Architecture Support
Driver Support
New Driver Support
- #16836 drivers/analog/ads7046: Add support for ADS7046 ADC
- #16714 drivers/input: Create Single Button Multi Actions
- #16902 drivers/ioexpander: Add support for pcal6416
- #16934 drivers/ioexpander/aw9523b: New driver for AW9523B i/o expander
- #16217 drivers/leds: Add support for KTD2052
- #16660 drivers/net: add IGB network card support
- #16623 drivers/net: add support for the NCV7410 10BASE-T1S SPI MAC-PHY
- #16605 drivers/sensors: add Quectel L86-XXX GNSS uORB sensor driver
- #16838 drivers/sensors/tmp112: Add support for TMP112 temperature sensor
Drivers With Significant Improvements
- #16715 drivers/analog/ads1115.h: Add ioctl for conversion trigger
- #16875 drivers/can/kvaser_pci: configure number of passes in interrupt handler
- #16738 drivers/fs:Always use register_mtddriver() to register the MTD device (patch2)
- #16914 drivers/i2s/i2schar: Implement ioctl commands and blocking read/write operations
- #16745 drivers/ioexpander/icjx.c: reconfigure icjx after undervoltage
- #16729 drivers/misc/optee: Cache coherency when MMU is disabled
- #16734 drivers/misc/optee: expand RPC suppport for IMX9
- #16800 drivers/misc/optee_smc: Explicitly yield during NW interrupts
- #16801 drivers/misc/optee_smc: Fix sched_yield() on flat builds
- #16473 drivers/mtd: fix compile warning
- #16577 drivers/mtd: fix compile warning
- #16789 drivers/mtd: introduce nvblk
- #16642 drivers/mtd/ftl/bch: Add direct writing method for FTL
- #16906 drivers/net: ksz9477 fixes
- #16899 drivers/net: Remove NCV7410 driver and corresponding board support
- #16661 drivers/net: various fixes for e1000 and igc
- #16649 drivers/net/Kconfig: Move NET_IGC_TXDESC and NET_IGC_RXDESC to NET_IG…
- #16767 drivers/pci: epc add dma heap
- #16753 drivers/segger: Add a kconfig to override Segger SystemView target sources version
- #16510 drivers/segger: Change SEGGER_RTT_LOCK into rspinlock
- #16805 drivers/sensor: Add flags for GNSS satellite
- #16764 drivers/sensors/l86xxx: Fix driver registration crashes
- #16701 drivers/sensors/l86xxx: Fix Kconfig options and dependencies
- #16821 drivers/sensors/l86xxx: Mutex fixes & performance improvements
- #16778 drivers/sensors/l86xxx: Use uORB GNSS lower-half
- #16717 drivers/sensors/nau7802: Added frequency control
- #16466 drivers/serial: fix race conditions
- #16573 drivers/serial: fix race conditions
- #16820 drivers/syslog/syslog_channel.c: fix incompatible-pointer-types compile errors
- #16788 drivers/video: add sched_note_mark at fb_remove_paninfo and fb_notify_vsync
Board Support
New Board Support
Improvements
- #16792 boards/arm: Fix Kconfig style
- #16663 boards/arm/lpc17xx_40xx/lincoln60: Correct defconfig for THTTPD_CGIINBUFFERSIZ spelling
- #16833 boards/arm/qemu: Change config name of input tool
- #16931 boards/arm/rp23xx/common: update board reset via BOOTROM functions
- #16707 boards/arm/stm32f401rc-rs485: Add support to HX711 ADC
- #16779 boards/arm/stm32f401rc-rs485: Add support to MAX31855 and MAX6675
- #16780 boards/arm/stm32f4discovery: Add support to HX711 ADC
- #16857 board/esp: Revert mtdblock registeration
- #16866 boards/esp32s3: Add SPI slave device support
- #16725 boards/espressif: add support for SDMMC over SPI for ESP32-C3|C6|H2
- #16812 boards/imxrt: Fix issues and add USBHOST support to arcx-socket-grid
- #16824 boards/imxrt/arcx-socket-grid: Remove debug symbols
- #16535 boards/nucleo-f446re: fix adc example
- #16592 boards/nucleo-f446re: fix adc example
- #16665 boards/qemu-armv8a: Add
xedgeexample program and documentation - #16659 boards/qemu-intel64/qemu.ld: add .lbss, .ldata and .lrodata
- #16848 boards/risc-v/rp23xx-rv/common: update board reset via BOOTROM functions
- #16646 boards/riscv-v/esp32c6: Add the NCV7410 10BASE-T1S SPI MAC-PHY support
- #16898 boards/tricore: rename tc397 chip board name
- #16505 boards/xtensa/esp32: Add BLE config to esp32-sparrow
- #16602 boards/xtensa: support SDMMC over SPI on ESP32|S2|S3
- #16638 boards/xtensa/esp32s3/esp32s3-box: Fix ILI9342C color inversion
- #16681 boards/weact-stm32h743 Add sdcard support
- #16785 boards/weact-stm32h743: Add support to ST7735 display
File System
Improvements
- #16722 fs/block_proxy: fix the issue of the refs count for filep being zeroed out by utilizing dup2
- #16938 fs/fat: Fix wrong alloc used in fat_zero_cluster()
- #16536 fs/fcntl: using ioctl to implement FIOGCLEX/FIOCLEX/FIONCLEX
- #16832 fs/lock: Allow driver lock
- #16598 fs/procfs: fix output format of fd info
- #16518 fs/smartfs: Fix a fatal bug about sector writing after seek
- #16590 fs/smartfs: Fix a fatal bug about sector writing after seek
- #16490 fs/vfs: check if all
iov_baseare accessible - #16584 fs/vfs: check if all iov_base are accessible
- #16609 fs/vfs: clear filep when call file_open/file_mq_open to avoid random value[bug fix]
- #16538 fs/vfs/fs_close.c: avoid double free if CONFIG_FS_NOTIFY is set
- #16455 fs/vfs/fs_rename: fix directory move operation.
Networking
Improvements
- #16926 include/net/if.h: Add mechanism for MMD access with SIOCxMIIREG ioctls
- #16628 net: Enable TCP/IP backlog by default
- #16684 net/arp: avoid unnecessary ARP requests
- #16905 net/can: fixes and cleanups
- #16682 net/local: correct shutdown state when use UDP mode (To fix issue: https://github.com/apache/nuttx/issues/16555)
- #16494 net/utils: avoid unalign access g_tcp_connections_buffer
- #16585 net/utils: avoid unalign access g_tcp_connections_buffer
- #16599 netdb/lib_dnsquery.c: prevent file descriptor leakage
- #16606 netdb/lib_dnsquery.c: In the IPv6 or IPv4 dns_query_callback() block,…
Unsorted contributions
- #16644 espressif: update lower-half drivers
- #16467 audio/comp: fix build warning caused by invalid return value
- #16469 mcx-nxxx: Add LPI2C driver for mcx-nxxx architecture
- #16474 syslog/rpmsg: disable force put char to lower putc
- #16479 sensors/nau7802: Fix format warning
- #16482 Fix i.MX93 ENET1 (EMAC) TXC muxing and RGMII-ID setting
- #16483 Segger sysview improvements
- #16486 add spin_lock_irqsave_nopreempt rspin_lock_irqsave_noprempt implement.
- #16487 Fix arch perf events ifdef in alarm
- #16489 Added support obtaining the unique id for the stm32f0l0g0 family
- #16491 espressif[risc-v|xtensa]: Check events when reading PCNT counter value
- #16492 add FDCAN support for STM32C0
- #16493 RFC 5424 implementation for SYSLOG
- #16495 minor stream improvement
- #16496 improve libc/stream subsystem
- #16500 Add ADC support for STM32G0 (along with oversampling)
- #16508 riscv qemu-rv: fix kernel mapping by enabling CONFIG_MM_KMAP in knsh
- #16509 Update the ELF guides
- #16511 nuttx/spinlock: Define empty macro for spin_unlock
- #16519 imx9/smp: Add SMP support for imx93
- #16527 nxgdb/fs: fix exception when failed to parse symbol
- #16533 Update MCUBoot build process for Espressif devices
- #16540 qemu/armv8a: fastboot tcp defconfig + documentation.
- #16549 Minor improve to stream
- #16550 gitignore: add more vim swap files
- #16552 spinlock: Better recursive spinlock implementation.
- #16556 risc-v/mmu: Fix map_region() for incorrect page table setup when vadd…
- #16562 esp32s3: update config and doc for fastboot
- #16567 Move assemble soure files out off gnu folder
- #16569 Refine vfs source file layout
- #16571 remove warnings
- #16574 audio/comp: fix build warning caused by invalid return value
- #16578 syslog/rpmsg: disable force put char to lower putc
- #16580 mcx-nxxx: Add LPI2C driver for mcx-nxxx architecture
- #16582 sensors/nau7802: Fix format warning
- #16583 Fix i.MX93 ENET1 (EMAC) TXC muxing and RGMII-ID setting
- #16588 riscv qemu-rv: fix kernel mapping by enabling CONFIG_MM_KMAP in knsh …
- #16591 Update MCUBoot build process for Espressif devices
- #16595 risc-v/mmu: Fix map_region() for incorrect page table setup when vadd…
- #16596 Fix arch perf events ifdef in alarm
- #16597 fix framebuffer config resolution.
- #16604 [ESP32S3] Add LCD defconfig
- #16615 debug/0 address: Add 0 address access panic configuration
- #16618 Enhanced Kasan
- #16619 arm64/v8r: support clang compilation
- #16629 bugfix: share kernel thread group should not dup files from caller group
- #16635 Add a header file as a dependency
- #16651 Refactored the btuart_rxwork function to improve data reception stability.
- #16654 imx9/lpuart: Fix race condition / regression in imx9_txint
- #16671 sem/trywait/atomic: Fix the try wait abort by interrupted caused false failure report.
- #16674 xtensa/espressif: Change LEDC implementation to common one
- #16690 coredump: Fix missing loglevel to logmask conversion
- #16700 sensors/bmi160,270: Fix a bug sensor_time is truncated
- #16718 arm64/qemu: decouple qemu board from chip
- #16735 espressif: fix MCUBoot OTA on Espressif devices.
- #16754 espressif: PCNT: add high and low limit Kconfig options
- #16765 nucleo-h743zi: Add ADC2 support and expand ADC channel list
- #16769 esp32s3_extraheaps.c: add a missing include for xtensa_imm_initialize
- #16771 crypto/cryptosoft: fix aadlen used uninitialized warning
- #16773 add esp32s3-devkit:mbedtls kconfig
- #16798 arm64: porting mu drv and scmi from arm imx9
- #16807 bugix/risc-v/esp32c6: Fix build error of LP_I2C
- #16813 Fix compilation errors with c++
- #16819 Increase buffer sizes for uORB devices
- #16830 h743zi/capture: add doc, defconfig & update make pipeline
- #16839 crypto/hmac: Fix typo in function implementation names
- #16843 pci: epf test default a function
- #16845 sys/socket.h: wrap the outer layer of struct sockaddr_storage with aligned(SS_ALIGNSIZE)
- #16852 risc-v/mpfs: usb: don't try nonexistent ep int flags
- #16853 Mpfs map mtime in userspace
- #16874 Add missing PSE52 interfaces
- #16879 include/nuttx/compiler.h:
Compatibility Concerns
- #16499 [BREAKING] fs/vfs: Separate file descriptors from file descriptions
This PR is a rework of the NuttX file descriptor implementation. The goal is two-fold:
Improve POSIX compliance. The old implementation tied file description to inode only, not the file struct. POSIX however dictates otherwise. Fix a bug with descriptor duplication (dup2() and dup3()). There is an existing race condition with this POSIX API that currently results in a kernel side crash. The crash occurs when a partially open / closed file descriptor is duplicated. The reason for the crash is that even if the descriptor is closed, the file might still be in use by the kernel (due to e.g. ongoing write to file). The open file data is changed by file_dup3() and this causes a crash in the device / drivers themselves as they lose access to the inode and private data.
The fix is done by separating struct file into file and file descriptor structs. The file struct can live on even if the descriptor is closed, fixing the crash. This also fixes the POSIX issue, as two descriptors can now point to the same file.
The implementation of this PR is based on the modifications made in #16361. Thank you @pussuw
DEPENDS ON: apache/nuttx-apps#3091
IMPACT
Remove the FS_REFCOUNT config because reference counting is a very necessary feature that is required in many scenarios to ensure stability. Rename the functions fs_getfilep, fs_putfilep, and fs_reffilep to file_get, file_put, and file_ref respectively, to unify the naming convention to file_xxx, such as file_open, file_ioctl, etc. Introduce a new fd (file descriptor) structure. If multiple file descriptors (fds) are in a dup relationship, they can share the same file entity to implement the dup functionality. Modify the functions nx_close_from_tcb, nx_open_from_tcb, nx_dup2_from_tcb, and nx_dup3_from_tcb to fdlist_open, fdlist_close, fdlist_dup2, and fdlist_dup3 respectively, to uniformly operate on file descriptors using fdlist.
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:
- nuttx - The real time operating system itself.
- apps - Optional applications and example programs for the operating system. You can use this repository or make your own custom one.
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.org. For 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.