初学者到底该选择什么RTOS?

引言

前天的推文中,有读者问我,作为初学者到底该选择什么RTOS来学习?

温馨提示

本答案仅适合初学者,对于已经学会os的大神不适用!

答案

作为一个深入了解过rtos内核实现的我,先给出个回答吧:
选择越简单的操作系统内核越好
rtos必须是推荐国内的!
其实我个人首推TencentOS tiny,但是目前仅在内测阶段,就算了吧,听汪大神说应该快开源了。
然后是rt-thread
接下来就是LiteOS

原因

首先吧,还是那句话,越简单越好

  1. 第一点:初学者学习操作系统,那必须是先学习内核,学习内核处理的思想,跳出裸机处理的思想,那么选择的内核必然是由简单到深入。

  2. 第二点:学习内核的话,文档说明必须要丰富,目前有很多书是写ucosFreeRTOS的,很多人都觉得这两个rtos非常好,那人家做了那么多年,确实也是非常好的啦,ucos上过火星;FreeRTOS开源免费,是全球最多人使用的rtos,我肯定不否认这些不好啦。但是我还是推荐国内的。ucos实现太臃肿,安全做的非常好,很多情况都考虑了,但是作为初学者,你会有那么多情况产生吗,肯定不会的,没必要学。FreeRTOS实现几乎都是通过宏定义提供给开发者,实现过程也是很直观明了,但是内核代码行数还是太多了,我不推荐(即使我的第一个rtos也是学习FreeRTOS)。

  3. 第三点:目前rt-thread的书籍与例程非常丰富了,比如野火的《rt-thread内核实现与应用开发实战指南》,比如rt-thread官方出版的《RT-Thread编程指南》,都是很不错的资料。而TencentOS tiny资料较少,说不定我能给它整一个全网首发TencentOS tiny内核实现的系列文章

  4. 第四点:关于rtos内核,真的是一通百通的!!!各种ICP通信的同步、互斥、阻塞机制,真的是一样的处理思想,大同小异的实现过程,相信我

个人学习rtos经历

  • 在大三的时候,初次接触FreeRTOS,就只会调用api函数去实现小demo,没理解内部的实现过程,没理解各种ipc通信机制的处理,还是以裸机的思想去开发,没啥意义。

  • 接着就是实习的时候,必须深入学习rtos的实现过程了,这时候接触的是rt-thread,一直看博客、看文档、看源码,不懂的就问,这段时间认识了rt-thread的很多朋友,比如Andy、流光、大法师(嗯,今天法师邀我中秋节去一起吃饭,哈哈哈)、糖糖、老吴等等啦,都是大神,膜拜一下。反正不懂就问呗,捣鼓一个多月,算得上初步入门吧,那时候的rt-thread(大)版本还是3,现在都到4了,发展还是非常快的。

  • 接着又接触过rt-thread的软件包,也给rt-thread适配过软件包,目前软件包下载量还是很大的,而且还是五星好评~美滋滋,感觉这个rt-thread的软件包还是挺好的,相当于插件一样,需要就添加到工程,不需要就移除就行了,非常方便,当然这些软件包很多是第三方开发者提供的,没有统一吧,也不一定能实现大家的功能,但是对于初学者来说,这些东西就还是很遥远的,不用理会吧。
    在这里插入图片描述

  • 关于rt-thread内核的实现,也是是参考了Linux的设计思想,我觉得还是很不错的,听说熊大也是非常喜欢Linux,才将rt-thread的风格整得与Linux很像(道听途说,不保证严谨)。

  • 然后内核的实现也是非常明了的,看下源码就能懂的那种。缺点是没啥注释,当年我自己怼源码的时候,有点难受,不过好在有rt-thread的朋友指点,期间去广州参加了一场线下培训,我主讲,反正当时也是规规矩矩讲完吧,哈哈哈哈,就台下听的人没啥反应,莫名尴尬,终于明白大学老师在台上讲课,台下的人不理他的感受了。

  • 然后学完rt-thread后,我又回头怼了一遍FreeRTOS的源码实现,这次看FreeRTOS的实现就很简单了,也没啥好说的,实现的逻辑严谨性比rt-thread略好。

  • 接着怼liteos的源码,这时候我基本不纠结具体的实现过程了,反正基本都是那样,反而对liteos的设计思想,框架很有兴趣,这是我产生写DoraOS的源头,我觉得这种设计思想能抄过来自己用,没错,是抄,看到好东西就想自己实现一下,比如liteos的哨兵思想(我称之为哨兵思想,说不定别人不是这样子称呼的),还有关于liteos中代码解耦吧,我觉得做的很好,不过代码有一些也是冗余了。

  • 最后也怼过ucos的源码,这时候基本上是平平淡淡的眼光去看,当时我对设计模式还没啥研究,没看出ucos的设计模式,直到后来我看到一本关于设计模式的书的时候,我才想起ucos也有设计模式,如观察者模式,反正实现的过程与思想都挺好吧,就是api接口太难用,对开发者不友好。

  • 这两年期间用过alios,随便用一下,没看源码实现,反正就能很简单地用(仅内核)。

  • 现在TencentOS tiny也在内测中,也有幸被汪大神叫过去参与内测,第一眼看源码的时候,惊艳到我了,这源码的实现真的是非常简洁,比我的DoraOS还简洁(此时我已经自己写完DoraOS了),关于内核task部分的源码只有400行左右,我自己的DoraOS都要800行,反正看这个源码是很简单了,就很容易读懂它,非常好,我很喜欢,解耦、简洁。。。在内测期间,认识各路大神,做云端的,小程序的、还有源码的作者,感觉很不错,还给他反馈了个小bug

