RTOS版本更新录(202x)
2024-09-18 09:35:43 阿炯

实时操作系统(RTOS)是底层软件的重要组成部分。其不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件。RT-Thread Studio 是一站式的 RT-Thread 开发工具,通过简单易用的图形化配置系统以及丰富的软件包和组件资源,让物联网开发变得简单和高效。本文系从RT-Thread的产品主页分离出来的,专门用于该软件的更新记录,截止到2029年12月31日。

RT-Thread Studio v2.0 已于2020年12月中旬发布,这是一个大版本更新,带来了许多重磅的新功能以及新特性。

1.集成PlatformIO生态系统
PlatformIO是一个集成了极其丰富资源的嵌入式开发生态系统,现在通过Studio新建工程向导,新的“通用工程”类型入口,选择基于PlatformIO创建工程,就可以无缝进行相关代码编辑,工程构建,程序下载,调试等开发工作。PlatformIO目前支持的41个平台,23个框架,924个开发板,222个例程,10595个库资源在RT-Thread Studio里均可选择和使用(PlatformIO资源包安装时间需要几分钟,需要耐心等待)。

2.ART-Pi SDK更新
新的SDK更新包V1.1.0实现了许多新功能。在Studio的SDK Manager里安装ART-Pi V1.1.0新版资源包后,在新建工程时注意选择V1.1.0版本即可采用新版本。关于ART-Pi更多资料和教程可以访问ART-Pi官方站点获取。

ART-Pi V1.1.0 SDK更新的主要特性如下:
增加 网络音乐播放器 的工程(使用柿饼GUI)
增加 柿饼GUI lib,FTP lib,TOUCHGFX lib
增加 TOUCHGFX适配不同分辨率的屏幕
增加 摄像头OV2640驱动,配置引脚即可使用
增加 RTC支持,FDCAN驱动,USB HOST驱动(目前支持读写U盘)
增加 SPI FLASH下载算法
增加 多媒体和工控扩展板的图纸,常见问题解答文档
完善 USB Device驱动
完善 代码贡献手册
更新 PIN框架
更新 ETH驱动,使用工业扩展板,通过Studio一键开启以太网
修正 SDRAM初始化时间过长的问题
修正 BT_STACK中放开宏ENABLE_LOG_INFO时编译错误的问题
修正 未开启SPI FLASH FS时编译报错的问题
修正 MPU设置的片外FLASH容量错误的问题
修正 SD卡热插拔的问题

3.支持J-Link远程下载调试
本次更新根据需要提供了完善的远程下载和调试支持,只需要将J-Link连在远端机并启动远端的JLinkRemoteServer,然后在本机修改调试配置指定IP连接方式和IP地址即可远程操控”千里之外“的远端J-Link进行下载调试。

4.支持查看开发板详情
在Studio先前版本里,只有在创建工程的时候才可以浏览到开发板详情和开发板自带文档,创建完工程如果想再次去查找浏览一下开发板详情信息或者文档是很不方便的。现在基于开发板创建的工程,在工程内预留了一个开发板详情查看入口,随时想查看,双击它即可。

5.QEMU支持网络仿真
老版本Studio的QEMU仿真支持多种类型的开发板,并且支持VEXPRESS-A9的网络仿真,这次更新STM32F4的开发板也加入了QEMU网络仿真支持,使用者可以在没有STM32F4开发板的情况下进行网络功能仿真。

6.支持Rebuild构建
当需要先清理工程后再重新全量构建工程时,以前需要先后进行两步,现在只需要点击工具栏上Rebuild按钮即可一气呵成地完成整个清理和重新构建的过程。

以上是主要的更新亮点,更多功能细节的优化和完善请上手体验和发现!

升级指南
对于已经安装过Studio的用户,打开Studio即可自动检测并升级到V2.0.0版本,没有安装的可以到如下地址下载安装V2.0.0完整安装包(建议不要覆盖安装)。


最新版本:1.2
实现roadmap中提到的大部分内容
1,文档方面已完成《RT-Thread编程手册》,同时还有论坛上jiezhi童鞋的《一起来学RT-Thread系列连载教程》
2,BSP分支方面新增cortext-A8(beaglebone),cortext-R4(rm48x50),UNITY-2(SEP6200),lpc408x的移植
3,组件方面:
- 加入msh(类似linux shell的风格),能够直接执行应用程序
- 新增freemodbus 1.6.0的移植、Ymodem协议、使用lwIP 1.4.1
- 新增开源的嵌入式关系数据库SQLite 3.8.1的移植

最新版本:3.0
RT-Thread 3.0 针对物联网终端的高度碎片化和低资源占用要求,引入了专门的配置工具和包管理器,实现系统的高度可裁剪可定制;基于物联网的多样化通讯和连接方式,优化并支持丰富的 IoT 协议以及 WiFi、NB-IoT 等无线连接。此外,还支持主流的云服务,兼容 POSIX 标准。

