Apache NuttX-12.2.0 Release Notes

What’s New In This Release

Changes to Core OS sched

  • #9084 sched: add adjtime() interface
  • #9132 sched: add the CPU bitset to initialize the non-exclusive CPU
  • #9583 sched: automatically find deadlocks when assert
  • #7464 sched: fix context switching with locked scheduler
  • #8965 sched: Fixed improper access of g_pidhash.
  • #8867 sched: Optimize implementation of strsignal()
  • #9030 sched/addrenv, binfmt: Always allocate address environment from heap
  • #9090 sched/addrenv: Implement re-entrancy for addrenv_select()
  • #9021 sched/addrenv: Miscellaneous clean-up and fixes
  • #8938 sched/assert: Assert if a thread attempts to post a semaphore incorrectly.
  • #9595 sched/assert: Change show_xxx to dump_xxx
  • #9498 sched/assert: disable function/line print if DEBUG_ASSERTIONS_FILENAME disabled
  • #9516 sched/assert: Optimizing assert handling
  • #9183 sched/assert: show stacks with the sp from regs
  • #9184 sched/assert: sig_timewait:remove useless assert
  • #8955 sched/assert: Simplify the fatal detection logic
  • #9528 sched/group: Ensure that the setting of tg_members if safe in SMP
  • #9003 sched/irq: optimizing IRQMONITOR, move up_perf_convert to irq_procfs
  • #9369 sched/misc: add coredump support on assert
  • #8743 sched/nxmutex: mutex priority inheritance optimization
  • #9066 sched/pthread: pthread_barrierwait can not be preemption
  • #9067 sched/pthread: pthread_cond_wait dead lock
  • #9002 sched/pthread: repalce sched_lock to enter_critical_section
  • #9539 sched/pthread: Return ESRCH when the task is in the process of exit.
  • #9202 sched/pthread: sched_lock should replace with enter_critical_secion
  • #9091 sched/sem/sem_init: Change sem_xxx -> nxsem_xxx in kernel modules
  • #8951 sched/semaphore: rework semaphore holder check for priority inheritance
  • #9039 sched/sched: address performance concerns for sched_lock in non-SMP case
  • #8988 sched/sched_note: add function auto-tracing
  • #8786 sched/sig_timewait:changes the macro for waitticks
  • #9203 sched/signal: fix the issue of asynchronous signal processing
  • #9299 sched/signal: Signal must be masked when it is delivered to a signal handler
  • #9100 sched/spawn: remove spawn proxy thread to simplify task/posix_spawn()
  • #9527 sched/tls: remove PTHREAD_CLEANUP from Kconfig
  • #9007 sched/wqueue: fix issue about worker can’t wake up thread before work_thread running mm
  • #9417 mm: add invalid pid dump when malloc failed
  • #9050 mm: circbuf support write or read buffer direct
  • #9561 mm: compute the heap info more accuracy
  • #9564 mm: Compute the heap info more accuracy(2)
  • #9411 mm: Correct the callsite of mm_mallinfo
  • #9435 mm: Dump all memory blocks on allocation failure
  • #9555 mm: mm leak dump build error fix and memory foreach optimization
  • #9601 mm: mm_lock.c: reformat preprocessor
  • #9151 mm: memory allocations return valid pointer when request 0 size
  • #9563 mm: Rename PID_MM_INVALID to PID_MM_LEAK
  • #9560 mm: Rename mm_memdump_s to malltask
  • #9335 mm: Support memdump can show increased memory
  • #9476 mm/kmm_map: add missing FAR qualifiers
  • #9368 mm/kmm_map: add support to dynamically map pages into kernel virtual
  • #9055 mm/mm_map: give the mm_map as parameter to the mm_map functions
  • #9488 mm/mempool: allocate a chunk for multiple mempool avoid memory fragmentation
  • #9051 mm/mempool: fix bug, use incorrect free in mempool init
  • #9418 mm/mempool: fix bug read out of bounds when realloc
  • #9337 mm/mempool: fix bug when calculating mempool delta
  • #9052 mm/mempool: fix memory consumption double counting issue
  • #9433 mm/mempool: fix seqnumber statistics error in memdump
  • #9474 mm/mempool: remove nexpend and totalsize from mempool_s
  • #9336 mm/mempool: support when malloc failed dump mempool info
  • #9416 mm/mempool: Support when malloc failed dump mempool info libs
  • #9284 libc: add regex implementation
  • #9148 libc: Add setbuffer to stdio.
  • #9062 libc: cleanup per-thread resource in exit/quick_exit
  • #8958 libc: correct config define of arch functions
  • #9480 libc: fix build break on kernel mode
  • #9181 libc: fixed armv7-m strcmp build issue
  • #9580 libc: lib_strftime: Fix %I to avoid printing 00:xx AM/PM
  • #9557 libc: lib_syslograwstream: fix bug when iob alloc failed
  • #9106 libc: memcpy M-profile PACBTI-enablement
  • #9543 libc: netdev/upper: Optimize on quota related operations
  • #8946 libc: print error code for unknown errors in strerror/gai_strerror
  • #9585 libc: Support gcc FORTIFY_SOURCE features
  • #9513 libc: Prefer to implement memfd on top of shm
  • #9193 libc/armv8-m: fix build break if MVE is disabled
  • #9497 libc/fdcheck: add fdcheck module
  • #9536 libc/fdcheck: compatibility enhancement
  • #9547 libc/fdcheck: Fix undefined reference to `getppid’
  • #9405 libc/fdsan: add fdsan protection for all file pointers
  • #9496 libc/fdsan: keep f_tag unchanged
  • #9384 libc/libc.csv: Correct type of return value for strstr
  • #8802 libc/locale: support iconv_open,iconv,iconv_close
  • #9260 libc/misc: add Fdsan module
  • #9076 libc/mm: fix files can not be compiled incrementally
  • #9534 libc/netdb/dns: fix dns wrong response ID error
  • #9238 libc/pthread: fix nxstyle errors
  • #9199 libc/pthread: fixed pthread incorrect return values
  • #9207 libc/qsort: fix invalid-pointer-pair if enable detect_invalid_pointer_pairs=2
  • #9456 libc/regex: provide a separate kconfig for regex
  • #9365 libc/stream/hexdump: add hexdump stream to dump binary to syslog
  • #9138 libc/string: select arch’s libc for kernel/userspace optionally
  • #9605 libc/unistd: add getpgrp function
  • #9448 libc/wchar: Implement vswprintf
  • #9487 libdsp: Add average filter
  • #9061 libm/newlib: add newlib/libm support
  • #9083 libm/openlibm: add math library openlibm support.
  • #9125 libm/libmcs: add math library libmcs support
  • #9044 libxx: remove redundant code #9158 libelf: Support prioritized init and fini arrays Misc
  • #9610 binfmt: Always include arch/elf.h in include/nuttx/elf.h
  • #9395 binfmt/elf: Support loading fully linked executables.
  • #9426 binfmt/elf/coredump: alignment stack buffer to 64 to match gdb request
  • #9376 binfmt/elf/coredump: add sanity checks for stack pointer
  • #9366 binfmt/elf/coredump: add support of dump task stack without memory segments
  • #9318 binfmt/elf/coredump: correct register offset after xcp.regs update
  • #9099 binfmt/execmodule: correct destroy flow
  • #9568 Debug:support python script auto debug nuttx kernel
  • #9600 Fix assertion of free a wrong heap
  • #9307 Fix windows compile errors because of double quotes in config
  • #9147 include/err: Enforce c linkage for err and warn functions.
  • #9459 include/nuttx/spi.h Fix SPIDEVID_TYPE macro definition  
  • #8956 Let BOARDIOC_SOFTRESETCAUSE_ASSERT equals to the default value of BOARD_ASSERT_RESET_VALUE
  • #9274 modify type of numbytes in audio_buf_desc_s from uint16_t to apb_samp_t
  • #9348 openamp: decoupling the transport layer and virtio device layer  
  • #9406 openamp: virtio.h add version field in device id table struct
  • #9553 Openamp/Kconfig: add cache and debug config for openamp
  • #9149 Remove #warning in the unnecessary places
  • #9594 Replace $(INCDIR) and ${DEFINE} with $(INCDIR_PREFIX) and $(DEFINE_PREFIX)
  • #8726 Replace the unsafe function(strcat, sprintf) with the safe one(strlcat, snprintf)  
  • #9509 sdcard: update sdcard detection to avoid 0xff asignment to bool type
  • #9424 semantic/parser: fix compile warning found by sparse
  • #9142 signal: add macro NSIG
  • #9201 system/signal: in interrupting the context, regs modify logic error  

