【经验总结】一位近10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的?
RT-Thread绝对可以称得上国内优秀且排名靠前的操作系统,在嵌入式IoT领域一直享有盛名。近些年,物联网产业的大热,更是直接将RT-Thread这款优秀的操作系统推入荣誉殿堂,越来越多的开发者涌入基于RT-Thread的开发大军,而如何快速学习和使用RT-Thread将会是一个刚需难题。
本文以一个近10年的嵌入式开发老兵的视角,跟大家一起聊一聊这个话题,希望对大家有所帮助和启发。
RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成, 具备一个 IoT OS 平台所需的所有关键组件,拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过 20亿 台,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。
它的优秀,不单单体现在 **文字** 上,还体现在 **数字** 上,以下展示数据来源于,[RT-Thread官网](https://www.rt-thread.org/about.html):
如此优秀的操作系统软件,你确认不来学习一下吗?
# 2 聊聊情怀
熟悉我的朋友,大概都知道,我跟RT-Thread还是蛮有缘的,曾经我写过一篇短文,介绍我与RT-Thread的故事,
该文很荣幸地登上了 2021年开发者大会专刊的故事会栏目,想必有些小伙伴在书刊上已经看过这篇文章了。
在2022年里,我开始深耕 RT-Thread技术社区,我的个人账户是 recan,期间,我非常积极回答线上小伙伴提的各种问题,我自己也基本保持每个月输出至少2篇优秀技术原创文章。同年6月,我还担任了RT-Thread全球开发者大会的线上直播讲师,包括国内专场和海外专场,收获了掌声的同时,我也收获了各种宝贵经历,最幸运的是还收获了RT-Thread创始人熊大亲笔签名的 **讲师证书**。
凭借2022年的优秀表现,我被授予了 **2022年度RT-Thread技术社区优秀布道者** 的荣誉称号,这真的是一个很激励我前行的荣誉。我会以此为新的起点,在接下来的一年里,我会更加以无上的使命感去推广RT-Thread,让更加优秀的开发者加入到RT-Thread的开发阵营。
这是我的责任,也是我的义务,更是我的荣幸。作为布道者,我很乐意大家与我交流RT-Thread技术,欢迎大家戳 我主页,我们一起聊聊!
# 3 老手支招
扯了这么多有的没的,是时候放点大招了。
我从13年毕业出来,从事嵌入式行业接近10年了,从最终的嵌入式Linux,然后FreeRTOS,再到现在的RT-Thread,可以说每一项操作系统技术,我都有比较深的涉猎,也成功在工作项目中得到验证,有幸做了一些成绩,也很高兴成为了公司里的TOP5%。
这两年,我也频繁地在技术自媒体上发声,致力于打造 [架构师李肯](http://yyds.recan-li.cn) 这个技术IP,期间遇到了很多困难和阻碍,也一度想要放弃,但与此同时又收到了很多肯定和鼓励。遵循内心的渴望,我还是希望能把这个IP继续做下去,如果能帮助到更多的人,那就再好不过了。
就在我致力于打造 架构师李肯 这个技术IP的时候,我遇到了非常多嵌入式入行的朋友,其中不乏很多想加入RT-Thread开发者阵营的朋友,他们经常问到问到一个问题就是:**你是如何学习和使用RT-Thread的?**
说实话,每当我回答起这个问题,我总是左想想右想想,然后给出几个不成文的建议。所以,我想趁着这次机会,好好梳理一下,我是如何学习和使用RT-Thread的。
下面,我将以一个嵌入式经验老手的角度,从几个问题角度,给出一些切实可行的建议和方法,但是需要补充说明的就是,本文提交的方法并不一定适合所有开发者,请大家酌情甄别。**择其善者而从之,其不善者而改之!**
这个问题罗列在第一位,是因为我遇到太多这样的朋友了。
一上来就问,我是零基础小白,能转行学嵌入式吗?我这样啥都不懂的,能学好RT-Thread吗?
在这里,我再次表达一下我的观点,学习基础不是重点,也不是难点;稍微有些电子电路基础,加一些C语言编程经验的,基本就可以应付嵌入式的入门了。
另一方面,很重要的一点,那就是兴趣。这个东西有些虚,但是直接决定了当你遇到困难的时候,你是否能坚持得下去。毕竟,嵌入式这个玩意,说好玩也挺好玩的,说枯燥也是挺枯燥的,整天对着一堆设备,bug一筹莫展的时候,头发就开始往下掉了。
当然,回到RT-Thread学习这边,如果你有主修过操作系统原理、计算机基础等相关专业课程,那么理解起RT-Thread会更容易写。
大体上,嵌入式软件其实分为两大方向:应用开发和底层驱动开发。
**应用开发**:偏向于业务逻辑开发,需要掌握的是系统API的使用细节,而对实现细节可能不那么讲究,但是如果能更懂底层细节,往往能够写出更加优秀的应用代码。
**底层驱动开发**:这个工作是要跟硬件设备以及操作系统强交互的,需要掌握一定的硬件知识,同时对系统的驱动框架也要了然于胸,否则做嵌入式驱动开发会非常吃力。当然,与工作难度相对应的是,工资往往也会更高一些。
我把这个问题单独拎出来说,主要目的就是让大家明白,应用开发和驱动开发是两个截然不同的开发方向,对开发者的能力要求也不一样,提醒大家入门的时候一定要做好选择。
对于基于RT-Thread的开发也是应用,应用开发和驱动开发的能力矩阵要求是不一样的;一般做底层驱动开发的转应用开发会相对容易些,而反向则比较难。所以大家一开始的选择很重要。
总的来说,RT-Thread的官方文档已经是非常完备的,它有一个专门的网站,大家可以戳 这里。
基本上,在这里你都可以找到相关的参考资料,包括内核是怎么设计的、应用接口怎么调用、驱动框架是怎么样的、有哪些开发工具可以参考;基本上你上去找一找这些问题都可以找到答案。
另外一点比较重要的是,文档是全中文模式,这对于国内的开发者来说,是一个比较好的体验,这也很大程度地降低了开发者的理解难度,提升开发者学习和了解RT-Thread的积极性。
关于提交你开发过程中遇到的问题,我首推 [RT-Thread的官方技术社区](https://club.rt-thread.org/index.html),在这里有很多优秀的开发者聚集在一块,其中不乏很多 [业内的技术专家](https://club.rt-thread.org/ask/experts.html),基本上你在这里发表你的问题,应该很快就能得到小伙伴的响应。
整个技术社区还是比较活跃的,我个人也活跃在社区中,也经常给社区的问题答疑,也欢迎大家在社区找我提问。
不过,需要说明的是,有些时候并不是说问题一定能够得到解决,但是可能别人的一个点评讨论,一下子就把你解决问题的思路打开了,问题也就迎刃而解了。
在这里,我想介绍一下,[如何高效地提问题](https://club.rt-thread.org/ask/question/1d7133828aad889b.html),这是很多初阶开发者都需要学习的。
这个问题也是很多小伙伴问到的一个问题,非常关心开发板的购买。
学习RT-Thread有一个比较好的地方就是,它可以不依赖于开发板环境就能上手。
在官方提供的代码仓库中,我们可以在BSP目录下找到类似 **QEMU-** 开头的BSP,这些BSP就是基于QEMU技术模拟出来的一个开发环境,有了它,你就可以直接在PC电脑上调试RT-Thread了,这不但大大提升了RT-Thread编程验证思路的速度,同时也降低了学习RT-Thread的硬件门槛。
感兴趣的小伙伴,可以戳这里了解一下 这种开发模式。
俗话说:“一个人走得更快,而一群人将走得更远。”
在学习RT-Thread的道路上,我希望大家能找到志同道合的伙伴,一起升级打怪,一起进阶成长;遇到问题的时候,大家一起讨论,一起研究问题的根源;可能一个不经意的想法,就帮你解决了一个折腾几天的难题。这就是良师益友的重要性。
那么,如何去寻找自己的良师益友呢?个人觉得可以从技术论坛、技术博客、技术公号中去寻找答案,尽量多关注你同领域的优秀博主,他们会有很多的同行交流群,试着去融入他们,制造几乎与他们产生交集,慢慢混熟了,技术上的良师益友也就顺理成章了。
如果你还没有找到自己的良师益友,欢迎找我来撩,或许我能成为你的良师益友也说不定。
纸上得来终觉浅,绝知此事要躬行!
在学习RT-Thread的道路上,更应该如此。看一百遍教程,读一百遍demo代码,都不及自己动手敲一遍代码,然后在实际的开发环境(开发板或QEMU模拟环境)中跑一跑,调一调;这样既能锻炼动手能力,又能加深学习内容的掌握。
很多人开始疑问,我的正常工作内容还未涉及RT-Thread相关的开发,我该如何找到类似的实战项目呢?
这个,你就要留意各路业余大赛了,比如电子发烧友论坛,比如官方的RT-Thread技术论坛,他们都会不定期地举办一些设计大赛,大赛中会比较明确地要求使用RT-Thread操作系统。
那么对于这种大赛,你就可以踊跃地报名参加,不但可以收获开发板,还有实践一个实战项目,更有可能还能收获一堆志同道合的技术朋友,何乐而不为呢?
学习RT-Thread的高阶状态,我认为是参与开源社区的建设,一个小小问题的回答,甚至于一个小小的问题点赞,都能够很好地把这种技术开源的精神传承下去。
如果你是更积极的开发小伙伴,哪怕技术不是那么精湛,你也可以尝试提交一次PR,向官方仓库提交你的优秀代码,让更多的人知道你这么优秀。
优秀的开发者总是有一样的开发习惯,跟优秀的社区建设者一起【工作】,这本身就是一件很令人成长的事情,可以尝试加入我们吧。
----
上面提及的各点,其实远不是具体的可操作细节,我可能称之为 **方法论** 的东西,掌握了方法论的东西,无论你学习哪个开源项目都是一样的理儿。所以呢,关于具体的技术细节学习,欢迎大家找我来聊。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !