What's New In This Release

Major Changes to Core OS

New Features

  • #5524 mm: iob: add support of alloc with timeout iob_timedalloc() 
  • #4743 mm: Support the kernel address sanitizer 
  • #5498 sched: Implement task local storage 
  • #5418 sched: Implement sysinfo function 
  • #5590 sched: os init_state: add new state OSINIT_IDLELOOP 
  • #4698 sched: mq_open: add long file name check and parameter check 
  • #5445 task: Always implement posix_spawnp as macro 
  • #4963 trace: and sched note dump 
  • #5366 binfmt: libelf: Implement sh_addralign handling
  • #4871 binfmt: elf: add bare metal coredump support 

Bug Fixes

  • #5503 Replece clock_gettime with clock_systime_timespec if suitable 

  • #5721 Remove the unnecessary code from nx_start

  • #5681 Simplify and unify fcntl with FIOCLEX and FIONCLEX 

  • #5082 compile/flags: add FRAME_POINTER into Toolchain.defs 

  • #5199 file_operations: get back C89 compatible initializer 

  • #5065 reanme CONFIG_USER_ENTRYPOINT to CONFIG_INIT_ENTRYPOINT

  • #5399 Add CONFIG_NDEBUG Kconfig to control NDEBUG definition 

  • #5347 register_driver: fix driver modes accross the code 

  • #5509 libc.csv: Add pthread_setname_np and pthread_getname_np 

  • #5364 libc.csv: Add more symbols 

  • #4971 audio: audio_comp.c: capbility should use collections 

  • #5072 graphics: vncserver: Implement vsync 

  • #5058 graphics: vncserver: Fix buffer overflow 

  • #5132 graphics: vnc: Decouple VNC server from NX graphic stack 

  • #4998 system: note dump: add CONFIG_SCHED_INSTRUMENTATION_SWITCH 

  • #5435 wireless: bluetooth: fix build break if NET_6LOWPAN enabled 

  • #5487 binfmt: Decouple builtin from binfs file system

  • #4667 binfmt: Remove umm_initialize from elf_load

  • #5351 binfmt: elf.c: Fix syslog formats for ELF64 

  • #5522 binfmt: Fix binfmt for BUILD_KERNEL & ADDRENV 

  • #4689 binfmt: remove the specified prefix from target variables 

  • #5229 binfmt: coredump: remove the block fragmentation 

  • #5409 libc: stdlib: Compile lib_openpty.c without checking CONFIG_SERIAL_TERMIOS 

  • #5600 libc: Imx6 thumb 

  • #5474 libc: posix_openpty should use the absolute path("dev/ptmx") 

  • #5508 libc: sim: Rename arch_setjmp[64].S to arch_setjmp_x86[_64].S 

  • #4829 libc: Make perror work without CONFIG_FILE_STREAM 

  • #4779 libc: wqueue Correct time calculation in work_p… 

  • #4756 libc: machine: xtensa: add xtensa libc implement 

  • #4752 libc Move lib_filesem.c, lib_stream.c and lib_streamsem.c to libc/stdio 

  • #5288 libc: misc: lib_execinfo.c: fix bad memory access 

  • #5290 libc: backtrace_malloc change sprintf to snprintf 

  • #5381 libc: sim: arch_elf64.c: Implement R_X86_64_PC64 

  • #4870 libc: add interface to support output stream as buffer style 

  • #4861 libc: pthread: Implement pthread_atfork 

  • #4992 libc: Move stream implementation from libs/libc/stdio to libs/libc/stream 

  • #4768 libc: machine: add config LIBC_ARCH_MEMCHR 

  • #4855 libc: psignal: Output the message to STDERR_FILENO instead STDOUT_FILENO 

  • #4853 libc: hex2bin: Handle the line ending(\r, \n and \r\n) dynamically 

  • #5690 libc: gettext: Support the plural format 

  • #5692 libc: stdio: Fix bug when CONFIG_LIBC_NUMBERED_ARGS is enabled 

  • #5465 libc: chdir:"PWD" should save absolute path 

  • #4994 libc: textdomain: Fix error behaviour 

  • #5039 libc: lzfcompress: add lzf compress stream 

  • #4859 libc: getdelim: Remove KERNEL check since it shouldn't be called inside kernel 

  • #4944 libc: getopt: Move struct getopt_s to include/nuttx/tls.h 

  • #4881 libc: Update include/nuttx/input/x11_keysymdef.h to the latest version 

  • #5126 libc: math: fix fmod family operation 

  • #5125 libc: math: fix log and logf calculations on ARMv7 (and maybe others) 

  • #5170 libc: pthread:pthread_barrierinit sem use pri_none 

  • #2063 libc: Fix libcxx for sim/macOS 

  • #5269 libc: Fix a few libcxx build issues for sim/macOS 

  • #5202 libc: libcxx-mini: operator new will assert when alloc failed. 

  • #5180 libc: pthread: restore pthread mutex default protocol POSIX compatibility 

  • #5549 libc: pthread: add the kernel stack allocation for ADDRENV=y and BUILD_KERNEL 

  • #4978 libc: Add getprogname function 

  • #5004 libc: unistd: getopt: Use argc to end parsing 

  • #5017 libc: Enable terminal api regardless of CONFIG_SERIAL_TERMIOS setting 

  • #5053 libc: symtab: optimize the find speed by bisection 

  • #5096 libc: Add backtrace_symbols[_fd] functions 

  • #4874 libc: stdoutstream: restore the output method to fputc() 

  • #5564 libc: machine: Implement ARM aeabi_xxx API called by clang 

  • #5398 libc: Implement posix_openpt 

  • #4962 libc: allsyms: Load all symbols for debugging 

  • #4909 libc: Add mknod implementation 

  • #4894 libc: misc: add err.c to libc 

  • #4893 libc: str: add strlcat to libc 

  • #5575 libc: sched: task_setcanceltype: fix function name in comment 

  • #4828 libc: stdio: Handle 64bits off_t correctly 

  • #4804 libc: netdb: fix access within misaligned address error 

  • #4725 libc: Improve the netdb config consistency 

  • #4985 libc: Remove CEVA tl420/tl421 support on Nuttx 

  • #5036 libc: net: Implement getifaddrs and freeifaddrs 

  • #5519 libc: Fix -Werror=nonnull-compare and -Werror=format-truncation= 

  • #5629 libc: fix up_tls_info define for BUILD_KERNEL 

  • #5307 libc: bug patch for frexpf function 

  • #5107 libc: Ensure that sethostname null terminates the hostname correctly 

  • #5479 libdsp: lib_observer: add nolinear fluxlink observer 

  • #5483 libdsp: improvements for lib_observer.c 

  • #5563 libdsp: minor improvements and support for fixed16 observers 

  • #5527 libnx: handle the bad message correctly 

  • #5321 libxx: uclibxx: add patch use overload constructor of filebuf & ostream 

  • #4747 Revert "libc: Implement fesetround & fegetround for arm" 

  • #4739 Revert "lib/netdb: Change the default NETDB_DNSCLIENT_NAMESIZE to NAM… 

  • #5459 mm: mm_heap: add mm_foreach to run handler for every memory node

  • #5504 mm: handle take mm sem in IRQ 

  • #4765 mm: fix realloc overwrite memcpy when use a new block 

  • #4759 mm: do kmm_checkcorruption in IRQ when TCB_FLAG_DEBUG_CHECK set

  • #5532 mm: fix gran_alloc() array index range checking 

  • #5548 mm: fix #if condition of g_mmheap for BUILD_KERNEL and ADDRENV 

  • #5539 mm: handle take mm sem in IRQ 

  • #5585 mm: Add memory dump function when enable CONFIG_DEBUG_MM 

  • #5417 pthread: Add len argument to pthread_getname_np 

  • #4798 sched: Reduce the default preallocated buffer when DEFAULT_SMALL=y 

  • #5632 sched: group: Fix dataabort when exiting task or pthread if ARCH_ADDR_ENV=y 

  • #5658 sched: group: Simplify the allocation and deallocation logic 

  • #5649 Revert "sched: Don't duplicate caller file handler when creating kernel thread"

  • #5543 sched: Mark pthread as non-cancelable to avoid additional calls to pthread_exit() 

  • #5583 sched: note:add switch and dump instrumentation 

  • #5416 sched: Disable pthread by default when DEFAULT_SMALL is enabled

  • #5015 sched: add holder in sem_trywait 

  • #5264 sched: Define SMP_NCPUS to 1 in no SMP case 

  • #4803 sched: signal: add spinlock to g_sigfreeaction 

  • #4799 sched: Disable message queue by default when DEFAULT_SMALL equals y 

  • #4772 sched: vfork: allocate tls_info_s instead task_info_s from stack 

  • #4931 sched: sched_waitpid:delete debugassert 

  • #4863 sched: Move g_tcbinfo to include/nuttx/sched.h 

  • #5331 sched: critmonitor: remove the assertion if counter == 0 

  • #5098 sched: backtrace: Dump the complete stack regardless the depth 

  • #5185 sched: Remove CONFIG_ prefix from SCHED_HPWORK 

  • #4666 sched: Remove pidhash_s and move ticks to tcb_s 

  • #4676 sched: Check g_pidhash[hash_ndx] isn't NULL before access pid field in nxsched_get_tcb 

  • #5545 sched: clock: Remove CLOCK_MONOTONIC option from Kconfig 

  • #5464 sched: tcbinfo: Fix warning by discarded qualifiers 

  • #5455 sched: mqueue: remove unused leave_cancellation_point 

  • #5456 sched: module: remove redundant unlock 

  • #5392 sched: Remove SDCLONE_DISABLE option and config 

  • #4858 sched: watchdog: remove tick check in wd_timer 

  • #5018 sched: init/nx_start.c: fix compile break when CONIFG_TASK_NAME_SIZE=0 

  • #4999 sched: sched_note: change uint32_t nbi_module into uint8_t array 

  • #4989 sched: fix bug in the function nxsched_resume_scheduler 

  • #4958 sched: signal: Introduce a private spinlock in sig_action.c 

  • #4954 sched: dumpstack: raise the stack dump level to emergency 

  • #4953 sched: semaphore: fix race condition for timed wait 

  • #4913 sched: Move argv from tcb_s to task_info_s 

  • #5368 sched: idle: remove heap & stack check in idle thread

  • #4782 sched: sem: remove limitation of irq context when do sem_trywait

  • #4972 sched: wqueue: update wqueue to support using wqueue before wqueue start 

  • #5266 sched: IDLE thread will not boost up when IDLE hold sem 

  • #5540 sched: semaphore: fix corner case sem_waitirq assert crash 

  • #4682 sched: cpuload: fix crash because of the member of g_pidhash is NULL 

  • #5171 sched: semphore: release all semphores' holder that the task held when exit 

  • #5063 sched: wqueue: fix NO leave_critical_section() when only CONFIG_SCHED_HPWORK 