Changes to the Build System Improvements

  • #9400 tools: Add way to get current defconfig name on runtime
  • #9572 tools: Fix CONFIG_BASE_DEFCONFIG generation
  • #9107 tools: Fix some error in Windows native build
  • #9462 tools: Support string upper/lower case in make
  • #9334 tools/mkallsyms: add exception handle
  • #9069 tools/mksymtab: Fix a compilation warning
  • #9210 tools/nuttx-gdbinit/armv7-a: reorder and synchronization registers of save/restore
  • #9198 tools/nuttx-gdbinit: improve experience of gdb backend scripts
  • #9234 tools/nuttx-gdbinit/armv7-a: add fpu support
  • #9211 tools/Unix: treat kconfig warning as failure
  • #9231 tools/refresh.sh: Add option to refresh all archs or all chips

Architectural Support New Architectures

  • #9465 initial FPU support for ARMv8R AARCH32 
  • #9443 Support for ARMv8R AARCH32

Improvements

  • #9115 arch: Return directly when arch not support interrupt context save

  • #8823 arch: add more dependent header file
  • #9296 arch: Save sigdeliver into xcp in the case of signal self delevery
  • #9131 arch/assert: Distinguish between assert and exception
  • #8948 arch/boards: fix stm32f411-mininum:nsh compilation failure
  • #9343 arch/all: in smp pthread_cancel occasionally deadlock except for arm64
  • #9313 arch/arm: Add a “cc” flag
  • #8814 arch/arm: Add armv7m assembly strcpy.
  • #9019 arch/arm: change up_saveusercontext to assembly code
  • #8863 arch/arm: enable eoimode only select CONFIG_XXX_GIC_EOIMODE
  • #9338 arch/arm: Fix Kconfig style and texts
  • #9072 arch/arm: relax compiler check for workaround with “GCC 12.2”
  • #9085 arch/arm: Resolving warnings for assembly instructions
  • #9310 arch/arm: set arm_testset to weak function
  • #9018 arch/arm: update running task when context switch occurred
  • #9048 arch/arm/{armv7a/armv7r}l2cc: Don’t repeat disabling the cache when the cache is already disabled
  • #8930 arch/armv7-r: add armv7-r smp support
  • #9311 arch/armv8-m: add ARMV8M_TRUSTZONE_HYBRID feature
  • #9458 arch/armv8-r: Fix warning when configuring fvp-armv8r:nsh_smp
  • #9478 arch/arm/backtrace: validate PC register before process unwind
  • #9121 arch/arm/unwind: EABI unwind needs frame pointer support

  • #9034 arch/arm/cxd56: Add lowerhalf interface to keep power when cold sleep

  • #9469 arch/arm/gd32f4: add sdio driver for GD32F4
  • #9493 arch/arm/gd32f4/Fixed Kconfig options for obsolete tickless systick options.

  • #9325 arch/arm/imxrt: Base address missing from imxrt_flexio_get_shifter_buffer_address returned address
  • #9607 arch/arm/imxrt: Fix implicit function declaration
  • #9024 arch/arm/imxrt: FlexIO support
  • #9324 arch/arm/imxrt: Wrong dlastsga or slast setting if doff or soff larger than one

  • #9026 arch/arm/imx6: with ar8031

  • #9346 arch/arm/kinetis: s32k1/s32k3:edma {s d}last needs to be total xfer size
  • #9001 arch/arm/kinetis/s32k3xx: EMAC MCAST support

  • #9402 arch/arm/{nrf52 nrf53}: fix IN endpoint completion logic
  • #9508 arch/arm/{nrf52 nrf53}: various fixes to improve USB stability
  • #9444 arch/arm/{nrf52 nrf53}: validate if EasyDMA transfer is possible
  • #9431 arch/arm/nrf52: add MCUboot support
  • #9008 arch/arm/nrf52: add QSPI support
  • #9387 arch/arm/nrf53: add QSPI support
  • #8795 arch/arm/nrf53: add support for RPMSG HCI
  • #9359 arch/arm/nrf53: add USBD support
  • #8827 arch/arm/nrf52: nvmc and flash should depends on ALLOW_BSD_COMPONENTS=y
  • #9340 arch/arm/nrf53: add I2C support ported from nrf52
  • #9442 arch/arm/nrf53: add MCUboot support
  • #9351 arch/arm/nrf53: add SPI support ported from nrf52
  • #9356 arch/arm/nrf53: correct text config I2C3 Master

  • #9252 arch/arm/sama5: add ATSAMA5D2/D4 Secure Fuse Controller (SFC) driver
  • #9377 arch/arm/sama5: Add touchscreen calibration IOCTLs, structs, and implement for ATSAMA5D2
  • #9215 arch/arm/sama5: Fix OHCI SchedulingOverrun interrupt storm.
  • #9390 arch/arm/sama5: improve LCD support and correct minor errors
  • #9286 arch/arm/sama5: Make EHCI work with slow devices.
  • #9357 arch/arm/samv7: remove alignment check that is not needed
  • #9112 arch/arm/sama5: SAMA5D2 Class D
  • #9341 arch/arm/sama5: SAMA5D2 SPI DMA fix and Performance Enhancements
  • #9157 arch/arm/sama5: Use a recursive mutex to fix OHCI deadlock.

  • #9604 arch/arm/stm: Fix duplicate include guard
  • #8992 arch/arm/stm32: Remove GPIO_{SPEED MODE}_xxx and provide a legacy path for lazy migration
  • #9491 arch/arm/stm32: Removed unused STM32_TICKLESS_SYSTICK Kconfig option.
  • #8976 arch/arm/stm32/otg: rasie an assertion if IN request is not possible to transfer
  • #8943 arch/arm/stm32/stm32_eth: Added error handling for abnormal interrupts.
  • #8975 arch/arm/{stm32f7,stm32h7,stm32l4}/sdmmc: callback support requires HPWORK
  • #9228 arch/arm/stm32h7: sdmmc It is not an error if no wait was needed
  • #8945 arch/arm/stm32h7/otg: support for OTG HS external ULPI
  • #8969 arch/arm/stm32h7/otgdev: FS transceiver must be enabled if OTGFS enabled
  • #9006 arch/arm/stm32h7/rcc: make VOS0 configurable from board.h
  • #9088 arch/arm/stm32_f7/h7_eth: Added error handling for abnormal interrupts.
  • #9218 arch/arm/stm32f0l0g0: Fix stm32f0l0g0 GPIO definitions

  • #9216 arch/arm/tiva: Fix i2c message buffer error
  • #9441 arch/arm/tiva: start FPU before GPIO config

  • #9515 arch/arm64: save FPU context when a context switch occurs in SMP mode
  • #9464 arch/arm64: use adrp instead of adr in bss init code
  • #9333 arch/arm64: support more interfaces for gicv3
  • #9023 arch/arm64: Support tickless mode
  • #9332 arch/arm64: Each core initializes its own idle stack in SMP
  • #9315 arch/arm64: Support unalign cache clean.
  • #9243 arch/arm64: Add support for Multiple UART Ports
  • #9227 arch/arm64: merge serial_pl011.c and qemu_serial.c
  • #8994 arch/arm64: fixed arm64 backtrace issue
  • #8990 arch/Arm64: arm64 pmu supported
  • #8876 arch/arm64: fixed cache issue and add more cache interface
  • #9098 arch/arm64: Updating ARCH_EARLY_PRINT support
  • #9065 arch/arm64: in smp pthread_cancel occasionally deadlock
  • #9330 arch/arm64: .bss initialization using assembly language
  • #9220 arch/arm64: preprocess link script to make configure more flexibly
  • #8799 arch/arm64: Support for FPU profile with procfs

  • #9118 arch/risc-v: Add option for selecting coherent DMA.
  • #9114 arch/risc-v: change up_saveusercontext to assembly code
  • #9123 arch/risc-v: Fix save/load FPU macros
  • #9103 arch/risc-v: Fixed FPU register error
  • #9597 arch/risc-v: litex/gpio: Fix incorrect declaration name.
  • #9279 arch/risc-v: Remove riscv_copystate.c as it is not used a…
  • #9485 arch/risc-v: Store user context into the kernel stack
  • #9248 arch/risc-v/addrenv: Create utility function for dynamic mappings
  • #9481 arch/risc-v/backtrace: correct stack pointer if enable ARCH_KERNEL_STACK
  • #9538 arch/risc-v/barrier: Define more granular memory barriers
  • #8787 arch/risc-v/kernel mode: Add a stripped down, native version of SBI for NuttX
  • #9526 arch/risc-v/vfork: Replace jal with call for long jump
  • #9192 arch/risc-v/litex: Fix emac driver compilation when only IPv6 is used.
  • #9586 arch/risc-v/espressif: Add full GPIO support
  • #8957 arch/risc-v/espressif: Add support for Periodic and Oneshot Timers
  • #8980 arch/risc-v/espressif: Add support for RTC subsystem
  • #8953 arch/risc-v/espressif: Add support for Tickless mode
  • #8954 arch/risc-v/espressif: Panic if CPU interrupt allocation fails
  • #9545 arch/risc-v/espressif: Update esp-hal-3rdparty library
  • #8971 arch/risc-v/espressif: Use spinlock APIs for defining critical sections

  • #8973 arch/risk-v/k210: Fix k210 timer on QEMU 6.1 or later

  • #9548 arch/risc-v/mpfs: add CoreMMC support
  • #9439 arch/risc-v/mpfs: Add CoreSPI driver for Polarfire SoC
  • #9440 arch/risc-v/mpfs: Add mpfs_vbus_detect
  • #9419 arch/risc-v/mpfs: add support for CoreI2C fpga driver
  • #9489 arch/risc-v/mpfs: Enable KMM_MAP for knsh
  • #9212 arch/risc-v/mpfs: Fix some logic errors in the driver
  • #9430 arch/risc-v/mpfs: Modify mpfs_i2c.c to support arbitrary number o…
  • #9461 arch/risc-v/mpfs: Minor fixes / tweaks to the driver
  • #9503 arch/risc-v/mpfs: Remove MMU mappings and flush TLB upon boot

  • #9081 arch/rv-virt/knsh64: increase proxy stack size to avoid overflow
  • #9075 arch/rv-virt/nsh64: enable CONFIG_BCH to support block device access

  • #9312 arch/xtensa: only cmp fpu coprocessor for fpu test
  • #8977 arch/xtensa: Remove FAR qualifier for Xtensa-specific files
  • #9401 arch/xtensa/esp32: Add missing SPI Flash ROM functions
  • #8993 arch/xtensa/esp32: Add support for universal mac addresses
  • #9082 arch/xtensa/esp32: BLE Bugfix
  • #9078 arch/xtensa/esp32: enable LIBC_ARCH_ATOMIC
  • #9020 arch/xtensa/esp32: ESP32 not use IMEM in user heap mode
  • #9408 arch/xtensa/esp32: Fix build issues for SoftAP mode
  • #9236 arch/xtensa/esp32: Fix himem driver crash in SMP mode
  • #8926 arch/xtensa/esp32: fix signal deliver when task is running on ther CPU
  • #8963 arch/xtensa/esp32: Fix Wi-Fi driver parameter settings
  • #8974 arch/xtensa/esp32: Make asprintf and lib_free corresponding
  • #9077 arch/xtensa/esp32: Ssd1306
  • #9475 arch/xtensa/esp32: Support multiple PHY init data bin
  • #9242 arch/xtensa/esp32[s2]: Define syscall table to enable using ROM functions
  • #9542 arch/xtensa/esp32s2: Fix SPI DMA implementation
  • #9361 arch/xtensa/esp32s3: add dedicated interrupt stack for ESP32-S3 by default
  • #9110 arch/xtensa/esp32s3: Add RTC support
  • #9156 arch/xtensa/esp32s3: add support to WPA3 on Station Mode
  • #9525 arch/xtensa/esp32s3: Add USB OTG device driver
  • #8979 arch/xtensa/esp32s3: call softAP callback when Wi-Fi driver TX is done
  • #9367 arch/xtensa/esp32s3: pause other CPU before SPI flash operations
  • #9549 arch/xtensa/esp32s3: SPI support quad I/O mode
  • #9502 arch/xtensa/esp32s3: Support 32MB SPI flash
  • #9380 arch/xtensa/esp32s3: Support 32MB PSRAM
  • #9136 arch/xtensa/esp32s3: Support octal lines mode SPIRAM
  • #9397 arch/xtensa/esp32s3: SPI slave driver
  • #9232 arch/xtensa/esp32s3: use wapis init config to save Wi-Fi data
  • #9255 arch/xtensa/esp32xx: Workaround to avoid printing serial trash character

  • #9190 arch/sim: do not free memory of zero-length reallocation
  • #9070 arch/sim: Implement text heap
  • #9079 arch/sim: Move up_textheap_xxx to common place
  • #9071 arch/sim: multi netdevice forward issue when ll_guardsize not 14
  • #9472 arch/sim: Replace uart_[xmit recv]chars_dma with uart_dma[txavail rxfree]
  • #9533 arch/sim: Support more sockopts on native socket
  • #9208 arch/sim/asan: disable detect_invalid_pointer_pairs/detect_stack_use_after_return
  • #8997 arch/sim/hostfs: pass flag O_BINARY to host
  • #9186 arch/sim/lsan: disable fast-unwind by default
  • #9468 arch/sim/ostest: enable priority inheritance testing
  • #9291 arch/sim/posix/backtrace: process host backtrace with critical section
  • #9518 arch/sim/posix/sim_hostusrsock: process host network syscall with critical…
  • #9308 arch/sim/sim_alsa: modify buffer_size in GET_BUFFERINFO when offload capture.
  • #8961 arch/sim/sim_x11eventloop: fix X11 event accumulation
  • #9109 arch/sim/usbdev: fix unpaired critical_section()
  • #8996 arch/sim/win/hostuart: only read key event from console
  • #8995 arch/sim/win/hosttime: calculate sec/ms independently to avoid overflow

