Skip to content

RT-Thread v5.3.0 Released

Latest

Choose a tag to compare

@Rbb666 Rbb666 released this 10 Sep 10:05

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 %hh formatting for values from 0x80 to 0xff. (#10890) (#11210)

Components

  • Drivers

    • Clock Time:
      • Introduce clock_time with separate clock sources and clock events, high-resolution timers, boot-time helpers, and peripheral timer adapters. (#11111)
      • Replace the legacy ktime, cputime, and hwtimer implementations with clock_boottime, clock_hrtimer, and clock_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)
    • Serial:
      • Fix serial V2 zero-sized buffer handling and RX indication setup. (#11397) (#11539)
      • Add serial V2 RX DMA event mode control. (#11487)
      • Preserve stream mode when reopening serial devices and apply CRLF translation only in stream mode. (#11348) (#11162)
    • 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:
      • Fix transmission races and duplicate receive overflow accounting. (#10896) (#11184)
    • 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 i2cN to swi2cN; 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 SWITCH command macro to MMC_SWITCH. (#11690)
    • WLAN:
      • Add security mode definitions for WPA3, enterprise authentication, WAPI, OWE, and DPP. (#11695)
      • Fix Wi-Fi command handling when no device is bound to the requested mode. (#11696)
    • USB:
      • Update CherryUSB to v1.6.1 and improve BSP glue code and build integration. (#11362) (#11432)
      • Fix DWC2 host size checks and make CDC VCOM strings configurable. (#11160) (#11541)
    • IPC:
      • Fix recursive data queue locking on SMP. (#11643)
      • Make rt_ringbuffer_peek leave data in the buffer and validate pipe ioctl arguments. (#11214) (#11373)
  • 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 select timeouts 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

    • Support dynamic page management region sizes and stop page installation when physical address mapping fails. (#10989)
    • Support the memory mapping requirements of Cortex-M device model builds and exclude no-MMU ioremap implementations from MMU builds. (#11669)
  • Libc

    • Fix scheduling in pthread condition variable waits. (#11533)
    • Make mq_send block when the queue is full as required by POSIX. (#11197)
    • Fix date normalization and month overflow in mktime and timegm. (#11140) (#11720)
    • Fix dlopen lookup 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 lseek results. (#11119) (#11085) (#11088)
    • Fix resource leaks during filesystem mount, close, directory release, statfs, and utimensat; 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 fsync error 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 through SCM_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)
  • 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 toml package by importing it only when building modules. (#11791)
  • Finsh

    • Add the console command 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 -n argument handling, root path handling, and default shell thread priority configuration. (#10977) (#11216) (#11141)
  • FAL

    • Add configurable device name length and block count, and adapt character devices to DFS V2. (#11153) (#11112)
  • 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:
  • 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:
  • 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:
    • Add the Ethernet device model with MACB and DWMAC drivers, improve PHY V2 support, and add RTL8211F support. (#11641)
    • Add IEEE 1588 Precision Time Protocol (PTP) clock support. (#11481)
  • 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:
    • Correct TLB invalidation for kernel and user address spaces and preserve registers across calls. (#11500) (#11098)
    • Improve AArch64 device model and DVFS idle support. (#11072) (#11488)
  • Cortex-A:
    • Fix early MMU mapping alignment and FPU stack initialization. (#11126) (#10919)
  • 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:
    • Validate interrupt vectors on ARM7/ARM9 platforms and IA32 PIC controllers, and remove the obsolete realview-a8-vmm port. (#11310) (#11312) (#10863)

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:
  • GD32:
  • NXP:
  • 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:
    • Add XuanTie XiaoHui C908X platform support. (#11219)
    • Add SMP support for XuanTie C/R series processors. (#11267)
  • Rockchip:
    • Migrate BSPs to the device model, add RK3528 support, and extend RK3300/RK3500 platform configurations. (#11121) (#11300) (#11713)
    • Add DVFS and expand audio, display, Ethernet, PCIe, PHY, storage, crypto, and multimedia support. (#11488) (#11713)
  • Raspberry Pi:
    • Add Raspberry Pi 5 with BCM2712/RP1 device model support and update shared Raspberry Pi drivers. (#11712)
    • Separate RP2040/RP2350 BSP layouts and fix Pico SDK sub-build invocation. (#11435) (#11635)
  • Other Added or Updated BSPs:
  • BSP Organization and Packaging:
    • Move the STM32L1 vendor driver library into packages. (#11390)
    • Reorganize MM32, N32, and ESP32-C3 layouts, normalize libraries directory 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)