0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

「社区开发者说」张诗淇:我的Rust构建RT-Thread安全组件项目之旅,献给所有开源社区的你

RT-Thread官方账号 2025-12-27 09:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

编者按:

每年,都有许多像张诗淇同学一样的开发者,走进RT-Thread社区,将一个想法变成代码,一段经历化为成长。他们的故事,是社区最宝贵的财富。今天,我们分享这篇充满真诚与技术思考的践行记,它不仅关于如何为RT-Thread添加Rust支持,更关于一个年轻开发者如何找到热爱的方向、克服挑战并感受到开源协作的力量。希望她的经历,能激励更多正在观望的你,加入我们的开源大家庭。2026年RT-Thread开发者大会将于1月17日开启,欢迎来与我们会面。(文末扫码报名)


关于我

我是中南大学计算机科学与技术专业的研一学生张诗淇。这段开源经历,恰好发生在我从本科大四毕业迈向研究生生涯的那个暑假。

回首本科时光,虽然我在信息安全专业课上投入了大量精力,但内心始终存有一种“悬浮感”。长期以来,我受困于书本理论与实际工程的脱节,鲜有机会参与真正的工业级项目开发,动手实践能力成了我明显的短板。 同时,在面临升学与就业的抉择时,我也曾一度陷入迷茫:我发现自己对本专业以及主流的深度学习兴趣寥寥,反而是对操作系统等与底层交互的技术情有独钟——这与当时身边大多数同学的选择并不完全一致。

第一次了解到开源活动,是早在大二看到身边同学参加开源之夏,当时的我十分羡慕他能够将学到的知识投入到实践中,也摩拳擦掌想要尝试一番,但是当时碍于学业以及自身的拖延纠结最后搁置了。在这个承上启下的假期,我决定不再犹豫,勇敢地尝试,终于有机会参与开源之夏的实践,并在此过程中,逐渐感受到开源的魅力。

3edc1720-e2c4-11f0-8ce9-92fbcf53809c.png

AI生成示意图,请注意分辨


项目实践

RT-Thread是国内以开源中立、 社区化发展起来的一款高可靠实时操作系统 。在物联网时代,嵌入式设备的功能日益复杂,对实时性、功耗和连接性的要求也越来越高,RT-Thread 实时性高、功耗低、占用资源小等特点,非常适用于各种资源受限的场合。而随着Rust语言在系统级开发中的广泛应用,社区也与时俱进地为RT-Thread嵌入式实时操作系统扩展Rust语言支持能力,探索Rust在嵌入式场景中实现内存安全与高性能并重的实践路径。经过暑期的开发,我成功搭建起完整的rust组件目录。

1. Rust到RT-Thread内核的系统调用安全绑定

undefined C 语言与 Rust 的交互基础在于 FFI(Foreign Function Interface)。为了让开发者能以“Rust 的方式”编写嵌入式应用,需要对 C 接口进行了 bindgen 映射,并进一步实现安全抽象。

我封装了包括线程管理、内存分配、内核模块加载等核心接口。通过 RAII(资源获取即初始化)机制,将 RT-Thread 的资源生命周期映射到 Rust 的所有权模型中,从而消除了手动释放内存的风险。

2. 动态模块加载与符号重定位

为了更符合 Rust 风格的使用,参考了 Rust 社区成熟的 libloading 库的设计模式,实现了 RAII 资源管理和类型安全的符号查找。

undefined 编写了 get_libfn! 过程宏。在嵌入式开发中,动态加载多个函数往往需要编写大量重复的样板代码。通过这个宏,开发者只需声明函数签名,即可自动完成打开库、查找符号、类型转换等一系列复杂操作,让动态调用的体验如同调用本地函数一样流畅。

// 一行代码即可完成动态库函数的安全加载get_libfn!( "libmath.so", // 库路径 "add", // 符号名 call_add, // 生成的调用函数名 i32, // 返回值类型 a: i32,b: i32 // 参数列表);

3. no_std 环境下的入口与段管理

undefined 在嵌入式裸机或内核态开发中,我们通常处于 no_std(无标准库)环境,这意味着无法直接使用标准的 main 函数。为了改善开发体验,我利用 Rust 强大的过程宏(Procedural Macros) 实现了代码重构。

undefined 通过过程宏生成符合 C ABI 的包装入口,以及必要的链接段条目,让 RT-Thread 能在启动期或命令扫描阶段发现并调用对应的 Rust 逻辑。

// 开发者只需添加属性宏,无需关心底层注册逻辑#[msh_cmd_export(name ="hello", desc ="say hello command")]fnmain(param: Param){ println!("Hello RT-Thread");}
// 宏展开后自动生成类似如下的 C ABI 结构并落段:// #[link_section = "FSymTab"]// static __hello_cmd_seg:...


踩坑与填坑