Driver Support New Drivers

  • #9189 drivers/audio: add support for the ES8311 codec
  • #8775 drivers/audio: add audio_dma device driver.
  • #9372 drivers/lcd: add JD9851 driver
  • #8982 drivers/sensors: add support of InvenSense MPU-9250 sensor
  • #9452 drivers/sensors: add BMI270 IMU support
  • #9453 drivers/sensors: add bh1749nuc color sensor support
  • #9258 drivers/virtio: add virtio-mmio-blk driver Audio Support

Improvements

  • #9027 drivers/audio: Add audio underrun notice and support it in cxd56 audio driver
  • #9609 drivers/can/can.c: Fix nested loops with same variable
  • #9450 drivers/can/mcp2515.c add missing spi configuration in mcp2515_r…
  • #9399 drivers/can/mcp2515.c Fix Configure Spi Bus on every bus lock
  • #9393 drivers/can/mcp2515.c Fix Missing Chipselect de-assert before bus unl…
  • #9427 drivers/can/mcp2515.c Use SPIDEV_CANBUS(config->devid) instead of SP…
  • #8773 drivers/dma: support dma driver model
  • #8922 drivers/emmc: eMMC driver support
  • #9529 drivers/ioexpander/pca9555: fix const correctness of pin set parameters
  • #9398 drivers/input/tsc2007: Rename touchscreen ioctls for clarity
  • #8398 drivers/lcd/st7789: Dynamic adjustment of the orientation, switch orientation on the fly
  • #9463 drivers/modem/alt1250: Update alt1250 driver
  • #9119 drivers/misc: fix missing instantiation of return value in rwb_mediaremoved.
  • #9556 drivers/misc/rpmsg: add fdsan support for rpmsg dev/mtd/blk
  • #9436 drivers/mtd: check args for nvs read
  • #9011 drivers/mtd: fix uninit data in mtd_config_fs
  • #9492 drivers/mtd: mtd_config name len max changed to NAME_MAX
  • #9342 drivers/mtd/gd25: Flash memory - performance enhancements
  • #9500 drivers/mtd/is25xp: Enable usage of several chips on the same spi bus
  • #9154 drivers/mtd/nand: Return -EUCLEAN when the bit error happen but fixed by ecc
  • #9281 drivers/mtd/w25qxxxjv: add dual die support for 1 Gbit flash
  • #9272 drivers/mtd/w25qxxxjv: fix STATUS2_QE_ENABLED bitfield write
  • #9396 drivers/net/slip: Switch to poll based design
  • #8987 drivers/note: fix note_drivers error
  • #9130 drivers/pipe: fix blocking file_pipe
  • #8985 drivers/pipe: make pipe and named pipe (mkfifo) POSIX-compliant (blocking open)
  • #9505 drivers/ptmx: Fix a potential buffer overflow
  • #9554 drivers/rptun: rptun and rptun_dump bug fix
  • #9592 drivers/segger: Change the default value of SEGGER_RTT_MAX_NUM_DOWN_BUFFERS to SEGGER_RTT_MAX_NUM_UP_BUFFERS
  • #9012 drivers/sensors/APDS9922:
  • #9608 drivers/sensors/apds9960: Fix use after free
  • #9004 drivers/sensors/Kconfig: Fix bmi160 help texts in Kconfig
  • #9013 drivers/sensors/Kconfig: Fix bmp280 texts in Kconfig
  • #9589 drivers/sensors/mpu60x0: add IOCTL support
  • #8999 drivers/sensors/mpu60x0: Fix the error when reset mpu60x0 in SPI case
  • #9305 drivers/serial: Fix coverity issue
  • #9292 drivers/serial: fix race condition in multi-thread write
  • #9219 drivers/serial: fix update local flags for the pty device attribute
  • #9049 drivers/serial: support tty c_cc VMIN & VTIME
  • #9354 drivers/serial/16550: dma support 16550 uart
  • #9473 drivers/serial/16550: Include nuttx/clk/clk.h
  • #9283 drivers/serial/16550: serial output can cause deadlock
  • #9105 drivers/spi/spi_bitbang: Add private data on spi_bitbang
  • #9102 drivers/spi/spi_bitbang: Fix build warnings
  • #9404 drivers/syslog: add mutex to syslog_default_write
  • #9591 drivers/syslog: Add sc_write_force callback
  • #9176 drivers/syslog: add syslog option definition
  • #9364 drivers/syslog: use internal buffer to decoupling syslog with iob
  • #8950 drivers/telnet: Remove TELNET_CHARACTER_MODE
  • #9133 drivers/telnet: Refused to enter character mode
  • #9541 drivers/usbdev/cdcacm.c: register console only for device with minor number 0
  • #9331 drivers/usbhost: Can now handle multiple interface descriptors.
  • #9245 drivers/usbhost: Fix function address generation for multi-port root hubs.
  • #9287 drivers/usbhost: Make unplugging hubs more reliable.
  • #9223 drivers/usbhost/usbhost_cdcacm.c: fix warning
  • #9257 drivers/usbhost/usbhost_hub: Prevent crash when the last hub port is used.
  • #9479 drivers/usrsock/dns: add sanity check before send dns event
  • #9520 drivers/usrsock/rpmsg_server: fix poll recursive when revent POLLHUP or POLLERR
  • #9581 drivers/usrsock/usrsock_server: fix incomplete received data error
  • #9261 drivers/usrsock/usrsock_server: fix issues with usrsock_rpmsg_sendto_handler
  • #8949 drivers/video: passthrough unknown ioctl commands for customized scenarios in fb driver
  • #9045 drivers/video: Support spot position setting
  • #9221 drivers/video/fb: adapt to fbmem dynamic update.
  • #8907 drivers/video/fb: add vsync offset support
  • #9101 drivers/video/fb: fix pollnotify calling crash in advance
  • #9328 drivers/video/fb_driver: add fb_open and fb_close
  • #9388 drivers/video/vnc_server: Fix that vnc_updater thread exited caused by readed a null data
  • #9329 drivers/video/vnc_server: set touch.maxpoint to 1 for circbuf_init
  • #9447 drivers/virtio: Fix virtnet_transmit() in virtio-mmio-net.c
  • #9457 drivers/virtio: Fix virtio-mmio-net
  • #9582 drivers/virtio: Use one dscriptor for RX in virtio-mmio-net.c
  • #9134 drivers/wireless: Fix mtu info for gs2200m

