谈谈FreeRTOS及其授权方式
2015-07-02中国嵌入式系统产业联盟北京麦克泰软件技术公司何小庆
中国嵌入式系统产业联盟/北京麦克泰软件技术公司 何小庆
引 言
最近大家都在谈论物联网,人人都在做智能硬件,FreeRTOS也似乎被推到了风口浪尖,很多MCU芯片公司的开发板、SDK开发套件也都移植到了FreeRTOS上。著名的智能手表Pebble OS的内核使用了FreeRTOS,博通的WICED Wi-Fi SDK也推荐使用FreeRTOS,到底是什么让FreeRTOS火起来了?
1 FreeRTOS的起源
FreeRTOS项目是由Richard Barry在英国创建的。Richard大学时学习的是计算机实时系统专业,他参与创建过几个公司,主要专注于工业自动化、航天和仿真市场。Richard现在是Real Time Engineers Ltd的技术总监、拥有者和FreeRTOS项目的维护者。
FreeRTOS最初的目标是提供一个免费的、容易使用的RTOS解决方案。无论使用Windows还是Linux,都不需要特别关注源代码文件路径在哪里,或者调试环境如何配置,FreeRTOS都很容易构建和运行。
FreeRTOS项目大约开始于2003年,每一个版本在正式发布zip压缩包之前,都经过完整的测试以确保产品的稳定,而且压缩包里面包含一个简单的入门项目示例,帮助初学者学习和理解。
2 FreeRTOS产品
FreeRTOS是一个RTOS(实时多任务操作系统)的内核,支持近60家公司的140种 MCU(微控制器)和MPU(微处理器),涵盖8、16、32位架构,FreeRTOS支持开发者使用IAR、GCC和Keil等编译器预编译的工程项目。最近FreeRTOS自己开发了“FreeRTOS+TCP”和“FreeRTOS+FAT”两个内核之上的附加模块(称为中间件),这两个产品在FreeRTOS官网FreeRTOS.org的FreeRTOS lab页面中可以找到。
目前最新的FreeRTOS压缩载包的版本是8.2.2,压缩包解压后有以下几个文件目录:
①FreeRTOS/source包含FreeRTOS实时内核的源代码;
②FreeRTOS/demo包含了FreeRTOS内核针对不同嵌入式处理器和编译器的官方移植和demo项目,比如CORTEX_LPC1768_IAR,能够支持 NXP Cortex LPC1768 MUC使用IAR EW ARM编译器项目工程文件;
③FreeRTOS-Plus包含FreeRTOS和第三方的中间件,包括:CLI(命令行)、FAT-SL(标准文件库)、IO(POSIX标准外设库)、NABTO(点对点连接云服务)、UDP、Trace(内核跟踪分析)和CYASSL(嵌入式SSL)等模块,开发者需要注意的是上面产品的授权方式可能与FreeRTOS不同,请仔细阅读对应代码目录下的授权文件;
④FreeRTOS-Plus/Demo目录下包含了FreeRTOS中间件预配置好的工程文件,有些工程文件需要运行在Windows仿真环境下。
某些第三方的中间件没有包括在FreeRTOS压缩包内,比如Interniche TCP/IP协议栈软件,它包括IPV4/V6和各种网络应用(比如 HTTP/SNMP/FTP)的源代码和二进制版本。FreeRTOS+Trace是瑞典Percepio公司的商业软件,提供FreeRTOS应用运行时的诊断功能,见图1。FreeRTOS压缩包里面提供的是一个Windwos仿真环境的免费版本。WITTENSTEIN High Integrity Systems(WHIS)是一家英国公司,它是Real Time Engineers Ltd(FreeRTOS)官方的商业合作伙伴,他们开发的SafeRTOS是基于FreeRTOS技术、经过安全认证的实时操作系统内核,这些安全认证包括EC 61508、EN62304和FDA 510(k)等。
3 FreeRTOS的授权方式
FreeRTOS内核采用的是GPL授权方式,但它是一个修改后的GPL协议。FreeRTOS的GPL授权给了这样一个例外条件:即这些独立模块如果使用的是FreeRTOS API与FreeRTOS进行通信,并且这些独立模块不涉及内核和内核调度,也没有对任务、任务通信和信号量等内核功能作出改动,这些模块可以不按照GPL方式公开源代码[1]。与通用的GPL条款不同的是:开发者、芯片公司和设备制造商不会被要求公开自己与FreeRTOS内核不直接相关模块(称为独立模块)的源代码,如应用、驱动和中间件,见图2。Linux内核采用的就是通用GPL条款。
图1 FreeRTOS+Trace的诊断功能
图2 FreeRTOS内核授权方式参考
FreeRTOS demo目录下的第三方软件的授权,不在FreeRTOS内核授权范围,请阅读相关目录下的授权文件,比如前面提到的FreeRTOS+Trace就是一个商业软件,只不过在压缩包里面提供了一个免费版本。还有一些在FreeRTOS内核源代码里面,既不属于FreeRTOS版权,又不属于GPL授权范围,如芯片公司头文件(header file)、外设驱动(如SPI、中断和timer等)和编译器公司的头文件(如IAR和keil),开发者和设备制作商需要联系芯片公司了解他们的授权方式和要求。μIP TCP/IP协议的作者是Adam Dunkels,作为开源软件,授权的细节可以从μIP的源代码文件夹里面获得。lwIP TCP/IP协议的拥有者是瑞典计算机科学研究所,也是一个开源软件,授权细节可以从lw IP的源代码文件夹里面获得。
另外,FreeRTOS的授权声明中还包括了以下条款:除非得到Real Time Engineers Ltd公司允许,任何人不得用于以操作系统运行和编译时间测量为目标的出版物,关于这点研究机构和高校应该尤为注意。
为了减少一些企业和设备制造商对于GPL授权条款、技术支持、服务和其他知识产品等有关的法律问题,FreeRTOS还有一种商业授权版本(OpenRTOS)可供用户选择,OpenRTOS由英国 WITTENSTEIN High Integrity Systems公司提供授权和技术支持。表1给出了FreeRTOS和OpenRTOS的比较,据悉国内已经有汽车电子企业在电动汽车项目中购买OpenRTOS商业授权。
关于设备制造商使用了FreeRTOS之后,如何遵循GPL原则发布源代码和声明文件,可以参考Pebble公司的Pebble OS。Pebble是一家美国著名的智能手表公司,它开发的智能手表操作系统Pebble OS内核是基于FreeRTOS的,因为智能手表App任务权限管理的需要,修改了内核本身的一些功能(如MPU的管理方式和软中断等内核功能),因此必须公开修改过的Pebble OS内核以及相应的说明文档[2]。
结 语
FreeRTOS是一个非常容易使用的RTOS,也得到了许多流行的 MCU芯片、开发板和工具的支持。笔者在2015年春季给北京航空航天大学软件学院物联网技术与应用专业开设的《可穿戴系统设计与实现》课程中,就讲授了FreeRTOS。Pebble智能手表作为使用了FreeRTOS的典型可穿戴设备成为课堂案例,课程中的实验平台采用了STM32 Nucleo开发板(Pebble使用的是STM32 Cortex-M3),Nucleo软件中间件就包含FreeRTOS移植好的源代码和应用工程项目。
表1 FreeRTOS和OpenRTOS的比较
博通公司的WICED Wi-Fi SDK,还有其他公司物联网操作系统也在使用FreeRTOS[3],实时性和尺寸小是FreeRTOS重要的技术因素,采用GPL授权方式,更符合互联网开放和共享精神,应该是更重要的原因。FreeRTOS修改后的GPL条款考虑了芯片、开发者和设备商隐私要求,更加合理和富有灵活性,这与Android OS授权方式有着异曲同工之处[4]。
[1]License detail[EB/OL].[2015-09].http://www.freertos.org/a00114.html.
[2]FreeRTOS Code Revisions From Pebble[EB/OL].[2015-09].http://developer.getpebble.com/blog/2014/05/23/FreeRTOS-Modifications-From-Pebble/.
[3]何小庆.物联网操作系统浅析[J].单片机与嵌入式系统应用,2015(1).
[4]何小庆.Linux和Android:哪个是你下一个设计的正确选择?[EB/OL].[2015-09].http://www.eefocus.com/allenhe/blog/13-03/292378_84176.html.