深入发展规划

其实说了那么多,也不一定有人坚持学下去,我想说,如果要学那就坚持学,否则还是不要学了。
既然以后必然会深入的,那就谈谈深入发展的情况吧(纯属个人见解,仅从物联网方面看):

首先未来市场肯定是有物联网市场的,我个人觉得吧,当5g+ipv6部署完毕,应该就是物联网的大规模发展了,真希望能赶上这趟车,对于嵌入式终端设备,能上网或者说能安全上网就必不可少了,个人觉得在物联网时代做 网络安全 的应该也是很吃香,不过我肯定不是走这条路。

那就说说嵌入式终端设备上网的问题,rt-thread拥有各种网络组件与设备驱动,如以太网、wifi、lora、nb-iot等等、还有各种协议mqtt、http等,还有安全框架mbedtls等,此外还有未来发展的语言与图像相关的组件,比如说音频流媒体框架与gui,未来肯定是往方便人类发展的,那语音交互就很重要了,我自己的规划以后可能也会深入图像处理这方面,我对这方面还是有点兴趣的。

关于与云端交互,rt-thread应该是没有云平台,那么可以通过软件包的方式去接入阿里云、onenet、百度云等平台,我觉得这不难实现,有软件包的支持,爱怎么加怎么加。

关于liteos,我觉得设计的非常的,也有很多云端的组件,mqtt、coap、lwip、mbedtls、at指令库(sal层)等都有实现了,但是我没用过,也不评论吧,应该真正用起来也不算难吧,华为云平台的话我只用上位机连接过,没在嵌入式设备连接上。

关于TencentOS tiny,我最近在内测这个OS与他们的云平台,OS没啥说的,等完善文档的话我很推荐大家学的,目前估计还得等一会,可以先把基础学好,之后啥都不怕了。关于他们的云平台,给我的感觉是很简单,反正做的很简洁,使用起来也是异常方便,等开源后大家可以随便捣鼓。

用个证据证明一下TencentOS tiny的简单吧,我拿到TencentOS tiny后不看文档,稍微看了下源码,就直接移植在其他平台上,直到跑通,用时27分钟,这是我不看文档的情况下,毕竟我也是刚接触的~
在这里插入图片描述
不过大家别学我,不看文档还是闹出很多笑话的,当时问汪大神都是非常简单的问题,再次感谢一下汪大神的耐心解答:
在这里插入图片描述
在这里插入图片描述

总结

总的来说,还是推荐大家去选择简单的学,越简单越好,所有的OS都很有发展空间,毕竟都是国内数一数二的大厂,这些你都不相信的话,你还能相信谁写的操作系统呢,是吧,对于入门来说,当然是越简单越好咯。ucos这种就太复杂了,实在是不建议哈。

全篇文章均为杰杰个人观点,不吹不黑,毕竟我也认识这些OS的作者,连alios的都认识,只不过他们是玩钉钉而已,具体选择何种OS就看各位读者自行决定吧。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页