Audio Support Improvements

  • #9381 audio: add channels range
  • #9152 audio/pcm_decode: fix warnings regarding unused functions and vars

Board Support New Board Support

  • #9322boards/nrf52: add initial support for Thingy:52 board
  • #9323boards/nrf53: add initial support for Thingy:53 board

Improvements

  • #8964 boards: define boardioc_softreset_subreason_e in CONFIG_BOARDCTL_RESET
  • #9512 boards: Enable md5 to test virtio
  • #9167 boards: Fix CONFIG_[START_DATE,START_MONTH] cannot start with 0
  • #8962 boards: refresh boards that use usbmsc
  • #8942 boards: Replace open/pread with file_open/file_pread
  • #8941 boards/boardctl: Add BOARDIOC_SOFTRESETCAUSE_ENTER_BOOTLOADER reset cause
  • #9217 boards/boardctl: add BOARDIOC_SOFTRESETCAUSE_RESTORE_FACTORY_INQUIRY
  • #9535 boards/arm/cxd56xx/spresense: Fix boards implements for supporting PM System
  • #9056 boards/arm/cxd56xx/drivers/sensors/Kconfig: Fix bmp280 texts in Kconfig
  • #9358 boards/arm/nrf5x: introduce common folder for nrf52 and nrf53
  • #9403 boards/arm/nrf52840-dongle: add usb support and usbnsh example
  • #9451 boards/arm/nrf52-feather: fix typo in I2C1 initialization
  • #9321 boards/arm/nrf53: cosmetics
  • #8840 boards/arm/sam34: make userleds work on Arduino Due
  • #9571 boards/arm/samv7: add lower level IOCTL handler to sam_gpio_enc driver
  • #9415 boards/arm/samv7: add type member to mtd_partition_s structure
  • #8952 boards/arm/stm32: add composite device configurations
  • #9559 boards/arm/stm32/stm32 tickless: stop assertion when calling up_timer_gettime
  • #9089 boards/arm/stm32/tm4c1294-launchpad: Add reboot support.
  • #9383 boards/arm/stm32/Update stm32l562e-dk:nsh
  • #9373 boards/arm/stm32f0l0g0: rework boards to not use legacy pinmap
  • #9164 boards/arm/stm32f4/nucleo-f429zi: update CONFIG define to keep up with the CONFIG in arch/stm32
  • #9593 boards/arm/stm32f4/stm32f429i-disco: Register the BUTTON driver
  • #8906 boards/arm/stm32f4/stm32f411: MiniF4 peripherals support improvements
  • #9409 boards/arm/stm32f7: DIR/Complementary PWM possible on PE08 and PE10
  • #9247 boards/arm/stm32f7: rework boards to not use legacy pinmap
  • #9230 boards/arm/stm32f7/nucleo-144: Modifications for the EMB control board
  • #9562 boards/arm/stm32f7/stm32f777zit6-meadow: Fix external RAM pinout and add board profile
  • #9250 boards/arm/stm32h7: rework boards to not use legacy pinmap
  • #9224 boards/arm/stm32h7/nucleo-h743zi: fix usb host example
  • #9233 boards/arm/tiva: bmp280 driver binding to tm4c1294
  • #9206 boards/arm/tiva: mpu6050 driver binding to TM4C1294
  • #9054 boards/arm/tiva/lm3s6432-s2e: reduce size of NSH configuration binary
  • #8929 boards/arm/tiva/tm4c1294-launchpad: Use bmi160 driver for boostxl-sensors.
  • #9150 boards/sim: Add defconfigs for testing the RTP Tools on Simulator and ESP32-LyraT board and relevant documentation about it
  • #8772 boards/sim: Add sim:toywasm config
  • #9197 boards/sim: Enable more sanitizer check when enable
  • #8972 boards/sim/ostest: Enabled KASAN, UBSAN & assertions.
  • #9015 boards/xtensa/esp32: Add ESP32-PICO-KIT support
  • #9141 boards/xtensa/esp32/esp32-devkitc: substitute ramtest to mm on defconfigs
  • #9567 boards/xtensa/esp32/esp32-devkitc/wamr_wasi_debug: Bump WAMR version
  • #9096 boards/xtensa/esp32/esp32s2-kaluga-1: Add support for LCD displays
  • #9565 boards/xtensa/esp32/esp32s3: Add usbnsh for all ESP32S3 boards
  • #9551 boards/xtensa/esp32/esp32s3-devkit: Revert NSH defconfig deletion
  • #9524 boards/xtensa/k210: Use 8 byte align in linker script #9135 boards: remove unnecessary FAR
  • #8781 boards/risc-v: Add MPU60x0 IMU sensors support for ESP32C3
  • #8762 boards/risc-rv/qemu-vr: Support for Kernel build with vexriscv-smp.
  • #9514 boards/risc-rv/rv-virt: Add netnsh64_smp to test virtio 

