Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
我与RT-Thread的故事
【我与RT-Thread的故事】我想和你深发展
发布于 2021-10-31 20:15:14 浏览:1522
订阅该版
[tocm] # **【我与RT-Thread的故事】我想和你深发展** # **相遇:一切都是美好的邂逅** 忘了从什么时候开始,我关注了一大票的以嵌入式开发为主的技术公众号号主,时不时会从这些公众号上获到一些嵌入式领域的资讯。就在今年的3月末,偶然看到这么一篇[公众号推文](https://mp.weixin.qq.com/s/3rrdFGjXNGuDxVyakN94IA): ![image.png](https://oss-club.rt-thread.org/uploads/20211031/125712ff46312789e6d60dcfbfffb260.png.webp) 讲真,工作这么多年了,我还真没参加过一场线下的技术沙龙,对这种技术沙龙即是朦胧而又向往。不过这要换做我早前的状态,我肯定会想:“喂,周末趟家里不香吗?还特意大老远跑去福田听一帮人那里侃大山?” 断然,凭借“嵌入式”三个字是无法说服我的内心去参加的。 然而,人的心态是真的会变的,这个时候的我,我正思考着我接下来的职场路应该如何走,虽然已经带技术团队有些日子了,但是也是摸着石头过河。以前单枪匹马挑大梁的时候,可谓冲锋陷阵,无所不欢;可真要到了带领团队层面,有时真的会有种“心有余而力不足”的感觉。恰好,团队中也在遭受“代码质量”和“开发效率”的双重困扰,这一次真的有触动到我,我也想去了解下外面的技术世界是怎么样的,于是我当即就报名了。 # **相识:千里“姻缘”一线牵** 还在求证职场的路该怎么走的同时,我已经开始对外投递简历了,而让我印象最深刻的是清明节后的一场技术面试。 那场技术面试很愉快,面试官是一位很nice的80后,我们对嵌入式技术架构的理解都非常的接近,有种相见恨晚的感觉。在面试的最后,面试随口问了一个问题:“平时你都关注些什么样的开源技术框架呀?” 我一直以来都是以Linux技术为主做开发,自然回答到以Linux的底层框架学习为主。突然,面试管有种师者的姿态跟我说了一句话: **可以关注下RT-Thread这个开源的操作系统,它的框架设计得非常不错,非常值得我们去学习!** 我一听,心想这不正是我前段时间想要参加的那个技术沙龙的RT-Thread吗?就这样,我更加坚定了我要参加这次技术沙龙的决心。当然,后面从这次技术沙龙学习到的东西也远远超出了我的预期,这里就一张现场的[PPT](https://mp.weixin.qq.com/s/mXiQ-8z6UaKgu25TXeL_aw)图,大家感受下:真的是满满的”嵌入式“。 ![image.png](https://oss-club.rt-thread.org/uploads/20211031/ad452e3d9244cb7a8cee1d2675cee586.png.webp) 没有意外,也没有波澜,从技术沙龙回来后,我便答应了那场面试的offer,开始担任[嵌入式架构师](https://blog.csdn.net/szullc/article/details/121011930?spm=1001.2014.3001.5501)的一职,在架构的技术领域与前辈们并肩作战,这种感觉甚好。不过,现在回头想想,不正是因为那**一线牵**,我才会跟RT-Thread越走越近吗? # **相知:是吗?原来就是你** 受工作内容的影响,常常需要调研和对比各种开源框架,也就从那相识之后,我逐渐对RT-Thread了解得越来越多,慢慢地我也发现了RT-Thread框架设计理念的先进性。 ## **一切皆文件** 非常让我眼前一亮的是它居然也引入了Linux的设计精髓: ![image.png](https://oss-club.rt-thread.org/uploads/20211031/52c75eaca68a55b2ad5f809a3c5fc522.png.webp) 熟悉Linux开发的人,不论是开发内核还是开发应用,一定对这个观点理解很深刻。不管你是基础文件,还是块存储设备,亦或是网络通讯的socket通道,你都可以使用一个叫**FD(文件句柄)**的东西,把你的所有操作操作串联起来。open、read、write、ioctl、close这些基本熟悉而又基本的操作,在这里都将变得如此的容易。 这个主要得益于RT-Thread的**DFS(设备虚拟文件系统)**框架,在这个框架下它为应用程序提供统一的POSIX文件和目录操作接口,同时也支持多种类型的文件系统,支持多种类似的存储设备,并且对具体硬件设备做了抽象层设计,真正做到与硬件无关。 ## **易扩展的系统初始化设计** 一个强大的系统开始,总是有各式各样的**初始化**操作,RT-Thread也不例外,但是有趣地是RT-Thread在设计系统初始化的操作时,非常巧妙地引入了以**段**分布做基础啊,可以批量并快速地完成各种初始化接口的调用。同时,在初始化的时序上,对不同类别的初始化接口做了不同的初始化优先级别,从而很好地解决了初始化前后依赖的时序问题。 从设计上,开发者若要新增自己的初始化接口,只需要引用下面这些宏接口,就可以快速将你的初始化接口添加到对应级别的初始化列表里面,从而自动在相应的时机下完成对应的初始化操作,这个设计简直不要太好。 ```c /* board init routines will be called in board_init() function */ #define INIT_BOARD_EXPORT(fn) INIT_EXPORT(fn, "1") /* pre/device/component/env/app init routines will be called in init_thread */ /* components pre-initialization (pure software initilization) */ #define INIT_PREV_EXPORT(fn) INIT_EXPORT(fn, "2") /* device initialization */ #define INIT_DEVICE_EXPORT(fn) INIT_EXPORT(fn, "3") /* components initialization (dfs, lwip, ...) */ #define INIT_COMPONENT_EXPORT(fn) INIT_EXPORT(fn, "4") /* environment initialization (mount disk, ...) */ #define INIT_ENV_EXPORT(fn) INIT_EXPORT(fn, "5") /* appliation initialization (rtgui application etc ...) */ #define INIT_APP_EXPORT(fn) INIT_EXPORT(fn, "6") ``` ## **强解耦的组件化设计** 组件化设计要求尽可能地把各组件之间的耦合关系解开,使得你的代码不再是一个main函数一写到死的那种呆板,而是如同建筑设计师一样,可以从庞大的材料库里面挑选一件件的适合自己的模块,再使用自己独特的方式,堆砌组合成绚丽的碉堡。 而在这一点上,RT-Thread从设计之初就一直沿用这个组件化设计的思路,大大提升了开发者的灵活性和开发效率,这一点是值得点赞的。 ## **高伸缩的可裁剪设计** 评估一个系统或框架是否合适在ROM和RAM都相对匮乏的嵌入式环境下使用,一个非常重要的指标就是看它是否支持功能裁剪。说到可裁剪性,RT-Thread给出的答案是,除几个极少数的必备组件以及系统内核需要保留外,其他组件都可以裁掉,极大地提升了将它移植到某个嵌入式环境的可能性。 甚至,在更为吃紧的嵌入式平台,还可以有RT-Thread Nano版本,根据官网文档给出的[参考数据](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/an0038-nano-introduction): **资源占用小:对 RAM 与 ROM 的开销非常小,在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸,RAM 占用约 1K 左右,ROM 占用 4K 左右。** 这些足以证明,RT-Thread在可裁剪方面无疑做了非常优异的设计。 ## **跨平台的兼容设计** 以上的种种设计,配合C语言强大的跨平台能力,真的有一种你在开发Linux内核的那种feeling,使用过的人一定都会不禁感慨,RT-Thread的架构师们一定师从Linux,且对Linux的设计理念和实战精髓了然于胸,只有这样才能很好地驾驭如此精湛的设计。 # **相爱:爱不释手,宝刀屠龙** 对RT-Thread认识越深,我逐渐喜欢上了这个操作系统,于是乎我开始疯狂地**追求**它。 从网络平台不断地了解它的资讯,加入了各个RT-Thread相关的技术群,从中得知了RT-Thread有个非常活跃的[技术论坛](https://club.rt-thread.org/index.html),于是乎我第一时间注册加入了。 得知在论坛有举办国产BSP移植的技术活动,我想着这不正是我实战RT-Thread的好机会吗?于是乎我第一时间报名参加了,不过有些遗憾,那段时间恰好新工作非常繁忙,加上很多项目刚上手,实在没有太多的时间来完成这个移植,最后这个活动我的工作成果流产了,没能成功完成PR的合并。但是,实践总是最珍贵的,我想接下来的时间,我还是会抽空完成未完成的部分,尽快对这个活动有所交代。 后来又得知,论坛每月都有**RT-Thread问答志愿者小分队**的活动,于是乎我也是第一时间报名了。第一个月报了名但没有参与答题,陪跑了一个月。第二个月开始我认真准备答题,期间也得到了一些技术群友的认可和点赞,最终那个月的得了个第二名,心理满是欢喜,有人需要和认可的感觉,就是不一样。第三个月,也就是10月份,我更加耐心地准备答题,我一直认为**带着问题去寻找答案**的那个过程是最能让人进步的。从未研究过的模块,看着别人的问题,一步步地查找文档,翻阅源码,搜索博文,就是为了最大化地把自己对问题的理解和对问题的解决思路分享出去。不能说表达出来的一定是对的,但或许你的想法正好启发了别人,又或者别人看到你的这个思路,恰好解决了困惑它好久的问题,我想这应该就是我答题的最大乐趣吧。 时间来到10.24,程序员圈子里的重要节日,有幸收到RT-Thread小师弟的盛情邀请,为论坛[1024活动](https://club.rt-thread.org/ask/article/3106.html)出谋划策,最后活动顺利如期举办,收到了不少热心论坛成员的参与,当然我也用心参与了此次活动。最后活动评比,[我的参选作品](https://club.rt-thread.org/ask/article/3113.html),以微弱优势取得了第一名的成绩,内心无比欣慰,衷心感谢RT-Thread技术团队的欣赏和赞许,同时也倍感压力,希望后续能输出更多优秀的作品,回到社区论坛。 就在9月中旬,论坛首页挂上了**RT-Thread X RISC-V创新应用大赛**的[海报](https://club.rt-thread.org/ask/article/3063.html),于是乎我也踊跃报名参加了。 ![image.png](https://oss-club.rt-thread.org/uploads/20210916/f83d90b54a954ca243d01944aa355f38.png.webp) 对我而言,我甚至认为这是我参加RT-Thread的一次大考,学习了大半年,终于要到战场上去**杀敌**了,是骡子是马,拉出来溜溜便知。不过,我倒是对自己充满信心,毕竟RT-Thread是我的**屠龙宝刀,谁与争锋**? # **相守:你若不离,我便不弃** 俗话说:“**相爱容易相守难**”。这是感情世界里的真谛,放到RTOS这个技术领域,也一样适用。 随着近些年,国内技术的发展,越来越多地国产操作系统如雨后春笋般涌现在我们面前,在嵌入式领域再已不是UCOS、freeRTOS、ThreadX三足鼎立了。 ![image.png](https://oss-club.rt-thread.org/uploads/20211031/d16df43adcd19daa4fac00d3c0b928fa.png.webp) 既是机遇,也是挑战。在整个国际环境下芯片缺货的严峻形势,也正好给了国产芯片一个起势发展的大好机会。这个时候,RT-Thread选择及时拥抱国产芯片,都是顺势而为,聪明之举。无论是之前的国产BSP移植活动,还是当下正火热的RISC-V创新应用设计开发大赛,都是把国内开发者拉到与国产芯片一同发展的起跑线。 同时,需要泼一泼冷水的就是,时代在进步,技术也在进步,没有什么是长盛不衰,只有不断地打磨自己的技术,填补自己的空缺,突出自己的优势,才能不被社会淘汰。 以上是对RT-Thread的忠告,也是对自己作为开发者的一个鞭策,正视自己的优势和不足,时刻保持进步,哪怕最后不能永垂不朽,也要在历史的长河里画上浓重的一笔,证明自己曾经努力过。 最后,我也衷心希望国产芯片和国产操作系统,以及国内开发者都能抓住这次浪潮的机会,大家一起成长,共同进步,为中华崛起的梦想做出自己的贡献,因为这同时也是我们每个中国人共同的美好愿望,不是吗?
8
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
李肯陪你玩赚嵌入式
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
文章
47
回答
504
被采纳
82
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
Debug
中断
编译报错
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
20
个答案
3
次被采纳
红枫
8
个答案
2
次被采纳
踩姑娘的小蘑菇
7
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
张世争
7
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
12
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部