微型嵌入式操作系统对比
GPL(General Public License),即GNU通用公共许可证
1、 uCos-II(ucos ii):商业和GPL双许可。μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。
2、 FreeRtos:和ucos-ii有部分类似,移植更方便,有赶超uCos-II的趋势,GPL许可。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行效率。FreeRTOS操作系统既有优点也存在不足。其不足之处,一方面体现在系统的服务功能上,如FreeRTOS只提供了消息队列和信号量的实现,无法以后进先出的顺序向消息队列发送消息;另一方面,FreeRTOS只是一个操作系统内核,需外扩第三方的GUI(图形用户界面)、TCP/IP协议栈、FS(文件系统)等才能实现一个较复杂的系统,不像μC/OS-II可以和μC/GUI、μC/FS、μC/TCP-IP等无缝结合。
3、 eCos: GPL许可。eCos由Redhat推出的小型即时操作系统,最低编译核心可小至10K的级别,适合用于作bootloader增强,微小型系统。 此系统和嵌入式Linux系统的差异是他将操作系统做成静态连结(static library)的方式,让应用程式透过连结(linker)产生出具有操作系统的特性的应用程式。eCos最大的特点是模块化,内核可配置。如果说嵌入式Linux太庞大了,那么eCos可能就能够满足要求。它是一个针对16位、32位和64位处理器的可移植开放源代码的嵌入式RTOS。和嵌入式Linux不同,它是由专门设计嵌入式系统的工作组设计的。重要的是,eCos提供的Linux兼容的API能让开发人员轻松的将linux应用移植(这点和RTEMS很相似),与此同时,应用程序不用跑在Linux复杂的内核机制上(这套机制,对于大型服务器也许还凑合,但是对于短小精悍的嵌入式应用,太浪费了),大大节省了RAM的使用。
4、 TINYOS: GPL许可。TinyOS是UC Berkeley(加州大学伯克利分校)开发的开放源代码操作系统,专为嵌入式无线传感网络设计,操作系统基于构件(component-based)的架构使得快速的更新成为可能,而这又减小了受传感网络存储器限制的代码长度。
5、 Salvo:商业和GPL双许可。针对microchip MCU设计的RTOS,非常小巧的RTOS。
6、 PicoOS: GPL许可。一个不错的RTOS,可惜现在基本没有维护了。
7、 QP:量子框架RTOS,信息待查阅(很小巧的操作系统,采用面向对像设计方法,和UML建模,又很在乎软件的可靠性、稳定性、可测试性、可维护性、可扩展性)。
8、 CoOS:商业和GPL双许可。免费并开源;ARM Cortex M3及M0定制操作系统; 高度可裁剪性,最小系统内核仅974Byte; 支持优先级抢占和时间片轮转; 自适应任务调度算法; 零中断延时时间; 堆栈溢出检测; 信号量、邮箱、队列、事件标志、互斥等同步通信方式;支持多种编译器:ICCARM、ARMCC、GCC。CoOS和UCOS两者从本质上是就不一样的,首先CoOS是专门针对Cortex M系列的芯片,其次,在实现上,CoOS摒弃了主流的实时内核(如UCOS)通过“开关中断”实现系统临界区的方案,转而自行设计一套系统锁来维护整个系统运行时对临界资源的独占访问,这样做无需通过开关中断来实现临界区,从而达到几乎零中断延时的效果。相比UCOS的优势在于CoOS是ARM Cortex M3及M0定制操作系统,在ARM Cortex M3及M0芯片的开发中,有以下优势:
1.实时性要好些,CoOS不用在临界代码时开关中断;
2.占用空间要小些,高度可裁剪性,最小系统内核仅974Byte;
3.功能上比UCOS多支持时间片轮转调度和可变长分区的内存管理;
4.CoOS有配套的集成开发环境,UCOS没有,目前已经支持jlink;
5.CoOS是免费开源的,而UCOS是需付费的;
PS: 还有下面一些如果也可以认为RTOS的话:aortos/BeeOS/Carbon/ChibiOS/emlib/ertos/HomeOS/HTC/ivmuk/LEJOS OSEK/nutx/radlib/SCMRTOS/small rtos/tirtos/uSmartX/XMK。