RT-Thread v5.1.0 发布

描述

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

NXPmcxn:frdm-mcxn947、mcxa:frdm-mcxa153

 

Userapps

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

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

移除 prebuilt 版本

修复 setitimer 缺陷,完善 FUTEX 支持

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

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分