IOT(29)—深入解析物联网操作系统(架构/功能/实例分析)

首页 » 物联网 » IOT(29)—深入解析物联网操作系统(架构/功能/实例分析)
深入解析物联网操作系统(架构/功能/实例分析)

1.物联网的主要特征

一.联系

连接是指各种终端设备可以通过某种网络技术连接到一个统一的网络上。任何终端都可以互相访问。下一代基础通信网络,包括未来的5G,通信网络架构的重构等。,核心目标是为物联网提供通用连接网络。目前很多厂商也推出了解决方案,比如Google的thread/wave,华为的Hi-Link,NB-IoT。

传统物联网连接是指物联网终端设备与物联网云平台的连接,如下图所示:

在这种模式下,物联网设备通过各种连接技术连接到云中的物联网平台,如WiFi、以太网、BLE、Zigbee等。需要注意的是,这只是一个逻辑结构。物理上,物联网设备在接入云平台之前,可能需要一个物联网网关。因为很多连接技术无法直接连接到物联网云平台,比如Zigbee、BLE、Z-Wave、NFC等等。这些技术的通信范围是一个小型局域网,如家庭、办公室等。接入互联网的技术往往是WiFi、以太网、2/3/4G等网络技术。大多数物联网设备无法提供这种连接的支持能力。所以需要有一个物联网网关来弥补这个差距,完成不同技术之间的转换。下图说明了物联网网关的功能和网络位置:

物联网网关往往具有相对较强的计算能力,丰富的网络接口,以及收集和分解消息或数据的功能。在这种连接模式下,物联网云平台是所有物联网终端的“大脑”,云平台统一指挥物联网终端的行为。如果断开这个连接,物联网终端就会不知所措,完全失去控制。

理想的连接应该是物联网设备之间,也应该实现本地直连,如下图所示:

物联网设备也是连接的,同时保持与云平台的连接。这样做的好处是,一旦云平台的连接中断,物联网终端可以使用本地终端连接继续提供服务。同时,物联网设备之间的本地通信直接通过本地连接完成,而不是上升到云端。

要实现这种“云连接”加“本地连接”的模式,需要物联网设备支持消息中继功能。即物联网设备可以将其他物联网设备的消息或数据转发到云平台,同时将云平台发送的数据传输到其他物联网设备。

二。协同作用

协同是指连接到网络的任何设备之间,通过学习可以实时了解自身和彼此的能力和状态,并根据特定的输入条件或特定的环境状态,多个设备可以有效地交互和协调工作,完成一些单个设备无法完成的工作。协同物联网是核心和本质。协同作用表现在以下几个方面:

物联网设备之间的自动发现,尤其是不同功能、不同类别的设备如何相互发现。比如智能交通领域,当汽车靠近路灯时,应该能够快速找到路灯并建立联系。这样路灯可以根据自身连接的车数灵活调度信号灯的闪烁时间;

物联网设备之间的能力交互。设备之间,只有知道对方的能力,知道对方能做什么,才能实现有效的交互和协作。类似于中国人之间的“找关系”,只有知道对方在做什么,自己有什么能力,才能有目的地“发起请求”,从而共同努力实现目标;

新物联网设备或功能的自动传播。比如在一个局域网(智能家居)中,新增加了一个新的功能设备,这个新设备需要尽快“集成”到原设备中。这包括可以广播其自身能力的机制。同时,原有的设备也应该能够快速“理解”新增加设备的功能和作用,以便在后续实现统一状态。

三。智力

智能是指物联网设备具有“类人”智慧,如根据具体条件和环境的自我调节能力,并能通过不断学习不断优化和改进,从而更人性化地服务于人类。

如果物联网设备只是连接在一起,可以远程控制,被动服从人的命令,那就不能算是真正的物联网,只能算是一个“控制网络”。理想的目标是物联网设备应该具有自学习能力,能够通过积累过去的经验或数据来预测未来,为人们提供更加智能的服务。这种“机器学习”能力,我们认为应该是物联网操作系统的一部分。它应该被抽象成一些基本的服务或者API,内置在内核中,可以被供给开发者或者设备开发者调用。

而且这个机器学习服务不仅仅是位于终端操作系统中的一段代码,还应该有一个庞大的后台来支撑。大量的计算和预测功能在后台执行。终端只是做一些简单的计算和结果的执行。这样,终端加上后台软件,就会形成一个分布式的计算网格,有效分工,协同计算,有序执行,从而形成支撑物联网的数字神经。

2.物联网操作系统整体架构概述

物联网操作系统是支撑物联网大规模发展的核心软件。根据以上总结的物联网的主要特征,结合操作系统的主要功能和层次结构,我们总结了以下物联网操作系统的总体架构:

一般来说,物联网操作系统由操作系统内核、外围功能组件、物联网协同框架、通用智能引擎、集成开发环境等几大子系统组成。这些子系统相互配合,形成一个完整的面向各种物联网应用场景的软件基础平台。应该注意的是,这些子系统之间存在一定的层次依赖关系。比如外围功能组件需要依赖物联网操作系统内核,物联网协同框架需要依赖外围功能组件,公共智能引擎需要依赖下层内核、外围功能组件甚至物联网协同框架。这种层次依赖性也反映在这个体系结构图中。当前主流的物联网操作系统,如谷歌的Brillo、Linux开放基金会的Ostro项目、HelloX项目,都遵循这样的框架。以下是对这些子系统的简要介绍。

