1、系统简介
不同的的多任务系统有不同的侧重点。以工作站和桌面电脑为例:
早期的处理器非常昂贵,多以那时的多任务用于实现在单处理器上支持多用户。这类系统中的调度算法侧重于让每个用户“公平共享”处理器时间。
随着处理器的功能越来越强大,价格越来越便宜,所以每个用户都可以独自拥有一个甚至多个处理器。这时候系统的调度算法则设计为让用户可以同时运行多个应用程序,而且计算机也不会显得迟钝。例如:某个用户可能同时运行了一个Word程序,一个Excel,一个邮件客户端,一个WEB浏览器,并且要求每个应用程序对输入有足够快的响应时间。
通用个人PC的输入处理可归类为“软实时”。为了保证用户的最佳使用体验,计算机对每个输入的响应应该限定在一个恰当的时间范围——但是如果响应时间如果超出了这个限定的范围,并不会让人感觉这台电脑没办法使用。例如,键盘操作必须在按下后的某个时间内做出明显的提示。但是如果按键提示超出了这个时间,会使人觉得这个系统响应太慢,而不至于说这台电脑不能使用。
仅仅从单处理器运行多线程这一点来说,实时嵌入式系统中的多任务与通用个人PC的多任务从概念上来讲是相似的。但是实时嵌入式系统的侧重点却不同于通用个人PC——特别是当嵌入式系统期望提供“硬实时”行为的时候。
硬实时功能必须在给定的时间限制内完成,如果没有做到就意味着整个系统的的绝对失败。汽车安全气囊的触发机制就是硬实时系统功能的例子。安全气囊在撞击发生后给定的时间限制内必须弹出。如果响应时间超出了这个时间的限制,会使得车内人员受到伤害,而这正是安全气囊所要防止的。
绝大多数嵌入式系统不仅要求能满足硬实时的要求,也要求能满足软实时的要求。
2、使用系统弊端
- 大多数RTOS代码都具有一定规模,任何代码都可能带来BUG,何况是代码具有一定规模的RTOS,因此引入RTOS的同时也可能会引入该RTOS的BUG,这些RTOS本身的BUG一旦被触发,影响可能是是灾难性的。
- 熟练的使用RTOS是一项技能,需要专业的知识储备和长期的经验积累。不将RTOS分析透彻,很容易为项目埋下错误。典型的,像中断优先级、任务堆栈分配、可重入等,都是更容易出错的地方。
- RTOS的优先级嵌套使得任务执行顺序、执行时序更难分析,甚至变成不可能。任务嵌套对所需的最大堆栈RAM大小估计也变得困难。这对于很多对安全有严格要求的场合是不可想象的。
- RTOS应该用于任务复杂的场合,以至于对任务调度的需求可以抵消RTOS所带来的稳定性影响,但大部分的应用并非复杂到需要RTOS。
3、使用系统优势
对于现代的微处理器,特别是资源相对丰富ARM7、Cortex-M3硬件来说,RTOS占用的硬件资源已经越来越可以忽略。所以在当今环境下,我们无需担心RTOS会拖累性能。相反,RTOS提供的事件驱动型设计方式,使得RTOS只是在处理实际任务时才会运行,这能够更合理的利用CPU。在实际项目中,如果程序等待一个超时事件,传统的无RTOS情况下,要么在原地一直等待而不能执行其它任务,要么使用复杂(相对RTOS提供的任务机制而言)的状态机机制。如果使用RTOS,则可以很方便的将当前任务阻塞在该事件下,然后自动去执行别的任务,这显然更方便,并且可以高效的利用CPU。处理这类事件,是使用RTOS的最大动力。
4、常见的嵌入式操作系统
近两年嵌入式市场调查报告显示常用的RTOS有:FreeRTOS、uC/Os-II、Injouse/custom、Linux、Ubuntu、Android、uC/Os-III、RTX等。
STM32能运行什么操作系统?
首先操作系统有两种:一种用MMU(Memory Managenent Unit,即存储管理单元)的,另一种是不用MMU的。
用MMU的是Windows、MacOS、Linux、Android。
不用MMU的是FreeRTOS、VxWorks、ucLinux、uc/OS。
其次CPU也有两种:带MMU和不带MMU的
带MMU的有 Cortex-A、ARM9 、ARM11系列。不带MMU的有 Cortex-M系列
而我们知道STM32是 Cortex-M3系列的…所以目前还不可能运行Linux操作系统,但是STM32可以运行uc/OS、ucLinux、FreeRTOS 、VxWorks等操作系统。其中uc/OS操作系统是开源代码,且小巧而严谨,具有很高的实时性,可以作为学习linux等高级操作系统的基础,实际项目中也经常使用uc/OS开发。
5、为什么选用FreeRTOS
- SafeRTOS便是基于FreeRTOS而来,前者是经过安全认证的RTOS,因此对于FreeRTOS的安全性也有了信心。
- 大量开发者使用,并保持高速增长趋势。2011、2012、2013、2014、2015连续5年的EEtimes杂志嵌入式系统市场报告显示,FreeRTOS在RTOS内核使用榜和RTOS内核计划使用榜上都名列前茅。更多的人使用可以促进发现BUG,增强稳定性。
- 简单。内核只有3个.c文件,全部围绕着任务调度,没有任何其它干扰,便于理解学习。而且,根本不需要其它繁多的功能,只要任务调度就够了。
- 文档齐全。在FreeRTOS官方网站上,可以找到所有你需要的资料。
- 免费、开放源码。完全可以免费用于商业产品,开放源码更便于学习操作系统原理、从全局掌握FreeRTOS运行机理、以及对操作系统进行深度裁剪以适应自己的硬件。学习的资料来源主要是FreeRTOS的官方网站(www.freertos.org)和源代码。
2010和2011年RTOS使用榜
2012和2013年RTOS使用榜
2013年和2014年RTOS使用榜
2014年和2015年RTOS使用榜