文章目录

  • 引言
    • 温馨提示
  • 答案
  • 原因
  • 个人学习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就看各位读者自行决定吧。

初学者到底该选择什么RTOS?相关推荐

  1. 到底应该选择哪种Linux.NET的部署方式?

    到底应该选择哪种Linux.NET的部署方式? 当前部署Linux.NET环境的方式可谓是五花八门,既有传统的源码编译的方式.又有各式各样的一键安装脚本.还有绿色包安装方式,而随着Mono官方的新站上 ...

  2. SEO初学者如何正确选择SEO培训机构或老师

    时下正是网络营销红遍大江南北的时代,随着互联网的发展,网络营销这一专业成为当今莘莘学子争先恐后进行参报的王牌专业.在此设想,如果在各大高校开设有"SEO"(搜索引擎优化)这门专业的 ...

  3. python初学者代码-Python-为什么Python是初学者的完美选择?

    原标题:Python-为什么Python是初学者的完美选择? 在过去的两年中,Python部落已经教会了成百上千个开发人员学会了他们的第一个编程语言.我们一直关注的一件事就是为一个初学程序员找到最好的 ...

  4. [转载]「交叉验证」到底如何选择K值?

    「交叉验证」到底如何选择K值? 原文链接:https://cloud.tencent.com/developer/article/1410946 交叉验证(cross validation)一般被用于 ...

  5. 3G时代,我们到底该选择谁?

    3G时代,我们到底该选择谁? 随着中国3G争夺的上演,一些超前的用户已经体验了3G的快感.但对大多数中国的消费者而言,在未来需要选择或者并不仅仅再是哪一家运营商,而是选择站到哪一个通信标准的阵营中去, ...

  6. 【红外技术】客户的问题:在我的应用中,到底是选择中波红外还是长波红外波段?(来自英国高级技术咨询业界巨头的权威回答)

    整理时间:2020-02-16 整理内容:红外波段的选择 客户的问题:在我的应用中,到底是选择中波红外还是长波红外波段? 正式回答这个问题,还真是难. 因为我没有根据各种环境,气候等去做两个波段的对比 ...

  7. 到底是选择极米还是选择当贝?画质看当贝,音质看极米 在意画质和使用体验的选当贝

    极米和当贝作为智能投影界的两大头部品牌,对投影仪稍微有点了解的朋友肯定都听说过:二者作为投影市场TOP2品牌在投影界都有着一定的实力:不少朋友在选购投影仪前肯定都会陷入难题:极米和当贝品牌哪个好?一个 ...

  8. 心得丨对于机器学习,到底该选择哪种编程语言

    作者: jihong10102006 开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢?这是一个非常重要的问题.我们在许多论坛上都有讨论过.现在,我可以提供我自己的答案并解释原因,但 ...

  9. 按周选择的时间控件_基金定投到底是选择按周定投好还是按月定投好,两者区别是什么?...

    很多朋友听过基金定投对于工薪族来说是比较好的理财的工具,因为可以定时定额的投向于固定的标的基金,因此就有新来的朋友会不了解,定额定标的比较好理解,可是固定时间,内要定投是要按每周还是每月去进行呢? 对 ...

最新文章

  1. 简单图片浏览器的实现
  2. Vue后台管理系统实现登录功能
  3. 深度学习表征的不合理有效性——从头开始构建图像搜索服务(一)
  4. MyBatis3.x和Spring3.x的整合
  5. ueditor1_4_3-utf8-jsp 配置实现上传图片的功能
  6. 注意地方hadoop中的pi值计算
  7. 在SQL-SERVER2000中对同一个数据库多张表进行查询时怎样避免笛卡儿乘积???...
  8. [硬核干货]由0到1,突破信息系统项目管理师(呕心沥血经验之谈)!!!
  9. Python 字符串
  10. Glide4 设置默认图片和错误图片,即设置占位图
  11. 每日必读DZone Spring:Spring @Transactional 是如何真正工作的?
  12. 《面试知识,工作可待:集合篇》-java集合面试知识大全
  13. 【叔小生】JavaScript进阶篇
  14. vc的含义(与c的区别)
  15. Q平台Audio集成开发 高通Audio术语缩写
  16. sinr是什么意思_seo信噪比是什么,seo信噪比是什么意思
  17. Execute Disable Bit
  18. VSCode配置settings.json
  19. JAVA 大数的乘法运算和取余运算
  20. 搞定需要HTTPS证书访问的WebAPI

热门文章

  1. dnf虚拟机服务器别人可以进吗,租号玩禁止在虚拟机上使用-租号玩上号器安全不...
  2. 蓝思科技:董事会提议向下修正公司可转债转股价格
  3. CTF常见的加密和编码方法
  4. python 数据分析论文_数据分析-任务:论文作者统计
  5. 实现金山快译工具条的自动收缩功能
  6. linux烟雾传感器程序,树莓派4B之烟雾传感器模块(python3)
  7. 2015年的总结, 迎接2016年的新目标
  8. NETframwork 4.7.1 安装遇到问题“无法建立到信任根颁发机构的证书链”的解决方法
  9. 关于0“是不是自然数的了解
  10. c#ras获取宽带账号密码_如何将远程科学Ras pi数据获取到基于云的仪表板