最新版本:5.0
RT-Thread 5.0 现已2023年4月发布,该版本将 RT-Thread smart 分支合并到主分支上,后续将与主线版本一同维护;增加了 RT-Thread Smart 特性,支持用户模式;除此之外,还为增加了原子特性,对调度器文件进行功能拆分;在组件层面还新增 tmpfs 文件系统,增加 musl libc 支持并完善了 POSIX 的支持;在 bsp 层面,新增了约 40 + 个 bsp 等。官方公告从内核、组件、libcpu、bsp、tools 等几个方面对 5.0.0 的更新进行详细说明,并针对 Smart 特性展开讲解。

内核部分
增加 RT-Thread Smart 特性,支持用户模式应用(Smart 将展开说明)。
添加原子特性。
增加嵌套互斥功能。
增加 rt_ssize_t 数据结构。
为 rt_object 添加静态名称。
采用新版本宏定义版本控制规范。
将 scheduler.c 拆分。
修复了 AC6 编译器在 memheap 中的 Oz 优化问题
修复 rt_memset 与字大小无关的问题。
修改 RT_ALIGN_SIZE 默认为 8。

组件部分
添加 FDT (扁平设备树),TMPFS, CRomFS
Libc:增加 musl libc 支持与完善 Posix 支持。
LWP:
增加更多系统调用支持。
增加 mm (虚拟内存管理层) 特性,提高时钟精度。
网络:增加 AF_UNIX 特性。
驱动设备:
改进:传感器,spi, i2c,UART,can, usb, cpu_time, sdio, pwm 等。

libcpu
arm:cortex-a 恢复安全 MMU 初始化,cortex-m7 改变函数 rt_hw_cpu_dcache_ops 的返回类型为 rt_uint32_t 等。
risc-v:支持非缓存的普通内存,增加 rt_backtrace 函数等。
aarch64:增加 rt_backtrace 函数,当没有空闲页面时停止。

tools
提升的 ci 功能,添加 scons 命令:scons—exec-path=xxx, scons—exec-prefix=,scons—dist—target=xxx, scons—strict, scons—dist—project-path=xxxx,等。

bsp
增加了支持 smart 的 bsp:D1/D1s, raspberry, qemu-vexpress-a9, qemu-virt64-aarch64, qemu-virt64-riscv 等。
Renesas:ra6m3
Infineon PSoC6:062s2, 062s3-4343w, 062s4, 062-wifi-bt, 062-ble
nuvoton:numaker-iot-m467, numaker-m467hj, numaker-hmi-ma35d1
nxp:LPC55S16, LPC55S36, LPC55S06, LPC5528, LPC55S28
nrf5xxx:nrf5340
gd32:gd32470z-lckfb, GD32303C-START
apm32:
apm32f030r8-miniboard, apm32f051r8-evalboard, apm32f091vc-miniboard 等
n32:n32g43xcl-stb, n32g457qel-stb, n32g45xcl-stb 等
mm32:mm32f3270-100ask-pitaya
at32:at32f421-start, at32f425-start
stm32:stm32f723-st-disco
phytium:aarch32, aarch64
其他:core-v-cv32e40p, air32f103, YS-F1Pro 等等

RT-Thread Smart 说明
如果 RT-Thread 开启了 Smart 特性, 就变成了一个混合微内核操作系统,可以简称为 RT-Smart 或 Smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间(32 位系统上是 4G 的独立地址空间)。以下是 5.0.0 版本上 Smart 部分的详细说明/使用说明:
Smart 平台
支持 Smart 开发的 BSP 列表:
qemu-vexpress-a9
qemu-virt64-aarch64
qemu-virt64-riscv
raspberry-pi
imx6ull-100ask-smart
imx6ull-artpi-smart

Smart 特性使能
打开 RT-Thread 源码,在支持 Smart 的 BSP 路径下打开 Env,配置 Smart 特性,使能 “RT-Thread Kernel → Enable RT-Thread Smart(microkernel on kernel/userland)”:

Smart 用户态应用功能
用户态应用与内核相互独立,并不存在于 rt-thread 源码中,用户态应用功能如下:
支持基本应用加载
支持 POSIX PSE51 标准接口
支持外设、网络功能
支持 RT-Thread 原生接口
支持 GNU 应用

Smart 用户态应用工程示例

用户态应用位于此处,如下是应用示例:
编译应用:在 userapps 目录下使用 scons 编译,编译顺利的话,将在 root 文件夹中得到一系列可执行 elf 文件,如下图所示,这是 userapps 下的多个用户态应用示例编译生成的可执行文件。