Major Changes to the Build System

New Features

  • #5638 tools: add parsememdump.py to parse memdump info(by cmd: memdump all) 
  • #5622 tools: add rustfmt to checkpatch 
  • #4925 tools: Add size report script
  • #5153 tools: mpfs: prepare OpenSBI image 

Bug Fixes

  • #5362 tools: mkromfsimg.sh: add attribute to set minimum 4 bytes aignment for romfs image data 
  • #4794 tools: mkconfig: Handle string with escape character correctly 
  • #4730 tools: add code coverage tool 
  • #5174 tools: Fix parallel build issue due to missing dependency 
  • #5275 tools: mkromfsimg.sh: fix build error in case if romfs is used 
  • #5274 tools: add option to reuse boards common files for custom boards 
  • #5715 tools: define BOARD_COMMON_DIR only if ARCH_BOARD_COMMON is set 
  • #5533 tools: Default macro to compile one Rust file. 
  • #5494 tools: Unix.mk: silence output from version.sh 
  • #5400 tools: mkconfig: Remove the unnecessary config option correction 
  • #4701 tools: esp32: Refactor generation of QEMU-compatible image 
  • #4865 tools: gdbinit: add sim:x86-m32 support 
  • #4926 tools: rp2040: Compile with C++14
  • #4936 tools: Rename size_report to size_report.py 
  • #5518 tools: mkallsyms.sh: Disable the mismatch warning of builtin declaration 
  • #5346 tools: Config.mk: suppress all normal output for cmp 
  • #5374 tools: Detect correct host CPU on MacOS/Linux running on ARM. 
  • #4673 tools: CeDeROM add *BSD support 20211016 
  • #4494 tools: build: Replace 'make download' with 'make flash', but keep both for now
  • #5116 tools: Remove .clean_context 
  • #4869 tools: Improve releasecheck.sh 
  • #5491 tools: Fix configure.sh for custom apps dir. 
  • #5495 tools: Fix jlink-nuttx build with GCC 10.2 
  • #5505 tools: Fix JLinkGDBServer crash attaching to target
  • #5147 tools: Improve dependencies for include/nuttx/version.h 
  • #5162 tools: Improve dirlinks dependencies for Makefile.win 
  • #5055 tools: Improve Makefile.[unix|win]::context's dependencies 
  • #5163 tools: Rename Makefile.* to have the .mk extension 

Architectural Support

New Architecture Support

  • #4897 arch: arm: phy62xx: Phyplus release 1.2 
  • #5470 arch: arm: STM32U5 Architecture Support 
  • #5165 arch: ceva: add ceva platform xc5 xm6 support 
  • #5352 arch: xtensa: Add initial support for ESP32-S3 
  • #5241 arch: sparc: Port nuttx to sparc-v8

Architecture with Significant Improvements

  • #5468 arch: Add xxx_tcbinfo.c to SoC level Make.defs 
  • #5482 arch: Replace nx_vsyslog with vsyslog 
  • #5507 arch: Align the implementation of stack related functions 
  • #4830 arch: Remove fflush(stdout) from driver code 
  • #5741 arch: Make the comment and definition of CONFIG_SYS_RESERVED correctly 
  • #5332 arch: Toolchain.defs: Simplify addition builtin library to EXTRA_LIBS 
  • #5122 arch: backtrace: correct the skip counter 
  • #5095 arch: Select ARCH_HAVE_BACKTRACE in Kconfig for supported arch 
  • #5342 arch: Add up_perf_getfreq function 
  • #5335 arch: cache: flush/clean dcache all if size large than cache size 
  • #5328 arch: Decouple up_critmon_[gettime|convert] from critmon 
  • #4699 arch: cache: add lock & unlock feature 
  • #4910 arch: Dump task name through tcb_s::name instead of argv[0] 
  • #4677 arch: *_cpupause:Allow a spin before taking the g_cpu_wait spinlock. 
  • #5007 arch: assert: flush the syslog before stack dump to avoid buffer overwrite 
  • #4942 arch: tcbinfo: fix build break if task name disabled 
  • #4941 arch: Remove the duplicated up_tls_info implementation 
  • #5385 arch: Toolchain.defs: Replace --print-file-name=libgcc.a with --print-libgcc-file-name 
  • #5371 arch: Toolchain.defs: Don't expand EXTRA_LIBS immediately 
  • #5057 arch: arm/risc-v/xtensa: enhance the task dump 
  • #5397 arch: arm/renesas/xtensa: fix leaving from critical section 
  • #5231 arch: arm/xtensa/risc-v: save the running registers to xcp context 
  • #5719 arch: Move [arm|xtensa]intstack[alloc|top] to common header file 
  • #5060 arch: Kconfig: Add HAVE_SYSCALL_HOOKS configs to Xtensa arch. 
  • #4840 arch: add MTDIOCTL_PROGMEM_ERASESTATE support 
  • #5259 arch: use HTONS, NTOHS, HTONL, NTOHL macro in kernel code 
  • #5008 arch: assert: unify stack and register dump across platforms 
  • #4810 arch: debug: add tools for task aware debug 
  • #5088 arch: make/allsyms: skip the unnecessary link operation 
  • #4749 arch: Remove FILE dump code from _up_dumponexit
  • #5309 arch: toolchain: add libm to EXTRA_LIBS only if it is provided by the compiler 
  • #5120 arch: signal: signal handler may cause task's state error 
  • #4993 arch: tls: restore C89 compatibility for TLS 

