RT-Thread 代码仓库地址:
● https://github.com/RT-Thread/rt-thread
RT-Thread 5.0.2 版本发布日志详情:
● https://github.com/RT-Thread/rt-thread/releases/tag/v5.0.2
RT-Thread 迎来了全新的版本 v5.0.2,自 v5.0.0 版本发布以来,内核和组件都经历了一系列令人激动的变化和改进。
以下是一些亮点和关键变更:
内核改进:
● 新增了AMP支持。
● 新增了消息队列的消息优先级。
● 新增了rt_hw_interrupt_is_disabled API ,用于检测是否关闭了中断;
● 新增了获取对象名称、线程名称的API。
● 完善了errno与 POSIX 兼容,提升兼容性。
● 完善了原子操作Atomic支持检测。
● 完善了device_open接口,避免重复调用。
● 移除了互斥锁中的递归,增强了稳定性。
● 合并了 DBG 头文件,去除冗余代码。
● 修改了rt_thread的结构,以明确继承rt_object。
● 修复了用户模式下 MQ 接收阻塞问题。
● 修复了thread.c中变量rt_err未初始化以及timer.c中类型转换错误( IAR )。
组件更新:
● lwp:
○ 增加了对 elf 具有添加的可执行权限检查的支持。
○ 支持了 IEEE Std 1003.1-2017 的信号更多特性。
○ 支持文件描述符传输。
○ 修复了内存泄漏问题,提高了稳定性。
○ 添加了更多的系统调用支持。
● libc
○ 适配 rt_channel, 增加 dfs v2 上部分 rt_channel 功能的通用性,以及标准化 signalfd。
○ 将 libc.c 重命名为 posix/stdio.c。
○ 添加 timerfd 系统调用功能。
○ 实现了轻量级时区配置;优化资源消耗。
○ 支持rt-thread CPP包装子开关宏,外部第三方 libc 软件包
○ 支持了picolibc 的heap。
○ 将sys/ioctl重定向头文件到bits/ioctl,改进 posix 接口消息队列。
● utilities
○ 移除 zmodem。
○ 支持可扩展的内存管理。
● dfs:
○ 升级设备文件系统(dfs)到v2版本,同时考虑到兼容也保留v1版本供Kconfig配置选择。
○ 完善fd关闭策略,避免潜在的内存泄漏问题。
○ 修复了 tmpfs 自旋锁错误,nfs 64位架构错误。
● mm:
○ 新增 unmap page API。
○ 改进了 list_page 的输出。
○ 添加了取消映射页面的 API,更好地管理内存。
○ 修复了lwp _load_script。
○ 修改了在 fork 子进程时,lwp_struct_copy函数添加了复制working_directory函数。
● finsh
○ 新增了 MSH 自动补齐子选项功能。
○ 修复了 Finsh 偏移在范围检查之前被使用的问题。
● Network
○ 添加了更多的钩子函数。
○ 修复了 ping 超时计算错误,ipv6 兼容性问题。
○ 修复了在lwip_ip4_route_src中找到 next-hop 的问题。
○ 修改了使用接口来设置默认的网络设备。
○ 优化了at_vprintfln和与网络相关的 Kconfig 。
驱动设备:
● 为 device driver v2.0 做好准备,带来更多的功能和性能提升。
● 添加了设备树子节点搜索宏,提升了设备管理的效率。
● 修复了串口有时重复发送回车符的问题,提升串口通信的稳定性。
● 修复了多线程中的 CPU 定时器问题,dtb 编译警告。
● 优化了 SPI 传输速度并修复了一些问题。
● 修改了 ADC 通道数据类型,并添加了内置通道通用编号识别。
● 修改了将当前传感器框架转回 v1 版本,并使其独立于 v2 。
● 修复了 Sensor-V1 中返回类型不一致的错误,重新定义 Sensor-V2 作为传感器框架。
● 修改了将 tty 的驱动程序更改为设备,并修复了多个 scanfs 导致数据丢失问题。
⚙️ Libcpu:
● 在riscv、arm、aarch64、arc等架构下进行了多项修复和优化,提高了性能和稳定性。
● 实现了用于 rt_hw_cpu_shutdown 的默认弱函数。
● 为aarch64、arm cortex-a、risc-v添加了 gdb 展开程序的 cfi 信息。
Tools:
● 支持了更多 BSP 的驱动程序编译,确保更广泛的硬件兼容性。
● 添加了 CI 流程,提高了项目的可维护性。
● 新增了llvm-arm 16.0 支持,并添加了 llvm-arm 工作流。
● 为file_check.py添加了过滤不需要cppcheck的文件的功能。
● 为 scons 添加了–add-rtconfig参数,用于在构建时添加宏定义。
● 修复了在 Keil-MDK 中无法选择 c99 和 gnu 选项的问题。
● 修复了4.5.0以上scons版本Env[‘CPPDEFINES’] deque 的问题。
Action:
● 添加了 CI 来编译更多已更改 BSP 的驱动程序,添加了 pkgs-test;添加了手动触发和失败 BSP 检查;为手动触发添加了更多配置。
● 添加了 repo 检查;添加了 code_owner 的审查请求;添加了 format 和静态检查的 paths-ignore。
● 为所有 STM32 添加了手动触发,添加了 exp_STM32 SCons。
● 重构和优化了 ci 的执行流程,并添加了手动触发和 cppcheck 检查以进行 scons dist 。
BSP:
新增了一些新的bsp:
● ST: stm32u585-iot02a, stm32f405zgtx, stm32h563-st-nucleo, stm32h563-st-nucleo, stm32f407-rt-spark, stm32f334-st-nucleo, stm32l496-st-discovery
● SOPHGO: cv1800b
● TI: msp432e401y-LaunchPad
● APM32: apm32e103ze-evalboard, apm32e103ze-tinyboard, apm32f030r8-miniboard
● AT32: at32f423-start
● Essemi: es32vf2264
● Imxrt: imxrt1061-forlinx-OK1061-S
● Renesas: ra6m3-hmi-board
● Yichip: yc3122-pos
● Bouffalo_lab: bl808/d0
修复了一些问题:
● 修复了在 VS2019 编译时在 bsp/simulator 中存在的原子易失性问题。
● 修复了所有drv_gpio.c中rt_pin_ops的不匹配函数类型。