a)物联网操作系统内核概述

内核是任何操作系统的核心组件,操作系统的核心功能和机制都是在内核中实现的。例如核心线程/任务管理、内存管理、内核安全和同步。虽然大多数操作系统的内核在功能上是相似的,但是在这些具体功能的实现上,面向不同领域的操作系统的实现目标和技术是不同的。

例如,对于传统的通用个人计算机操作系统,内核更注重用户交互的响应时间、资源的充分利用、不同应用程序之间的隔离和安全等。这和它的应用场景有关。对于面向嵌入式领域的嵌入式操作系统来说,它更注重对中断的响应时间和线程或任务的调度算法,使整个系统能够在可预测的时间内响应外部事件。

物联网操作系统的内核不同于其他操作系统。最重要的是它的可扩展性。物联网操作系统的内核应该能够适应各种硬件环境,从几十K内存的低端嵌入式应用到几十M内存的复杂应用。同时,物联网操作系统的内核应该足够节能,以确保其在一些能源受限的应用中能够持续足够长的时间。比如内核可以提供硬件睡眠机制,包括CPU本身的睡眠,让物联网设备在没有任务处理的时候可以持续处于睡眠状态。当你需要处理外部事件时,你可以快速醒来。

物联网操作系统的内核还应具备嵌入式操作系统的一些特性,如可预测可计算的外部事件响应时间、可预测的中断响应时间、对各种外部硬件的控制和管理机制等。当然,物联网的操作系统内核必须足够可靠和安全,才能满足物联网的安全需求。

功能上基本和其他操作系统差不多,包括任务管理、内存管理、中断管理、内核同步、安全和权限管理、应用管理等。为了保证内核的正常运行,内核还应该提供内核统计和监控功能,即监控内核的运行状态,监控内核对象的数量/状态等。,并为维护或开发人员提供故障定位工具。在每个内核子模块中,会使用更具体的机制或算法来满足物联网应用的需求。同时确保内核的整体安全性和可靠性。

内核也是直接处理物理设备的软件。管理物理设备的所有功能,包括物理设备检测、加载和卸载物理设备驱动程序,也都在内核中实现。为了有效地管理物理设备,内核需要定义一套标准的设备管理框架,设备驱动需要遵循这个框架才能纳入内核管理。为了访问各种物理设备,内核还定义了一套称为硬件抽象层的软件,本质上是一些常见硬件操作的抽象,比如读写设备配置空间。有些CPU通过I/O接口访问设备空间,有些则直接将设备配置空间映射到内存空间,通过常规内存访问读取设备配置空间。为了适应这种不同的情况,内核一般会定义一个叫做__device_read和__device_write的宏。这些宏的实现代码根据设备类型的不同会有所不同,但是对于操作系统内核和设备驱动来说,只需要调用这两个一致的宏就可以访问设备配置空间。这是硬件抽象层的典型例子。

此外,物联网操作系统的内核还为物联网应用提供了常见的连接功能,如支持蓝牙、Zigbee、WiFi等。各种领域应用都可以直接利用物联网操作系统内核的这些连接功能,实现最基本的通信需求。

b)外围功能组件概述

物联网操作系统的内核只提供最基本的操作系统功能供物联网应用调用。然而,仅有物联网操作系统的内核是远远不够的。在许多情况下,它需要许多其他功能模块的支持,如文件系统、TCP/IP网络协议栈、数据库等。我们将这些功能组件从物联网操作系统内核中分离出来,形成一个独立的功能系统,称为“外围功能组件”。

这些功能组件被称为“外围设备”,因为在许多情况下,这些功能组件不是必需的。而且在物联网的实际应用中,这些外围部件并不会全部用到。大多数情况下,一两个组件就能满足需求,其他功能组件必须裁掉。因为在物联网的应用中,很多情况下,系统硬件资源非常有限。如果保留未使用的功能组件,将会浪费大量资源。同时,保留一些不用的组件会给整个系统带来安全隐患。例如,如果物联网应用不需要联网,但保留了TCP/IP协议栈的功能,则可能会利用TCP/IP协议栈的bug或漏洞,从而影响系统的安全性。这些外围功能组件是为物联网操作系统定制开发的,它们与物联网操作系统内核的接口非常清晰,可定制性很强。

然而,在通用操作系统中,这些外围组件的处理方式与物联网操作系统不同。这些组件将统一归类到内核中,随内核分发,整体提供给用户。即使你的应用程序不使用这些组件,你也不能把它们去掉。之所以这样,是因为一般操作系统的资源都比较丰富,保留更多的功能模块对整个系统影响不大。同时,对通用操作系统的安全性要求相对较低。

物联网操作系统的内核和外围功能组件的结合,可以解决物联网的“连接”需求。这包括基本的物联网本地连接(蓝牙、Zigbee、NFC、RFID等。)和外围功能组件中TCP/IP协议栈提供的复杂网络连接。

