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…
贡
全部0条评论
快来发表一下你的评论吧 !