开启辅助访问 切换到窄版

打印 上一主题 下一主题

为何要学RTOS,我们应该如何选择一款好的RTOS?

[复制链接]
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为何要学RTOS,我们应该如何选择一款好的RTOS?

我们为什么要学RTOS?学习RTOS能够在现实中解决哪些问题?
对于这两个学习嵌入式系统开发的问题,想必已经是被问得最多的了。那么,学习RTOS究竟有哪些好处,学成之后该如何去应用RTOS?
为何要学RTOS?
在实际项目中,如果程序等待一个超时事件,在传统无RTOS情况下,要么在原地一直等待而不能执行其他任务,要么使用复杂的状态机机制。如果使用RTOS,则可以很方便的把当前任务阻塞在该事件下,然后去执行别的任务,这个显然更加方便、也能更高效利用CPU资源。
RTOS可应用于任务复杂的场合,随着物联网的发展,未来的嵌入式产品必然向着更为复杂、连接性更强以及需要更丰富的用户界面,因此,一个好的RTOS变得不可或缺;
RTOS系统强调实时性、短时间内响应,满足物联网高速、实时、可确定性、可靠性等诸多优势,同时也是实时商用多任务os,追求系统资料的最大利用率,未来前途广阔;
RTOS代码量少,是编写管理代码的最佳系统。相比通用linux系统,就包含调度、文件、网络、驱动等完整代码,而RTOS仅包含调度、同步、互斥、时钟等代码,并能根据应用需求实际增加,大大减少编写和管理工作量。
如何选择RTOS?
当您决定使用 RTOS,下面的问题就是选择什么 RTOS 了。市面上的RTOS实在是太多,各种各样的都有,我们选择一个RTOS的时候,可能要权衡以下因素:
1.成本
2.可靠性
3.实时性
4.工具链
5.模块丰富
6.RTOS 内核 RAM、ROM 占用量
7.支持
成本主要是 RTOS 的版费、学习成本。这个差别可大了,有些操作系统,如商业的VxWorks、QNX、Lynx、uC/OS,贵啊,但拍了银子,人家肯定会教您上手的。但很多操作系统,如 FreeRTOS、 RTEMS、ecos、RT-Thread,商业使用几乎是没有成本的,也没有任何的版权问题。撇开这些商业收费的 RTOS 不谈,就谈这些开源免费的 RTOS,成本主要是学习成本了。如RTEMS这种操作系统就不太好学,资料少,本身的复杂度也高;如 FreeRTOS,小巧,研究的人也多,本身代码也不复杂,学习曲线不陡峭,很容易爬上去。
可靠性是靠时间沉淀的。市场上不乏一些后起之秀,如rt-thread,相比 rtems 这种鼻祖类的 rtos,还稍显稚嫩。这并不意味这我们什么都选择 rtems, 那 rt-thread 怎么发展?对于小型的项目,可以试一试。大型项目,为了减少技术上的风险,还是谨慎为妙。
实时性,这个应该是 RTOS 的看家本领,我初学 rtos 的时候,好喜欢看牛人搞得 RTOS 对比表格。上下文切换时间啊,中断响应时延啊……总喜欢挑那些时间最小的系统……但后来我知道了,事实上不是几个对比表格就能说清楚问题的。下面会详细说到这些问题。
工具链,它往往决定我们开发的效率,和最终产品交付的质量。有一些 RTOS 没那么幸运,没有让你选择工具链的权利,就算有,也需要付出很大的代价。如 RTEMS 采用GNU的工具链,gnu 的工具链不好用,我就尝试过把 rtems 移到 iar ewarm 下。后来,搞到一半的时候,不得不放弃,付出的精力已经超出了我的承受范围。但 freeRTOS、uC/OS 这类小 RTOS,只要编译器支持编译可重入代码就可以,这条只有老掉牙的编译器不行。所以基本上是个C编译器都可以做Free RTOS、uC/OS的编译。
模块丰富,有没有TCP/IP协议栈、文件系统、CAN协议栈、图形界面等。当然这个都不是必须的,对于简单的产品,可能这些模块都用不到。对于复杂的系统,这些集成好的模块,会大大节省开发时间。自己也可以移植相关的模块,可能会有几个切实的问题不好解决:模块因为不符合 rtos 的设计思想,会对整体的实时性造成损害;也可能因为模块使用的库,和 rtos 使用的库相冲突……
内核 RAM、ROM 的占用量实际上要求 RTOS 高度可裁剪。不是所有内核裁剪到最后都能满足要求,RTOS 都有个最低的 RAM、ROM 要求,只剩一些最基本的服务。每加一个特性会增加一些资源,可以查阅相关资料得到这方面信息,确定系统资源可以保证顺畅的使用该 RTOS。
支持,如果是商业系统,那不用担心,既然付了银子,人家肯定保证实施过程的顺畅。如果是开源系统,开发团队没有像样的 rtos 专家可不行。虽然 rtos 系统都是相通的,了解另外一个 rtos 很快,但有时候也不尽然。RTEMS 这么复杂的 RTOS 搞懂了,去弄 freeRTOS、uC/OS、rt-Thread 小麻雀,自然没问题;要是弄 QNX、VxWorks、Lynx,还是要费点功夫。 RTOS 在开发过程中会遇到很多问题,比如栈的估算、任务优先级的设计、内存的设计、实时性的设计等,都是很不好弄的问题。最好团队内有相关 RTOS 的专家,要是学习的话无所谓,研发产品和系统的话,那就是大问题了。
《6周从0到1系统掌握与应用RTOS》加强班 带你从零开始独立写RTOS系统!
怎样学习RTOS才是正确的学习方式?边读代码、边看书?显然很难提起学习兴趣。再则,直接拿成熟的OS来分析学习,但明显这个东西太大、太复杂,不适合新手或初级工程师学习。
也许,我们需要这样学习RTOS的方式:
· 能够动手写代码实践,然后立即看到学习成果;
· 学习门槛要低,学习难度也要低;
· 要有外力帮助解决学习过程中遇到的各种问题;
· 如果有学习小组更好,督促自己不断地学习。
你也许会说之前没有这样的学习条件,那么现在,
机会来了!
发烧友学院18年全新推出《6周从0到1系统掌握与应用RTOS》升级版训练营(加强班),讲师入驻学员QQ群、论坛小组全天答疑解惑,课程计划每周统一作业审批,统一直播评审课程内容,设置学员阶段性挑战任务等,帮助您在课程学业、实际工作中快速掌握及使用RTOS,提升您未来的职场技能竞争力!

报名RTOS加强班优惠升级!5人参团立减100元学费
好消息!从今日起至5月13日期间,参加李述铜RTOS《6周从0到1系统掌握与应用RTOS》强化班团购报名,即可在原价基础上每人立减100元!
学员人数即将满员,仅剩最后25个报名名额!预购从速哦!
活动时间:2018年5月10日-13日(最后四天)
参与方式:打开微信扫一扫以下二维码,加入RTOS团购群后,根据入群提示完成5人团购报名,组团成功后即可获得课程减免!
扫码立即参与RTOS课程团购!

点击左下角“阅读全文”详细了解RTOS强化班团购活动

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表