除了TCP/IP网络协议栈,常见的外围组件还包括文件系统、图形用户界面(GUI)、安全传输协议、脚本语言执行引擎(如JavaScript语言执行引擎)等。),基于TCP/IP协议的安全传输协议(SSL/SSH等。)、C运行时、在线更新机制(软件升级/在线更新补丁)等。应当注意,TCP/IP协议栈是为互联网设计的通信协议栈。由于物联网的特点与互联网有很大的不同,当TCP/IP协议栈应用于物联网时,面临很多问题和挑战,因此有必要对TCP/IP协议栈进行优化和改造。我们把修改后的TCP/IP协议栈称为“物联网TCP/IP协议”,缩写为“TCP/IP@IoT”。下图说明了物联网操作系统的常见外围功能组件:

c)物联网协同框架概述

物联网协同框架是实现物联网“协同”功能需求的关键功能系统。物联网操作系统的内核和外围功能组件只实现物联网设备之间的“连接”功能。然而,正如我们所知,仅仅连接互联网设备是远远不够的。物联网的本质是物联网设备之间可以进行交互和协作,让物联网设备“充分协作”,相互协调,实现单个物联网设备无法完成的功能。物联网的协作框架为物联网设备之间的协作提供了技术基础。

一般来说,物联网的协同框架是一组软件,由许多独立但相互依赖的软件模块组成。比如Google的Weave物联网协作框架,由云平台组件Weave Cloud、面向设备的LibWeave、面向智能手机客户端的Weave Client组成。织云是整个框架的“中央管理器”。所有基于Weave的物联网设备首先连接到Weave Cloud,接受Weave Cloud发出的指令并向Weave Cloud上报相关数据。Weave客户端还需要通过Weave云来管理和控制基于Weave的物联网设备,等等。

一般来说,物联网的协同框架至少包括以下功能:

物联网设备的发现机制。物联网设备一般不提供直接的用户界面,而是需要通过智能手机、电脑等方式连接到设备上,对设备进行管理和配置。物联网设备第一次上电并接入互联网后,智能手机/电脑如何快速准确地找到这个物联网设备,是物联网设备发现机制要解决的问题。尤其是在大量各种功能的物联网设备的情况下,如何准确快速的找到并连接物联网设备是一个极大的挑战。设备发现机制的另一个应用场景是设备之间的直接交互。比如,同一个局域网内的物联网设备可以相互发现并建立关联,必要时可以直接通信并相互协作,实现物联网设备间的“协作”;

物联网设备的初始化和配置管理,包括设备首次使用时的初始配置、设备的认证和鉴权、设备的状态管理等;

物联网设备之间的协同交互。这包括物联网设备之间的直接通信机制。物联网的协作框架应该能够提供一套标准或规范,使得建立关联关系的物联网设备可以直接通信,而不需要经过后台服务器;

云服务。大多数情况下,物联网服务需要云(即物联网后台)的支持。物联网设备要接入云平台进行认证和注册。物联网设备在运行时获取的数据也需要传输到云平台进行存储。如果用户距离物联网设备太远,无法直接连接,用户还需要通过云平台介绍如何控制或操作物联网设备,等等。至少应该定义和实现一组标准协议来支持这些操作。

除此之外,物联网的协同框架还必须实现一些基础服务来支持上述功能。例如,物联网协作框架需要为物联网设备定义一个标准的命名系统,以便每个物联网设备能够被准确和唯一地识别。物联网设备之间,以及用户和物联网设备之间,在相互操作之前,必须完成认证和鉴权,以保证物联网的安全性,等等。另一个基础服务是物联网的标准运营模式。例如,在智能家电应用中,用户可以通过标准的打开命令远程打开空调。使用调整命令来调整空调的温度。这些标准命令必须由物联网协作框架定义,以实现不同厂商和不同类型设备之间的互操作。没有这些标准的操作模式(操作命令),就是打开A厂家空调的Open命令,打开B厂家空调的on命令,无法实现互操作。

上述协作功能和基本服务都是基于网络通信的,协作框架还必须实现或选择合适的网络通信协议。物联网的特性要求这种通信协议具有尽可能低的功耗和高效率。一些常用的标准协议,如CoAP或MQTT,可以承担这一功能。大多数物联网协作框架,如IoTivity,都是基于CoAP协议的。

下图说明了物联网协作框架的主要组件:

以下智能购物中心的例子进一步说明了物联网协作框架的作用。智能商店解决方案通常包括火灾探测器和智能门禁系统。这两类物联网设备在商场安装之前,必须经过安全的初始配置,确保不会被恶意控制。初始配置完成后,这两类设备会连接到统一的协同框架云系统,状态会实时更新。同时,火灾探测器会通过物联网协同框架的设备发现机制与门禁系统建立联系,知道彼此的存在。火灾探测器一旦探测到火灾,会直接告诉门禁系统打开门禁,方便人们尽快逃生。在这种情况下,如果物联网设备之间没有直接的通信功能,所有的通信都需要通过后台系统进行传递,那么不仅会增加响应时间,更致命的是,一旦与后台的物理网络中断,将无法实现终端之间的自动联动。这种网络故障在火灾报警等灾害发生时最为常见。