ARM

  • #4816 arch: arm: Remove EXPERIMENTAL from ARCH_TRUSTZONE_XXX 
  • #5562 arch: arm: add BUILD_KERNEL code in arm: arm_vectors.S 
  • #4980 arch: arm: select LIBC_ARCH_ATOMIC when config ARCH_CHIP_RP2040 
  • #4961 arch: arm: assert: fix the stack dump overflow 
  • #4935 arch: arm: Implement TLS support 
  • #4917 arch: arm: Kconfig: Add ARCH_HAVE_PROGMEM config 
  • #5593 arch: arm: unify some duplicate code to common layer 
  • #5691 arch: arm: Move setjmp to common place 
  • #4878 arch: arm: fix unalign cacheline invalidate & add cache coherence config for semihosting option 
  • #5744 arch: arm: timer_lowerhalf: minor improvements 
  • #5087 arch: arm: assert: move the arm_assert to common code 
  • #5085 arch: arm: move the backtrace implement to common code 
  • #5084 arch: arm: select ARM_THUMB by default for Cortex-M 
  • #5329 arch: arm: Fix make export for armv7-a SoCs 
  • #5105 arch: arm: Fix rebase error in arm_backtrace_thumb.c 
  • #5703 arch: arm: Support setjmp/longjmp for all socs 
  • #5582 arch: arm: replace SYS_syscall_return hardcode from syscall 
  • #5502 arch: arm: armv7-a: Add debug messages for addrenv
  • #5511 arch: arm: armv7-a: Fix arm_syscall for SYS_pthread_start 
  • #5517 arch: arm: armv7-a: fix gtm.h GTM_COMP1 and GTM_AUTO defines 
  • #5620 arch: arm: armv7-a: Remove CONFIG_SMP guard from arm_scu.c 
  • #5742 arch: arm: armv7-a/r: unified syscall registers dump 
  • #5066 arch: arm: armv7-a/r: dump all registers with alias 
  • #5354 arch: arm: armv7-a/r: cp15_invalidate_dcache_all: fix Sets mask error. 
  • #5367 arch: arm: armv7-a/r: bugfix: fix a4 register use but not store in xxx_invalidate/flush/clean_all.S 
  • #5558 arch: arm: armv7-a/r: fix SVC's sp restore in arm_vectors.S 
  • #5628 arch: arm: armv7-a/r: handle swi on interrupt stack 
  • #5734 arch: arm: armv7-a/r: set the default CPU mode to System 
  • #5506 arch: arm: armv7-a/r: unify switch context from software interrupt 
  • #5441 arch: arm: armv7-a/r: cache: add cp15_cache_size function and use flush/clean_all if size large than cache size 
  • #5650 arch: arm: armv7-a/r: cache: modify hardcode in cache set/way operation 
  • #4702 arch: arm: armv7-m,armv7-r,armv8-m:MPU Add mpu_reset and ARM_MPU_EARLY_RESET 
  • #5477 arch: arm: armv8-m: Handle the special irq correctly in up_secure_irq 
  • #5355 arch: arm: cortex-m: doirq: do not update the CURRENT_REGS on nested interrupt handling 
  • #4960 arch: arm: cortex-m: backtrace: remove the push process to simplify backtrace 
  • #4956 arch: arm: cortex-m: assert: dump all registers with alias 
  • #4955 arch: arm: cortex-m: fault: add CFSR(Configurable Fault Status Register) Definitions 
  • #5048 arch: arm: cortex-m: hardfault: add secure-fault handler 
  • #4959 arch: arm: cortex-m: enhance the crash dump 
  • #4957 arch: arm: cortex-m: hardfault: add usage/bus-fault handler 
  • #4965 arch: arm: cortex-m23: remove mem-fault select from armv8-m baseline 

EFM32

  • #5587 arch: arm: efm32: Garbage configuration setting in EFM32 code 

IMX6

  • #5633 arch: arm: imx6: Fix imx6 
  • #5639 arch: arm: imx6: Add the pgheap for imx6 

IMXRT

  • #4784 arch: arm: imxrt: fixes 
  • #4717 arch: arm: imxrt: rename imxrt_lowputc to arm_lowputc and drop CONFIG_DEBUG_FEATURES 

LC823450

  • #4951 arch: arm: lc823450: Replace the critical section with spinlock in lc823450_serial.c 

NRF52

  • #5025 arch: arm: nrf52: Fixes for NRF52 SoftDevice Controller 
  • #5032 arch: arm: nrf52: NRF52_SDC_LE_CODED_PHY not available for nrf52832 
  • #5031 arch: arm: nrf52: small improvements for softdevice 

PHY62XX

  • #5642 arch: arm: phy62xx: remove unused private header 

RP2040

  • #4786 arch: arm: rp2040: support I2C_RESET 

RTL8720C

  • #5552 arch: arm: rtl8720c: Remove the unused Toolchain.defs 

S32K1XX

  • #5220 arch: arm: s32k1xx: implement uniqueid 

SAM34

  • #5700 arch: arm: sam34: sam_dmac.c: Fix compilation error 

SAMV7

  • #5513 arch: arm: samv7: fix peripheral id shift during transmit xdma configuration 
  • #5413 arch: arm: samv7: sam_progmem: insert DMB instruction into data write loop 
  • #5411 arch: arm: samv7: add arm_systemreset.c to CMN_CSRCS 
  • #5471 arch: arm: samv7: Added support for PWM driver
  • #4795 arch: arm: samv7: add support for AFEC driver 
  • #4737 arch: arm: samv7: add support for QSPI driver in SPI Mode 
  • #5145 arch: arm: samv7: correct number on interrupts 
  • #4950 arch: arm: samv7: enable MCAN driver support for both rev A and rev B 
  • #4901 arch: arm: samv7: Add DMA and TC support to AFEC (ADC) driver 
  • #5146 arch: arm: samv7: rework SAMv7 timer counter implementation 
  • #5219 arch: arm: samv7: implement quadrature encoder driver 
  • #5043 arch: arm: samv7: initial support for LIN bus communication (Master only) 
  • #4904 arch: arm: samv7: fix unaligned address write for progmem interface 
  • #4899 arch: arm: samv7: fix page size flash writing for page unaligned addresses 
  • #5393 arch: arm: samv7: fix leaving from critical section in HSMCI callback 

STM32

  • #5206 arch: arm: stm32: add FDCAN support 
  • #5169 arch: arm: stm32: add SocketCAN support 
  • #5167 arch: arm: stm32: add CAN error support 
  • #5419 arch: arm: stm32: add FDCAN SocketCAN support 
  • #5523 arch: arm: stm32: dp83848c ethernet phy interrupt support 
  • #5481 arch: arm: stm32: fdcan: add CAN FD frames support 
  • #5370 arch: arm: stm32: Add OTG ID GPIO disable 
  • #4790 arch: arm: stm32: Qencoder: add support for the encoder index pin and implementation for stm32/qenco 
  • #5627 arch: arm: stm32f103re has a dac module.but the pinmap file has no corresponding
  • #5300 arch: arm: stm32f20xxf40xx: up_progmem_erasesize for stm32f20xxf40xx_flash.c 
  • #5605 arch: arm: stm32f405: Add DAC2 configuration 
  • #4967 arch: arm: stm32f412: add SPI2 & SPI3 
  • #5267 arch: arm: stm32f7: serial fix PM_CONFIG build 
  • #5064 arch: arm: stm32f7: sdmmc invalidate before DMA to avoid eviction overwrite -
  • #4704 arch: arm: stm32f0/g0/l0: Add custom clock config option to stm32f0/g0/l0 chips 
  • #4872 arch: arm: stm32f7: sdmmc defer invalidate until after DMA completion 
  • #5677 arch: arm: stm32f7: fix CAN3 receiving 
  • #4741 arch: arm: stm32g4: Minor fixes for stm32g4 foc 
  • #4780 arch: arm: stm32h7: sdmmc: do not enable power saving configuration bit in SD 4-bit mode 
  • #4770 arch: arm: stm32h7: dmamux: correct bit fields 
  • #4755 arch: arm: stm32h7: sdmmc: added missing sdio_set_sdio_card_isr() function to initialize SDIO in-band interrupt logic 
  • #4731 arch: arm: stm32h7: add low power timers 
  • #5492 arch: arm: stm32h7: Fix build for all config {R|T}XDMA states 
  • #5493 arch: arm: stm32h7: Flash fixes from 328374f4658d11655f268f968f4c6c7a3942f320 
  • #4815 arch: arm: stm32l4: dfumode: enable for STM32L4+ chips 
  • #5666 arch: arm: stm32l4: stm32l4+ might need flash data cache corruption workaround 
  • #4975 arch: arm: stm32l4: stm32l4_pwm.c: fix printf format 

CEVA

  • #5520 arch: ceva: update the code to the latest mainline 
  • #5568 arch: ceva: Replace OUTDIR with TOPDIR 
  • #5727 arch: ceva: Move the idle stack initialization to up_initial_state 

