5a0e9c9998ccb8c632bf6cd590538b6d.png

令人期待的RT-Thread 5.0.0版本今天终于跟大家正式见面啦~!我们一起来看看它都有什么新功能、新特性吧!

➢ RT-Thread 代码仓库地址:

https://github.com/RT-Thread/rt-thread

➢ RT-Thread 5.0.0发布版本:

https://github.com/RT-Thread/rt-thread/releases/tag/v5.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)”:

bd3617c34676118b4be3a5f284e27efb.png

Smart 用户态应用功能

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

● 支持基本应用加载

● 支持 POSIX PSE51 标准接口

● 支持外设

● 支持网络功能

● 支持 RT-Thread 原生接口

● 支持GNU 应用

Smart用户态应用工程示例

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

c4f9384c1ac89a555d1713a6c132623b.png

编译应用

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

008b75f75a892f74c4888120f2602d5b.png





制作sd卡

在 userapps\tools\fatdisk 目录下有一个打包 FAT 格式文件的工具 fatdisk.exe,我们可以利用这个工具将我们要存储到 QEMU SD 卡里的文件打包成 sd.bin 文件。

将 userapps 下的 root 目录复制到 env\tools\fatdisk 目录下,双击执行fatdisk.exe生成新的sd.bin文件。

5cd9bba46d175228111cb671e85af5d7.png

Smart VSCode插件

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

ca355355661cfc22b3a80f6502a7565b.png

smart插件SDK管理界面如下

4c88af204c56234bc4b4e9998166a799.png

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

11bd9a7a0eaeb5bd06a7f97074a9d465.png

Smart工具链下载

Smart工具链中

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

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

Smart运行GNU应用

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

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

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

贡献者列表

非常感谢ANDREW LI-Nordic, Alexey Brodkin, BreederBai, BruceOu, CaiYiming0503, Fan Yang, Frank Buss, Harrypotter-zhs, KurisaW, Lei Peng, Maihuanyi, Misthao, Moss, NU-LL, NationsHuanghanbin, SNOWA, ShaquilleLiu, Stanley Lwin, WCX, Wayne Lin, YangZhongQing, Yifan, Yifang, Ylne, Yohozzy, YuQi, Yunjie Gu, ZXY_LINUX, Zhang WenBin, Zxy, a1012112796, andrew li, betesla, bin, breederbai, bzrobotics, ccx-lan, chenbin182, chenhy0106, childerxxx, chinky, emuzit, fan.ji, flyingcys, goldengrandpa, hg0720, jonas, kylongmu, letian, lhylhylhy6, liYony, linshire, liyangyang, lpy, luobeihai, mingmiaojing, myshow2258, myshowtogo, self-confident neko, sheltonyu, slhuan, songw4232, spaceman, supperthomas, tangzz98, tuduweb, vandoul, wangfuan, wdfk-prog, winfenggao, xiao xie, xiaoguang_ma, xjy, xqyjlj, xuhonghao, yandld, yangfasheng, yuanzihao, zhaohaisheng, zhugengyu, zilong, 会飞的猪, 打盹的消防车, 杨熙, 梁生, 螺丝松掉的人, 褚仕成, 满鉴霆(Meco)等开发者 以及NXP、瑞萨、沁恒、新唐、国民技术、先辑、极海、小华、灵动微电子、雅特力、东软载波、博流智能、合宙、飞腾等公司 以及中科院软件所PLCT实验室对本次版本更新做出的贡献!

(以上贡献者列表为人工统计,难免会有疏漏。如有疏漏,还请私信公众号或留言!)

———————End———————

RT-Thread线下入门培训-4月场次 青岛、北京

1.免费 2.动手实验+理论 3.主办方免费提供开发板 4.自行携带电脑,及插线板用于笔记本电脑充电 5.参与者需要有C语言、单片机(ARM Cortex-M核)基础,请提前安装好RT-Thread Studio 开发环境

d48cbd2eb1c5ec9537f0fa01527df20a.png

立即扫码报名

报名链接

https://jinshuju.net/f/UYxS2k

巡回城市:青岛、北京、西安、成都、武汉、郑州、杭州、深圳、上海、南京

你可以添加微信:rtthread2020 为好友,注明:公司+姓名,拉进RT-Thread官方微信交流群!

2ec95d489c64375559e589e51b418412.gif

👊点击阅读原文,进入RT-Thread x IFX赛事官网

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