为了支持上述机制的有效运行,物联网协同框架还必须提供一致的通信协议和通信技术。只要物联网设备遵循这套协议,它们就可以识别彼此的消息。同时,物联网协作框架还必须提供一套唯一的命名规范,确保任何物联网终端设备都能获得唯一的名称,其他设备也能通过这个唯一的名称与之交互。同时,这套独特的命名规范,最能体现物联网终端设备的功能。这样物联网设备就可以通过名称来确定其所提供的功能,从而做出有针对性的行动。例如,在上面的例子中,火灾探测器可以命名为“火灾报警探测器”,门禁系统可以命名为“门禁控制”,这样两者就可以通过名称知道彼此的功能角色。当然,这只是一个例子。在实际的命名系统中,应该还有一个计算机可以识别的编码系统。

目前物联网行业的一些协同框架基本上是独立于物联网操作系统内核的,即这些协同框架可以应用于基于任何操作系统的物联网解决方案,只要这些操作系统能够提供必要的接口。然而,采取这种方法显然有其明显的弊端。也就是说,不可能采用统一的代码来适应所有的操作系统。比如Google的Waeve,用C++语言为Linux、Android等复杂操作系统开发了LibWeave组件。对于资源有限的嵌入式应用场景,uWeave采用C语言开发。这样物联网设备的开发者就要掌握两套完全不同的API,理解两套机制完全不同的物联网协作框架,显然无法降低成本。

理想情况下,物联网的协作框架可以和物联网的操作系统内核紧密绑定,只提供一套API给开发者。通过物联网操作系统内核的伸缩机制,适应不同的应用场景。比如在没有WiFi支持的嵌入式场景下,物联网操作系统的内核会砍掉TCP/IP等组件,采用低功耗蓝牙技术实现数据通信。如果目标硬件配置了网络接口设备,如WiFi或以太网,将保留TCP/IP协议栈。无论是哪种形式,物联网操作系统的内核都会为物联网协同框架提供一套统一的API,即底层通信机制,对物联网协同框架是透明的。基于这样的设计原则,像Google Weave这样的物联网协作框架,不需要针对不同的目标硬件设计多种解决方案,只需要一套就可以解决问题。

d)公共情报引擎概述

通过物联网的协作框架,可以将物联网设备关联起来,充分协作,完成单个物联网设备无法完成的功能。但是,这种协作功能仍然局限于预先定义的逻辑。例如,在上述智能商场的火灾探测器和门禁系统的例子中,必须在现场应用中编写代码,告诉火灾探测器和门禁系统一旦发生火灾就打开门禁。没有这样的程序逻辑,火灾探测系统将不会通知访问控制系统。

如果物联网系统超出预定义的范围,它可以实现一定程度的自我学习。比如一开始火灾探测器不知道发生火灾时通知门禁系统,但是随着运行时间的增加逐渐“学会”了这个能力。这样,只有物联网的协同框架做不到,必须引入智能引擎的支持。

物联网的智能引擎是指包含语音和语义识别、机器学习等功能模块。,让物联网超越“预定义”的活动规则,拥有像人类一样的“智能”能力。物联网智能引擎中的功能模块是基础能力,可以被各种物联网应用调用。一个典型的例子就是在物联网设备上加入语音识别,人们可以通过自然语言直接与物联网设备对话,达到下达指令的目的。

公共智能引擎中的另一个重要模块是DSL语言及其对应的处理引擎。DSL(DomainSpecific Language)是为特定应用领域开发的编程或操作语言,专门应用于相对独立的领域。这与计算机编程语言不同。大多数计算机编程语言都是通用的,可以为各种应用领域编写程序。由于它的普遍性,它无法照顾到一个特定的领域。因此,使用通用计算机语言来实现特定领域的应用是非常麻烦的,需要专业的程序员和复杂的编程工作。另一方面,DSL语言是为特定的功能领域开发的,并专门应用于该特定领域。这样我们就可以为这个特定的领域建立一些内置的对象,定义特定领域的动作,根据领域的习惯定义特定领域的语法。用DSL语言写领域应用非常简单。

现在有许多软件工具可以用来定义DSL并提供执行和解释引擎。物联网操作系统的公共智能引擎模块还应提供DSL语言开发和解释的功能,以方便物联网特定场景的调用。

e)集成开发环境概述

集成开发环境是任何完整的操作系统都必须提供的功能组件。在集成开发环境的帮助下,程序员完成特定应用程序的开发,这些应用程序最终将运行在目标操作系统上。比如针对Linux操作系统的GCC开发工具套件、针对Windows操作系统的微软Visual Studio集成开发环境、跨平台的Eclipse集成开发环境等。