SIM

  • #5696 arch: sim: add all symbols support 
  • #5641 arch: sim: add loop thread to handle dev loops 
  • #4716 arch: sim: add native socket support based on usrsock 
  • #4882 arch: sim: Add new option to enable arch specific hostfs 
  • #4776 arch: sim: host ASAN improvement 
  • #5401 arch: sim: initial support sim:nsh on MacOS M1 based hosts. 
  • #5452 arch: sim: detect clang native compiler on MacOS. 
  • #5414 arch: sim: Unify the return value of usrsock_xxx_handler 
  • #5473 arch: sim: Always typedef xcpt_reg_t to unsigned long 
  • #4751 arch: arm: Add l suffix for INT32_C macro 
  • #5099 arch: sim: Implement up_backtrace 
  • #5071 arch: sim: Support vncserver as display device 
  • #4977 arch: sim: add CONFIG_SIM_STACKSIZE_ADJUSTMENT to reduce variability 
  • #5384 arch: sim: Adjust the stack size for up_use_stack too 
  • #5486 arch: sim: Fix a build with clang on linux 
  • #5295 arch: sim: Added Kconfig option for UART buffer size. 
  • #5188 arch: sim: Rename up_vfork_x[32|64].S to up_vfork_x86[_64].S 
  • #5179 arch: sim: Move spiflash simulation to drivers/spi instead 
  • #5178 arch: sim: Rename up_vfork[32|64].S to up_vfork_x[32|64].S 
  • #5431 arch: sim: Don't add up_tls_size in up_use_stack before foward to up_create_stack 
  • #4487 arch: sim: Don't add -lc++abi to STDLIBS 
  • #4791 arch: sim: btuart: Remove the unnecessary config 
  • #5313 arch: sim: netdev: retrieve all the queued RX frames from the network device on every poll 
  • #4696 arch: sim: rptun: Trigger the callback only the sequnece number change 
  • #5286 arch: sim: up_macho_init.c: Add a workaround for Monterey 
  • #5046 arch: sim: usrsock: increase the sim usrsock buffer size 
  • #5030 arch: sim: usrsock: reuse the socket address to avoid bind timeout 
  • #5685 arch: sim: syscall: add syscall note support in the flat build 
  • #4754 Revert "sim: Specify -fshort-wchar as NuttX wchar_t is 16-bit" 
  • #5343 arch: sim: netdev,tapdev: implemented emulation of TX done and RX ready interrupts 
  • #5295 arch: sim: Added Kconfig option for UART buffer size.
  • #5260 arch: sim: up_touchscreen: update up_touchscreen, using touch_upperhalf 
  • #5226 arch: sim: netdev: eliminated RX data stream congestion in case of high TX network traffic 

RISC-V

  • #5619 arch: espressif: Fix SCHED_CPULOAD feature using Oneshot Timer 
  • #4728 arch: espressif: Rename MTD-related configs to become more intuitive 
  • #5044 arch: espressif: Add hardware-supported Secure Boot on top of MCUboot 
  • #4671 arch: espressif: Provide SPI Flash parameters to MCUboot build 
  • #5173 arch: espressif: Fix build system issues related to Flash Encryption 
  • #5619 arch: espressif: Fix SCHED_CPULOAD feature using Oneshot Timer 
  • #4727 arch: espressif: Enable Partition Table allocation at custom offset 
  • #4945 arch: risc-v: Introduce basic support for qemu rv32 
  • #5291 arch: risc-v: Unify common irq code 
  • #5192 arch: risc-v: Merge rv32im and rv64gc into common 
  • #5228 arch: risc-v: Support both rv32/rv64 on qemu-rv 
  • #5160 arch: risc-v: Replace LP64 with CONFIG_ARCH_RV64 
  • #5148 arch: risc-v: Refine riscv_assert.c and arch.h 
  • #5243 arch: risc-v: Make exception_common 8 byte align 
  • #5709 arch: risc-v: mpfs: Make cleaner pinmux configurations for USB 
  • #5209 arch: risc-v: Refine riscv_vectors.S 
  • #5123 arch: risc-v: Correct epc adjustment with C ISA 
  • #5106 arch: risc-v: Refine riscv_testset.S 
  • #5076 arch: risc-v: Refine Toolchain.defs 
  • #5097 arch: risc-v: Move riscv_blocktask.c to common 
  • #5092 arch: risc-v: Remove unneeded kconfigs 
  • #5064 arch: risc-v: opensbi: Make.defs: use a wildcard for file listing 
  • #5314 arch: risc-v: Move xxx_cpustart.c to common 
  • #5103 arch: risc-v: Refine riscv_fpu.S 
  • #5273 arch: risc-v: Sv39 MMU driver
  • #5135 arch: risc-v: Refine riscv_initialstate.c 
  • #5115 arch: risc-v: Refine syscall interface 
  • #5113 arch: risc-v: Add backtrace to risc-v common sources 
  • #4983 arch: risc-v: Implement TLS support 
  • #5707 arch: risc-v: Implement SYS_save_context in swint 
  • #5695 arch: risc-v: Save/Load float register in setjmp 
  • #5478 arch: risc-v: Use _ebss instead of _default_stack_limit as idle stack base
  • #5484 arch: risc-v: Implement common up_cpu_idlestack 
  • #5490 arch: risc-v: Let g_cpu_basestack determined at compile time 
  • #5091 arch: risc-v: pwm: add option to break the loops when using multiple PWM channels 
  • #5454 arch: risc-v: Remove duplicated up_idle logic 
  • #5358 arch: risc-v: RISC-V MMU: Add missing implementation for PTE getter 
  • #5240 arch: risc-v: Refine riscv_cpupause.c 
  • #5308 arch: risc-v: Merge mcause.h into irq.h 
  • #5210 arch: risc-v: Refine exception_common 
  • #5236 arch: risc-v: Refine riscv_cpuindex.c 

BL602

  • #5316 arch: risc-v: bl602: Fix broken bl602 flash due to partition_table being incorrectly marked as unused 
  • #5221 arch: risc-v: bl602: Rename bl602_entry.S to bl602_head.S 
  • #4876 arch: risc-v: bl602: Enable GPIO output 
  • #4984 arch: risc-v: bl602: Swap SPI MISO and MOSI 
  • #5131 arch: risc-v: bl602: Fix preprocessing directives for uart flow control 
  • #5093 arch: risc-v: bl602: Use userspace chosen channel numbers when starting bl602 pwm 

ESP32C3

  • #5129 arch: risc-v: esp32c3: SPI flash MTD device uses all flash space 
  • #4771 arch: risc-v: esp32c3: Remove the DMA test included in the driver along with its defconfig. 
  • #4700 arch: risc-v: esp32c3: Remove test code from crypto accelerators drivers. 
  • #4711 arch: risc-v: esp32c3: Remove the stub implementations of the early serial 
  • #5615 arch: risc-v: esp32c3: Fix detection of CPU reset by Watchdog Timer 
  • #4796 arch: risc-v: esp32c3: Fix MMU pages number calculation error 
  • #4820 arch: risc-v: esp32c3: Partition supports BIO cmd 
  • #4821 arch: risc-v: esp32c3: Add hardware brownout check and reset 
  • #4834 arch: risc-v: esp32c3: esp32c3_usbserial.c: Initialize cpuint to ENOMEM. 
  • #4813 arch: risc-v: esp32c3: Fix GPIO Output on pins 18 and 19 USB/JTAG 
  • #4809 arch: risc-v: esp32c3: Driver for the ESP32-C3's CDC console. 
  • #5615 arch: risc-v: esp32c3: Fix detection of CPU reset by Watchdog Timer 
  • #4787 arch: risc-v: esp32c3: Initialize the BLE Mac 
  • #4822 arch: risc-v: esp32c3: Fix reset triggering crash nested when crash 
  • #4740 arch: risc-v: esp32c3: Fix Wi-Fi & BLE coexist issues 
  • #4886 arch: risc-v: esp32c3: Refactor SPI Flash to support umask interrupt when R/W/E SPI Flash 
  • #4885 arch: risc-v: esp32c3: Refactor ADC calibration 
  • #5616 arch: risc-v: esp32c3: Enable Timer Groups clocks on timer initialization 
  • #5304 arch: risc-v: esp32c3: esp32c3_irq.c: Skip over ECALL instruction. 
  • #5457 arch: risc-v: esp32c3: Fix issue #5377 UART1 not working because clock as disabled 
  • #5016 arch: risc-v: esp32c3: Initialize rtc and peripheral parameters by default when chip starts 
  • #5124 arch: risc-v: esp32s2/esp32c3: Remove unavailable support for ROM Basic Console 
  • #5133 arch: risc-v: esp32s2/esp32c3: Add support for enabling hardware Flash Encryption on boot

MPFS

  • #4877 arch: risc-v: mpfs: Add spi cs control for mpfs 
  • #5289 arch: risc-v: mpfs: bootloader entrypoints 
  • #5247 arch: risc-v: mpfs: switch to exception common 
  • #5360 arch: risc-v: mpfs: Add support for a ROMFS image for MPFS 
  • #5322 arch: risc-v: mpfs: build protected
  • #5109 arch: risc-v: mpfs: Add MSSIO GPIO pinmap configuration 
  • #5306 arch: risc-v: mpfs: OpenSBI: utilize an index2id table 
  • #5287 arch: risc-v: mpfs: opensbi redefinition fixes
  • #5225 arch: risc-v: mpfs: Opensbi fixes 
  • #5325 arch: risc-v: mpfs: opensbi conf  
  • #5310 arch: risc-v: mpfs: switch to NuttX types for opensbi 
  • #5702 arch: risc-v: mpfs: usb: apply review fixes 
  • #5040 arch: risc-v: mpfs: add opensbi support 
  • #4709 arch: risc-v: mpfs: emmcsd: provide proper internal emmc settings 
  • #4714 arch: risc-v: mpfs: ddr training and system clock init 
  • #4839 arch: risc-v: mpfs: emmcsd: boost waitresponse perf 
  • #4817 arch: risc-v: mpfs: uart: add a way to configure uart3 and uart4 
  • #4788 arch: risc-v: mpfs: emmcsd: fix uninitialized value 
  • #4781 arch: risc-v: mpfs: cache: provide L1/L2 cache enablers 
  • #4773 arch: risc-v: mpfs: i2c: Add support for adaptive I2C bus frequency 
  • #5694 arch: risc-v: mpfs: usb: fix an unused variable warning 
  • #5161 arch: risc-v: mpfs: mpfs_serial.c: Correct setting of nbits 
  • #5152 arch: risc-v: opensbi: update to version 1.0 
  • #5636 arch: risc-v/qemu-rv: Set FS bits in mstatus 
  • #5529 arch: risc-v/qemu-rv: Supports SMP up to 8 cores and other minor changes 
  • #4825 arch: risc-v/xtensa: Kconfig: Some cleanup and improvements to arch versions of C library functions. 
  • #5683 arch: risc-v/xtensa: corrent dumpstate xcp size 
  • #5717 Revert "arch: risc-v: Correct FPU register save area in riscv_copystate" 

