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

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

3天内不再提示

一个十余年历史的国产RTOS,从RT-Thread中我们能学到什么?

电子工程师 来源:未知 作者:电子大兵 2017-09-05 16:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

柴胡 · 所言

柴胡,目前在九安医疗从事物联网智能设备的开发和单片机嵌入式驱动的开发工作,是RT-Thread和嵌入式技术爱好者。

本文将为大家简要介绍一下笔者使用和学习RT-Thread过程中的体会和感悟,希望能帮助初识RT-Thread的人建立一个初步的印象,避免产生入宝山而空回的遗憾。笔者水平有限,目前也正在学习和使用RT-Thread的过程中,希望本文的拙见能抛砖引玉,如有纰漏,还请不吝赐教。

现在是一个快节奏的时代,技术领域也是如此。近些年,IoT备受资本青睐,各种新技术新方案层出不穷,质量也参差不齐,这边唱罢那边登台,以至于有些技术还未被人熟知,就被淹没在长河中了。客观的说,RTOS领域玩家众多,仅笔者短短的从业时间,国产RTOS就听闻了五、六款之多。

RT-Thread作为一个有十余年历史的国产RTOS,经历了长时间的考验和用户的青睐,目前发展趋势蒸蒸日上,也即将发布RT-Thread 3.0,其中必然有值得我们思考和学习的地方,我们也可以从中汲取到不少宝贵的经验。

软件工程管理

软件工程管理对于软件研发是十分重要的,甚至可以说是开发过程的基石。公司中有高水平的嵌入式软件程序员,也有刚入职的实习生,水平难免参差不齐,当共同协作开发一个项目时,如何彼此协调也是一个难题。

时至今日,很多公司仍然在使用落后的代码管理方式。有些甚至使用把代码压缩成一个个的压缩包来做版本管理。同事之间的协作依靠互相发送文件,每次接收到同事的新文件首先要花半天时间解决编译error,甚至还要在本地对同事的代码进行修改,这样,软件基本处在半失控的状态,某次改动产生问题,就要从浩瀚的压缩包海洋里挑选一个,进行版本回退。在开发一个大项目的时候,这种情况下甚至会出现人数越多,开发难度和周期越大的情况。

而RT-Thread,提供了一个教科书级的范例。RT-Thread由13000多个文件构成,支持各类设备和芯片近70款,从代码量和组织方式上来说,是一个相当庞大的软件工程。在近十年的时间里,至少有将近100个开发者参与到了RT-Thread的开发中,使得RT-Thread稳步迭代,而这也是有一定的维护难度的。RT-Thread将代码部署在Github上,并在此基础上使用了Travis CI进行自动化编译测试,使得开发者可以有条不紊的进行迭代开发,并将自己的成果提交至master分支,在提交代码的第一时间通过Travis CI进行自动化编译测试,使得一些无法编译通过的问题,在第一时间就被发现。

RT-Thread使用scons自动化代码构建工具。初识RT-Thread,很难想象RT-Thread通过一个代码仓库,对近70个芯片的IAR、MDK和GCC的工程和工具链提供支持。RT-Thread使用了scons,使得只要敲几行指令,就可以生成所需环境和工具链的对应的工程。也就是说,对于大多数芯片,所谓移植RT-Thread,只需要几个scons指令进行自动化构建。我相信对于大多数中小公司的软件项目,无论从规模还是参与人数都没有RT-Thread这么庞大,维护难度也远小于RT-Thread。但尽管如此,工程维护也是软件工程管理的老大难问题,无疑,从RT-Thread中,我们可以借鉴不少经验。

代码风格与技术

RT-Thread的代码风格是十分优秀的。在工作中,很多时候嵌入式软件工程师尤其是单片机软件工程师使用的芯片资源相对比较匮乏,RAMROM也略显局促,节省资源也成了优先级比较高的事情,而这也成了许多工程师代码不规范的借口。鲁棒性、模块化、可拓展、高内聚、低耦合,这种高大上的名词总是不绝于耳,相信大家也在各种场景下听过不少次。可抛去这些高大上的名词,到底什么才是优秀的代码呢?

