来源:OSCHINA 时间:2023-04-14 08:15:57
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特性展开讲解。
新增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-Smart或Smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间(32 位系统上是 4G 的独立地址空间)。以下是5.0.0版本上Smart部分的详细说明/使用说明:
支持Smart开发的BSP列表:
qemu-vexpress-a9 qemu-virt64-aarch64 qemu-virt64-riscv raspberry-pi imx6ull-100ask-smart imx6ull-artpi-smart打开RT-Thread源码,在支持Smart的BSP路径下打开Env,配置Smart特性,使能“RT-Thread Kernel → Enable RT-Thread Smart(microkernel onkernel/userland)”:
Smart用户态应用功能
Smart用户态应用与内核相互独立,并不存在于rt-thread源码中,用户态应用功能如下:
支持基本应用加载 支持 POSIX PSE51 标准接口 支持外设 支持网络功能 支持 RT-Thread 原生接口 支持GNU 应用用户态应用位于https://github.com/RT-Thread/userapps,如下是应用示例:
在 userapps 目录下使用 scons 编译,编译顺利的话,将在 root 文件夹中得到一系列可执行 elf 文件,如下图所示,这是userapps下的多个用户态应用示例编译生成的可执行文件。
在 userapps\tools\fatdisk 目录下有一个打包 FAT 格式文件的工具 fatdisk.exe,我们可以利用这个工具将我们要存储到 QEMU SD 卡里的文件打包成 sd.bin 文件。
将 userapps 下的 root 目录复制到 env\tools\fatdisk 目录下,双击执行fatdisk.exe生成新的sd.bin文件。
RT-Thread Smart插件的诞生方便了Smart应用的开发。打开VSCode,在扩展中搜索“rt-thread smart”,点击安装即可获得Smart插件。
smart插件SDK管理界面如下
打开某个应用,对应该进行编译安装。
Smart工具链下载
Smart工具链中
方法一:在userapps/tools 路径下使用命令下载:python get_toolchain.py [platform]
方法二:在Smart插件中点击“安装工具链”。
Smart对POSIX接口有较好的支持,所以移植GNU应用到Smart上就变得简单。
方法一:手动增添一个应用工程,在应用工程中加入GNU应用。
方法二:使用RT-Thread Smart插件直接创建应用工程,加入GNU应用。
更多详情可查看更新说明。