SPARC

  • #5394 arch: sparc: adaptive patch 
  • #5521 arch: sparc: Replace adj_stack_ptr with stack_base_ptr 

XTENSA

  • #4688 arch: xtensa: Kconfig: add quotes in source to clean warnings from setconfig 
  • #5738 arch: xtensa: Save exception cause and vaddr into the user frame 
  • #5149 arch: xtensa: Rename up_stack_color to xtensa_stack_color. 
  • #5198 arch: xtensa: fix lack of float register save & resotre 
  • #4663 arch: xtensa: Correctly save/restore coprocessor0 state. 
  • #5450 arch: xtensa: kconfig: move ARCH_HAVE_TESTSET config to chip 
  • #5648 arch: xtensa: fix sp duplicate reduce in handler enter 
  • #5541 arch: xtensa: modify svcall to swint 
  • #5729 arch: xtensa: Small improvements around xtensa_context 
  • #5708 arch: xtensa: small improvements around using the software interrupt. 
  • #5684 arch: xtensa: backtrace: fix backtrace last buffer error in some scene 
  • #5250 arch: xtensa: Fix core voltage level when SPI Flash runs at 80Mhz 
  • #5248 arch: xtensa: some fixes in interrupt handler 
  • #4818 arch: xtensa: mpu: use WRITEBACK attribute for intsram & extsram 
  • #4683 arch: xtensa: mpu: modify acc and memtype to uint32_t 
  • #4664 arch: xtensa: xtensa_context.S: Save and restore SCOMPARE1 when necessary. 
  • #4669 arch: xtensa: xtensa_cpupause.c: Allow a spin before taking the g_cpu_wait spinlock. 
  • #5336 arch: xtensa: use swint to swith context 
  • #5679 arch: xtensa: xtensa_user_handler.S: Store EXCCAUSE and EXCVADDR into the user frame.
  • #5000 arch: xtensa: correct the interrupt stack on irq handler 

ESP32

  • #5056 arch: xtensa: esp32: Add WiFi/BLE Coexistence support  
  • #5187 arch: xtensa: esp32: Add PWM support using the LEDC peripheral 
  • #5143 arch: xtensa: esp32: Use ROM implementations of libc functions 
  • #5117 arch: xtensa: esp32: Add support for enabling hardware Flash Encryption on boot 
  • #4991 arch: xtensa: esp32: Show CPUs activity using LEDs. 
  • #4670 arch: xtensa: esp32: Few fixes around SPI Flash to make it SMP friendly. 
  • #4710 arch: xtensa: esp32: Make SPI Flash initialization common to all ESP32 boards 
  • #5542 arch: xtensa: esp32: setup software interrupt for esp32chips 
  • #5407 arch: xtensa: esp32: Remove the QEMU special case when initializing the heap. 
  • #5536 arch: xtensa: esp32: Few improvements around interrupt handling. 
  • #5196 arch: xtensa: esp32: Add support to RS485 
  • #4543 arch: xtensa: esp32: Use device specific lock as much as possible. 
  • #4796 arch: xtensa: esp32: Fix MMU pages number calculation error 
  • #4820 arch: xtensa: esp32: Partition supports BIO cmd 
  • #4933 arch: xtensa: esp32: Remove CONFIG_SMP conditions in the code. 
  • #5073 arch: xtensa: esp32: Fix some Wi-Fi issues
  • #4867 arch: xtensa: esp32: Fix retrieving GPIOs' IRQ number and peripheral ID in SMP. 
  • #4769 arch: xtensa: esp32: Make ESP32_BT_RESERVE_DRAM default to 0 again if Bluetooth is not enabled. 

ESP32S2

  • #5213 arch: xtensa: esp32s2: Fix some wrong definitions related to IRQ management 
  • #5212 arch: xtensa: esp32s2: Fix data cache option in menuconfig 
  • #5693 arch: xtensa: esp32s2: Sync IRQ management API with ESP32 and ESP32-S3 
  • #4902 arch: xtensa: esp32xx: esp32xx_rtc.c: misc. fixes. 
  • #5609 arch: xtensa: esp32s2: Correctly enable the software interrupt. 
  • #5698 arch: xtensa: esp32s2: Add support for Main System Watchdog Timers 
  • #4703 arch: xtensa: esp32s2: Add RNG driver support and board profile example 

ESP32S3

  • #5665 arch: xtensa: esp32s3: Add SPI-Flash support 
  • #5699 arch: xtensa: esp32s3: Enable SMP support 
  • #5723 arch: xtensa: esp32s3: Add support for RT-Timer based on Systimer peripheral 
  • #5668 arch: xtensa: esp32s3: Add support for Tickless kernel using Systimer 
  • #5671 arch: xtensa: esp32s3: Add support for Free-running Timer wrapper 
  • #5686 arch: xtensa: esp32s3: Add SPI RAM/PSRAM Support 
  • #5601 arch: xtensa: esp32s3: Add support for Main System Watchdog Timers 
  • #5602 arch: xtensa: esp32s3: Add support for Timer Groups 0 and 1 
  • #5604 arch: xtensa: esp32s3: Use the running CPU ID for enabling internal interrupts 
  • #5608 arch: xtensa: esp32s3: Add support for Oneshot timer 
  • #5722 arch: xtensa: esp32s3: Stall Timer ISR when core 1 is temporarily stalled 

Z80

  • #5726 arch: z[80|16]: Move up_getsp declaration to arch.h 
  • #5344 arch: z80: fix garbage collector option to linker for ez80 

Driver Support

