Apache NuttX-10.3.0 Release Notes

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 
  • #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 


  • #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 


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


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


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


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


  • #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 


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


  • #4786 arch: arm: rp2040: support I2C_RESET 


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


  • #5220 arch: arm: s32k1xx: implement uniqueid 


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


  • #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 


  • #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 


  • #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 


  • #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 


  • #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 


  • #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 


  • #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


  • #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” 


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


  • #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 


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


  • #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 


  • #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 


  • #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


  • #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 


  • #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 


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


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


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


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


  • #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 


  • #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 


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


  • #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 


  • #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 


  • #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 


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


  • #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 



  • #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:


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


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:

Add “CONFIG_ARCH_BOARD_COMMON=y” to defconfig file (this will restore parity with previous NuttX release) 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.