本文作者是一位大三在校生,如他的网名,另一个身份是一名真香的MCU爱好者。这位后浪挺浪的,把学习RTOS的过往置换到电竞中,将参与训练营和自学的经历剪辑为打怪升级的通关路,还用不同段位来彰显。 2 K8 ]* e6 A' A: R3 {! Q4 V) W 学MCU的后浪们也试试?祝你们在属于自己的时代里,沿途留下厉害的痕迹,在可期的未来启航。 青铜段位 | 玩起来RTOS 这个段位,我把它总结为:玩起来RTOS。 2018年,我参加了RT-Thread组织的大学生雄鹰计划,和众多对RT-Thread感兴趣的学生一起学习内核,每周学习一章内容并完成作业。 这是我第一次接触RTOS内核,得益于RT-Thread的板级支持做得实在是太好了,无需任何移植,随便找块stm32板子就能跑起来RT-Thread,有训练营的教程、官方详细的文档,就这样开始了内核的学习。 在这个过程中主要是参考教程、文档来玩起来RTOS,创建线程、使用信号量、使用邮箱等等RTOS内核基本操作,并记录了一本足足有26468字的RT-Thread内核学习笔记。 . i$ C! b$ N. J( d, f 黄金段位 | 知道RTOS有哪些东西 这个段位,我把它总结为:知道RTOS有哪些东西。 2019年,我参加了华为的IoT训练营,第一次接触LiteOS和小熊派IoT开发板,本着系统学习一下stm32cubemx的想法,就开始了边学习边写博客记录的过程,出完这套教程后,发现LiteOS教程稀缺,何不再趁热打铁,出一套LiteOS的教程呢? 说干就干!这一干,可谓是对自己的一次挑战。 官方没有任何细致的使用文档,代码里的注释也多是版权信息,这可咋整?只能从源码下手了。 凭借着学习RT-Thread的经验,开始啃源码,做实验,然后在教程里写出每个模块有哪些API可用,这些API如何使用,并在每篇文章中给出一个使用示例。 从内核的基本模块写到AT框架、SAL框架这些组件,再写到MQTT、LWM2M、COAP这些上云组件,历时3个多月,每天都在研究。 这次经历对我的成长挺大,以前是没有教学文档、视频就寸步难行,无从下手,之后发现其实一个RTOS里面就是那些东西,用起来都差不多的,如果具备一个RTOS的经验,再去玩其它的RTOS,很好上手。 所以,还在观望RTOS的小伙伴,不用纠结学哪个RTOS好,如果不是项目要求必须使用某一种,学哪个都是一样的。 ( ?+ V( v6 c9 P% L9 N 铂金段位 | 知道RTOS是怎么干活的 这个段位,我把它总结为:知道RTOS怎么干活。 2020年,我开始了RTOS内核的学习,选择了代码写的比较简洁粗暴的TencentOS-tiny操作系统。 这次主要是分析研究源码,主要是学习研究系统中任务、信号量、消息队列如何实现,在系统中以怎样的形式存在,在提供给用户的API中究竟做了什么。 在做嵌入式项目的时候,不像开发桌面软件、开发APP那样,基本上写代码会调用API,调用库就可以,嵌入式设备中的资源都是非常有限的,如果只是一通调用而自己没有清楚的认知,做出来的产品就像是空中楼阁,看似功能非常炫酷,然而,可靠吗?面临各种各样断电、断网、信号不好、操作失误的情况,是否可以处理好这些异常呢? 就拿我自己来说,写几个任务helloworld一下,再写两个任务之间使用信号量同步,再写几个任务使用信号量之间通信,根本莫得问题。 可是一旦用RTOS做起项目来,设计到任务如何分配,如何同步,如何通信,就歇菜了,好好的RTOS程序,最后所有的逻辑都是在main任务里写……还不如裸机呢。 钻石段位 | 知道如何用RTOS干活 这一阶段,我把它总结为:知道如何用RTOS干活。 这个阶段是我准备接下来要达到的目标,建立在清楚的知道RTOS内部如何运作的基础上,可以合理的设计安排任务,合理的设计任务间如何同步运行,合理的设计任务间如何通信获取数据。 因为我一直在学校的原因,做项目都比较任性,可能觉得想玩,好玩,灵感闪现就去做了,也没有约束,没有做过实际落地产品的经历,这方面也是我一直所欠缺的。 有心的读者可以从我平常发的文章看出来,文章深度和从业好多年的大佬根本没法比,所以我会经常转载一些大佬的深度好文,一方面自己学习,另一方面分享给公众号的每位读者。 我一直很敬佩曾国藩,考了7次才中秀才,却以笨功夫成功打通科举之路,进入翰林院,一生崇尚笨拙,以扎实而非机巧取胜,很好的诠释了: + X% g, U) ?; s! [6 K 莫问收获,但问耕耘。 在机会还没到来之前,先不断学习提升自己吧~ 其实打怪通关学习路也挺好玩 , d! S+ z0 |4 m8 U# u; g+ w' C7 k+ G; a, D9 i, d# X |
看来我不配学RTOS |
写的不错。。。。。 |