LiteOS与freeRTOS、Ucos主流嵌入式操作内核的区别
最近在学习“IoT物联网全栈成长计划”课程,调研了一下LIteOS kernel 与 freeRTOS he Ucos主要参数。
嵌入式操作系统是嵌入式系统的操作系统。它们通常被设计非常紧凑有效,抛弃了运行在它们之上的特定的应用程序所不需要的各种功能。嵌入式操作系统多数也是即时操作系统。主流嵌入式操作系统有:嵌入式Linux、Windows CE、Windows XP Embedded、VxWorks、uCOSII、QNX、FreeRTOS。国内普遍在使用的嵌入式操作系统为:FreeRTOS、uCOSII,随着物联网的发展各大厂家也开始使用和研发自己的嵌入式操作系统,这两年兴起的有RT-Thread、Ali-Thing、还有这次的重点华为LiteOS。 FreeRTOS是一个热门的[1]嵌入式设备用即时操作系统核心,它于2003年由Richard Barry设计,并已被经成功移植到35种不同的微控制器上。FreeRTOS采用MIT许可证许可。FreeRTOS的设计小巧且简易,整个核心代码只有3到4个C文件,为了让代码容易阅读、移植和维护,大部分的代码都是以C语言编写,只有一些函数(多数是架构特定排班副程序)采用汇编语言编写。FreeRTOS提供许多方法以实现多线程(threads)、多作业(task)、互斥锁(mutex)、信号量(semaphore)和软件计时器(software timer),有个为低耗电应用程序提供的无嘀嗒(tick-less)模式,线程的优先权管理也有支持,此外,FreeRTOS提供了四种存储器配置的模式:仅配置(allocate only)以非常简易但快速的算法进行配置与释放;搭配存储器合并,以较复杂但快速的算法进行配置与释放;搭配互斥保护,以 C 库配置进行配置与释放FreeRTOS中没有一些像Linux、Microsoft Windows等典型操作系统具有的先进特征,例如设备驱动程序、先进存储器管理机制、用户管理和网络管理,FreeRTOS着重在运行的简洁与速度,FreeRTOS有时会被视为是一个‘线程库’而非‘操作系统’,尽管可以找到命令行接口和类似POSIX I/O 接口的插件。 FreeRTOS实现了多线程,主程序会在规律的短时间区间内调用一个线程时计方法,这个方法会以循环制依照任务的优先级进行任务切换,一般来说,这个短时间区间介于 1/1000 秒与 1/100 秒之间,透过一个硬件时计中断来计时,但这个区间经常随着特定的应用而改变。
μC/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中)。同时,该系统源代码开放、整洁、一致,注释详尽,适合系统开发。μC/OS-II已经通过联邦航空局(FAA)商用航行器认证,符合航空无线电技术委员会(RTCA)DO-178B标准。μC/OS-II可管理多达63个应用任务,提供服务:信号量、、互斥信号量、事件标识、消息邮箱、消息队列、任务管理、固定大小内存块管理、、时间管理、另外,在μC/OS-II内核之上,有如下独立模块可供用户选择:μC/FS文件系统模块、μC/GUI图形软件模块、μC/TCP-IP协议栈模块、μC/USB协议栈模块。
三款嵌入式系统都是可以进行裁剪,经典使用最小情况:
FreeRTOS | UcosII | LiteOS | |||
ROM | RAM | ROM | RAM | ROM | RAM |
6-12KB | 1KB | 6-24KB | 1KB | 6kB | 1KB |
通过对比可以看出来,各大厂家都可以将系统剪裁到很小,减少系统引起的ROM损耗。
系统能否被更多的使用,配合开发的芯片的驱动也是重点,现在大部分可以在ARM上进行兼容,下面对一下三款操作系统适配过的芯片系类;
FreeRTOS |
UcosII | LiteOS | |
支持的芯片平台 | ARM (ARM7, ARM9, ARM Cortex-M3, ARM Cortex-M4, Cortex-A), Atmel AVR, AVR32, HCS12, MicroBlaze, Cortus (APS1, APS3, APS3R, APS5, FPF3, FPS6, FPS8), MSP430, PIC, Renesas H8/S, SuperH, RX, x86, 8052, Coldfire, V850, 78K0R, Fujitsu MB91460 series, Fujitsu MB96340 series, Nios II, Cortex-R4, TMS570, RM4x | SoC FPGA (Cortex-A) Blackfin(ADSP-CM4xx (Cortex-M)) ARM7, ARM9, ARM11(Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17 Cortex-A53, Cortex-A57 Cortex-R4, Cortex-R5, Cortex-R7 Cortex-M0, Cortex-M1, Cortex-M3, Cortex-M4(F), Cortex-M7) AVR, AVR32(SAM3, SAM4, SAM7, SAM9, SAMA5 (ARM Cortex-based)) PSoC 4, PSoC 5 (Cortex-M) eSi-RISC M14K XMC4000 (Cortex-M) PIC24, PIC32 SmartFusion2 (Cortex-M) Win32 ColdFire HCS12 i.MX Kinetis (Cortex-M) LPC (Cortex-M) LPC (ARM7 / ARM9) MPC5xxx, MPC8xxx VFxxx (Cortex-A & Cortex-M) H8S 78K0R R32C RL78 RX100, RX200, RX600, RX700 RZ/A (Cortex-A), RZ/T1 (Cortex-R & Cortex-M) R-IN32 (Cortex-M) SuperH-2A V850E/2/S Gecko (Cortex-M) STM32F (Cortex-M) STM32L (Cortex-M) STR9 C28x MSP430 (Cortex-M), MSP432 (Cortex-M) Hercules RM (Cortex-R), Hercules TMS570 (Cortex-R) MicroBlaze Zynq-7000 (Cortex-A) Zynq Ultrascale+ MPSoC (Cortex-A & Cortex-R) |
LiteOS开源项目目前支持 ARM Cortex-A核、ARM Cortex-M0,Cortex-M3,Cortex-M4,Cortex-M7 等芯片架构。 |
从支持芯片厂家及平台可以看出,嵌入式操作系统对主流的ARM内核的芯片支持较好,因为FreeROTS和ucos在市场已经很久,同时都有大的厂家支持,导致现阶段他们支持的内核较多,在FPGA和DSP上已经开始有适配和移植,这是华为LtieOs需要努力的方向,要和大芯片厂家合作,能得到更多的支持。
一个好的操作系统,需要有一个好的内核,但也需要更好的中间件和组建的支持,最后我们对比一下,三款系统官方(不含第三方)的组建的支持。统计如下表
FreeRTOS | ucosII | LiteOS | |
组件支持(官方) | TCP、CLI、IO、UDP MQTT、HTTPS、OTA、PKCS AWS IoT Device Shadow Reference Integrations、 LTS Roadmap、MQTT LTS rc1 |
TCP/IP USB CAN bus Mobus |
互联互通 传感器框架 低功耗框架 AI智能 JS引擎 安全框架 LWM2M、MQTT、CoAP、TLS、DTLS、LWIP、ETN|WIFI、GSM、LPWA增强 GUI |
现在FreeRTOS被亚马逊收购了,因为亚马逊的支持,对于AWS云的支持非常好,UcosII现在使用的很多,但是官网给出的组件支持并没有很多,LiteOS因为时华为下的技术,对于华为云的支持,还有自身AI服务和芯片的支持都比较完美。
中国的嵌入式系统还处在开始初期阶段,认识到不足才能更好的进步,还有增加社区使用者,只有使用开发者越多,才能更好的发展。
该文章引用:
https://www.huaweicloud.com/product/liteos.html
https://www.freertos.org/libraries/categories.html
https://www.micrium.com/rtos/kernels/
- 点赞
- 收藏
- 关注作者
评论(0)