NuttX-12.2.0

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: replace 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 assignment 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: raise 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 other 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 reading 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 descriptor 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.