聊一聊嵌入式中常用的实时操作系统(RTOS)
嵌入式Linux系统 VS RTOS
一提到嵌入式的操作系统,自然绕不开嵌入式Linux操作系统。嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行。它性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,所以在不同行业,尤其是消费类电子产品中广泛使用。
然而即便如此,嵌入式Linux操作系统也有其难以弥补的缺陷:
- Linux操作系统有庞大的内核,对任何中断指令的响应都需要一个复杂的处理过程,对一些需要快速响应的场合显得有些力不从心。
- 软硬件成本较高,需要功能强劲的MCU和外部资源,不适用于低成本的产品
- 相对而言,配备嵌入式Linux会导致功耗较高,不适用于功耗要求严格应用场合
因为上述提及的一些缺陷,所以在对实时性要求比较高,成本控制比较严格或者低功耗应用等场合,常常会使用实时操作系统RTOS。(注:原生Linux系统是分时操作系统,一些衍生的嵌入式Linux进行了优化和改进,也能做到很高的实时性,也可以认为是RTOS)。
简单来说,实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系 统作出快速响应,并控制所有实时任务协调一致运行的操作系统。主要特点如下:
1)高精度计时系统
计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。
2)多级中断机制
一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
3)实时调度机制
实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。
RTOS使用现状
一起来看一份某调查机构关于嵌入式操作系统的调研结果。(摘自2015全球嵌入式市场分析报告)
调查用户分布
操作系统占有率
下一年度考虑使用的操作系统比例
从调查结果可以看到市场占用率前两名分别为uc/OS(II + III 27%)和FreeRTOS(22%)。这两款RTOS即便在国内用的比较多。除此之外,从我了解的情况来说,国内也有不少人士使用Keil RTX,TI的DSP/BIOS。另外由国内人士自己开发的RT-Thread近几年也越来越多人使用。
uc/OS
俗话说得好,早起的鸟儿有虫吃。uc/OS能够在国内普及的很大一个原因是因为uc/OS比较早被介绍到中国,早在七八年前小编上大学期间,就有uc/OS的课程,教材用的是邵贝贝教授翻译的《嵌入式实时操作系统uC/OS-II》。这本书也让许多行业人士入了RTOS的门。另外uc/OS教材案例丰富,官网也有提供基于不同嵌入式芯片移植好的demo,交流论坛也有不少,大大降低了使用门槛。详细介绍就不贴上,相信大家再熟悉不过了。然而商业上使用uc/OS是需要付版权费的,而且费用不菲。所以虽然国内用的人很少,但是真正向Micrium公司购买版权的公司全中国估计不超过10个(至少2012年的时候,只有两家公司有购买版权)。官网链接:
https://www.micrium.com/
FreeRTOS
FreeRTOS欧美用得比较多,以前的公司有个与欧美同事合作项目,人家点名要求使用FreeRTOS。国内目前用得并不算太多,但是发展趋势不错。
同uc/OS类似,FreeRTOS也是一个轻量级的实时操作系统内核,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。官网的移植demo和教程现在也非常全面了,基本上的嵌入式芯片都已经覆盖,可以前往官网下载。相比uc/OS,FreeRTOS的主要优势在于:
- 内核文件占用RAM,ROM的要求少一些(其实差异不大,但是对于片内资源较少的MCU也算是一种优势)
- 支持协程,可以共享stack,进一步降低RAM的消耗
- 支持有同等优先级的任务,可以使用时间片轮转的方式进行调度
- 当然,最终要的是商业使用是免费的
TI DSP/BIOS
DSP/BIOS是TI公司特别为其TMS320C6000TM,TMS320C5000TM和TMS320C28xTM系列DSP平台(貌似现在已经支持更多TI的芯片)所设计开发的一个尺寸可裁剪的实时多任务操作系统内核,具有实时操作系统的诸多功能,如任务的调度管理、任务间的同步和通信、内存管理、实时时钟管理、中断服务管理、外设驱动程序管理等。如果你有使用上述DSP芯片,建议你使用这款RTOS。之前使用过一段时间,我觉得它最大的优势在于TI已经将DSP/BIOS集成到了CCS开发环境中了,你可以通过可视化界面去配置任务,中断,时钟,资源分配等,简单易上手。
RT-Thread
RT-Thread是一款来自中国的开源嵌入式实时操作系统,由国内一些专业开发人员从2006年开始开发、维护,除了类似FreeRTOS和UCOS的实时操作系统内核外,也包括一系列应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统,POSIX接口,图形用户界面,FreeModbus主从协议栈,CAN框架,动态模块等,因为系统稳定,功能丰富的特性被广泛用于新能源,电网,风机等高可靠性行业和设备上,已经被验证是一款高可靠的实时操作系统。
RT-Thread实时操作系统遵循GPLv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。这款RTOS只在若干年前关注过,一直没亲自体验过,希望这款国人自己开发的RTOS能越走越远,真正开启下一代操作系统演化。官网链接:http://www.rt-thread.org/
本期就这样了。觉得写得不错的话,欢迎关注本公众号。