Drivers With Significant Improvements

  • #5256 drivers: Add usbdev serial use boardid 
  • #5728 drivers: Merge the common driver initialization into one place 
  • #5716 drivers: Move the common driver to misc folder 
  • #5080 drivers: regulator/clk rpmsg: pending on wait IPC channel ready 
  • #4864 drivers: audio: cxd56: various audio fixes 
  • #4976 drivers: bch: support flush and aligned bch buffer 
  • #4712 drivers: can: Fix can_poll() POLLOUT calculation 
  • #2641 drivers: can: Cleanup usage of soft fifo semaphore 
  • #4661 drivers: i2c: fix compile break when enable CONFIG_I2C_BITBANG_NO_DELAY 
  • #5042 drivers: input: ads7843e: complement critical section operation 
  • #5631 drivers: input: Remove the couple from uinput 
  • #5624 drivers: input: joystick/buttons: Fix the event lose between the invocation of poll 
  • #5625 drivers: input: joystick: Remove [a|d]joy_enable from [a|d]joy_sample 
  • #5204 drivers: input: joystck/buttons: Always protect the open list by critical section 
  • #4837 drivers: input: touchscreen: added time stamp for touchscreen event 
  • #4800 drivers: input: touchscreen: separate the interface for user interaction 
  • #4928 drivers: input: touchscreen: added touchscreen gesture 
  • #5005 drivers: ioexpander: add ioe_rpmsg server and client
  • #5657 drivers: ioexpander: Fix invert option value usage 
  • #5680 drivers: ioexpander: fix output inversion for ioe_dummy 
  • #4697 drivers: ioexpander: gpio: Remove the hardcode 100 lim
  • #4774 drivers: ioexpander: gpio: Use generic /dev/gpioN 
  • #5183 drivers: ioexpander: Select IOEXPANDER_INT_ENABLE instead depend on it 
  • #5037 drivers: net: Replace self defined macros with NET_SOCK_[FAMILY|TYPE|PROTOCOL] itation
  • #5733 drivers: note: Add macro guard for instrumention switch 
  • #4530 drivers: mmcsd: Add RPMB ioctl 
  • #5215 drivers: mmcsd: sdio.c: Fix struct packing of sdio_resp_r5 
  • #5155 drivers: mmcsd: sdio: Move sdio utils functions to drivers/mmcsd
  • #4472 drivers: mmcsd: sdio: Update the defintion to the latest spec 
  • #5294 drivers: mmcsd: add option to limit block count in multiple-block trans… 
  • #5182 drivers: motor: Move simulated drivers from sim to common place 
  • #4833 drivers: motor: add upperhalf structure 
  • #5442 drivers: mtd: enlarge the limits of blocksize in struct m… 
  • #5451 drivers: mtd: sst39vf.c: patch address map issue 
  • #4924 drivers: mtd: Support multiple SST26 devices on the same spi bus 
  • #4921 drivers: mtd: fix overflow checks in mtdpart 
  • #4891 drivers: mtd: ramtron: Remove errant code and definitions 
  • #4995 drivers: mtd/filemtd: improve write and erase access 
  • #4964 drivers: note: noteram: when the buffer overflow happen and give the asan report 
  • #4763 drivers: pipes: pipe close should notify block writting, and write will return … 
  • #5425 drivers: pipes: Remove pipe from file system after open 
  • #5475 drivers: pipes: Don't use sched_[lock|unlock] to do protection 
  • #5423 drivers: pipes: Add DEV_PIPE_VFS_PATH to specify the pipe location 
  • #4729 drivers: power: battery: add baterr, batinfo, batwarn for debug log 
  • #4708 drivers: power: charge: modify battery_gauge code 
  • #4990 drivers: power: charger: fix crash when notify without pollwaiter 
  • #4889 drivers: power: improve charger interface
  • #5701 drivers: power: govorner: add govorner to per domain. 
  • #5591 drivers: power: PM: add domain inner update power state feature 
  • #5050 drivers: power: set ioexpander direction in regulator gpio init.
  • #5689 drivers: segger/sysview: add syscall support  
  • #5140 drivers: sensors: as5048b: fix lower half init issue 
  • #5061 drivers: sensors: isl29023.c: fix compilation error and warnings 
  • #4838 drivers: sensors: Add sensor type ots. 
  • #4850 drivers: sensors: add set calibration interface 
  • #4842 drivers: sensors: Optimized GPS sensor and add gps satellite sensor. 
  • #5356 drivers: sensors: ppg of dual- and quad-channel sensor types 
  • #5024 drivers: sensors: reset interval,latency and circbuf when sensor is closed 
  • #5128 drivers: serial: uart16550: Support 64bit platform 
  • #5573 drivers: serial: pty: Handle pty ioctl and fcntl to pipe ioctl 
  • #5114 drivers: serial: add CONFIG_TTY_LAUNCH support 
  • #5197 drivers: serial: merge serial check signo to one place 
  • #5430 drivers: serial: fix cu crash caused by ioctl is NULL 
  • #5395 drivers: serial: Consolidate the general termios in the common place 
  • #5427 drivers: serial: Minor fix for ptmx driver 
  • #5415 drivers: serial: pty: Sync the default value of iflag and oflag regardless CONFIG_SERIAL_TERMIOS 
  • #5444 drivers: serial: pty: Decouple SUSv1 style from pseudo fs operation 
  • #5227 drivers: serial: uart_16550: Allow uintptr_t as addr width 
  • #4940 drivers: serial: Fix offset calculation in 16550 
  • #5569 drivers: serial: pty: Move the post process after reading the buffer 
  • #5551 drivers: serial: pty: Remove the unused code related to CONFIG_PSEUDOTERM_FULLBLOCKS 
  • #5402 drivers: serial: pty: fix the lock handling 
  • #5428 drivers: serial: pty: Close the internal pipe when reference count drop to zero 
  • #5429 drivers: serial: pty: Don't use shced_[lock|unlock] to protect pp_locked 
  • #5433 drivers: serial: pty: Reorder the register driver to simplify the error handling 
  • #5581 drivers: serial: pty: Remove the TODO comment for O_NONBLOCK 
  • #5158 drivers: serial: uart_rpmsg: fix data loss 
  • #4789 drivers: spi: Extend CONFIG_SPI_CS_DELAY_CONTROL to do inter frame delay and rename CONFIG_SPI_DELAY_CONTROL 
  • #5408 drivers: syslog: syslog_device: fix flushing data when end of line is detected 
  • #4873 drivers: syslog: change /dev/syslog & /dev/ramlog for unix standard 
  • #5386 drivers: syslog: Refine Kconfig option 
  • #5386 drivers: syslog: Implement RTT based log channel 
  • #5735 drivers: syslog: correct the return value of default channel write 
  • #5387 drivers: syslog: Include nuttx/syslog/syslog.h in include/nuttx/syslog/syslog_rpmsg.h 
  • #5217 drivers: syslog: Fix in file channel initialization. 
  • #5021 drivers: syslog/rpmsg: using up_putc to force flush syslog_rpmsg buffer 
  • #5333 drivers: timers: Add weak_function for up_ function 
  • #5265 drivers: timers: dirctly call rpmsg_rtc_server_xx() in server_ept_cb() 
  • #5743 drivers: timers: timer: Add option for non-periodic notification 
  • #5232 drivers: timers: rpmsg_rtc: resolve deadlock when the receive SYNC cmd 
  • #5230 drivers: timers: Simplify the RTC rpmsg driver implementation 
  • #4635 drivers: userled: Implement getall by checking actual pin state 
  • #5594 drivers: video: vncserver: Allow fb operation while no connection 
  • #5510 drivers: video: vncserver: Fix dead lock on re-connect 
  • #5369 drivers: usbdev: cdcacm:support returning c_cflag & speed via termios 
  • #5249 drivers: usbdev: Fix aligment issue: pktbuf needs to be 16bit aligned 
  • #4766 drivers: Fix syslog_write failed 
  • #4757 drivers: rptun: add ns_unbind_notify support 
  • #4974 drivers: rptun: support can_recursive check for openamp 
  • #5112 drivers: wireless: bcm43xxx: supported ARM CR4 core and bcm43455 chip in particular 
  • #4690 drivers: wireless: bcm43xxx: supported high-speed timing mode with a clock rate up to 50MHz
  • #4778 drivers: wireless: bcm43xxx: corrected SDIO_CCCR_HIGHSPEED_SHS bit handling 
  • #5497 drivers: wireless: Fix gs2200m_ioctl_accept() 

New Driver Support

  • #5002 drivers: analog: add mcp48xx dac support 
  • #5376 drivers: i2c: Add TCA9548A I2C Multiplexer 
  • #4937 drivers: mtd: add MTD null driver support 
  • #4943 drivers: power: add regulator framework 
  • #5317 drivers: sensors: add support to MS5611 barometer 
  • #4691 drivers: sensors: support new sensor type 
  • #5499 drivers: timers: add EPSON RX8010SJ I2C RTC timer support 
  • #4918 drivers: clk: add clk framework 
  • #5258 drivers: input: add touchscreen uinput driver 
  • #5327 drivers: segger: add Segger System View support 

Board Support

New Board Support

  • #5363 boards: arm: phy62xx: add phyplus_rel_1.4 
  • #4916 boards: arm: samv7: add support for SAME70 QMTECH board 
  • #5195 boards: arm: rp2040: add support for Pimoroni Tiny 2040 board
  • #4851 boards: risc-v: mpfs: Add support for Aries M100PFSMVP board 

Boards With Significant Improvements

  • #5553 boards: Add -fno-common to ARCHCFLAGS and ARCHCXXFLAGS 
  • #5330 boards: Board.mk: Make romfs_img 4 byte aligned 
  • #5712 boards: Kconfig: introduce ARCH_BOARD_COMMON option 
  • #4744 boards: Rename FOC_VEL_ADC to FOC_SETPOINT_ADC
  • #5557 boards: Replace CONFIG_CYGWIN_WINTOOL with CONVERT_PATH 
  • #5555 boards: Remove the unnecessary customize Make.defs 
  • #5476 boards: Remove -fno-builtin 
  • #5244 boards: Remove -fno-strength-reduce 
  • #5349 boards: Remove unused NXFLAT flags from Make.defs 
  • #5348 boards: Revert user space / kernel space isolation for pthread_exit 
  • #5557 boards: Replace CONFIG_CYGWIN_WINTOOL with CONVERT_PATH 
  • #5282 boards: Update board Make.defs

CXD56

  • #5440 boards: arm: cxd56xx: audio: Support I2S input 
  • #4996 boards: arm: cxd56xx: spresense: Adjust CONFIG_FAT_MAXFNAME and CONFIG_NAME_MAX 
  • #4969 boards: arm: cxd56xx: spresense: Update smp/defconfig 

IMX6

  • #5652 boards: arm: imx6: sabre-6quad: Add knsh 
  • #5485 boards: arm: imx6: sabre-6quad: Add -fno-common to Make.defs
  • #5724 boards: arm: imx6: sabre-6quad: Add CONFIG_DEBUG_FULLOPT=y to knsh/defconfig 