制作 sd 卡:在 userapps\tools\fatdisk 目录下有一个打包 FAT 格式文件的工具 fatdisk.exe,我们可以利用这个工具将我们要存储到 QEMU SD 卡里的文件打包成 sd.bin 文件。将 userapps 下的 root 目录复制到 env\tools\fatdisk 目录下,双击执行 fatdisk.exe 生成新的 sd.bin 文件。

VSCode 插件:RT-Thread Smart 插件的诞生方便了 Smart 应用的开发。打开 VSCode,在扩展中搜索 “rt-thread smart”,点击安装即可获得 Smart 插件。

更多详情可查看主页更新说明。

v5.2.0已于2025年3月下旬正式发布,此版本不仅是内核技术的重大升级,更标志着生态扩展、开发者支持与社区协作的全方位提升。以下是本次更新的详细内容与相关公布信息:

1、核心亮点:重新定义实时性与效率
原子操作与低功耗优化
a. 支持动态 Tick 补偿,通过 rt_tick 设置任意值功能,实现休眠唤醒后系统时钟的智能校准,典型场景下功耗显著降低 ,尤其适用于电池供电的 IoT 终端设备。
b. 提升原子操作优先级,通过 RT_USING_STDC_ATOMIC 优先使用标准库实现,增强多核场景下的数据一致性。
c. 全新 rt_completion 无锁算法,定时器分辨率提升约 12%,显著提高并发场景下的响应效率,显著优化传感器数据采集与实时控制场景。

多核(SMP)架构升级
a. 新增非阻塞式 smp_ipi_call 函数,支持多核间异步任务分发。
b. 移除冗余内存操作与锁竞争,多核实时任务吞吐量显著优化。

内存与资源管理
a. 修复 SLAB 内存管理器在 memcheck 和 memtrace 中的异常调用问题,增强内存泄漏检测能力。
b. 在 smart 模式下启用 “回收线程 “以修复线程挂起的 bug。

新 API 与配置选项
a. 新增 rt_hw_cpu_id () 接口,简化多核环境下 CPU 核心标识获取。
b. 分离 klibc 的 Kconfig 配置,新增 RT_USING_CI_ACTION 选项,支持更灵活的构建配置。

工具链与编译支持
a. 引入 kerrno.h、kstring.h 和 kstdio.h 标准化头文件,提升代码兼容性。
b. 支持 rt_packed 属性,优化结构体内存对齐效率。

代码健壮性优化
a. 强化线程创建时的参数校验,防止非法时间片参数导致的系统异常。
b. 修复 rt_exit_critical_safe 返回值误用问题,确保临界区保护逻辑可靠。

调试与诊断新利器
a. 新增 CPU/线程使用率统计,支持动态生成资源占用热力图,助力快速定位性能瓶颈。
b. 引入 rt_interrupt_context 系列接口,规范中断嵌套层级变量类型,提升中断处理鲁棒性。
c. 增强回溯服务,优化异常日志输出格式,支持嵌套中断上下文记录。

2、关键模块升级
驱动生态全面增强
a. 修复 virtio 网络接收错误,提升虚拟化场景稳定性。
b. 传感器框架新增电源检测类型、传感器设备查找功能,同步 sensor_v1 的更改、修复 sensor v2 首次探测传感器设备时发生的错误。
c. USB 协议栈重构,CherryUSB v1.4.3 全面替换旧协议栈。
d. SPI/QSPI 稳定性提升,修复死锁与配置异常、修复 spi 配置会执行两次的问题、使 CS 引脚配置在系统中固定、统一软件 SPI 配置、spi 设备驱动框架添加引脚初始化功能。
e. CAN 总线安全加固,修复内存溢出与中断竞争问题。

网络协议栈进化
a. AT 组件重大更新,支持 SERIAL_V2,优化大数据传输稳定性,修复 at 套接字信号量释放异常。
b. LwIP 增强,新增多设备独立 DNS 服务,新增以太网协议钩子函数,支持定制化网络协议扩展。
c. 套接字功能扩展,新增 SIOCGIFINDEX 命令与 ifindex 路由配置,强化网络设备管理能力。

文件系统与存储革新
a. DFS v1 修复 ISO9660 构建、修复 cat 命令以输出实际长度。
b. DFS v2 重磅升级,新增 procfs 支持,实时监控系统资源;修复 cromfs 内存越界,优化嵌入式只读文件系统性能;支持 pwrite/pread,提升数据库类应用效率。
c. SDIO 驱动增强,支持 HS400 模式 与 UHS-I 高速传输,修复 ART-PI smart 无法读取 emmc/sd 分区的问题。