开发环境是丰富和扩展操作系统生态系统的核心组件,也是形成“二次开发模式”的基础。所谓两级开发模式,是指包括操作系统平台本身的功能开发在内的一级开发,以及基于操作系统平台开发应用程序或定制操作系统内核的二级开发。第一级开发由操作系统供应商或开源社区完成。第二级的二次开发是由特定的应用厂商来完成的。这两个开发级别中使用的工具是不同的。在一级开发中,一般采用系统级开发工具,大多是命令行方式,采用的开发语言主要是C/C++甚至汇编语言。第二级开发,已经搭建了操作系统基础设施,相应的编程开发环境也已经完善,所以大部分使用图形化开发环境。相对来说,二级开发所需的系统级开发技能也相对较低。注意,这里所说的“系统级”开发技能主要是指对计算机CPU和硬件、操作系统内核等的理解和技能。,而不是面向应用的开发技能。其实不管是哪个层面的发展,只要深入下去,真正解决问题,都不会太简单。

物联网领域也是如此。在物联网操作系统本身的开发中,会用到不同的相对专业的开发工具。操作系统发布后,要提供一套完整的开发工具,方便物联网领域的程序员开发物联网应用。

通用集成开发环境是一系列工具的组合。甚至微软的Visual Studio集成开发环境也是类似Office Word的独立应用,程序员可以在其中完成整个软件声明周期的所有活动,如编程、编译、调试、运行、发布等。,但它也是由几个独立的工具组合而成的集成软件工作台,如编译工具、连接工具、调试工具、软件代码一致性检查工具等。

物联网操作系统的集成开发环境也不例外。它由一系列独立但又相互依赖的工具组成。最基础最核心的部分就是开发语言。目前还没有一套专门针对物联网应用开发的语言,不利于推动物联网的大发展。所以要选择适合物联网特点的开发语言。根据物联网本身的特点,适合物联网应用开发的语言必须具备以下特点:

开发语言必须能够跨硬件平台。跨平台硬件的优势在于,为某一类型的物联网设备编写的具有相同或相似功能的应用程序可以在该类型的物联网设备上通用,无论此类设备是否来自同一制造商。比如智能相机,a厂商的相机配置可能是ARM的CPU,USB接口,分辨率是1024*768,而B厂商的相机可能是基于x86 CPU,SPI接口。写一个基于摄像头的人脸识别程序。如果采用跨平台的编程语言,那么为厂商A的设备编写的应用程序可以直接在厂商b的设备上使用,但是如果编程语言不是跨硬件平台的,比如C/C++语言,那么为厂商A的摄像头编写的应用程序必须重新编译(甚至需要大量修改)才能在厂商b的摄像头上运行,物联网设备的碎片化决定了开发语言必须是跨硬件平台的;

开发语言最好是面向对象的开发语言。面向对象的编程方法让程序员以更接近真实世界的方式理解应用场景,建立程序开发模型,同时大大加快开发速度。对于大型软件,面向对象的思想可以简化开发和维护过程,降低开发成本。在物联网领域,面向对象编程的思想更有价值。因为我们面对的是一个接一个的“事物”,每个对象都可以抽象为程序开发领域的一个对象。通过不同对象(事物)之间的消息交互,可以快速完成复杂应用系统的开发。为了支持面向对象编程的思想,面向对象编程语言是必要的;

最好开发一种语言,能够支持完善的“事件驱动”机制。与传统的以人为中心的软件开发模式不同,物联网时代的软件是由“事件”驱动的。面向物联网的程序,大部分情况下都是逐个处理外部事件,根据外部事件进行响应。例如,火灾探测设备将响应异步事件,如“火灾探测”。物联网软件开发,在很多情况下,是编写一个时间处理程序,并与预定义的事件相关联。这样,一旦有外部事件发生,就会调用处理程序。物联网这种以“事件”为中心的编程方式,必须要匹配一种能够支持事件驱动机制完善的开发语言。

分析目前常见的开发语言,我们认为JavaScript是最合适的语言。更详细的分析过程将在后面的部分详细描述。

除了编程语言,集成开发环境的另一个核心组件是“物联网运行时”。任何开发语言都有相应的运行时,比如C语言的libc,Java语言的J2SE/J2EE/J2ME等等。这些运行时提供了开发过程中最常用的功能或函数,比如字符串操作、数字操作、I/O、数据库访问等等。物联网开发领域也是如此。必须有一套物联网运行时来提供最常见的物联网开发功能支持。物联网运营库中应实现以下与物联网应用开发相关的功能:

支持物联网应用开发最基本的操作,如字符串操作、文件I/O、网络功能、任务管理、内存管理、数据库访问等。

传感器的常用接入接口,比如为温度、湿度、重力、加速度、光照等常用传感器设计一套标准的接入接口。,然后将这组访问接口实现为物联网运行时的一部分。对于应用程序来说,它们只需要调用这些接口来访问相应的传感器,而不需要考虑传感器的物理参数(厂商、接口类型等。);

支持物联网软件开发的基本编程机制,如事件驱动机制的框架、面向对象机制的对象管理等等。这些基本机制也需要在物联网的运行库中实现,应用可以直接调用;

公共安全服务。例如用户或设备认证、访问认证、数据通信加密/解密等。这些基础的安全服务几乎会涉及到物联网的每一个应用场景,所以作为公共服务,会纳入物联网的运营库进行实施;

物联网的协作框架提供的基础服务,也可以纳入物联网的操作库,暴露给应用。例如,物联网协作框架的API和CoAP协议的API可以作为物联网运行时的功能的一部分来实现。

