RT-Thread v5.1.0 发布

RT-Thread5.1.0版本发布了,包含了kernel模块的改进如kservice、内存管理优化、驱动支持增强、IPC接口调整、工具链更新以及对多种平台的支持。此外,还列出了众多贡献者名单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RT-Thread 5.1.0版本正式发布啦~!我们一起来看看它都有什么新功能、新特性吧!

➢ RT-Thread 代码仓库地址:

https://github.com/RT-Thread/rt-thread

➢ RT-Thread 5.1.0发布版本:

https://github.com/RT-Thread/rt-thread/releases/tag/v5.1.0

Kernel

  • kservice:使用 C89 格式以避免警告;修复起始地址错位的问题;去除 malloc 大锁,修复 memheap 锁的错误使用;新增 MT-safe console 支持

  • rtdef:新增 rt_always_inline 操作函数

  • cpu:优化CPU调度器

  • thread:删除线程引用计数

  • rthw:新增 rt_hw_interrupt_uninstall 声明

  • 为 malloc 服务新增钩子函数;支持钩子列表(在单个钩子节点中新增多个钩子)

  • 优化系统调度器;完善 rt_vsnprintf

  • 自旋锁内禁止使用 free、malloc 等嵌套阻塞 IPC 接口

  • 重命名 RT_DEBUGING_INIT 为 RT_DEBUGING_AUTO_INIT

  • 定义标准 spinlock 需要关闭调度器,对外的 spinlock 全部使用关闭、打开调度器方式

  • 新增 RT_USING_NANO 宏,支持 BSP 一键切换到 Nano 版本

  • 新增删除线程时释放互斥锁的功能;新增对 rt_sem 进行控制配置以设置信号量的最大值的支持

  • 新增 RV64 RTOS 内核 backtrace 支持;新增 ARM64、RV64 实现;新增创建线程函数时间片参数检查

  • 新增 scons 编译后显示工程的占用空间信息 (#8697);新增调度程序(rt_sched)的抽象层,对SMP性能进行优化 (#8537)

  • 修复 SMP 模式软件定时器重复触发问题

  • 修复 rt_slist_for_each_entry 宏不能正常遍历 slist 链表中元素的问题

  • 修复线程无法回收的错误;修复在 SMP 模式下 rt_timer 里 timer check 与 timer start 重复获取自旋锁而死锁的问题

  • 修复软件定时器的休眠问题;修复 idle_hook_list 存在没有加锁的情况

  • 修复线程退出系统函数可能存在的问题;修复优先级相同时候只能调度两个线程的问题

  • 修复访问 percpu 对象的数据竞争问题;修复 rt_exit_critical_safe 函数错误返回问题

  • 修复 SIGNAL 节点分配失败返回错误问题

Component

  • Drivers

    • core:适配并优化新的设备驱动模型;修复部分设备驱动注册之后无法进入 probe 函数问题

    • usb:rt_size_t 遵循 UNIX 风格,修改为 rt_ssize_t

    •  virtio:qemu-virt64-aarch64 / qemu-virt64-riscv 支持 SDL2

    • i2c:新增通用软件模拟 I2C;新增设备树支持

    • spi:修复 qspi 配置未生效问题

    • sdio:新增 rt_mmcsd_fops_flush(block_dev) 函数

    • rtc:修复 rt_soft_rtc_sync 函数因使用已弃用的声明方式所引发的警告问题

    • clk:新增 clk 驱动框架,为全面使用设备树做准备

    • pwm:新增控制台二级命令补全功能

    • can:优化 can 关闭顺序 (#8780)

    • serial:

      • 增加使用 dm 时的 tty 名字分配机制,支持更多波特率;

      • 新增 tty 相关钩子函数;新增 serial 框架设备树支持;

      • 修复 serial_v2 内存泄漏问题;

      • 修复虚拟串口数据只能成功发送一次问题

    • pic:新增 pic-gic 支持

    • pinctrl:新增 pinctrl/pin-irqchip 支持

    • hwtimer:完善 Cortex®-a、ARMv8 驱动

  • DFS

    • 新增 exfat 配置;

    • dfs_v1:修复 FATFS 文件系统使用 cat 命令导致断言 bug

    • dfs_v2:

      • 更新 Smart 内核默认选中 dfsv2;更新 elmfat 版本由 r14b 为 r15

      • 支持 O_DIRECT 和 O_SYNC 标志

      •  修复 dfs_dentry_lookup 解析文件路径问题

      • 修复 dfs_tmpfs_write 中的错误 (#8672)

      • 修复 dfsv2 romfs dfs_romfs_getdents 缓冲区溢出问题

      • 修复 dfs_v2 dfs_file 中潜在的堆缓冲区溢出问题;修复 elm 的权限问题

      • 修复 page cache 问题;修复 mqueue 未挂载问题

      • 新增 dfs pwrite pread (#8672);新增 ptyfs支持 (#8672)

      • 新增符号链接、普通文件管理等特点 (#8672);新增 sys_utimensat 函数

      •  新增 cromfs 的符号链接(#8132);新增 cromfs 的 mmap 支持 (#8218)

      •  修复 dfs_v2 下传输 fd 时,dentry 或者 vnode 不存在时出现的问题

  • Libc

    • 修复 MDK 编译环境下 difftime 函数多重定义的问题

    • 修复共享计数器 ID 列表中的数据竞争问题

    • 修复 ctime.c 文件与旧的驱动程序的兼容性问题

    • 修复因工具链更新导致的 eventfd 中的宏重定义的问题

    • 修复 posix 线程本地存储寻找 posix 线程句柄时的逻辑错误

    • 修复无法获取 IAR 版本时会新增遗留宏的问题

    • 改进 gcc picolibc;进一步优化 epoll 和 timerfd

    • 新增 RT_USING_INTERNAL_LIBC_ONLY 宏

    • 新增 GCC 通用原子操作功能 (#8648)

  • LWP

    • 新增 sys_setitimer 函数

    • 替换 lwp_new 函数为 lwp_create

    • 替换 futex 中的 irq 禁用/启用代码

    • lwp_syscall.c 中替换 off_t 为 size_t

    • 修复 lwp_free 定时器回收调用问题;修复设置 CPU 亲和性问题

    • 修复 rt_channel 内部的锁问题;修复 pid 回收问题

    • 修复 init 进程信号保护标志设置 (#8797)

    • 使能开启 smart/lwp 选项后默认自动选择 LDSO 和 pcache 选项

    • 更新 AF_UNIX bind 与 connect 入口,更新 AF_UNIX 所使用数据结构 sockaddr_un 为标准结构

  • MM

    • 新增预留内存支持;新增 rt_aspace_mremap_range 函数实现

    • 修复 aspace_traversal 中的释放后使用的问题;修复 page_install 函数在 shadow region 上的问题

  • Net

    • 修复 wifi 扫描命令的重复问题 (#8666)

    • at:优化 at 格式化输出,避免多个 at client 和 server 输出冲突;优化 AT 组件,并修复可能存在的内存泄露问题

    • lwip:修复 SMP 下可能发生死锁的问题

    • sal:新增 ifconfig updown 功能;增加消息数量限制;更新 SAL 套接字抽象层,完善 socketpair、sendmsg、recvmsg 功能

  • Finsh

    •  优化 list_thread 显示;优化 MSH 宏定义

    •  新增 finsh 线程栈大小检查;新增 finsh 线程入口钩子函数

  • FAL

    • 为 fal 新增 blocks 机制,支持新增特殊的 block 定义

  • MProtect

    • 新增MPU抽象层设计,支持ARMv7-M,ARMv8-M 架构

  • 其他

    • 同步内核、文件系统等差异;移除 vmm

    • 修复  -Wmissing-prototypes 警告

Libcpu

  • AARCH64:修复内核入口符号;修复 ulog 环境下不能正常看到 trace 信息问题;使用设备树对 CPU 和内存进行初始化;提升 IRQ 禁用/启用的性能

  • ARM:新增 Cortex®-M85、Cortex®-R52 架构的支持;解决 Cortex®-A 开启SMP工作异常问题 (#8517)

  • RISC-V:修复 d1s smart build 失败的问题

  • 修复 mmap 支持

  • 支持 RT-Thread 内核中的整体 backtrace 框架;新增架构级 backtrace 服务的弱实现;新增 RV64 架构支持

  • 规范 Libcpu group 名为 libcpu

Tools

  • 支持工具链 LLVMEmbeddedToolchainForArm-17.0.1

  • 新增  scons --target=vsc/--pack=xxx 命令;新增 prebuilding 操作

  • 修复脚本中 MPU 的 rtconfig.h 文件识别问题

  • rt_studio:修复 rt-studio 导入 bsp 工程缺失 {cross_toolchain_flags} 字段问题

  • env:修复 env 内置 python2 subprocess 问题

action

  • 修复 Doxygen CI 问题

  • BSP 新增 CI 看护

  • 新增 bsp attach check CI

utest

  • 新增内存系统测试用例;补充串口设备框架 serial_v2 测试用例;新增 mm 测试用例;新增调度器测试用例

BSP

  • 完善若干 bsp 驱动文件;修复一些 bsp 存在的问题

  • RT-Smart 支持:DFZU2EG MPSoC、cv181x-riscv

  • STM32:STM32 G0、G4、L0、L4 系列支持一键开启切换 RT-Thread Nano 版本;STM32 Nucleo 系列增加板卡级识别宏;STM32 系列新增 Nano 版本 attach config 相关的 CI

  • RTduino支持:raspberry-pico 、stm32h503-st-nucleo、stm32h563-st-nucleo、stm32f412-nucleo、stm32f407-rt-spark

  • 新增一些新的 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

  • 修复用户态在获取当前时间之后,调用到内核态再次获取当前时间,两边差值为负数,定时器不会运行的问题

  • 在使用 RT-Smart 的情况下默认开启 epoll/eventfd/signalfd/timerfd/select

  • 移除 prebuilt 版本

  • 修复 setitimer 缺陷,完善 FUTEX 支持

  • 新增对 RT-Smart 终端子系统的支持 (#8672)

  • 其他更新:ssh,sftp,weston,vim…

贡献者列表

非常感谢 0BitBiscuits,1ridic,Abner,Bernard,BetMul,BreederBai,CoderNotCute,Dyyt587,Eric,Evlers,Frogrey,Fu,GSunwinder,Jamie,Jiabing,Jiangrunnan,Jingbao,Jisheng,LZerro,LaterComer,Liu,LiuLingze,Macro,Meco,QTbin,Raman,Rbb666,RiceChen,Robin,RoboSchmied,Ruixuan,ShaquilleLiu,Shell,Shicheng,StackYuan,Supper,TamapChn,Ting,Troy,WCX,Wangzongqiang,Wat,Wind,XYZ,Xian,Xiang.Lin,Yaochenger,Yilin,Yuqiang,Z8MAN8,Zhang,a1012112796,atwww,bernard,chinky,exxfire,fangjianzhou,flyingcys,geniusgogo,guo,guotong,guozhanxin,heyuanjie87,hywing,idings,kk,kurisaW,liYangYang,liYony,lzh,mengplus,posfilu,qiujingbao,rcitachi,sheltonyu,shu-qian,skllii,skychen123,sp-cai,sulfurandcu,tangzz98,tianshnegming,vacabun,vandoul,wangqinglin,wcx1024979076,wdfk-prog,wirano,xhackerustc,xiao-mang add,xiaofan,xiunian,xqyjlj,yandld,yanghuang,yangpeng,yangpengya,yby,yuanzihao,zan319,zealsoftstudio,zhangyan,zhao maosheng,zhkag,zhugengyu,zmq,zmq810150896,zms123456,刘伟,杨熙,梁生,白熊,蒙蒙plus,褚仕成,阿基米东 ,对本次版本更新做出的贡献!

(以上贡献者列表为人工统计,难免会有疏漏。如有疏漏,还请私信公众号或留言!)

------------ END ------------

f00161ce01dc4e0e5daf16854526f59d.gif

●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

点击“阅读原文”查看更多分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值