物联网大致可分为感知层、网络层、设备管理层、应用层等四个层次。其中最能体现物联网特征的,就是物联网的感知层。感知层由各种各样的传感器、协议转换网关、通信网关、智能终端等终端设备组成。这些终端大部分都是具备计算能力的微型计算机。运行在这些终端上最重要的系统软件就是所谓的物联网操作系统。对于物联网发展而言,“碎片化”是主要的问题,其中芯片、传感器、通信协议、应用场景千差万别。比如无线通信标准,有 Wi-Fi, BLE, ZigBee, NFC, Thread, NB-IoT, LoRa, Sigfox, Gprs, 4G 等。很明显,技术方案不统一,体系结构不一致,阻碍了物联网的发展,也局限了物联网的互联互通。但从已有产品和宣传信息来看,其基本的技术特征已初显端倪。概括来讲,物联网操作系统应具有以下技术特征 : 1 、跨硬件平台 物联网应用最重要的是必须跨硬件平台运行,即编写的物联网应用程序,能够在多种不同的目标硬件设备上运行,而不用重新修改甚至编译应用程序。如果开发语言不是跨硬件平台的,只针对一种硬件平台开发,当面对硬件配置各不相同和物联网设备的千差万别时,就需要针对不同的 CPU 类型,不同的硬件配置,分别进行开发和部署,这显然是无法满足物联网硬件碎片化特征的需要。由于物联网设备硬件配置千差万别,硬件与软件不匹配则导致的错误会大大增加。而采用跨硬件平台开发语言的好处,就是可以限制错误范围,不会因为应用程序层面的错误,而导致整个系统崩溃。安卓系统就是采用去跨硬件平台的构架,才能够在不同硬件配置的手机上运行相同的应用程序,大大降低了应用程序的开发工作量。 2 、面向对象机制 所谓的面向对象,就是在编程的时候尽可能去模拟真实的现实世界,按照现实世界中的逻辑去处理问题,分析问题,更容易解决大型的复杂的业务逻辑。在物联网领域,面向对象编程方法,可以让程序员以更接近现实世界的方式来理解应用场景,建立程序开发模型,把每个物体都可以抽象为程序开发领域的一个对象,通过不同对象之间的消息交互,可以快速完成复杂的应用系统开发,同时也可以简化开发维护过程,降低开发成本,加快开发速度。相比传统的模块化编程,面向对象编程更适合物联网应用开发,也更具有价值。 3 、高效的开发方式 C 和 C++ 都更接近底层设计,当你在需要对硬件进行非常精细的监测和控制时,他们都是很好的选择,但这也意味着所写出的代码移植性比较差。而 Java 是一种面向对象的开发语言,拥有非常好的移植性,编译器中几乎不存在任何硬件依赖性。为了实现对特定硬件部分的精准控制, Java 需要借助硬件所支持的库并从中调用通用代码。从经济角度上看, Java 是一门非常强大的语言,对 Java 代码的一次投入可以在多个不同的平台收获果实。 Java 同时也是当前人气最高的主流编程语言之一,被应用于成千上万计算机科学与电子工程技术项目当中。因此懂得 Java 的人才可以从市场上轻松找到。 4 、开发组件丰富 物联网操作系统因为是对物应用场景的感知和控制,感知的方式千差万别,应用场景各不相同,同时哪怕最简单的物联网设备也要具无线和有线的联网功能,网络通信协议的多样性,云端接入的复杂性,都要求物联网操作系统具备丰富组件支持,把常用的传感器和联网协议和云接入方案,全部按照组件的形式开放出来,使用者不需要关心太多的物理层功能,专心进行业务逻辑处理,加快物联网产品上市速度。 5 、占用极低的硬件资源 物联网是一个数以千亿计设备总量的市场,他的特点就是品种多,数量多,对硬件成本要求苛刻,这就要求物联网操作系统运行的硬件平台不能太高,要平衡开发效率和硬件成本的关系。 物联网碎片化特点必将导致物联网操作系统的多样性。短时间内,很难形成像智能手机中 Android 和 ios 两家独占市场的局面,以下简单介绍几款物联网操作系统。 1. AliOS Things 面向 IoT 领域的轻量级物联网嵌入式操作系统,搭建云端一体化 IoT 基础设备。 基于 Linux 平台,提供 MCU 虚拟化环境,开发者直接在 Linux 平台上开发硬件无关的 IoT 应用和软件库,使用 GDB/Valgrind/SystemTap 等 PC 平台工具诊断开发问题。 2. Andorid Things 作为 Andorid 系统的一个分支版本,类似于可穿戴和智能手表用的 Andorid Wear 。使用一种名为 Weave 的通信协议,实现设备与云端相连,并且与谷歌助手等服务交互,面向所有 Java 开发者。该操作系统能够支持一系列物联网设备的计算平台,其中包括英特尔 Edison 平台, NXP 公司的 Pico 平台,以及 “ 黑莓派 3” 。 3. RUFF 采用 JavaScript 语言,专为硬件开发而设计,兼容多个平台的运行环境,不仅支持嵌入式 Linux ,还支持 MCU 单片机领域等。拥有大量的开发 API 接口 , 也能在 Rapsberry Pi 等常见开发板上运行。 4. mbed OS 由 ARM 开发,专门为运行 ARM 处理器的物联网设备而设计。包含了 C++ 应用程序网络,公司也提供其他开发工具和相关的设备服务器。默认情况下, mbed OS 是事件驱动的单线程架构,而非多线程 ( 实时操作系统 ) 环境。 5. 钛极 OS 该系统基于 Java 语言进行嵌入式开发,将 Java 虚拟机移植到低资源 MCU 芯片中,由内核掌管底层硬件资源,实现软硬件分离,伸缩性非常强,可以在编译时,裁剪掉不需要的模块,来匹配低端硬件的需求。不仅可以更好的扩大物联网应用程序的运行范围,而且能够降低开发难度和提高开发效率,快速推动物联网生态圈发展。 从技术层面看,物联网操作系统仍处在研发阶段,至今尚无一个比较完善的可商业应用的物联网标准操作系统,物联网时代最大的问题之一就在于沟通,不同设备之间不同标准的沟通、软件与硬件的沟通。而采用 Java 来开发智能硬件的钛极 OS 实现了这种沟通的可行性,并保证了沟通的实效性和高效化。全球又有大量的 Java 开发者,根据 Oracle 和 ARM 估计,全球大约有 45 万的嵌入式软件工程师,而 IT 业约有 900 万的 Java 开发人员。这无疑是给物联网行业带来了巨大的增长潜力。