与特定领域相关的其他公共服务,如物联网的后台连接服务,可以作为物联网特定领域运行时的一部分来实现。

物联网的运行时必然与物联网的开发语言有很强的关联,物联网运行时的大部分代码都是由物联网的开发语言实现的。如果以JavaScript作为物联网的开发语言,那么物联网相应的运行时大部分都会用JavaScript实现。物联网运行时有两种存在方式。一种是作为集成开发环境的一部分。在代码编译链接阶段,编译器连接器从物联网运行时库中选择与应用相关的代码片段,与应用一起编译,形成可运行的包。在这种模式下,不需要加载所有的物联网运行时,只需要加载应用的一部分。另一种存在方式是在物联网操作系统内核中。在这种情况下,物联网应用程序和物联网运行时独立存在。当物联网应用运行时,操作系统将根据需要临时加载物联网运行时(或部分相关内容),以支持物联网应用的运行。

除了物联网的编程语言和运行时,物联网的集成开发环境还包括代码编辑工具、编译工具、连接工具、调试工具等。,这是任何软件开发环境都需要的。需要注意的是,JavaScript语言是解释型语言,即代码可以由语言解释器直接加载分析运行,不需要事先编译链接。在这种情况下,不需要编译链接等工具。但是调试工具是必须的。

物联网应用开发语言、物联网运行时,以及相应的编辑、编译、连接、调试等工具,构成了物联网开发环境的核心部分。此外,为了促进开发、共享和交流,一个完善的开发社区也是必要的。开发人员可以在这个社区中共享代码和讨论技术问题。更重要的是,物联网的集成开发环境可以与开发社区紧密结合,成功的代码或有价值的模块可以发布给社区。物联网的开发环境可以根据程序员的需求,直接从社区下载代码,并入项目。

f)物联网领域应用概述

域是综合利用物联网操作系统的所有功能模块,利用物联网操作系统集成开发环境,能够完成一项或多项特定功能的应用程序。应用领域可以根据需要调用一个或全部物联网操作系统的功能。例如,如果你想实现一个提供简单网络连接的实时温度计应用,你只需要使用物联网操作系统的内核和TCP/IP协议栈等外围组件。但如果将这种温度计应用到智慧农业解决方案中,根据不同的温度实时调整通风系统,就需要整合物联网系统的框架,让温度计和通风系统建立联系,有效合作。再者,如果你想让温度计具备一些“智能”功能,比如能够识别人的语音指令,判断是否下雨,并根据周围环境的温度、湿度等信息采取适当的行动,就必须有公共智能引擎的支持。

总之,领域应用是物联网操作系统的直接服务对象。它利用物联网操作系统的基础软件平台,根据特定领域的特点,完成特定的功能。因为领域应用与特定领域有很强的关联性,不属于公共平台软件,所以我们不把它作为物联网操作系统的组成部分。但为了说明领域应用与物联网操作系统的关系,在物联网操作系统的架构图中也有所体现。

g)物联网操作系统整体架构总结

如前所述,物联网的三大特征是连接性、协作性和智能性。物联网的这个整体框架对应了这三个特征,如下图所示:

物联网应用如果只想实现基本的连接功能,保留物联网操作系统的内核和一两个基本的外围组件,比如TCP/IP协议栈就足够了。

如果物联网应用需要实现协同功能,就必须包含物联网协同框架。通过引入物联网协作框架,可以实现物联网应用终端之间的交互与协作,物联网设备与物联网交通平台之间的交互与协作,甚至物联网终端与智能手机之间的协作。

如果仅仅提供连接和协作不能满足物联网的应用需求,那么物联网的领域应用可以利用物联网操作系统的智能引擎。一个典型的场景是,用户可以通过语音控制物联网设备,并与物联网设备进行对话。物联网系统可以通过学习理解用户的行为,并对用户的行为进行预测和反馈。

可以看出,物联网的操作系统完全解决了物联网的三大功能需求。

最后需要说明的是,虽然我们把物联网的操作系统分为内核和外围组件等四个层次,但这些层次并不是严格区分的,而是有一定的依赖关系。比如外围功能组件依赖于物联网操作系统的内核机制,而协同框架依赖于一些外围功能组件。同时,公共智能引擎也需要依靠内核、外围组件等作为基础支撑。通过预定义的接口,可以将这些不同的功能层次集成在一起,形成一个完整的解决方案,可以根据应用场景的要求只保留一个或几个部分,但仍然可以统一。同时,集成开发环境提供了统一的API,使得整个系统呈现出一致的风格。

I)通用IOT操作系统架构分析

一、Google Brillo物联网操作系统分析

下面介绍几个典型的物联网操作系统,进一步说明物联网操作系统的功能和架构。首先来看看业内颇具影响力的Brillo操作系统,这是Google专门针对物联网应用发布的操作系统。Brillo的架构如下:

