很明显,无论是对现有设备进行扩展还是从零开始设计新型设备或系统,使用 嵌入式Linux 都能够带来最理想的物联网生态系统构建速度。嵌入式Linux 与桌面 Linux 共享同一套源代码库,但其同时匹配不同的用户界面工具及其它高层组件。
下面,我们将共同探讨几类常见情况。
通常,极低功率应用( 例如传感器 ) 能够凭借一次性电池甚至自身供能机制运行数个月之久。这意味着任何 Linux 在其上运行时都将带来无法承载的负荷。其低功率特性意味着我们无法直接使用 IP 连接,必须配合互联网网关。网关能够通过低功率协议对接传感器,再将其转换为 IP 。根据具体协议需求, Linux 完全有能力提供现有协议支持或者与之类似的方案。
下面来看配合CR2032 按钮电池运行的无线联网室外温度计或者 “ 智能灯泡 ” 。这种智能灯泡看起来似乎并不属于低功率应用,但具体情况仍取决于其并未亮起时的运作方式。如果使用纯 Linux 方案,则意味着灯泡熄灭时系统无法或者需要很长时间来完成引导 ( 至少用户无法接受第一次点亮灯泡时等待 10 到 20 秒 )。
如果在以上实例中直接运行IEEE 802.11(WiFi) 方案,则电池寿命将变得非常有限。因此,我们需要在灯泡中使用低功率联网协议,例如使用简单的 2.4 GHz 信号系统或者蓝牙低功耗连接。嵌入式 Linux 网关能够将低功耗无线链路转换为 WiFI, 甚至以太网来实现互联网接入。正因为如此,目前市面上的多数设备皆采用 Linux 网关及低功耗无线协议。
另外,嵌入式Linux 亦在众多非物联网设备当中有所作为。设计人员往往很难在裸机 /RTOS( 实时操作系统 ) 方法与系统芯片配合 Linux 这两类选项中作出选择。裸机选项能够有效降低材料成本,但却不利于上市时间、开发成本与支持成本等因素。嵌入式 Linux 能够更快完成调整并供更为广泛的用户群体以低成本方式利用多种工程技术及开发工具完成任务。另外,规模庞大的 Linux 用户群亦有助于扩大测试覆盖面并简化技术支持。
物联网设备的主要需求为连通性,且通常表现为IP 形式。这种联网的能力往往通过 Web 服务器实现。裸机 /RTOS 虽然也能够提供 IP 连接,但却易于引发错误及合规违反问题。例如,很多 RTOS 并不会将 IP堆栈用户与 IP 堆栈本身进行隔离。互联网连接可能需要处理低速或者拥塞链路。另外,当堆栈与其它代码混合时,缓冲区处理问题也可能变得模糊且难以调试。相比之下,嵌入式 Linux 能够实现硬件分离并广泛使用各类 IP 堆栈。即使单纯从成本角度考虑,嵌入式 Linux 在加快上市时间、降低技术支持与开发成本方面亦能够有效抵消裸机 /RTOS 的前期优势。
另一类常见用例为对现有物联网设计进行功能添加。单纯从讨论角度出发,这意味着我们需要向设备添加读取设备状态、配置与控制机制甚至是网络浏览器。这意味着我们需要找到粘接机制对合并IP 堆栈、Web 服务器与设备软件。
对于已采用裸机设置的现有设备,以上讨论则适用于改进其互联网连接类情况。这时,调整设备以使用嵌入式Linux 往往是最简单的实现方式。对于嵌入式 Linux 设备,向其中添加 IP 连接只需要通过内核选项启用 IP 堆栈。大家还需要添加一些软件包以配置系统,同时引入 Web 服务器。在这方面,大家需要编写软件粘接代码以服务于 Web 请求。我们可以利用简单的 shell 脚本、 Python 以及 JavaScript 等方式完成这项任务。添加物联网功能对于产品的上市时间非常关键,因此大家可以将各个步骤并行推进,从而有效加快开发速度。
对于嵌入式Linux 设备与物联网连接而言,安全性无疑是一大关注重点。物联网服务通常会直接暴露在危险和未经过滤的互联网之上。虽然相关内容完全可以另写一篇文章,但这里我们可以给出一些总结性意见,即利用多项原生嵌入式 Linux 功能 —— 包括多用户、 SELinux 以及容器 —— 控制并缓解这种风险。而 Linux 拥有的庞大社区亦将带来安全可靠的修复能力。
总而言之,嵌入式Linux 能够显著加快物联网方案的开发速度,简化功能扩展并为物联网生态系统提供 IP 网关服务。另外, Linux 生态系统中的大量驱动程序与功能库,乃至开源代码也将成为构建物联网项目时,极为强大的储备资源。
来源: 极客头条