IMXRT

  • #5670 boards: arm: imxrt: fix userled config in appinit 
  • #5682 boards: arm: imxrt: userleds: Teensy 4.x board LED is active high 

LC823450

  • #4947 boards: arm: lc823450: lc823450-xgevk: Update bt/defconfig for SMP   

NRF52

  • #5023 boards: arm: nrf52: nrf52832-dk/nrf52840-dk: add procfs and sdc support 

PHY62XX

  • #5669 boards: arm: phy62xx: phy6222: remove -nostartfiles -nodefaultlibs 

SAMV7

  • #5406 boards: arm: samv7: disable systick no matter if ARMV7M_SYSTICK is enabled or not
  • #5710 boards: arm: samv7: rework linker script usage logic to allow custom linker scripts 
  • #5281 boards: arm: samv7: move HSMCI interface to common 
  • #4981 boards: arm: samv7: Introduce common folder and refactor MCUboot 
  • #5320 boards: arm: samv7: common: add HSMCI0 boot mount configuration option 
  • #5127 boards: arm: samv7: common: Improve SAMv7 common folder approach
  • #5318 boards: arm: samv7: same70-qmtech: enable slow crystal 
  • #5410 boards: arm: samv7: same70-qmtech: add buttons interface 
  • #4911 boards: arm: samv7: samv71-xult: Set console at usart1 
  • #5676 boards: arm: samv7: default BOARD_SAMV7_COMMON to n 
  • #5119 boards: arm: samv7: improve progmem common interface 
  • #5276 boards: arm: samv7: fix build error when automount is enabled 
  • #5277 boards: arm: same70-qmtech: switch console to UART0 
  • #5312 boards: arm: same70-qmtech: clarify usage of CD signal on SD card connector 
  • #4880 boards: arm: same70-xplained: MCUboot support for SAM E70 Xplained 
  • #4912 boards: arm: same70-xplained: disable systick before loading MCUboot application 
  • #4907 boards: arm: same70-xplained: scripts: fix memory region size for MCUboot app 
  • #4906 boards: arm: same70-xplained: fix usage of SAMV71XULT instead of SAME70XPLAINED 
  • #4915 boards: arm: same70-xplained: MCUboot related improvements 

STM32

  • #5011 boards: arm: stm32: emw3162: enabled internal pull-up resistors on SDIO bus 
  • #4750 boards: arm: stm32: Normalize FOC related project 
  • #5612 boards: arm: stm32: Update adb configs 
  • #5675 boards: arm: stm32: stm32f4discovery: Remove CONFIG_LIBC_EXECFUNCS from adb defconfig 
  • #4775 boards: arm: stm32: b-g431b-esc1: add Hall and Qenco support 
  • #5420 boards: arm: stm32: b-g431b-esc1/nucleo-g431rb: add SocketCAN examples 
  • #5237 boards: arm: stm32: b-g431b-esc1/nucleo-g431rb: add CAN example for 
  • #5238 boards: arm: stm32: nucleo-f302r8: nucleo-f446re: add SocketCAN example 
  • #4785 boards: arm: stm32: nucleo-f302r8: disable NSH commands for FOC configs to save FLASH 
  • #4938 boards: arm: stm32: nucleo-f302r8: add 3ph Hall sensor support 
  • #5166 boards: arm: stm32: nucleo-f446re: add procfs support 
  • #5614 boards: arm: stm32: nucleo-l152re: Added registering logic SPI on /dev.
  • #5439 boards: arm: stm32: nucleo-l152re: Test/i2c 
  • #5009 boards: arm: stm32: nucleo-f4x1re: Correct issues with userled support on the Nucleo F4x1RE. 
  • #5130 boards: arm: stm32: photon: added configuration to measure wlan performance 

STM32H7

  • #5697 boards: arm: stm32[f7|l4]: fix SPI chip select GPIO access 
  • #4827 boards: arm: stm32h7: nucleo-h743zi: add board_reset function 

TIVA

  • #5664 boards: arm: tiva: ekk-lm3s9b96: Remove unused mmcsd option 
  • #5595 boards: arm: tiva: lm3s6965-ek: Add qemu-kostest  
  • #5597 boards: arm: tiva: lm3s6965-ek: Fix qemu-kostest 
  • #5597 boards: arm: tiva: lm3s6965-ek: Fix qemu-kostest 

RISC-V

  • #5134 boards: risc-v: hifive1-revb: Enable some nsh commands in nsh/defconfig 
  • #4675 boards: risc-v: k210: Add initial gpio user space support 
  • #4665 boards: risc-v: k210: Fix -march and -mabi 
  • #5067 boards: risc-v: mpfs: update m100pfsevp board info 
  • #5688 boards: risc-v: mpfs: MPFS USB driver 
  • #5111 boards: risc-v: m100pfsevp: Decrease DDR lane temination values to 40 ohm and … 
  • #5500 boards: risc-v: bl602: Remove -D__NuttX__ from Makefile 
  • #5515 boards: risc-v: rv-virt: Supports FPU test and ostest in both rv32/rv64 

SIM

  • #5544 boards: sim: Add missing options to sim:vncserver 
  • #5559 boards: sim: Rename ARCHCPUFLAGS[XX] to ARCHC[XX]FLAGS 
  • #5739 boards: sim: add support of custom optimization level 
  • #5186 boards: sim: Turn on more rpmsg drivers in rpserver config 
  • #5101 boards: sim: Remove sim_tsc_setup 
  • #5561 boards: sim: defconfig for hello_rust 
  • #5535 boards: sim: Enable Rust suppport for hello_rust application. 
  • #5640 boards: sim: Remove CCLINKFLAGS, use CFLAGS/CXXFLAGS instead 
  • #5501 boards: sim: Add adb config for test 
  • #5121 boards: sim: recovered eth0 interface in sim:tcpblaster configuration 
  • #5383 boards: sim: Make.defs: CELFFLAGS += -mcmodel=large 

SPARC

  • #5644 boards: sparc: Remove HOSTCC related flags from Make.defs 

XTENSA

  • #4719 boards: xtensa: esp32: Refactor SPI Flash File system mount options on menuconfig 
  • #5596 boards: xtensa: esp32: Update esp-wireless-drivers-3rdparty 
  • #5074 boards: xtensa: esp32: Add board support to SHT3X sensor 
  • #5051 boards: xtensa: esp32: Enable canaries stack protection to ESP32 chips 
  • #5617 boards: xtensa: esp32-devkitc: Fix boot failure on tickless defconfig 
  • #5654 boards: xtensa: esp32-devkitc: Increase INIT_STACKSIZE to 3072 in smp/defconfig 
  • #5075 boards: xtensa: esp32-devkitc: Change CONFIG_USER_ENTRYPOINT to CONFIG_INIT_ENTRYPOINT 

File System

Bug Fixes

  • #4694 fs: littlefs: fix rmdir can remove a file
  • #4722 fs: mqueue: fix memory leak cause by lost inode_release 
  • #5214 fs: partition: Fix compilation errors when CONFIG_FS_LARGEFIL… 
  • #5279 fs: partition: Fix an overflow in blkcnt_t gpt_last_lba
  • #5653 fs: romfs: fix read file mismatch when the length of file name is 16 
  • #5257 fs: smartfs: Fix file size corruption when opening with truncate mode 
  • #4811 fs: procfs: fix ps can't log out Group id 
  • #5172 fs: procfs: fix readdir loss last character
  • #4968 fs: fat: Use uint16_t instead of wchar_t 

Significant Improvements

  • #5108 fs: change fs strncpy to strlcpy to avoid losing'\0' 
  • #5460 fs: epoll_fd: support dup file descriptor
  • #5345 fs: fs_automount: add options for signaling when volume is mounted and unmounted 
  • #4934 fs: hosfs_rpmsg: merge hostfs_rpmsg to rpmsgfs 
  • #4986 fs: hostfs: add lock to hostfs_rewinddir 
  • #4718 fs: mount: Properly handle missing FS on the supported list 
  • #4721 fs: mqueue: Change MAX_MQUEUE_PATH to 64 
  • #4734 fs: partition: support mbr and gpt partition parsing 
  • #4687 fs: partition: Make read_partition_block callable outside ptable 
  • #5207 fs: procfs: Remove the unnecessary strcmp 
  • #5554 fs: procfs: add newline /proc/*/loadavg snprintf format 
  • #5157 fs: romfs: remove the error single list and using reference 
  • #5461 fs: romfs: add FAR for all pointer and optimize some code 
  • #5635 fs: romfs: optimize romfs_open speed and get path by cmd FIOC_FILEPATH 
  • #5022 fs: tmpfs: support fsync always successful 
  • #5014 fs: vfs: Add file descriptor based timers support 
  • #5028 fs: vfs: eventfd: Remove the unused and private eventfd_get_minor 
  • #5224 fs: vfs: Do not require write-access for fsync 
  • #4767 fs: vfs: sanity check for parameter:length 