可以看出,Brillo和Android一样,仍然使用Linux内核作为其操作系统内核。这样,Linux在物联网领域应用的一些弊端就完全遗传给了Brillo。比如Linux内核对运行内存的要求很高,同时Linux还需要CPU硬件支持MMU(内存管理单元)功能,等等。这间接导致了Brillo对运行内存的要求更高,按照官方说法,至少需要32M内存。同时要求CPU支持MMU功能。如此大量的低端CPU或MCU,如STM32系列,是无法运行Brillo的,因为这些CPU的片上内存一般小于1M,一般不提供MMU功能。由于这些原因,Brillo的应用范围受到了很大的限制。在Linux内核之上,Brillo保留了Android操作系统中的硬件访问层(HAL)。这个层次的主要功能是对底层硬件进行统一和抽象,以更加友好和一致的方式提供给应用程序。在功能上,这层软件没有明显的价值,但它简化了硬件的操作,给程序开发带来了极大的便利。按照一般的软件分层规则,这一层软件应该还是属于操作系统的内核,因为它不提供额外的功能。与内核相比,代码量也很小,在某些情况下甚至可以忽略不计。因此,它应该与操作系统内核一起显示。但是,为了区分这一层软件是Android的,而不是Linux的,Google单独列出来了。

再往上,还有一些支持操作系统运行的辅助功能组件。主要有OTA更新,一些安全相关的组件和机制,在线数据分析和性能测量等。在线更新机制使运行Brillo操作系统的物联网设备能够在运行过程中不间断地更新其软件。这个功能很有价值。Brillo是一个复杂的系统,它的版本变化和补丁发布一定非常频繁。如果不提供在线更新功能,发布新版本和补丁,就需要现场更新物联网设备,这显然是不可操作的。所以Google设计了这个功能来支持在线实时软件更新。只要连接到Brillo的后台服务器,Brillo就会自动检查更新,并在不影响设备正常运行的情况下进行安排。安全机制提供了设备认证、数据加密等功能。这是任何网络流解决方案的必要机制,后面的部分会详细介绍。在线性能统计和分析功能可以帮助用户查看和分析设备状态、性能、消息数量等数据。并为设备维护人员提供一个基本的管理平台。开发者可以根据需要选择开启或关闭这些外设辅助功能。

上面,是编织框架。Brillo操作系统对Weave有嵌入式支持,Weave是支持物联网应用的主要功能模块。但具有讽刺意味的是,Weave并没有把Brillo作为唯一的底层操作系统,相反,它一直强调“跨平台和可移植性”等特性。可见,在谷歌内部,Weave更强,Brillo的定位或价值仍存疑。

从架构上看,Brillo完全符合前面提到的物联网操作系统的参考架构。比如Linux内核和Android HAL的组合,对应的就是物联网操作系统的内核。这些辅助功能组件,如在线升级、安全机制、性能测量和数据分析,与外围功能组件相对应。Weave对应的是物联网的协作框架。如下图所示:

需要注意的是,在Google提供的官方架构图中,Weave模块与OTAUpdates等外围辅助模块位于同一级别。这并不能反映Weave和Brillo之间的关系。Weave运行在Brillo操作系统上,Weave不属于Brillo操作系统。所以正确的表述应该是把Weave放在Brillo上,既体现了依赖逻辑,又体现了两者之间的独立关系。无论用哪种方式处理,都不会带来任何认识上的偏差。

二。Ostro物联网操作系统分析

Ostro项目是由英特尔主导的开源物联网操作系统项目。其目的是为物联网应用开发专门的操作系统,也叫Ostro。基于Linux内核量身定制,为物联网领域智能设备定制,专门应用于物联网操作系统。

可以安装在u盘或者SD卡上,可以直接启动物联网的硬件设备。当然,物联网应用开发者也可以根据自己的需求对Ostro进行二次量身定制,定制一个全新的适合自己应用场景的内核。这个特性完全符合物联网操作系统的要求。

其主要特点包括剪裁、安全性、丰富的开发环境,以及丰富的物联网组件和服务支持。主要特点如下:

基于Linux操作系统的切割,专门用于物联网领域;

英特尔支持的Quark和英特尔凌动处理器;

支持节点。JS、Python、Java、C/C++等语言进行应用开发;

程序员可以通过RestFUL API查询设备状态。支持OCF兼容的设备发现机制;

支持JavaScript API符合OCF标准;

安全特性,如可信启动、应用内存隔离、权限管理、OS映像完整性验证等机制;

丰富的通信技术支持,包括蓝牙*/BLE、WiFi、6LowPAN、CAN总线等。

支持VirtualBox虚拟机;

可以基于Yocto工具链进行编译、开发和裁剪。

下面按照从上到下的顺序简单介绍一下Ostro的各个级别。

物联网应用:这个级别包括所有使用Ostro编程接口开发的物联网应用。目前版本的Ostro并没有开发任何具体的应用实例,只是提供了如何开发应用的指导和一些简单的代码片段。随着Ostro的发展,可能会有针对特定典型场景的物联网应用,比如智能家居应用,会纳入这个层面并发布。

编程接口:编程接口由Ostro提供,供应用开发者开发各种物联网应用。目前,Ostro提供了多种编程接口,供程序员根据自己的喜好和具体应用场景调用。主要包括:

和Java编程接口,物联网应用开发者可以使用Python和Java语言开发特定的应用。Ostro提供通用支持类库;

