FreeRTOS系列第1篇---为什么选择FreeRTOS?
扫描二维码
随时随地手机看文章
1.为什么学习 RTOS?
作为基于 ARM7、Cortex-M3 硬件开发的嵌入式工程师,我一直反对使用 RTOS。不仅因为不恰当的使用 RTOS 会给项目带来额外的稳定性风险,更重要的是我认为绝大多数基于 ARM7、Cortex-M3 硬件的项目,还没复杂到使用 RTOS 的地步,使用状态机就足够了。
对于现代的微处理器,特别是资源相对丰富 ARM7、Cortex-M3 硬件来说,RTOS 占用的硬件资源已经越来越可以忽略。所以在当今环境下,我们无需担心 RTOS 会拖累性能。相反,RTOS 提供的事件驱动型设计方式,使得 RTOS 只是在处理实际任务时才会运行,这能够更合理的利用 CPU。在实际项目中,如果程序等待一个超时事件,传统的无 RTOS 情况下,要么在原地一直等待而不能执行其它任务,要么使用复杂(相对 RTOS 提供的任务机制而言)的状态机机制。如果使用 RTOS,则可以很方便的将当前任务阻塞在该事件下,然后自动去执行别的任务,这显然更方便,并且可以高效的利用 CPU。处理这类事件,是我使用 RTOS 的最大动力,但考虑到系统的稳定性,我不得不再三权衡 RTOS 可能带来的一些弊端:
-
大多数 RTOS 代码都具有一定规模,任何代码都可能带来 BUG,何况是代码具有一定规模的 RTOS,因此引入 RTOS 的同时也可能会引入该 RTOS 的 BUG,这些 RTOS 本身的 BUG 一旦被触发,影响可能是是灾难性的。 -
熟练的使用 RTOS 是一项技能,需要专业的知识储备和长期的经验积累。不将 RTOS 分析透彻,很容易为项目埋下错误。典型的,像中断优先级、任务堆栈分配、可重入等,都是更容易出错的地方。 -
RTOS 的优先级嵌套使得任务执行顺序、执行时序更难分析,甚至变成不可能。任务嵌套对所需的最大堆栈 RAM 大小估计也变得困难。这对于很多对安全有严格要求的场合是不可想象的。 -
RTOS 应该用于任务复杂的场合,以至于对任务调度的需求可以抵消 RTOS 所带来的稳定性影响,但大部分的应用并非复杂到需要 RTOS。
以上原因是我拒绝在实际项目中使用 RTOS 的理由,但是否使用 RTOS 跟是否学习 RTOS 完全是两码事。我认为任何嵌入式软件设计人员都应该至少学习一种 RTOS,不仅是需要掌握 RTOS 背后的操作系统原理、学习 RTOS 的编程方式,更是为将来做准备。
即便我认为现在的物联网有点言过其实,但我依然看好物联网的发展前景。随着物联网的发展,未来的嵌入式产品必然更为复杂、连接性更强以及需要更丰富的用户界面。当处理这些任务时,一个好的 RTOS 就变得不可缺少了。
书到用时方恨少,我希望自己永远不会有这种感觉。所以从现在起,我要开始深入一个 RTOS,探索它背后的原理,掌握其编程方法,避免其缺陷和陷阱,并将它安全的用在将来的项目中。
2.为什么选用 FreeRTOS?
对比了许多 RTOS,最终选择 FreeRTOS,原因是多方面的:
-
SafeRTOS 便是基于 FreeRTOS 而来,前者是经过安全认证的 RTOS,因此对于 FreeRTOS 的安全性也有了信心。 -
大量开发者使用,并保持高速增长趋势。2011、2012、2013、2014、2015、2017 年(暂时没有 2016 年的数据)的 EEtimes 杂志嵌入式系统市场报告显示,FreeRTOS 在 RTOS 内核使用榜和 RTOS 内核计划使用榜上都名列前茅。更多的人使用可以促进发现 BUG,增强稳定性。 -
简单。内核只有 3 个.c 文件,全部围绕着任务调度,没有任何其它干扰,便于理解学习。而且,我根本不需要其它繁多的功能,只要任务调度就够了。 -
文档齐全。在 FreeRTOS 官方网站上,可以找到所有你需要的资料。 -
免费、开放源码。完全可以免费用于商业产品,开放源码更便于学习操作系统原理、从全局掌握 FreeRTOS 运行机理、以及对操作系统进行深度裁剪以适应自己的硬件。 -
2017 年底,FreeRTOS 作者加入亚马逊,担任首席工程师,FreeRTOS 也由亚马逊管理。同时修改了用户许可证,FreeRTOS 变得更加开放和自由。背靠亚马逊,相信未来 FreeRTOS 会更加稳定可靠。此外,以前价格不菲的《实时内核指南》和《参考手册》也免费开放下载,这使得学习更加容易。
学习的资料来源主要是 FreeRTOS 的官方网站(www.freertos.org)和源代码。FreeRTOS 的创始人 RichardBarry 编写了大量的移植代码和配套文档,我只不过是沿着 Richard Barry 铺好的路前进,所以,这没什么困难的。
最后,感谢 RichardBarry 的付出,感谢 Richard Barry 的无私开源精神!
附录 1:
2010~2017 年 EEtimes 杂志嵌入式市场调查报告有关 RTOS 使用榜截图
-
附录 1.1 2010 和 2011 年 RTOS 使用榜
-
附录 1.2 2012 和 2013 年 RTOS 使用榜
-
附录 1.3 2013 年和 2014 年 RTOS 使用榜
-
附录 1.4 2014 年和 2015 年 RTOS 使用榜
-
附录 1.5 2017 年 RTOS 使用榜
本文已获取「CSDN」作者独家授权,请勿二次转载,请获取作者授权。
声明:本公众号授权转载本文仅传播相关知识,无任何盈利和商业行为,部分内容有删改。
原文地址:https://blog.csdn.net/zhzht19861011/article/details/49819109
作者:zhzht19861011
推荐阅读
(点击标题可跳转阅读)
【编程之美】用C语言实现状态机(实用)
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!