开发工具链更新
a. DM 2.0 设备模型支持 ATA AHCI、reset controller、 hardware mailbox、PHY (外部)、SCSI 总线、DMA 管理、 IIO (工业 I/O)、PCI/PCIe,支持 milkv-duo rt-smart,新增通用 sdhci 驱动,支持 pio&&sdma,新增 PWM cool fan,新增支持 AMP 模式 ,新增支持 AMP 中的 PIC mailbox。
b. Finsh 调试增强,新增线程绑核命令、控制台动态切换,调试效率翻倍;
c. POSIX 兼容性提升,修复 C++11 thread_local 析构顺序问题,优化 aio/mmap 接口,加速跨平台应用迁移。

3、优化内核架构
AArch64 架构性能突破
a. 优化高地址内存映射(>1GB),修复未映射漏洞。
b. 修复 rt_hw_secondary_cpu_bsp_start () 多核启动逻辑,支持动态栈切换。
c. 原子操作重构:采用高效内存屏障策略。

Arm Cortex-M 实时性增强
a. 硬件线程支持,新增独立中断管理 API,允许定制化中断策略。
b. C11 原子自旋锁,减少锁竞争开销。
c. Cortex-M7 优化,启用硬件原子操作。

RISC-V 生态全面升级
a. 统一代码架构,整合 RV64/32 启动流程,修复信号处理栈错误,修复回溯中的参数传递问题,适配 common64。
b. MMU 强化,支持 ARCH_REMAP_KERNEL,修复 ASID 兼容性问题,助力高安全场景。
c. 向量计算支持,新增 RISC-V 向量指令集基础框架,为 AI 边缘计算铺路。

4、生态扩展:更广泛的硬件支持
新增硬件 bsp 支持
STM32:STM32H730、stm32h723-st-nucleo、stm32f407-lckfb-skystar、 stm32h7s7-st-disco、FK407M2-ZGT6。
Infineon:XMC7200。
HT32:ht32f53252。
HC32:lckfb-hc32f4a0-lqfp100。
MM32f526x:mm32f526x。
GD32:gd32e503v-eval、d32h759i-start。
Renesas:ra6e2-fpb、RZN2L-RSK、RZT2M-RSK、EtherKit。
Canaan:k230。
HPMicro:hpm6800evk、hpm6e00evk。

5、开发者体验:工具链全面进化
构建系统优化
a. 移除本地 kconfiglib,改用 pip install 一键安装,依赖管理更干净。
b. 新增 requirements.txt,Python 环境配置透明化,杜绝版本冲突。
c. 从 rtconfig.py 动态获取参数,减少冗余配置。

开发者工具增强
a. 新增 compile_commands.json 生成,修复 scons --target=iar --dist 命令。
b. 新增 clang-format 配置,支持一键代码格式化,统一团队风格。
c. 新增 install_env 脚本,5 分钟完成开发环境搭建,优化 env 工具链路径解析。

前沿技术适配
a. 语言支持扩展,新增 Zig 目标支持,支持 C++ 更多源文件类型。
b. 使用 pkgs --update-force 强制更新,依赖锁定更精准;设置 at_device 为严格模式,确保外设驱动稳定性。

6、Action
CI/CD 效率飞跃
a. 新增多项 BSP 至自动化构建流水线(bsp_buildings.yml)。
b. CI Runner 迁移至 Ubuntu 22.04,支持最新工具链与安全补丁。

代码质量守护者
a. 新增 Cppcheck 深度集成,支持错误摘要与项目级扫描。
b. 支持 auto_utest 脚本,单元测试部署实时反馈。

7、文档更新:让学习更容易
Doxygen 优化
a. 为组和页面名称添加前缀,创建框架以统一 markdown 和源代码部分。
b. 介绍如何在 Ubuntu 上构建和运行 doxygen。
c. 为 doxygen 新增 pwm、touch、can、i2c、spi、pin、dac、rtc、adc 驱动示例。

嵌入式开发实战指南
a. 更新 STM32 BSP 制作教程。
b. 图解 SLAB 与 MEMPOOL 差异,新增碎片化治理实战案例。

8、单元测试
测试覆盖率飞跃
a. 新增 rt_memcpy、rt_memset、rt_memcmp 边界测试用例,覆盖 零拷贝、越界访问、异常对齐 等严苛场景。
b. 新增 SMP 调度压力测试、workqueue 异步任务稳定性验证,确保多核并发场景零死角。
c. 新增 uassert_float_equal 与 uassert_float_not_equal,支持浮点误差阈值配置,满足高精度控制需求。

测试框架增强
a. 新增 uassert_ptr_equal、uassert_ptr_not_equal,修复嵌套宏输出问题。
b. 移除线程测试冗余延迟,修复互斥锁竞争条件并新增递归锁测试案例。