节点。JS编程接口。Ostro为Node提供运行时支持。JS和一些特定的JavaScript API(作为Node提供。JS模块)。这些Java Script API覆盖了相对广泛的物联网应用场景,比如开放连接基金会(OCF)定义的API接口。这使得物联网应用开发者可以非常方便地直接使用这些API,调用IoTivity等协作框架的功能;

Soletta编程接口。Soletta是一个面向物联网的开源应用开发框架,提供了一些常用的物联网开发库,方便程序员快速便捷地开发物联网应用。Soletta是一个编程框架,可以使用传统的C语言进行应用开发,也可以使用基于流程的编程语言进行物联网应用的开发。

简而言之,Ostra提供了一个相对丰富的框架供开发者选择。

物联网的协作框架:Ostro内置了对IoTivity的支持。IoTivity是一个开源软件框架,用于无缝支持设备到设备的互联以及人与设备之间的简单互联。主要是满足物联网发展的需求,构建物联网的生态系统,让设备安全可靠的连接起来。但是

IoTivity通过提供一系列框架和服务,加速了设备互联应用的开发。该项目由开放互连联盟(OIC)发起,相当于OIC标准的参考实现。在本书的第二部分,有详细的描述。

Ostro服务:Ostro服务主要是指系统层面的一些进程或者线程。这些进程或线程负责管理网络连接,加载必要的支持服务,并提供进程间通信(IPC)支持。在Ostro操作系统中,保留了大部分Linux操作系统支持的systemd、D-Bus等。

此外,在线软件更新是Ostro提供的基本服务之一。这是专门为物联网应用提供的基础服务。可以快速完成物联网设备的软件更新,只需要最小量的软件下载。它只需要重启必要的物联网设备,而不是重启所有的物联网设备。

在线软件更新是保证物联网可管理、可维护的核心机制。通过物联网操作系统和后端云平台的协作,使物联网设备的软件始终保持最新、最安全的状态。

Ostro基本库:Ostro基本库包含了随Linux内核分发的最基本的运行时,比如最常用的C运行时。当然,Ostro可以根据需要动态扩展基本库的范围。

Linux内核:Ostro的内核是通用的Linux内核,包括最基本的驱动支持、硬件适配支持、网络支持、文件系统和设备管理机制。为了适应物联网的应用,Ostro对Linux内核做了一些精细的调整,让内核可以支持更多的传感器和更多的连接类型,比如蓝牙/WiFi/Zigbee等等。但由于Linux内核本身的复杂性和不可分割性,Ostro物联网操作系统很难满足物联网操作系统应该具备的高可扩展性要求。

从上面的分析可以看出,Ostro物联网操作系统基本对应了我们定义的物联网操作系统的分层模型。下图说明了这种对应关系:

三。hellox物联网操作系统分析

HelloX是由国内操作系统爱好者开发的完全开源的物联网操作系统。下图显示了HelloX的整体架构:

从整体结构可以看出,HelloX操作系统也符合物联网操作系统的层级结构。最底层是驱动层,实现了大多数常见硬件的驱动支持,包括USB、以太网、SPI/UART等。严格来说,驱动层应该是内核的一部分。在HelloX的实现中,为了突出HelloX丰富的驱动支持的特点,驱动被单独拿出来,显示为层次结构。

驱动层之上是内核层。内存管理、任务调度等机制都在内核中实现。与其他基于Linux内核定制的物联网操作系统不同,HelloX的内核是根据物联网的特点全新开发的。内核中的模块是松散耦合的,任何内核模块都可以根据需要灵活裁剪或添加,从而保证了内核的可扩展性,满足了碎片化硬件的各种需求。您也可以根据需要替换内核中的默认模块或算法。例如,您可以使用自定义任务调度算法来替换内核中基于优先级轮询的默认调度算法。还可以使用更实时的内存分配算法(比如固定大小链表方法)来代替内核中默认的自由链表内存分配算法,等等。对于MMU支持,HelloX也被实现为一个可选模块。切断MMU功能不会对系统中的其他模块产生任何功能性影响(但内存保护、虚拟内存等机制无法使用)。

核心层之上是外围组件层。HelloX提供了多种外设组件,包括网络、文件系统、系统调用等。,用于物联网应用开发调用。

目前,HelloX移植了IOT的协作框架作为自己的协作框架。根据未来需求,HelloX将开发更灵活的物联网协作框架,与HelloX捆绑。

基于这些基础组件和功能,可以基于HelloX操作系统实现广泛的物联网应用,如家庭网关、智能摄像头、智能家居中的家电、抄表、电子健康等。目前,HelloX已经实现了与多个物联网云平台的对接和整合。

本文章来源于互联网,如有侵权,请联系删除!

相关推荐: 智慧灯杆迈向标准化,5G智能灯杆网关加速“数字覆城”

我国智慧灯杆产业的首个国家级标准《智慧城市智慧多功能杆服务功能与运行管理规范》于2022年3月1日起正式实施,至今已历时半年,在该标准下智慧灯杆的应用和运行规范逐渐标准化,智慧灯杆市场高质发展。   据中商产业研究院预测,到2022年,我国智慧灯杆行业市场规模…