Networking

Improvements

  • #5254 net: unify FAR keyword usage for all net buffer memory mapped buffers 
  • #5049 net: Update IFF_RUNNING flag by netdev_carrier_on and netdev_carrier_off 
  • #4895 net: arp: clean the arp table when netdev carrier off 
  • #5168 net: can: add CAN error definitions 
  • #4814 net: can: can_recvmsg.c : put can_readahead in critical section 
  • #5467 net: can: remove psock reference from can connect 
  • #5110 net: devif: allocate devif callback dynamically 
  • #5181 net: devif: devif_callback_free() call is not needed anymore in devif_callback_alloc() 
  • #5136 net: icmp: post the semaphore if multiple references 
  • #5525 net: ioballoc: add support of alloc with timeout net_iobtimedalloc() 
  • #5426 net: local: Rename NET_LOCAL_PATH_PREFIX to NET_LOCAL_VFS_PATH 
  • #4987 net: local_socket: filename use "/var/socket/xx" instead of "/var/socketxx" 
  • #5150 net: misc: add support for CONFIG_NET_ALLOC_CONNS 
  • #5725 net: optimize network subsystem initialization 
  • #4973 net: rpmsg: add ioctl & fix unblock connect crash 
  • #4760 net: socket: rpmsg related bug fix & update 
  • #5337 net: tcbinfo: Update tcbinfo struct, Fix the compile warning 
  • #5526 net: tcp: add support for send timeout on buffer mode 
  • #5373 net: tcp: add debug asserts and logging to investigate the rare (conn->dev == NULL) bug in callback handlers 
  • #5462 net: tcp: monitor: do not migrate the state to close 
  • #5405 net: tcp: netdev/mld: correct the netlock handling 
  • #4660 net: tcp: Remove NET_TCP_SPLIT 
  • #5469 net: tcp: support for FIN+ACK case in tcp send event handlers 
  • #5341 net: tcp: transformed NET_TCP_FAST_RETRANSMIT_WATERMARK option to boolean. 
  • #5434 net: tcp: udp: remove psock hook to avoid invalid reference 
  • #5339 net: tcp/tcp_sendfile: optimized out sendfile_txnotify() function 
  • #5252 net: tcp/tcp_send*: reliably obtain the TCP connection pointer in TCP event handlers 
  • #5268 net: tcp/tcp_send*: added debug asserts for TCP_ACKDATA, TCP_REXMIT and TCP_DISCONN_EVENTS flags 
  • #5262 net: tcp/sendfile: swapped the location of TCP_DISCONN_EVENTS and TCP_ACKDATA conditions 
  • #5340 net: tcp/sendfile: notify the device driver of the availability of TX data on TCP retransmission 
  • #5311 net: tcp/sendfile: fast retransmit on duplicate acknowledgments (RFC 5681) 
  • #5242 net: tcp/sendfile: TCP retransmission could not start because of incorrect snd_ackcb callback handling 
  • #5104 net: tcp/udp: allocate tcp/udp connect dynamically 
  • #5156 net: usrsock: add support for CONFIG_NET_ALLOC_CONNS 
  • #5045 net: usrsock: increase the sendto() length limit to UINT32_MAX 

Bug Fixes

  • #5480 net: can: can_setsockopt.c: fix assertion, value can be NULL 
  • #5141 net: can: SocketCAN: minor fixes 
  • #4575 net: devif: Fix the memory leak in case of netdev isn't alive 
  • #5437 net: devif: remove invalid NET_IPv4_REASSEMBLY definition  
  • #5090 net: fix unaligned memory access when creating ICMP Port Unreachable messages 
  • #5245 net: icmp: fix build break if enable NET_ALLOC_CONNS 
  • #4761 net: local: socket bug fix & update 
  • #5436 net: netdev: lladdrsize: remove invalid duplicate case 
  • #5466 net: rpmsg: fix the NULL pointer reference on nonblock accept 
  • #5531 net: socket: fix shadow variable 
  • #5006 net: tcp: fix send deadlock if disconnect 
  • #5296 net: tcp: fixed warning: ISO C90 forbids mixed declarations and code 
  • #4639 net: tcp_timer: eliminated false decrements of conn->timer in case of multiple network adapters. 
  • #4659 net: tcp(unbuffered): retransmit only one the earliest not acknowledged segment 
  • #4656 net: tcp(unbuffered): fixed an issue with unackseq calculation. 
  • #5138 net: tcp(unbuffered): advance sndseq by +1 because SYN and FIN occupy one sequence number 
  • #5137 net: tcp(unbuffered): fast retransmit on duplicate acknowledgments 
  • #5078 net: tcp(unbuffered): tx_unacked overflow occurred if NET_TCP_WINDOW_SCALE option was enabled. 
  • #5102 net: tcp(unbuffered): removed excessive overwrites of conn->sndseq 
  • #5297 net: tcp/sendfile: removed excessive overwrites of conn->sndseq 
  • #5239 net: tcp/sendfile: NET_TCP_WRITE_BUFFERS and NET_SENDFILE were inconsistent with each other 
  • #5293 net: tcp/sendfile: fixed an issue with unackseq calculation. 
  • #5272 net: tcp/sendfile: retransmit only one the earliest not acknowledged segment 
  • #5013 net: udp: fix the invaild udp destination address 
  • #4890 net: udp/icmp: correct the unreadchable handling 
  • #5154 net: usrsock: replace xid type to uint64_t to avoid limitation of connections 

Security Issues Fixed In This Release

Compatibility Concerns

Renamed Kconfigs

PR-5065 has renamed the following Kconfigs:

CONFIG_USER_ENTRYPOINT -> CONFIG_INIT_ENTRYPOINT
CONFIG_USERMAIN_STACKSIZE -> CONFIG_INIT_STACKSIZE

These are the non-"CONFIG_"-prefixed names:

USER_ENTRYPOINT -> INIT_ENTRYPOINT
USERMAIN_STACKSIZE -> INIT_STACKSIZE

All in-tree boards have been updated.

NuttX users developing their own out-of-tree boards need to update all references to the above names as well.

See PR-5065, git commits 4bc7b8c802cd42bd2c3d98f4fd11207d2dd50de4, 632716dc7ad04f7cad48c5787f5c0b500cbee296, and 036d98a06ba873318061380b876b838f7ffa64fb.

Changes to Build System

PR-5496 has refactored the separate Unix and Windows handling of the build variable ARCHSCRIPT so that each board's Make.defs will not need logic like this:

ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
  ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)tfm-ns.ld}"
else
  ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)tfm-ns.ld
endif

And can instead append the variable just one, like this:

ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)tfm-ns.ld

Note the assignment is changed to append (from "=" to "+=") and removal of "-T".

All boards in the NuttX tree have been updated.

NuttX users developing their own custom boards will need to update their board's scripts/Make.defs file as shown above.

See PR-5496, git commit 855534deef50e1e9c957eb32a7b15497d1bfd34a.


PR-5712 has refactored board common logic. BOARD_SAMV7_COMMON and BOARD_STM32_COMMON options are removed and a new ARCH_BOARD_COMMON is introduced.

All in-tree boards have been updated.

NuttX users developing their own out-of-tree boards need to replace "CONFIG_BOARD_SAMV7_COMMON=y" and "CONFIG_BOARD_STM32_COMMON=y" to "CONFIG_ARCH_BOARD_COMMON=y" in defconfig files. Also for some out-of-tree boards the compilation may fail with next error messages:

make[2]: *** No rule to make target 'libboard.a'.  Stop.
Makefile:139: recipe for target 'board/libboard.a' failed
make[1]: *** [board/libboard.a] Error 2
tools/Unix.mk:509: recipe for target 'nuttx' failed

In this case the out-of-tree board actually relies on in-tree boards common folder structure. To overcome the build error there are two possible options:

  1. Add "CONFIG_ARCH_BOARD_COMMON=y" to defconfig file (this will restore parity with previous NuttX release)
  2. Rename "src/Make.defs" → "src/Makefile" in out-of-tree board directory and append "include $(TOPDIR)/boards/Board.mk" to "src/Makefile".

Refactored Arch Headers

PR-5720 has refactored architectural headers affecting all ARM platforms: arm_arch.h has been removed and its contents merged into arm_internal.h. Previously, most low-level modules in arch/arm/* and boards/arm/* needed to include both headers. Following the refactor, only arm_internal.h is needed.

All boards in the NuttX tree have been updated.

NuttX users developing their own custom boards will need to remove any #include "arm_arch.h" and (if necessary), #include "arm_internal.h" instead.

See PR-5720, git commit 54e630e14d7e32d6f81ae79d4e5df3d2fa787ef0.

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.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.

  • No labels