项目初期,导师引导我了解项目的愿景、开发背景和代码结构;当我在开发过程中遇到困难时,导师为我提供了很多实质性的建议和改进方向。印象最深的困难是我在ABI兼容性适配上屡屡碰壁——Rust的所有权机制与C语言的手动内存管理存在天然差异,首次尝试调用C内核的内存分配接口时,频繁出现内存泄漏与悬垂指针问题。连续一周的调试毫无进展,我甚至产生了退缩的念头。关键时刻多亏了我的导师,他没怪我进度慢,反而耐心地帮我分析了出错的原因,还分享了社区此前跨语言开发的经验;社区的前辈也热心地给我建议。在大家的帮助下,我重新梳理了接口封装逻辑,更换了工具链,最终攻克了这一难题。RT-Thread是一个充满开源精神的、热情的社区,这次经历让我明白,开源社区的价值不仅在于代码共享,更在于这种互助互鉴的技术氛围。


一点碎碎念

站在项目完成的节点回望,我更加坚信,Rust与RT-Thread的结合有着巨大的发展潜力。这种“互补”既降低了系统开发的门槛,又保留了高性能。未来,随着更多开发者参与进来,我们可以进一步扩展Rust组件的覆盖范围,甚至搭建起Rust专属的软件包生态。

对于下一届开源之夏的参赛者而言,除了RT-Thread社区,开源之夏总共加入了182个社区,囊括了AI、Linux和LLM等数十种技术领域。你可以可自主选择感兴趣的项目进行申请,将自己学到的知识投入应用实践,更能在开源社区中结识一群志同道合的伙伴。开源之夏就像一座桥梁,连接了高校学子与真实的工业级项目,让我们有机会将课堂知识转化为有价值的技术成果。不要害怕尝试,反正试试也没什么损失;不要惧怕困难,克服困难的过程才是我们一生受益的经历。


让改变发生,从加入我们开始

感谢诗淇同学的精彩分享!她的代码贡献已经合并到 RT-Thread主线仓库,持续为探索Rust在嵌入式领域的应用提供基础。

如果你也:

对RT-Thread、操作系统、嵌入式等技术充满好奇;

寻找一个热情、互助的技术交流家园;

渴望获取更多的实践经验...

RT-Thread社区欢迎你!扫码报名2026年1月17日上海开发者大会,与我们面对面交流↓

3ef8a480-e2c4-11f0-8ce9-92fbcf53809c.png添加小师弟微信↓,拉你进RT-Thread技术交流群,找到组织!

