Change Log Since v5.2.2 Release.
Kernel
- Fix timeout wakeup ownership races in IPC and LWP wait paths. (#11631)
- Fix delayed wakeups when a thread is suspended repeatedly. (#10970)
- Prevent suspension of idle threads. (#11314)
- Release mutexes held by a thread when it is deleted by another thread. (#11620)
- Calculate recent thread CPU usage from incremental statistics over sampling windows. (#11256)
- Add 8-bit and 16-bit atomic operation support. (#11244)
- Remove object name length assertions and safely truncate long names. (#10943)
- Reject invalid frees in memheap and handle NULL names in
rt_smem_setname. (#11721) (#11598) - Check interrupt-disabled contexts when validating scheduler availability and validate the main thread priority at build time. (#11315) (#11129)
- Add a console output enable switch and export interrupt hook pointers. (#11168) (#11316)
- Align klibc function signatures with standard libc and fix
%hhformatting for values from0x80to0xff. (#10890) (#11210)
Components
-
Drivers
- Clock Time:
- Introduce
clock_timewith separate clock sources and clock events, high-resolution timers, boot-time helpers, and peripheral timer adapters. (#11111) - Replace the legacy
ktime,cputime, andhwtimerimplementations withclock_boottime,clock_hrtimer, andclock_timer; migrate architecture, BSP, and POSIX time integration. (#11111) - Use runtime timer frequencies for RISC-V ticks and delays, and fix high-resolution timer counter wrap handling. (#11111)
- Introduce
- Serial:
- ADC/DAC:
- Add ADC V2 with session management, sequence reads, voltage conversion, and FinSH commands. (#11440)
- Add ADC V2 DMA streams with latest-frame and FIFO buffering, timer and comparator triggers, and STM32 internal channel support. ADC V2 and the legacy ADC driver are mutually exclusive configuration choices. (#11440)
- Fix the DAC disable callback check and correct ADC/DAC API documentation. (#11562) (#11640) (#11639)
- CAN:
- SPI/I2C:
- Use spinlocks for interrupt-safe SPI operations. (#10873)
- Unify software SPI and I2C drivers across BSPs and make SPI bit operations independently configurable. (#11625) (#11404) (#11102)
- Change default software I2C bus names from
i2cNtoswi2cN; update affected device lookups or explicitly retain legacy bus names. (#11398) - Add I2C bus configuration and maximum bus frequency control. (#11241)
- Add SFUD support for the W25Q128JWPIM flash device. (#11008)
- RTC:
- Fix software RTC nanosecond and microsecond results. (#10874)
- SDIO/Block:
- Fix the eMMC high-speed DDR switching sequence and poll card status after CMD6. (#11037) (#11139)
- Fix unaligned block writes and strengthen MBR and EFI partition validation. (#11103) (#11384) (#11266)
- Fix Arm Compiler 5 compatibility and DFS-disabled builds in MMC/SD and block drivers; rename the generic
SWITCHcommand macro toMMC_SWITCH. (#11690)
- WLAN:
- USB:
- IPC:
- Clock Time:
-
LWP
- Reorganize the shared vDSO framework and add ARM support. (#11340)
- Synchronize vDSO clock data with kernel ticks, fix clock sampling offsets, validate vDSO images, and map the user-visible data page read-only. (#11340)
- Validate user memory copy ranges and scheduling priorities, copy
selecttimeouts into kernel space, and fix PID leaks on failed execution. (#11291) (#11297) (#11599) (#11356) - Bound pseudo-terminal path formatting and terminate link names correctly. (commit b210bd84eb)
-
Memory Management
-
Libc
- Fix scheduling in pthread condition variable waits. (#11533)
- Make
mq_sendblock when the queue is full as required by POSIX. (#11197) - Fix date normalization and month overflow in
mktimeandtimegm. (#11140) (#11720) - Fix
dlopenlookup of already loaded modules and reset loader state between shared object loads. (#11269) (#11247) - Set a default AIO worker stack size and correct DFS/POSIX interface declarations. (#10988) (#11125)
-
DFS
- Add 9PFS support for sharing files with virtual machines such as QEMU. (#10990)
- Update Elm FatFs to R0.16 in DFS V1 and DFS V2. (#10894)
- Add DFS V2 socket nodes and descriptor reference support for AF_UNIX. (#11681)
- Fix vnode reference underflow, double release, dentry locking, and concurrent
lseekresults. (#11119) (#11085) (#11088) - Fix resource leaks during filesystem mount, close, directory release,
statfs, andutimensat; correct FatFs formatting arguments and device validation. (#11611) (#11610) (#10868) (#11534) (#11700) (#11638) (#11614) (#11507) - Reject directory flushes in FatFs and directory truncation in DFS V2, and correct
fsyncerror returns. (#11612) - Validate RAMFS/TMPFS path components, update TMPFS vnode sizes after writes, and fix directory entry type reporting. (#11304) (#11083) (#11623)
- Validate ROMFS ioctl arguments and initialize 9PFS protocol lookup state. (#11353) (#11345)
-
Net
- Add optional AF_UNIX stream and datagram sockets, including pathname binding,
socketpair, poll, timeouts, and descriptor passing throughSCM_RIGHTS; integrate with SAL, DFS V2, and LWP. (#11681) - Add SAL local protocol providers that do not require a network device. (#11681)
- Bound AT formatted output lengths and fix AT socket server connection and accept error handling. (#11306) (#10967)
- Fix lwIP PPP builds and interface name handling, ping timeouts, and IPv4 address resolution for ping. (#11403) (#11410) (#11174) (#11528)
- Bound DHCP server address copies and formatting, and fix pbuf leaks for oversized requests. (commit 49f985e0f6) (#11698)
- Require TLS certificate verification when a CA certificate is configured. (#11523)
- Add optional AF_UNIX stream and datagram sockets, including pathname binding,
-
Rust
- Add a Rust component with ARM, AArch64, and RISC-V target detection and SCons/Cargo integration. (#10910)
- Provide Rust wrappers for threads, mutexes, semaphores, message queues, memory, time, and files, with application, component, and dynamic module examples. (#10910)
- Add procedural macros for initialization and command registration; improve target, feature, linker flag, and build failure handling. (#10910) (#11584)
- Allow Rust module example cleanup without the Python
tomlpackage by importing it only when building modules. (#11791)
-
Finsh
- Add the
consolecommand and fix thread stack usage display. (#11026) (#10897) - Fix prompt format string handling, command line overflow state, token bounds checks, and backtrace thread address validation. (#11307) (#11344) (#11564) (#11343)
- Fix
tail -nargument handling, root path handling, and default shell thread priority configuration. (#10977) (#11216) (#11141)
- Add the
-
FAL
-
Ulog and Utilities
- Fix asynchronous ulog wakeups and missed notifications. (#11183)
- Add a one-time warning for insufficient log line buffers and configurable FinSH/MSH command support. (#10948) (#10875)
- Add YMODEM multi-file reception and improve send loops and session cleanup. (#11370) (#11162)
- Fix RT-Link frame offset bounds and 64-bit build compatibility. (#11580) (#11018)
- Remove the obsolete vbus component. (#10863)
DM
- Core and Device Tree:
- Extend device model APIs, device probing, property access, and OFW support; enable OFW on Cortex-M targets. (#11028) (#11676) (#11004) (#11669)
- Set default clocks and pinctrl states during platform device probing and prevent duplicate device creation. (#11029) (#11052) (#11090)
- Fix device tree address translation and PCI resource enumeration. (#11677)
- Clock and Power:
- Rework the clock framework and extend regulator, power domain, reset, and power supply support. (#11029) (#11673) (#11674) (#11320) (#11318) (#11061)
- Add Dynamic Voltage and Frequency Scaling (DVFS), including CPU and device frequency management. (#11488)
- Add ARM SCMI firmware integration, common machine power interfaces, and power control shell helpers. (#11069) (#11053) (#11301)
- Improve thermal cooling support. (#11649)
- DMA, Interrupts, and PCI:
- Extend DMA controller support and DMA address handling; fix controller initialization and transfer configuration. (#10987) (#11678)
- Fix PCI MSI setup, interrupt lookup bounds, and GICv3 ITS cleanup. (#11561) (#11573) (#11637)
- Route NVIC interrupts through trap handlers and Cortex-M resets through the power framework. (#11669)
- Add hardware spinlock and hardware cache controller support. (#11030) (#11049)
- Storage:
- Add UFS and DesignWare AHCI support, common MTD drivers, NVMEM support, and SFUD integration. (#11302) (#11642) (#11002) (#11032) (#11008)
- Extend SDHCI/SDIO device model support and add parallel I/O configuration for SCSI hosts. (#11078) (#11684) (#11063)
- Use DMA addresses for NVMe device access. (#11650)
- VirtIO and Virtualization:
- Add VirtIO 1.2 support, packed queues, MMIO/PCI transports, and DMA synchronization. (#11232)
- Update VirtIO network, block, console, input, and GPU drivers; add 9P, crypto, RNG, SCMI, and SCSI drivers. (#11232)
- Add QEMU firmware configuration, inter-VM shared memory, and the QEMU EDU PCI device. (#11232) (#11645) (#10995)
- Networking:
- Graphics, Audio, and Input:
- Extend framebuffer and display support, add the ILI9486 SPI LCD driver, and support Intel HDA audio. (#11047) (#11651) (#11536) (#11232)
- Add input framework drivers for ADC joysticks, keyboards, and touchscreens. (#11679)
- Extend physical interface support with generic USB PHY handling and MIPI D-PHY timing helpers. (#10997) (#11675)
- Other Subsystems:
Libcpu
- AArch64:
- Cortex-A:
- Cortex-M:
- Add Cortex-M4 interrupt context helpers and allow Cortex-M33 interrupt enable/disable APIs to be overridden. (#11316) (#11401)
- Fix Cortex-M33 assembly architecture selection, Cortex-M4 IAR builds, and Cortex-M7 alignment. (#10879) (#11422) (#11250)
- Correct MPU region validation on Cortex-M33 and Cortex-M7. (#11311)
- Cortex-R52:
- Prevent duplicate FSP interrupt dispatch on Renesas RZ/N2L and correct FIQ interrupt ID handling and acknowledgement. (#11765)
- RISC-V:
- Add SMP support for QEMU virt64 and XuanTie C/R series processors. (#11015) (#11267)
- Add XuanTie C908X processor support. (#11219)
- Add C908 Svpbmt support and correct C906/C908 cacheability and page table attributes. (#11227) (#11229) (#11592)
- Fix PLIC interrupt processing order. (#11305)
- Allow MCU interrupt counts and the common shutdown implementation to be overridden. (#11038) (#11100)
- Other Architectures:
Tools
- Improve VS Code compilation database handling. (#11138)
- Fix CMake generation and SCons macro value handling; improve deterministic project output. (#11149) (#11127) (#11107)
- Fix Eclipse project naming and Xmake target generation. (#11179) (#10971)
- Preserve SCons include path precedence when generating Keil projects and remove duplicate paths without reordering them. (#11741)
- Adapt Zig build scripts to Zig 0.14 and later, and report Unicode dash mistakes in command options. (#11409) (#11386)
- Support Env shared package paths and improve BSP distribution builds and build output placement. (#11603) (#11419) (#11630) (#11514)
Action
- Trigger BSP builds on matrix updates, reduce duplicate attach-configuration builds, and improve build failure detection. (#11474) (#11439)
- Add ArmClang BSP build coverage and verify distributed BSP packages. (#11577) (#11419)
- Add SMP automatic tests and expand the kernel CI test matrix. (#10953) (#11335)
- Detect assertions in QEMU test output and consolidate utest CI configuration under
.github. (#11520) (#11467) - Add MemBrowse integration for memory usage reports and refine target filtering and skipped-target reporting. (#11478) (#11518) (#11578)
- Use clang-format for format checks and exclude generated BSP configuration headers. (#11582) (#11613)
- Improve PR format checking and fix expression injection in the PR format workflow. (#11628) (commit f78bef1207)
- Add issue automation and fix assignment for external contributors. (#11661) (#11666)
Documents
- Add Doxygen API documentation for the DMA subsystem. (#11477)
- Add clock time and device model subsystem documentation and update the device driver index. (#11111) (#11411)
- Add Rust setup, application, component, macro, and dynamic module documentation in English and Chinese. (#10910) (#11056)
- Document AArch64 SMP startup and update BSP driver support summaries, STM32 BSP templates, and porting guides. (#11057) (#10925) (#11540) (#11189)
- Update contribution guides and fix Chinese text display in Doxygen documentation. (#11602) (#11498)
Utest
- Reorganize utest configuration and move MM, LWP, and TMPFS test cases alongside their corresponding subsystems. (#11467)
- Add pin loopback and SPI tests. (#11445) (#11549)
- Add AF_UNIX tests for socket nodes, local IPC, polling, namespace cleanup, and descriptor passing. (#11681)
- Expand object stress and error-path tests and stabilize SMP affinity, preemption, and atomic operation tests. (#10961) (#11496) (#10956) (#11012) (#11016)
- Fix repeated test execution leaks, hook list reinitialization, and initialization failure summaries. (#10905) (#10907) (#11521) (#11508)
- Enforce a minimum console buffer size of 256 bytes when utest is enabled. (#11746)
- Add standardized test documentation describing configuration, prerequisites, expected behavior, and cleanup. (#10985) (#11051) (#10924) (#11274) (#10975)
BSP
- STM32:
- Add STM32F407 MICU, STM32H723 LXB Disco, and STM32H723 DM-MC02 BSPs. (#10912) (#10842) (#11450)
- Add ADC V2 support, shared DMA helpers, hardware I2C polling/interrupt/DMA paths, and SPI interrupt transfer support. (#11440) (#11346) (#11255) (#11368)
- Improve CAN filtering, FIFO draining, and STM32H7 CAN-FD data rates. (#11117) (#11165) (#11257)
- Fix I2C/SPI asynchronous completion, DMA receive and timeout handling, RTC subsecond conversion, and SDMMC timeout and clock divider handling. (#11470) (#11473) (#11258) (#11167) (#11251)
- Add GPIO/EXTI device model drivers and extend USB, sensor, storage, and RTduino configurations. (#11669) (#11463) (#11097) (#11081) (#11405)
- GD32:
- Add GD32405RG and GD32VW553H-EVAL BSPs. (#11221) (#11050)
- Add GD32VW553 UART, Wi-Fi, hardware I2C, SPI, ADC, PWM, timer, and watchdog support. (#11147) (#11175) (#11151) (#11192) (#11235) (#11155) (#11157) (#11181)
- Extend GD32F5/H7 serial and GPIO support and fix PWM channel validation. (#10840) (#10981) (#11547)
- Fix duplicate compilation of lwIP
mem.con GD32VW55x and add PWM CI configurations. (#11632) (#11547)
- NXP:
- Add FRDM-MCXA366, FRDM-i.MX91, and i.MX RT1180 EVK Cortex-M33/M7 BSPs. (#11243) (#10570) (#11393)
- Add RT1180 multicore startup, RPMsg-Lite, HyperRAM/HyperFlash, QSPI filesystems, CherryUSB, NETC, and EtherCAT integration. (#11672)
- Add RT1180 I2C DMA, CAN, SPI DMA, DWT, RTC, and SDIO drivers. (#11715)
- Extend MCXA346/MCXA366 CAN, SLCD, USB, and RTduino support. (#11082) (#11243) (#11608) (#11381) (#11067) (#11594)
- Renesas:
- Add EK-RA6W1 and RA8P1 Titan BSPs. (#11670) (#11000)
- Add RA8P1 Titan Cortex-M85/M33 projects and GPIO/external interrupt device model drivers. (#11621) (#11669)
- Extend RA6W1 peripheral support and improve Renesas MDK project setup. (#11691) (#11583)
- Fix LCD framebuffer bounds and GPIO pin name validation. (#11572) (#11568)
- Fix RA8D1 Vision Board Keil flash download settings and update its compiler and device pack configuration. (#11742)
- Keep SPI runtime configuration in writable storage, reopen devices to apply changes, and honor disabled or active-high chip selects in SPI and SCI SPI. (#11745)
- Fix SCI SPI bitrate calculation, configuration lifetime, data width units, and mode handling; stop transfers and clear state after timeouts or errors. (#11792)
- Trigger SDHI card detection after host initialization on R7FA8M85. (#11757)
- Support configurable CAN FD arbitration and data rates, correct DLC conversion and FD/BRS flags, and fix interrupt control and receive handling. (#11751)
- Read PWM period and pulse width from GPT registers using the runtime timer frequency, including 0% and 100% duty cycles. (#11753)
- XuanTie:
- Rockchip:
- Raspberry Pi:
- Other Added or Updated BSPs:
- HC32: Add HC32F4A2 and HC32F467 evaluation boards. (#11618)
- HPMicro: Fix Ethernet receive buffer clearing. (#11581)
- N32: Add N32H760, N32H497, and N32H487 boards; extend H47x/H49x/H7xx, LCDC, SDRAM, PWM, and USB support. (#11159) (#11627) (#11711) (#11682) (#11236) (#11616)
- Novosense: Add NS800RT7P65 NSSinePad with GPIO, serial, ADC, SPI, QSPI, I2C, CAN, RTC, timers, EPWM, and watchdog drivers. (#11382) (#11465) (#11423) (#11437) (#11427) (#11449) (#11537) (#11395) (#11506) (#11451)
- FT32: Add FT32F407XE Starter. (#11130)
- RDK: Add the S100 BSP. (#11406)
- K230: Add SPI, I2C DMA, and GNNE support. (#10917) (#10973) (#11092)
- QEMU and ZynqMP: Expand AArch64 device model support, enable RISC-V SMP, and add MACB integration for ZynqMP A53 under QEMU. (#11232) (#11239) (#11015) (#11709)
- x86: Add i686 GCC 15.2.0 and picolibc options. (#11388) (#11394)
- Other Drivers: Fix CVITEK clock and I2C handling, Phytium QSPI initialization, and Nuvoton/Loongson CAN receive length validation. (#11333) (#11324) (#11570) (#11725) (#11706)
- BSP Organization and Packaging:
- Move the STM32L1 vendor driver library into packages. (#11390)
- Reorganize MM32, N32, and ESP32-C3 layouts, normalize
librariesdirectory names, and support shared Env package paths. (#11408) (#11159) (#11416) (#11654) (#11603) - Simplify MCXA366, i.MX RT1180, and NS800 default BSP configurations and extend peripheral coverage through CI attach configurations. (#11703) (#11629) (#11537)