File System Improvements 

  • #9063 fs: Add g_ prefix to file_operations and mountpt_operations
  • #8939 fs: Flush the file system cache in BOARDIOC_POWEROFF too
  • #9521 fs: move memset to upper lever for statfs and add f_fsid field
  • #9558 fs: some minor changed about the fs
  • #9060 fs/cromfs: Fix faulty DEBUGASSERT() check
  • #9000 fs/hostfs: align operation flags define with fcntl.h
  • #8868 fs/hostfs: switch working directory
  • #9550 fs/fdcheck: Let FDCHECK depend on SCHED_HAVE_PARENT
  • #9009 fs/inode: Fixes in asprintf usage.
  • #9093 fs/inode: when searching for nextname skip “/” and “./”
  • #9037 fs/littlefs: littlefs shouldn’t be used without C99 BOOL
  • #9120 fs/littlefs: Add patch for littlefs to use kmm_malloc/free on kernel with MMU. Upgrade to latest littlefs
  • #9140 fs/mtd: add support for MTDIOC_ERASESECTORS ioctl
  • #9146 fs/mtd: Implement MTDIOC_ERASESTATE and MTDIOC_ERASESECTORS
  • #9144 fs/mtd: minor fix for mtd/nand driver
  • #9145 fs/mtd/nand: Add nand_raw_initialize to skip the probing
  • #9347 fs/partition: register partition device if caller doesn’t provide handler
  • #9394 fs/procfs: add cpuinfo
  • #8991 fs/procfs: add total time running time of task
  • #9073 fs/procfs: fix readdir loss last character
  • #9540 fs/vfs: Proper use of sigisemptyset
  • #9205 fs/vfs: Zero file struct field with memset
  • #9385 fs/vfs/fs_poll: Fix wrong return value in CONFIG_BUILD_KERNEL
  • #9576 fs/vfs/sendfile: Fixed behavior of sendfile when count is set to zero.