3f032d60-e2c4-11f0-8ce9-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    4329

    浏览量

    46430
  • RT-Thread
    +关注

    关注

    32

    文章

    1636

    浏览量

    45192
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    恩智浦亮相RT-Thread 20周年开发者大会

    日前,“开源向实·生产力进化启示录”全球峰会暨RT-Thread 20周年开发者大会在上海成功举办,恩智浦作为RT-Thread的紧密合作伙伴,在活动中重磅亮相,展示双方在共建
    的头像 发表于 01-26 09:07 733次阅读

    第一财经:RT-Thread二十周年开发者大会见证开源生产力变革|媒体视角

    根据第一财经对RT-Thread开发者大会的现场报道,本次盛会展现了开源技术从社区走向产业的完整路径。视频镜头捕捉到三个关键维度:RT-Thread
    的头像 发表于 01-24 14:37 658次阅读
    第一财经:<b class='flag-5'>RT-Thread</b>二十周年<b class='flag-5'>开发者</b>大会见证<b class='flag-5'>开源</b>生产力变革|媒体视角

    社区开发者RT-Thread 的不解之缘

    其实早在十几年前,就已经接触过RT-Thread了。那时候,熊总还在公司任职,尚未独立创业。作为一名资深电子爱好经常会组织其他电子爱好
    的头像 发表于 01-13 17:38 867次阅读
    <b class='flag-5'>社区</b><b class='flag-5'>开发者</b><b class='flag-5'>说</b>:<b class='flag-5'>我</b>与 <b class='flag-5'>RT-Thread</b> 的不解之缘

    开发者RT-Thread大会「实在」指南:技术、开发板与真诚的见面礼

    各位开发者感谢各位一直以来对RT-Thread社区的参与和支持,本周六我们将和大家一起迎来我们的20周年开发者大会。为了回馈一直以来与RT-Thre
    的头像 发表于 01-13 17:38 539次阅读
    给<b class='flag-5'>开发者</b>的<b class='flag-5'>RT-Thread</b>大会「实在」指南:技术、<b class='flag-5'>开发</b>板与真诚的见面礼

    月底开奖|「开源旅行团,组队报名赢大奖」RT-Thread 20 周年暨开发者大会邀您参加 | 活动报名

    (周六)在上海举行“RT-Thread二十周年庆典暨开发者大会”,在庆祝二十周岁生日之际,以“开源向实”,打造“AI智能时代基础软件平台”为核心议题,召集全球开发
    的头像 发表于 12-25 14:58 592次阅读
    月底开奖|「<b class='flag-5'>开源</b>旅行团,组队报名赢大奖」<b class='flag-5'>RT-Thread</b> 20 周年暨<b class='flag-5'>开发者</b>大会邀您参加 | 活动报名

    RT-Thread 20周年开发者大会特别邀请:带上的故事,遇见我们的传奇!|活动报名

    仅是RT-Thread的成长史,更是每一位开发者共同书写的故事。值此RT-Thread诞生20周年之际,我们诚挚邀请您——和我们一同走过这段旅程的开发者朋友,分享您与
    的头像 发表于 12-04 17:43 1785次阅读
    <b class='flag-5'>RT-Thread</b> 20周年<b class='flag-5'>开发者</b>大会特别邀请:带上<b class='flag-5'>你</b>的故事,遇见我们的传奇!|活动报名

    2025开放原子开发者大会旋武开源社区Rust分论坛成功举办

    11月22日,2025开放原子开发者大会——旋武开源社区Rust分论坛在北京顺利召开。论坛以“共建中国Rust生态”为核心主题,汇聚京东、华
    的头像 发表于 11-27 14:55 783次阅读

    社区之星】欧小龙——保护的好奇心:它是所有创造力的源泉

    / RT-Thread / FreeRTOS 等主流嵌入式操作系统 熟悉ARM/RISC-V芯片开发 熟悉车规功能安全流程认证和产品认证 熟悉车载CIS芯片开发 具备
    发表于 11-26 16:31

    RT-Thread荣膺开放原子开源先锋项目社区开发者斩获“开源贡献之星”|新闻速递

    近日,2025开放原子开发者大会在京开幕。大会举行了“中国开源创新力量致谢仪式”,向操作系统、数据库、人工智能三大技术领域28个开源先锋项目中作出卓越贡献的47位
    的头像 发表于 11-24 18:48 589次阅读
    <b class='flag-5'>RT-Thread</b>荣膺开放原子<b class='flag-5'>开源</b>先锋<b class='flag-5'>项目</b>,<b class='flag-5'>社区</b><b class='flag-5'>开发者</b>斩获“<b class='flag-5'>开源</b>贡献之星”|新闻速递

    2025开放原子开发者大会旋武社区Rust分论坛即将启幕

    在数字化转型持续深化、系统安全与性能需求愈发迫切的当下,Rust凭借强大的内存安全、高并发性能和卓越的开发者体验,正成为重塑软件开发疆界的关
    的头像 发表于 11-13 10:00 707次阅读

    2025年RT-Thread开发者巡回培训报名正式启动!

    亲爱的RT-Thread社区成员们:新程再启,共赴热爱!2025年RT-Thread开发者巡回培训正式启动报名!今年,我们选择了西安、武汉、北京、杭州、深圳、上海、成都这7座城市,为大
    的头像 发表于 09-27 10:39 2349次阅读
    2025年<b class='flag-5'>RT-Thread</b><b class='flag-5'>开发者</b>巡回培训报名正式启动!

    9.20上海见!RT-Thread睿赛德将亮相具身智能上海开发者Meetup,解读异构通信与虚拟化技术|活动预告

    9月20日下午,AGIROS开源社区将联合智元开发者社区,于上海模速空间举办开发者Meetup,聚焦具身智能与机器人
    的头像 发表于 09-16 22:12 870次阅读
    9.20上海见!<b class='flag-5'>RT-Thread</b>睿赛德将亮相具身智能上海<b class='flag-5'>开发者</b>Meetup,解读异构通信与虚拟化技术|活动预告

    RT-Thread 遇上 Rust安全内核 RusT-Thread 的诞生

    大家好,我们是中国科学技术大学操作系统原理与设计(H)课oooooS小组。这个项目是我们的课程大作业:参考RT-Thread架构,使用Rust搭建一个原生的嵌入式操作系统内核。初识Rust
    的头像 发表于 08-02 11:03 3708次阅读
    <b class='flag-5'>RT-Thread</b> 遇上 <b class='flag-5'>Rust</b>:<b class='flag-5'>安全</b>内核 <b class='flag-5'>RusT-Thread</b> 的诞生

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    6月底,RT-Thread睿赛德受邀参与由上海开源信息技术协会主办的2025上海开源创新精英荟。上海市商委副主任杰出席会议并致辞。RT-Threa
    的头像 发表于 07-04 09:04 2808次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀<b class='flag-5'>开源</b><b class='flag-5'>项目</b> | 新闻速递

    RT-Thread审核团招募: 深度参与开源RTOS社区治理与演进

    开源实时操作系统,正持续优化社区协作流程,现面向全球开发者招募审核团(ReviewTeam)成员,共同维护代码质量,推动RT-Thread生态繁荣发展!什么是
    的头像 发表于 05-21 18:02 1422次阅读
    <b class='flag-5'>RT-Thread</b>审核团招募: 深度参与<b class='flag-5'>开源</b>RTOS<b class='flag-5'>社区</b>治理与演进