概述
文章目录
- 引言
- 温馨提示
- 答案
- 原因
- 个人学习rtos经历
- 深入发展规划
- 总结
引言
前天的推文中,有读者问我,作为初学者到底该选择什么RTOS来学习?
温馨提示
本答案仅适合初学者,对于已经学会os的大神不适用!
答案
作为一个深入了解过rtos内核实现的我,先给出个回答吧:
选择越简单的操作系统内核越好
rtos必须是推荐国内的!
其实我个人首推TencentOS tiny
,但是目前仅在内测阶段,就算了吧,听汪大神说应该快开源了。
然后是rt-thread
接下来就是LiteOS
原因
首先吧,还是那句话,越简单越好
。
-
第一点:初学者学习操作系统,那必须是先学习内核,学习内核处理的思想,跳出裸机处理的思想,那么选择的内核必然是由简单到深入。
-
第二点:学习内核的话,文档说明必须要丰富,目前有很多书是写
ucos
跟FreeRTOS
的,很多人都觉得这两个rtos
非常好,那人家做了那么多年,确实也是非常好的啦,ucos
上过火星;FreeRTOS
开源免费,是全球最多人使用的rtos,我肯定不否认这些不好啦。但是我还是推荐国内的。ucos实现太臃肿,安全做的非常好,很多情况都考虑了,但是作为初学者,你会有那么多情况产生吗,肯定不会的,没必要学。FreeRTOS
实现几乎都是通过宏定义提供给开发者,实现过程也是很直观明了,但是内核代码行数还是太多了,我不推荐(即使我的第一个rtos
也是学习FreeRTOS
)。 -
第三点:目前
rt-thread
的书籍与例程非常丰富了,比如野火的《rt-thread内核实现与应用开发实战指南》,比如rt-thread官方出版的《RT-Thread编程指南》,都是很不错的资料。而TencentOS tiny
资料较少,说不定我能给它整一个全网首发TencentOS tiny
内核实现的系列文章 -
第四点:关于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就看各位读者自行决定吧。
最后
以上就是缥缈大侠为你收集整理的初学者到底该选择什么RTOS?引言答案原因个人学习rtos经历深入发展规划总结的全部内容,希望文章能够帮你解决初学者到底该选择什么RTOS?引言答案原因个人学习rtos经历深入发展规划总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复