RT-Thread虽然没有强调过这些高大上的名词,但是他毫无疑问用代码对这些名词进行了解释。RT-Thread的代码风格是类Linux/Unix的代码风格。这种风格不仅仅体现在函数、变量的命名规范,而是深入到了RT-Thread的核心。例如,RT-Thread实现了一个设备驱动框架,将设备类型分为了字符设备、块设备、网络接口设备、内存设备、CAN设备、RTC设备、声音设备、图形设备、I2C总线设备等等等等。初始化时通过字符串(用户可自定义的一个易于记忆的名称)与设备驱动绑定,并将驱动注册到内核,使用时只需调用一个字符串,即可匹配到该设备,无需通过各种头文件包含和二次封装,即可实现隔离和解耦。

RT-Thread提供了Finsh和msh组件,这是非常有特色组件,可以在调试和开发中与系统内核进行便捷的交互,使用十分方便。如何在资源紧缺的嵌入式软件开发中,写出优秀的代码,RT-Thread十分值得我们思考和学习。

开源精神

RT-Thread是国内第一梯队的嵌入式开源项目,也正因为开源和社区化,RT-Thread得以茁壮发展,并在开发人员中赢得了极高的口碑,有不小数量的开发者参与到了RT-Thread的开发中。RT-Thread实时操作系统遵循GPLv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。这种开源精神十分令人钦佩。

得益于RT-Thread的开源,我们可以将自己的代码提交,经过审核后合并至master分支,在使用过程中,当某个模块出现疑问或问题,可以直接与开发者甚至创始人直接进行讨论,这种体验是十分奇妙,也是其他RTOS所不具备的。

RT-Thread倡导大家参与RT-Thread开发的代码编写、bug修复、文档完善等等各项进程中。而实际上一旦自己提交的东西被采纳和合并,也是一件十分有成就感的事情。

我们也可以学习RT-Thread的开源精神,将自己业余时间的代码开源,或者积极参与到开源项目中,在方便大家使用的同时,通过进行更广泛的讨论,也相当于有了更多的人帮助review,接受大家的批评和建议,实现自己更快的进步。

一些思考

现在大家都十分渴望成功,并且渴望快速成功。在各种融资奇迹下,渐渐地,大家希望,趁着风口,激进地在短时间内完成一款产品,然后借着风口一飞冲天。也渐渐地,失去了精心打磨耕耘一个产品的耐心。RT-Thread在数千万装机量和获得天使轮近千万融资的背后是十年如一日的细心耕耘和精心呵护。

RT-Thread的创始人熊谱翔先生,起初是在2005年,面对RTOS现状,利用业余时间开发RT-Thread。我想熊谱翔先生的初心也仅仅是想做一款真正优秀的实时操作系统吧。如同《三傻大闹宝莱坞》中,兰彻达斯所说:“追求卓越,成功就会在不经意间追上你”。

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

    关注

    25

    文章

    862

    浏览量

    122614
  • RT-Thread
    +关注

    关注

    32

    文章

    1541

    浏览量

    44289