Networking Improvements

  • #9423 net: Fix task block when devif_send fails.
  • #9265 net: move ttl field into socket_conn_s struct
  • #9237 net: remove conn-related casts
  • #9254 net: Support to PMTUD
  • #9180 net/can: control msg support multi-attribute return
  • #9111 net/can: fix can mssage corruption if enable NET_TIMESTAMP
  • #9160 net/can: Remove the unnecessary “ret = OK;” in can_getsockopt
  • #9169 net/ethernet: add ETHERTYPE define
  • #9483 net/icmp: Save poll device in icmp_poll_s
  • #9174 net/icmp6: add icmp6-related definition
  • #9222 net/icmp6/in.h: add SOL_IPV6 protocol-level socket options IPV6_RECVHOPLIMIT
  • #9195 net/icmpv6: add SOCK_RAW type support
  • #9177 net/if: add net device type
  • #9178 net/ip: add iphdr definition
  • #9171 net/if_arp: add arphdr definition
  • #9519 net/inet_addr: return INADDR_NONE(-1) when input string is invalid
  • #9179 net/ip6: add ip6-related definition
  • #9266 net/ipv6: support SOL_IPV6 options IPV6_UNICAST_HOPS and IPV6_MULTICAST_HOPS
  • #9269 net/ipv6_setsockopt: Merge similarity logic
  • #9196 net/ipforward: copy iob when broadcast forward
  • #9043 net/ipforward: limit the forwarding range of broadcast packets
  • #9244 net/local: fix blocking local sockets
  • #9295 net/net: Add the check that socket domain is equal to bound address type, when do bind.
  • #9162 net/net: Simplify the tcp/udp existence check
  • #8610 net/netdev: Add upper half of netdev and simplify sim driver
  • #9517 net/netdev: remove ASSERT when ifindex is invalid
  • #9543 net/netdev/upper: Optimize on quota related operations
  • #9293 net/netdev_upper: Protect quota by spin lock to allow netpkt_xxx be called in interrupt context
  • #9522 net/netfilter: add NF_IP_xxx definition
  • #9188 net/netinet/include: header file definition changed to nuttx format
  • #8864 net/netlink: add RTM_NEWADDR, RTM_DELADDR and RTM_GETADDR
  • #9175 net/netlink: convert lltype to device type
  • #9116 net/procfs: Support to show MTU in netdev statistics
  • #9170 net/route: add struct in6_rtmsg definition
  • #9290 net/rpmsg: initialize semaphore count before wait
  • #9042 net/rpmsg: Set family for rpaddr in ns_bind
  • #9374 net/socket: Fix send() / recv() in BUILD_KERNEL
  • #9588 net/socket/recvfrom: Fix buffer copy direction when using BUILD_KERNEL.
  • #9074 net/tcp_input: drop SYN when no free node in the backlog
  • #9187 net/tcp_monitor: start_monitor return OK when connect closed by peer
  • #9414 net/tcp: Add flag for tcp_close to avoid double free
  • #9262 net/tcp: Add NewReno congestion control.
  • #8782 net/tcp: add TCP_MAXSEG support
  • #9041 net/tcp: Fix clear condition in ofoseg input
  • #9172 net/udp: add udphdr definition #9173 if_ether: add ether_arp definition
  • #9214 net/udp: change PKTINFO flag to socket_conn_s struct
  • #9194 net/udp: Remove wrong check in udp_readahead
  • #8947 net/usrsock_server: Improvement on sendto errors
  • #9139 wireless: add IW_AUTH_WPA_VERSION_WPA3 flag to support WPA3
  • #9113 wireless/bluetooth: Initialize private bt_driver_s member.
  • #9068 wireless/bluetooth: Fix the Unexpected ACL flags error
  • #9087 wireless/bluetooth: Fix build error when BT_GATT_CCC is used.
  • #9471 wireless/bluetooth: Add a generic access service.
  • #9166 wireless/bluetooth: Support removable bluetooth modules.

