一文读懂FreeRTOS

2018-05-21 14:13:01 来源:嵌入式软件开发学习圈
标签:

 

今天带着大家了解和学习一下FREERTOS..
 
嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对于C/OS-II、embOS等商业操作系统,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可能带来的一些弊端:
 
1.大多数RTOS代码都具有一定规模,任何代码都可能带来BUG,何况是代码具有一定规模的RTOS,因此引入RTOS的同时也可能会引入该RTOS的BUG,这些RTOS本身的BUG一旦被触发,影响可能是是灾难性的。
 
2.熟练的使用RTOS是一项技能,需要专业的知识储备和长期的经验积累。不将RTOS分析透彻,很容易为项目埋下错误。典型的,像中断优先级、任务堆栈分配、可重入等,都是更容易出错的地方。
 
3.RTOS的优先级嵌套使得任务执行顺序、执行时序更难分析,甚至变成不可能。任务嵌套对所需的最大堆栈RAM大小估计也变得困难。这对于很多对安全有严格要求的场合是不可想象的。
 
4.RTOS应该用于任务复杂的场合,以至于对任务调度的需求可以抵消RTOS所带来的稳定性影响,但大部分的应用并非复杂到需要RTOS。
 
以上原因是我拒绝在实际项目中使用RTOS的理由,但是否使用RTOS跟是否学习RTOS完全是两码事。我认为任何嵌入式软件设计人员都应该至少学习一种RTOS,不仅是需要掌握RTOS背后的操作系统原理、学习RTOS的编程方式,更是为将来做准备。
 
即便我认为现在的物联网有点言过其实,但我依然看好物联网的发展前景。随着物联网的发展,未来的嵌入式产品必然更为复杂、连接性更强以及需要更丰富的用户界面。当处理这些任务时,一个好的RTOS就变得不可缺少了。
 
书到用时方恨少,我希望自己永远不会有这种感觉。所以从现在起,我要开始深入一个RTOS,探索它背后的原理,掌握其编程方法,避免其缺陷和陷阱,并将它安全的用在将来的项目中。
 
2.为什么选用FreeRTOS?
 
对比了许多RTOS,最终选择FreeRTOS,原因是多方面的:
 
1.SafeRTOS便是基于FreeRTOS而来,前者是经过安全认证的RTOS,因此对于FreeRTOS的安全性也有了信心。
 
2.大量开发者使用,并保持高速增长趋势。2011、2012、2013、2014、2015、2017年(暂时没有2016年的数据)的EEtimes杂志嵌入式系统市场报告显示,FreeRTOS在RTOS内核使用榜和RTOS内核计划使用榜上都名列前茅。更多的人使用可以促进发现BUG,增强稳定性。
 
3.简单。内核只有3个.c文件,全部围绕着任务调度,没有任何其它干扰,便于理解学习。而且,我根本不需要其它繁多的功能,只要任务调度就够了。
 
4.文档齐全。在FreeRTOS官方网站上,可以找到所有你需要的资料。
 
5.免费、开放源码。完全可以免费用于商业产品,开放源码更便于学习操作系统原理、从全局掌握FreeRTOS运行机理、以及对操作系统进行深度裁剪以适应自己的硬件。
 
学习的资料来源主要是FreeRTOS的官方网站(www.freertos.org)和源代码。FreeRTOS的创始人RichardBarry编写了大量的移植代码和配套文档,我只不过是沿着Richard Barry铺好的路前进,所以,这没什么困难的。
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
美国无法摆脱华为依赖,华为明天的发布会将会如何?
美国无法摆脱华为依赖,华为明天的发布会将会如何?

2019 年 5 月 20 日,美国政府发布为期 90 天的“临时通用许可”,推迟对华为及其附属公司现有在美产品和服务所实施的交易禁令,以便该公司能为现有客户提供服务。

被误会的鸿蒙

华为发布了鸿蒙操作系统,业界的争论也播散开来。智能相对论ihahe先不讲技术,只讲1、为什么要做鸿蒙;2、鸿蒙生态是什么;3、鸿蒙如何变现。

PCB 设计常见布线方式梳理

在我们学习嵌入式开发的过程中,PCB布线是必不可少的。好的布线方式,轻则看着美观、布局合理,重则可以节约生产成本,达到良好的电路性能和散热性能,使元器件的性能达到最优。今天,小编梳理了PCB设计中常见的布线方式,希望大家看后能有所启发。

鸿蒙想要成功,开发人员、生态、用户一个都不能少

华为已经发布Harmony OS(鸿蒙操作系统),之前我们已经看到许多野心勃勃的移动OS折戟沉沙,败北而归,为什么失败?因为缺少App支持,缺少开发者支持。对于Harmony,外媒到底是怎样看的?有了

嵌入式“软”硬领域缺乏探索,使用 FPGA 有何潜力?

在一个领域中,如果唯一不变的是变化,那么不需要对电子技术 和设计方法的发展变化做多少回顾,就能见证到变化是如何使设计工程师能够创建出下一代创新产品。

更多资讯
罗德与施瓦茨联合COMPRION公司,为嵌入式SIM卡eSIM的远程sim配置提供组合测试解决方案

罗德与施瓦茨宣布与移动测试专业公司COMPRION合作,为通信解决方案提供商提供了用于测试工业4.0和联网汽车应用所需的嵌入式UICC(eSIM)的远程SIM配置(RSP)的一种方法。

华为将借鸿蒙打造万物互联时代?汽车或将是首个爆点

犹如十几年前微软如日中天的时候,所有科技界的人物在思考着“下一个微软在哪里?”

苹果“双标”,竟然在iOS 13 中限制第三方软件的位置跟踪功能?

iOS 13虽说还没有推出正式版,但是测试版已经进行了多版,其中苹果对一些功能的改进,引起了开发者强烈不满。

做物联网操作系统,为什么是一个“九死一生”的行当?
做物联网操作系统,为什么是一个“九死一生”的行当?

阿里AliOS、谷歌Fuchsia、西门子Mindsphere、ARM公司mbedOS…成功的IoT操作系统意味着更大的市场份额、更高的话语权和可观的经济回报。而且已经存在多时的工业互联网平台亦可被看作是某种层面的IoT操作系统,这篇文章我们不妨从多个角度观察IoT操作系统的走势。

一个华为布局了20年的操作系统,展示了华为在物联网上的野心
一个华为布局了20年的操作系统,展示了华为在物联网上的野心

8月9日,华为开发者大会在广东东莞松山湖召开, 这次大会聚集了产业链1500多家合作伙伴、5000余位开发者, 一时间吸引了各方眼球,连央视都参与进来,进行现场直播。