跳转至

项目背景

项目背景

IoTOS简介

物联网操作系统是指以操作系统内核(可以是 RTOS、Linux 等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台

与传统的嵌入式设备相比,物联网感知层的设备更小、功耗更低,还需要安全性及组网能力,物联网通信层需要支持各种通信协议核协议之间的转换,应用层则需要具备云计算能力。在软件方面,支撑物联网设备的软件比传统的嵌入式设备软件更加复杂,这也对嵌入式操作系统提出了更高的要求。为了应对这种要求,一种面向物联网设备和应用的软件系统——物联网操作系统。

物联网中的操作系统涉及到芯片层、终端层、边缘层、云端层等多个层面.单一层次的物联网操作系统与安卓在移动互联网领域的地位和作用类似,实现了应用软件与智能终端硬件的解耦。就像在安卓的生态环境中,开发者基本不用考虑智能终端的物理硬件配置,只需根据安卓的编程接口编写应用程序,就可以运行在所有基于安卓的智能终端上一样,物联网操作系统的作用也是如此。

目前,物联网操作系统主要分为两大类,一是由传统的嵌入式实时操作系统(RTOS)发展而来,比如FreeRTOS、LiteOS、RT-Thread;二是由互联网公司的云平台延伸而来,基于传统操作系统进行“剪裁”和定制的IoT OS,比如Ali OS Things、TencentOS tiny、Win10 IOT。以下仅讨论已开源且有可行性的操作系统。

FreeRTOS

简介

FreeRTOS是与世界领先的芯片公司合作开发的,历时15年,是市场领先的微控制器和小型微处理器实时操作系统(RTOS)。FreeRTOS在MIT开源许可证下免费分发,包括一个内核和一组不断增长的物联网库,适用于所有行业。FreeRTOS的构建注重可靠性和易用性。FreeRTOS内核具有健壮性、占地面积小和广泛的设备支持,被世界领先的公司视为微控制器和小型微处理器的实际标准。预置演示项目和物联网 (IoT) 参考集成内容详尽,使使用者无需确定如何设置项目,能够快速下载、编译。其生态系统提供了广泛的选择,包括社区贡献和专业支持。

优点
  • 具有实时性和可靠性等特点。
  • 支持多种处理器架构和无线技术。
  • 提供了一系列的驱动程序和库。 缺点:
  • 不支持完整的文件系统,需要额外的第三方库支持。
  • 对于处理大量数据和复杂任务的应用程序来说,可能存在性能瓶颈。
  • 可以处理多个任务和中断。
  • 提供了一系列的驱动程序和库,如:FreeRTOS-Plus-TCPFreeRTOS-Plus-CLIFreeRTOS-Plus-FAT...
主要功能

任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。

语言

C和汇编, 其中绝大部分都是用C语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的。

已支持的文件系统

主要为FAT文件系统

相关库

FreeRTOS-Plus-FAT 是一种开源、线程感知和可扩展的 FAT12/FAT16/FAT32 DOS/Windows 兼容 嵌入式 FAT 文件系统,可支持全面线程感知、可扩展、支持 FAT12、FAT16 和 FAT32、明确到任务的工作目录、额外综合错误报告标准、全面的 API等功能。

RT-thread

简介

RT Thread是一个物联网平台,拥有丰富的中间层组件和强大的软硬件生态系统,几乎拥有物联网设备所需的所有关键基本组件,如网络协议、文件系统、低功耗管理等。它支持GCC等所有主流编译工具,使用统一的接口访问硬件外围设备。该系统可以自动进入睡眠模式,并支持动态电压和频率缩放。支持哈希、对称、gcm等算法,安全可靠,支持加密、防篡改、断点恢复、智能恢复、回溯等机制。动态模块和内核可以单独编译,在运行时,编译后的动态模块加载到内核中运行。遵循高度可重用的软件设计原则,一次性编程,永久使用。

优点
  • 面向物联网设备:拥有跨芯片平台、实时操作系统内核、云端一体化、超低功耗设计等等
  • 稳定可靠:已在工业界广泛应用
  • 组件丰富:设备虚拟文件系统为应用提供统一的访问接口,支持FAT、UFFS、NFSv3、ROMFS等;轻型流媒体音频框架,支持常用音频格式,流媒体协议和DLNA/AirPlay...
  • 简单易用:内置Shell调试工具,方便实时监测内核信息;UI Builder,配置器,包管理器等降低开发门槛,提升开发效率...
主要功能

支持多任务以及所有主流微控制器,设备端和云端一体化设计,针对不同应用场景,采用自动功耗控制策略。毫秒级启动时间,层次化的系统安全架构,提供各类安全机制,保障应用和系统安全。集成音频,图像相关的各类算法和智能引擎。

语言

C语言风格的内核面向对象设计,完美的模块化设计

已支持的文件系统

为应用提供统一的访问接口,支持FAT、UFFS、NFSv3、ROMFS等。

Mbed OS

简介

Arm Mbed操作系统是一个免费、开源的物联网操作系统,包括开发物联网产品的所有必要功能。该操作系统包括在基于Arm Cortex-M的硬件上开发智能连接产品所需的一切,包括机器学习功能、安全性、连接堆栈、RTOS内核以及传感器和I/O设备的驱动程序。Arm Mbed操作系统是为物联网而设计的。它集成了连接、机器学习、网络和安全堆栈,并得到软件库、开发硬件、教程和示例的支持。从硬件到云,Mbed OS支持70多个硅、模块、云和OEM合作伙伴,优化开发人员选择。通过使用Mbed OS API,应用程序代码可以保持干净、可移植和简单,同时利用安全性、通信和机器学习。集成解决方案降低了开发成本、时间和风险。

优点
  • 专为物联网而设计:Arm Mbed OS专为物联网而设计。它与连接、机器学习、网络和安全堆栈集成,并受软件库、开发硬件、教程和示例的支持。
  • 蓬勃发展的生态系统:从硬件到云,Mbed OS 支持 70 多个芯片、模块、云和 OEM ,优化开发人员选择。
  • 快速入门:通过使用 Mbed OS API,您的应用程序代码可以保持干净、可移植和简单,同时利用安全性、通信和机器学习。集成解决方案可降低开发成本、时间和风险。
  • 安全性:硬件强制安全性组合 PSA 认证系统,硬件强制隔离 使用信任区技术和参考软件 可信固件-M 项目使您能够开发 并使用 Mbed OS 部署安全设备;通信安全采用SSL和TLS, 用于在互联网上的保护通信的标准协议,将它们包含在 具有简单 API 的 Mbed 项目中。
主要功能

提供用于开发物联网设备的通用操作系统基础,以解决嵌入式设计的碎片化问题。支持所有重要的连接性与设备管理开放标准,以实现面向未来的设计。使安全可升级的边缘设备支持新增处理能力与功能。通过自动电源管理解决复杂的能耗问题。

语言

C++

已支持的文件系统

Littlefs, 尚不清楚有没有外接库使其能够支持不同文件系统;

AliOS - Things

简介

AliOS Things是面向IoT领域的轻量级物联网嵌入式操作系统。致力于搭建云端一体化IoT基础设备。具备极致性能,极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云Link,可广泛应用在智能家居、智慧城市、新出行等领域。已在github上进行开源,并且至2022-2一直在进行调整、维护和优化。

优点
  • 组件化能力:AliOS Things功能非常强大,但是这些功能都是组件化的,开发者只需要按需下载自己需要的组件就好了,大大节省了空间和看代码的时间
  • 统一的可视化开发环境:代码环境搭建,编译,调试在统一的IDE环境下完成,只需要点击简单的图标就可以编译下载了
  • 应用分离:用户开发应用时可以通过提供的工具创建一个工程,这个工程里面仅仅包含应用的代码,用户可以直接调用OS的头文件来使用系统的功能
  • 统一的硬件适配层:提供了统一的硬件HAL层适配,可以让开发者更加方便的移植而不用大量修改应用代码;比如原来通过WiFi 模组联网,现在只需要更改不到10行代码就可以替换为2G模组联网
主要功能

微内核架构,内核资源占用(ROM<2KB,内核支持ldle Task成本);提供场景引擎和低功耗框架;产品级TCP/UDP/IPv6/IPv4支持;MQTT,CoAP,WSF支持;WiFi,蓝牙,LoRA,NB-IoT。支持阿里巴巴自研的uMesh技术,支持物联网设备自动建立通信网络。

语言

主要为C, 存在少量的C++/python/Javascript

已支持的文件系统

统一的VFS接入方式,更标准的应用开发模式,可支持多个文件系统

68747470733a2f2f696d672e616c6963646e2e636f6d2f696d6765787472612f69332f4f31434e30315043414266533162466a597536376934595f2121363030303030303030333433362d322d7470732d323838322d313634362e706e67

Huawei LiteOS

Huawei LiteOS是华为针对物联网领域推出的轻量级物联网操作系统,是华为物联网战略的重要组成部分,具备轻量级、低功耗、互联互通、组件丰富、快速开发等关键能力,基于物联网领域业务特征打造领域性技术栈,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期,可广泛应用于可穿戴设备、智能家居、车联网、LPWA等领域。

?github文档和架构图片中均没有提及文件系统

Zephyr

简介

Zephyr项目是一个可扩展的实时操作系统(RTOS),支持多种硬件架构,针对资源受限的设备进行了优化,并在构建时考虑到了安全性。 Zephyr操作系统基于一个占地面积小的内核,专为资源受限的系统设计:从简单的嵌入式环境传感器和LED可穿戴设备到复杂的智能手表和物联网无线网关。 Zephyr内核支持多种体系结构,包括ARM(Cortex-A、Cortex-R、Cortex-M)、Intel x86、ARC、Nios II、Tensilica Xtensa、RISC-V、SPARC、MIPS以及大量受支持的板。

优点
  • 支持多种处理器架构和无线技术。
  • 提供了一系列的网络协议和传感器驱动程序。
  • 可以在各种设备上运行。
缺点
  • 部分驱动程序和网络协议可能存在不稳定性和兼容性问题。
  • 对于初学者来说,学习曲线较陡峭。
语言

C, Cmake, Assembly

已支持的文件系统

FAT文件系统和LittleFS文件系统。

TinyOS

简介

TinyOS是一个开源、BSD许可的操作系统,专为低功耗无线设备设计,如传感器网络、泛在计算、个人局域网、智能建筑和智能电表中使用的设备。

优点
  • 支持传感器网络和低功耗设备。
  • 提供了一系列的网络协议和传感器驱动程序。
  • 可以在各种设备上运行。
缺点
  • 对于初学者来说,学习曲线较陡峭。
  • 不太适合处理复杂的任务和数据。
语言

nesC(集结了C、C++、java等三种语言),C,C++

已支持的文件系统

RAMFS、TFS以及基于FAT的文件系统。

Contiki

简介

Contiki NG是一款面向下一代物联网设备的开源跨平台操作系统。它专注于可靠(安全可靠)的低功耗通信和标准协议,如IPv6/6LoWPAN、6TiSCH、RPL和CoAP。Contiki NG提供了大量的文档、教程、路线图、发布周期和定义明确的开发流程,可顺利集成社区贡献。

优点
  • 具有低功耗、小内存占用和可扩展性等特点。
  • 支持多种网络协议和传感器。
  • 可以在各种设备上运行。
缺点
  • 不太适合处理复杂的任务和数据。
  • 对于初学者来说,学习曲线较陡峭。
语言

主要为C语言

已支持的文件系统

Coffee文件系统、ProtoFS、RAMFS以及基于FatFs的文件系统。

RIOT

简介

RIOT 是一个实时多线程操作系统,支持物联网 (IoT) 中常见的一系列设备:8 位、16 位和 32 位微控制器。

RIOT 基于以下设计原则:能效、实时功能、小内存占用空间、模块化和统一的 API 访问,独立于底层硬件(此 API 提供部分 POSIX 合规性)。

RIOT 由独立于特定供应商(例如类似于 Linux 社区)的国际开源社区开发。RIOT 获得 LGPLv2.1 许可,这是一个复制式许可证,它围绕

RIOT 提供的免费开源软件平台培养间接业务模式,例如,可以将闭源源代码与 LGPL 代码链接。

优点
  • 支持多种处理器架构和无线技术。
  • 提供了一系列的网络协议和传感器驱动程序。
  • 可以在各种设备上运行。
缺点
  • 部分驱动程序和网络协议可能存在不稳定性和兼容性问题。
  • 对于初学者来说,学习曲线较陡峭。
语言

主要为C, 存在部分c++

已支持的文件系统

FAT16/32、ext2/3/4、LittleFS、ROMFS、NFFS以及CFS等。