RT-Thread 5.0.0 发布


RT-Thread 5.0.0 现已发布,该版本将RT-Thread smart分支合并到主分支上,后续将与主线版本一同维护;即5.0.0版本增加了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添加静态名称(#6422)。
  • 采用新版本宏定义版本控制规范:https://semver.org
  • 将scheduler.c拆分(#7103)。
  • 修复了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

新增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 用户态应用功能

Smart用户态应用与内核相互独立,并不存在于rt-thread源码中,用户态应用功能如下:

  • 支持基本应用加载
  • 支持 POSIX PSE51 标准接口
  • 支持外设
  • 支持网络功能
  • 支持 RT-Thread 原生接口
  • 支持GNU 应用

Smart用户态应用工程示例

用户态应用位于https://github.com/RT-Thread/userapps,如下是应用示例:

编译应用

在 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文件。

Smart VSCode插件

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

smart插件SDK管理界面如下

打开某个应用,对应该进行编译安装。

Smart工具链下载

Smart工具链中

方法一:在userapps/tools 路径下使用命令下载:python get_toolchain.py [platform]

方法二:在Smart插件中点击“安装工具链”。

Smart运行GNU应用

Smart对POSIX接口有较好的支持,所以移植GNU应用到Smart上就变得简单。

方法一:手动增添一个应用工程,在应用工程中加入GNU应用。

方法二:使用RT-Thread Smart插件直接创建应用工程,加入GNU应用。

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


相關推薦

2022-06-13

义 系统抽象层 libposix: Win32/Linux/FreeRTOS/RT-Thread平台适配库   其他 libdebug: 调试辅助库 libhal: 硬件抽象层 libplugin: 动态加载库 libtime: 时间库 libfsm: 有限状态机   码云主

2022-09-24

Spring Batch 5.0.0-M6 和 4.3.7 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 Spring Batch 5.0.0-M6 的

2022-08-27

这个里程碑的主要主题是改善 Spring Batch 的测试支持。 测试工具配置更新 到 4.3 版本为止, JobLauncherTestUtils 用来自动连接被测 Job,目的是为了方便测试设置。但如果在测试上下文中定义了多个 Job 呢?如果根本就没有定义 Job b

2022-05-23

Spring Batch 发布了 4.3.6 和 5.0.0-M3,前者可从中央仓库获取,后者需要从 https://repo.spring.io/milestone 获取。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发

2022-07-26

Netty 5.0.0.Alpha4 已发布,此版本删除了大量重复代码,并对 API 进行了清理。除此之外还增加了在使用 JDK NIO 实现时,对 Unix Domain Socket 的支持。 主要变化 支持创建包含 ProtocolFamily 的所有 SocketChannel 和 DatagramChannel

2022-05-19

Redmine 4.2.6 和 5.0.1 已经发布。Redmine 是一个网页界面的项目管理与缺陷跟踪管理系统的自由及开放源代码软件工具。它集成了项目管理所需的各项功能:日历、燃尽图和甘特图以协助可视化表现项目与时间限制,问题跟踪和版本

2023-08-21

WePush 5.0.0 已发布,这是一个专注批量推送的小而美的工具。 更新内容如下: v5.0.0 新增任务机制 多账号模式 简化交互流程 UI调整,沉浸式窗口,优化macOS下体验 更多细节等你发现 该版本重构改动较大,未经充

2022-07-23

Spring Batch 5.0.0-M4 已发布,新版本在支持 Java Records 方面进行了部分改进,以及其他功能增强、错误修复、依赖升级和文档更新。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程

2022-11-22

在推出两个 Alpha 版本之后,OCaml 5.0.0 发布了首个 Beta 测试版。目前标准库已达到稳定状态,离正式版的发布越来越近。与上一个 alpha 相比,首个 Beta 版本包含许多小型的内部 runtime 修复补丁,尤其是在 systhreads 库中。 在用户

2022-10-06

Spring Batch 5.0.0-M7 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 Spring Batch 5.0.0-M7 的更新内

2022-10-13

Netty 5.0.0.Alpha5 已发布,此版本删除了大量重复代码,并对 API 进行了清理。除此之外还增加了在使用 JDK NIO 实现时,对 Unix Domain Socket 的支持。 主要变化 对AbstractChannel进行简化和流线化 (stream-lined),增加各种传输之间的共享

2022-07-12

Netty 5.0.0.Alpha3 已发布,这是一个重要的里程碑,此版本迁移了所有代码——以使用新的Buffer API,并完全移除ByteBuf。  主要变化 所有代码现在使用Buffer (新的 buffer API) 移除ChannelInboundHandler 移除Http2MultiplexCodec

2022-10-15

Spring Batch 5.0.0-M8 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 此版本包含两个主要变

2023-01-14

新的桌面界面 新的 App Center 界面 Wayland Endless OS 5 采用了新一代的 Wayland 显示服务器协议。 注意事项: 如果你在 VMWare 或 VirtualBox 虚拟机中使用 Endless OS,当 Endless OS 使用 Wayland 时,不支持在主机系统和 Endless OS 虚拟