Skip to content

RT-Thread v5.1.0 released

Latest
Compare
Choose a tag to compare
@Rbb666 Rbb666 released this 22 Apr 06:50

Change log since v5.0.2 release:

Kernel

  • kservice: Use C89 format to avoid warnings; Fix start address misalignment issue; Remove malloc scheduler lock, fix incorrect use of memheap lock; Add MT-safe console support
  • rtdef: Add rt_always_inline operation function
  • cpu: Optimize CPU scheduler
  • thread: Remove thread reference count
  • rthw: Add rt_hw_interrupt_uninstall declaration
  • Add hooks for malloc service; Support hook lists (add multiple hooks in a single hook node)
  • Optimize system scheduler; Improve rt_vsnprintf
  • Prohibit nested blocking IPC interfaces such as free, malloc inside spinlock
  • Rename RT_DEBUGING_INIT to RT_DEBUGING_AUTO_INIT
  • Define standard spinlock to require scheduler to be disabled, all external spinlocks use disable/enable scheduler mode
  • Add RT_USING_NANO macro, support BSP one-click switch to Nano version
  • Add functionality to release mutex locks when deleting threads
  • Add support for controlling configuration of rt_sem to set the maximum value of semaphore
  • Add RV64 RTOS kernel backtrace support; Add ARM64, RV64 implementations
  • Add thread creation function time slice parameter check
  • Add scons compilation to display project space usage information (#8697)
  • Add abstract layer of scheduler (rt_sched), optimize SMP performance (#8537)
  • Fix SMP mode software timer repeated triggering issue
  • Fix rt_slist_for_each_entry macro cannot traverse elements in slist linked list normally issue
  • Fix thread cannot be reclaimed error; Fix deadlock issue of repeatedly obtaining spinlock in SMP mode rt_timer timer check and timer start
  • Fix software timer sleep issue; Fix idle_hook_list not locked issue; Fix thread exit system function possible issue
  • Fix issue of only being able to schedule two threads with the same priority
  • Fix data race issue of accessing percpu object data; Fix rt_exit_critical_safe function error return issue
  • Fix SIGNAL node allocation failure return error issue

Component

  • Drivers
    • core: Adapt and optimize new device driver model; Fix issue where some device drivers could not enter the probe function after registration
    • usb: rt_size_t follows UNIX style, changed to rt_ssize_t
    • virtio: qemu-virt64-aarch64 / qemu-virt64-riscv support SDL2
    • i2c: Add generic software simulation I2C; Add device tree support
    • spi: Fix qspi configuration not taking effect issue
    • sdio: Add rt_mmcsd_fops_flush(block_dev) function
    • rtc: Fix rt_soft_rtc_sync function warning issue caused by using deprecated declaration method
    • clk: Add clk driver framework, preparing for full use of device tree
    • pwm: Add console secondary command completion feature
    • can: Optimize can close order (#8780)
    • serial: Add tty name allocation mechanism when using dm, support more baud rates; Add tty related hook functions; Add serial framework device tree support; Fix serial_v2 memory leak issue; Fix virtual serial port data can only be successfully sent once issue
    • pic: Add pic-gic support
    • pinctrl: Add pinctrl/pin-irqchip support
    • hwtimer: Improve Cortex®-a, ARMv8 driver
  • DFS
    • Add exfat configuration;
    • dfs_v1: Fix assertion bug caused by FATFS file system using cat command
    • dfs_v2:
      • Update Smart kernel to default dfsv2; Update elmfat version from r14b to r15
      • Support O_DIRECT and O_SYNC flags
      • Fix dfs_dentry_lookup resolving file path issue
      • Fix dfs_tmpfs_write error; Fix dfs_v2 dfs_romfs_getdents buffer overflow issue
      • Fix potential heap buffer overflow issue in dfs_v2 dfs_file
      • Fix transfer fd under dfs_v2, dentry or vnode not existing issue; Fix lwp_free timer recovery call issue
      • Fix permissions issue in elm; Fix page cache issue; Fix unmounted mqueue issue
      • Add dfs pwrite pread (#8672); Add ptyfs support (#8672)
      • Add symbolic link, regular file management and other features (#8672)
      • Add sys_utimensat function; Add cromfs symbolic link (#8132)
      • Add cromfs mmap support (#8218)
  • Libc
    • Fix difftime function multiple definitions issue in MDK compilation environment
    • Fix data race issue in shared counter ID list; Fix compatibility issue of ctime.c file with old drivers
    • Fix macro redefinition issue in eventfd due to toolchain update
    • Fix logic error in posix thread local storage search for posix thread handle
    • Fix issue of adding legacy macros when unable to get IAR version
    • Improve gcc picolibc; Further optimize epoll and timerfd
    • Add RT_USING_INTERNAL_LIBC_ONLY macro; Add GCC generic atomic operation functionality (#8648)
  • LWP
    • Add sys_setitimer function
    • Replace lwp_new function with lwp_create; Replace irq disable/enable code in futex; Replace off_t with size_t in lwp_syscall.c
    • Fix CPU affinity setting issue; Fix rt_channel internal lock issue; Fix pid recycling issue; Fix init process signal protection flag setting (#8797)
    • Enable automatic selection of LDSO and pcache options by default after enabling smart/lwp options
    • Update AF_UNIX bind and connect entry, update AF_UNIX data structure sockaddr_un to standard structure
  • MM
    • Add reserved memory support; Add rt_aspace_mremap_range function implementation
    • Fix issue of using released memory in aspace_traversal; Fix issue of page_install function on shadow region
  • Net
    • Fix wifi scan command duplication issue (#8666)
    • at: Optimize at formatting output to avoid conflicts between multiple at client and server outputs; Optimize AT component, and fix potential memory leak issue
    • lwip: Fix possible deadlock issue under SMP
    • sal: Add ifconfig updown function; Add message quantity limit; Update SAL socket abstraction layer, improve socketpair, sendmsg, recvmsg functionality
  • Finsh
    • Optimize list_thread display; Optimize MSH macro definition
    • Add finsh thread stack size check; Add finsh thread entry hook function
  • FAL
    • Add blocks mechanism for fal, support adding special block definitions
  • MProtect
    • Add MPU abstraction layer design, support ARMv7-M, ARMv8-M architecture
  • Others
    • Synchronize differences in kernel, file system, etc.; Remove vmm
    • Fix -Wmissing-prototypes warning

Libcpu

  • AARCH64: Fix kernel entry symbol; Fix trace information not visible issue under ulog environment; Use device tree to initialize CPU and memory; Improve IRQ disable/enable performance
  • ARM: Add support for Cortex®-M85, Cortex®-R52 architectures; Fix abnormal SMP operation issue in Cortex®-A (#8517)
  • RISC-V: Fix d1s smart build failure issue (#8212)
  • Fix mmap support
  • Support for the overall backtrace framework in the RT-Thread kernel; Added weak implementation of architecture-level backtrace service; Added support for RV64 architecture
  • Standardize the Libcpu group name as libcpu

Tools

  • Support for LLVMEmbeddedToolchainForArm-17.0.1 toolchain
  • Added scons --target=vsc/--pack=xxx command; Added prebuilding operation
  • Fixed rtconfig.h file recognition issue in MPU in scripts
  • rt_studio: Fixed missing {cross_toolchain_flags} field issue when importing bsp projects in rt-studio
  • env: Fixed built-in python2 subprocess issue

action

  • Fixed Doxygen CI issue
  • Added CI monitoring for BSP
  • Added bsp attach check CI

utest

  • Added memory system test cases; Added serial_v2 framework test cases; Added mm test cases; Added scheduler test cases

BSP

  • Improved several bsp driver files; Fixed some issues in bsp
  • RT-Smart support: DFZU2EG MPSoC, cv181x-riscv
  • STM32: STM32 G0, G4, L0, L4 series support one-click switch to RT-Thread Nano version; STM32 Nucleo series added board-level identification macros; STM32 series added Nano version attach config related CI
  • RTduino support: raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo, stm32f407-rt-spark
  • Added some new BSP:
    • Adafruit:Metro M4
    • Seeed Studio:Wio-Terminal
    • ST:stm32L431_tencentos、stm32h7s7-disco,stm32f407-lckfb-skystar、stm32h503-st-nucleo
    • Renesas:ek-ra8m1、ek-ra8d1、ra8d1-vision-board
    • AT32:at32f402-start、at32f405-start
    • HT32:ht32f52352、ht32f12366
    • AVR32:at32uc3a0256、at32uc3b0256
    • CVITEK: c906_little、cv18xx_risc-v
    • WCH:yd-ch32v307vct6(risc-v)
    • HC32:ev_hc32f4a0_lqfp176、ev_hc32f460_lqfp100_v2、ev_hc32f448_lqfp80
    • GD32:gd32407v-lckfb
    • NXP:
      • mcxn:frdm-mcxn947
      • mcxa:frdm-mcxa153

Userapps

  • Fixed issue where the timer would not run when the user space retrieves the current time and then retrieves it again in kernel space, resulting in a negative difference
  • Default enabling of epoll/eventfd/signalfd/timerfd/select when using RT-Smart
  • Removed prebuilt versions
  • Fixed setitimer bug, improved FUTEX support
  • Added support for RT-Smart terminal subsystem (#8672)
  • Other updates: ssh, sftp, weston, vim...