Compatibility Concerns

  • #8827 arch/nrf52: nvmc and flash should depends on ALLOW_BSD_COMPONENTS=y  

Users using nvmc and flash must allow BSD components (CONFIG_ALLOW_BSD_COMPONENTS=y).

  • #8992 stm32: Remove GPIO_{SPEED MODE}_xxx and provide a legacy path for lazy migration  

All boards board.h should be migrated using tools/stm32_pinmap_tool.py `tools/stm32_pinmap_tool.py –pinmap arch/arm/src/stm32h7/hardware/stm32h7x3xx_pinmap_legacy.h –addall –suffix _0 –report /include/board.h it will output 2 sections that should be used to update the board.h.

  • #9527 sched/tls: remove PTHREAD_CLEANUP from Kconfig  

use PTHREAD_CLEANUP_STACKSIZE to enable or disable interfaces pthread_cleanup_push() and pthread_cleanup_pop(). Same as TLS_TASK_NELEM - It is no need to use two variables. Make the reserved entries more explicit

  • #8985 drivers/pipe: make pipe and named pipe (mkfifo) POSIX-compliant (blocking open)  

It would be a possible breaking change if any application was written specifically to expect an open for write-only  (and O_NONBLOCK cleared, of course) to be non-blocking even if there are no readers. Being able to port POSIX-compliant applications that expect open to block when opening for write-only with no readers would enhance NuttX’s objective of “to achieve a high degree of standards compliance. The primary governing standards  are POSIX and ANSI standards”. That is the case for RTP Tools, for instance.