原文标题:从RT-Thread中我们能学到什么?

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    回首廿载,感谢有你二十年前,RT-Thread的第行代码在闪烁的屏幕前诞生;二十年后,全球数亿台设备因这个开源实时操作系统而智能运行。嵌入式领域的幼苗到枝繁叶茂的开源大树,这不
    的头像 发表于 12-04 17:43 936次阅读
    <b class='flag-5'>RT-Thread</b> 20周年开发者大会特别邀请:带上你的故事,遇见<b class='flag-5'>我们</b>的传奇!|活动报名

    ENV的scons生成RT-Thread studio工程吗?

    scons生成RT-Thread studio工程吗?教程中使用scons —target==MDK5来生成MDK工程,怎么生成RT-Thread Stdudio工程呢?
    发表于 10-13 07:42

    学习强国深度报道 RT-Thread“1+X+N”战略,国产操作系统赋高端制造引关注|媒体视角

    近日,国产嵌入式操作系统领军企业RT-Thread睿赛德在工博会发布的“1+X+N”战略体系,获得了国家级权威媒体平台“学习强国”的重点报道。该报道产业高度深入剖析了RT-Thread
    的头像 发表于 09-29 17:37 910次阅读
    学习强国深度报道 <b class='flag-5'>RT-Thread</b>“1+X+N”战略,<b class='flag-5'>国产</b>操作系统赋<b class='flag-5'>能</b>高端制造引关注|媒体视角

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

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

    如何使用rt-thread studio,使用 定制化的SDK建立工程?

    --target=eclipse生成 rt-thread studio 工程 在rt-thread studio,使用sdk Manager 导入配置成功。 配置成功了, 问题: 我如何使用在
    发表于 09-26 06:16

    rt-thread studio 2.2.9如何使用最新的RT-Thread v5.2.0 released?

    ,目前也无法使用 Cannot found RT-Thread root directory, please check RTT_ROOT; 新建版本,如使用lastet,rt-thread为空; 最好使用的
    发表于 09-16 06:06

    明晚!基于RT-Thread 的 PID 控制实践,驱动到算法到监控,次学会!| 问学直播

    在嵌入式开发,PID控制是最常见、最实用的控制算法之,应用场景涵盖温度控制、电机调速、机械臂控制等各类智能设备。我们很荣幸邀请到2025RT-Thread大学生夏令营优秀学员陈宇锋
    的头像 发表于 09-01 17:04 1104次阅读
    明晚!基于<b class='flag-5'>RT-Thread</b> 的 PID 控制实践,<b class='flag-5'>从</b>驱动到算法到监控,<b class='flag-5'>一</b>次学会!| 问学直播

    【好书推荐】RT-Thread第20本相关书籍!《嵌入式实时操作系统RT-Thread原理与应用》| 技术集结

    01内容简介ContentSummary本书为读者提供了全面、系统的RT-Thread学习指南,旨在帮助初学者及有经验的开发者掌握RT-Thread实时操作系统和STM32嵌入式微
    的头像 发表于 08-24 10:05 693次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第20本相关书籍!《嵌入式实时操作系统<b class='flag-5'>RT-Thread</b>原理与应用》| 技术集结

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

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

    【直播预告】RT-Thread携手NXP硬核实战,解锁MCX微控制器的AI落地秘籍 | 问学直播

    国产自主RTOS遇上全球半导体巨头——RT-Thread携手恩智浦带来年度重磅技术直播!7月22日20:00,我们有幸请来3位顶尖专家深度解析恩智浦MCX系列微控制器+
    的头像 发表于 07-20 10:05 893次阅读
    【直播预告】<b class='flag-5'>RT-Thread</b>携手NXP硬核实战,解锁MCX微控制器的AI落地秘籍 | 问学直播

    深度剖析 RT-Thread 线程调度流程

    RT-Thread调度第一个线程的主要流程分如下:rtthread_startup:RTT的启动函数,主要负责板级驱动,调度器,系统线程初始化,启动调度的工作
    的头像 发表于 06-25 18:24 1449次阅读
    深度剖析 <b class='flag-5'>RT-Thread</b> 线程调度流程

    揭秘RT-Thread上的AUTOSAR CP系统

    本文探讨了RT-Thread与AUTOSARCP的融合,解决车载ECU开发实时性、安全性与灵活性的平衡问题。通过分层安全内核(rt-safetyos/autoos)和工具链整合,兼容AUTOSAR
    的头像 发表于 06-23 20:22 2949次阅读
    揭秘<b class='flag-5'>RT-Thread</b>上的AUTOSAR CP系统

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

    全球开发者招募:RT-Thread审核团(ReviewTeam)正式开放申请!在开源的世界里,代码审查(CodeReview)是保证软件质量、促进技术交流的关键环节。RT-Thread作为全球领先
    的头像 发表于 05-21 18:02 1068次阅读
    <b class='flag-5'>RT-Thread</b>审核团招募: 深度参与开源<b class='flag-5'>RTOS</b>社区治理与演进

    “私人教练”到“技术保镖”,RT-Thread生态圈让你的产品所向披靡!

    在当今嵌入式行业这个“速度与激情”的赛道上,选择靠谱的技术伙伴比选咖啡还重要。RT-Thread,实力也杠杠的嵌入式操作系统,正以其高性能和轻量级的特性,成为众多企业的“技术咖啡因”。在促进
    的头像 发表于 03-11 18:45 597次阅读
    <b class='flag-5'>从</b>“私人教练”到“技术保镖”,<b class='flag-5'>RT-Thread</b>生态圈让你的产品所向披靡!

    如何将RT-Thread移植到NXP MCUXPressoIDE上

    RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植到NXP MCUXPressoIDE上呢?本文内容比较简单但稍有琐碎,希望对有需要的小伙伴有所帮助。
    的头像 发表于 02-13 10:37 2440次阅读
    如何将<b class='flag-5'>RT-Thread</b>移植到NXP MCUXPressoIDE上