0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

IoT 中的 Linux 选择

电子设计 来源:电子设计 作者:电子设计 2020-12-25 18:24 次阅读

物联网的设备设计中,从低成本和低功耗的角度看,Android肯定比不过嵌入式Linux。但在选择用于部署Linux的发行版本时,却一直饱受困扰。

什么是 Linux 发行版?

Linux 是一个操作系统,它是控制计算机的核心程序。 它决定如何在所有竞争使用的其他程序之间分配可用资源(CPU、内存、磁盘、网络)。 尽管操作系统非常重要,但它本身并不有用。 它的目的是为其他程序管理计算资源。 没有这些程序,操作系统就没有多大用处。

这就是为什么发行版会有的问题。 一个发行版提供了大量的其他程序,这些程序可以与 Linux 一起组装成用于大量目的的工作集。 这些程序的范围可以从基本的程序编写工具,如编译器和连接器通信库,到电子表格和编辑器之间的几乎所有东西。 一种倾向于拥有一个超级集合,其中包含了每个单独的计算机或解决方案实际使用的内容。 它还为每一类软件组件提供了许多选择,用户或公司可以将这些组件组装成他们认为的运行集。 一个粗略的比喻是一个超市,在那里货架上有许多商品可供选择,每个用户选择他们认为有意义的商品。

基于二进制还是基于源代码的发行版?

发行版大体上可以分为两类: 二进制和基于源代码的发布。

基于二进制的发行版提供了所有已经预先编译并准备安装的软件组件。 这些组件使用"足够好"的构建选项进行编译,这些选项对大多数用户都有效。 它们还为需要或希望编制自己的组件的少数用户提供这些组件的来源。 按照我们超市的类比,这家超市包含所有预包装和预煮好的食物,但是有明确的说明如何获得配料和重复的过程,为那些想要调整一个或两个食谱。 这种发行版是 Debian、 Fedora Core、 OpenSUSE、 Ubuntu 和许多其他发行版的例子。 虽然它们提供相同类型的系统,但是它们都使用不同的方法,不幸的是,这些方法甚至是不兼容的。 它们是通用计算机,如服务器、台式机和笔记本电脑的主要配置。

另一方面,基于源代码的发行版侧重于提供一个框架,在这个框架中,最终用户可以从源代码构建所有组件本身。 这些发行版还提供了一些工具,可以轻松地选择一个合理的开始组件集合,并根据需要调整每个组件的构建。 这些调整可以简单到添加一个编译标志来使用不同版本的源代码,或者以某种方式修改源代码。 用户将收集他们想要构建的内容的菜单,然后开始构建。 在几分钟或几小时后,根据具体情况,将有一个结果镜像,可以使用在电脑中使用这一。 Gentoo、安卓和 Yocto 就是这种类型的例子。 在超市的类比中,这是一个更接近散装食品商店,在那里可以得到预先衡量的食物与详细的机器可读的烹饪说明,会有一个花哨的炊具,可以读取这些说明, 并处理一系列食谱的调整,如调整为糙米而不是白米。 这个类比稍微弱了一点。

这些基于源代码的发行版通常是基于 linux 的嵌入式设备和物联网设备的首选。 虽然很难建立和维护,但基于源代码的发行版有一个独特的优势,即能够根据确切的目标硬件裁剪已安装的镜像,以便最大限度地利用资源或最小化资源浪费。 而对于嵌入式设备,这往往是一个强大的约束。 此外,基于源代码的发行版更适合于跨平台构建(在这里构建平台的机器与运行平台的机器不同) ,而基于二进制的发行版更适合于自主构建(在同一台机器上构建和运行)。

鉴于目前英特尔Intel)架构的流行程度,以及在物联网产品中使用的ARM 架构——交叉构建支持对物联网设备非常重要。

以容器为中心的发行版

传统的 Linux 方法是运行一个单个统一的用户空间,包含了内核之外的所有平台,这种方式正在发生变化。 这个新模型是关于拥有一个"容器"集合,使用户空间成为组件。 容器化模型将用户空间的一部分转换为每个组件之间高度独立性的组件集合。

容器化装载带来了许多好处,从而允许团队更加独立地实现粒状平台升级的可行性。 不利的一面是,它们比非容器化的解决方案有更大的资源占用。 然而,如果技术的发展展示了什么,那就是当一项新技术唯一的缺点是尺寸大小时,那它所拥有的资源往往会扩大。

下面将描述一些早期的选项,以便与现有的发行版进行比较。

物联网 Linux 发行版

浏览一下有争议的领域。 许多人都有自己喜欢的 Linux 发行版,即使他们的需求发生了巨大的变化(例如从服务器设置到嵌入式 IoT 设备) ,他们仍然坚持这种方式,就像把一个方形的钉子装进一个圆形的洞里。

下面是一些已经建立的 Linux 发行版和一些新兴的 Linux 发行版。 还有许多其他用例,可能更适合某些用例。

Yocto

Yocto 是一个基于源代码的发行版,用于许多嵌入式和物联网设备。 它试图将基于二进制发行版的好处结合在一起,例如将包和它们的依赖关系清晰地分离出来,同时利用基于源代码的发行的好处,当做出较小的修改时,可以在很大程度上改变目标二进制文件。

Yocto 由一系列配方组成,每个配方都描述了如何构建系统的一个模块(例如库、守护程序、应用程序等)。 然后被分层收集,并配置它们应该如何一起使用的各个方面,从编译标记到功能特性,再到它们如何显示的详细信息。 每个目标构建将由几个这样的层组成,每个层从较低的层添加或删除包,或者修改它们的默认行为。 这允许多方调整自己的分层来影响最终的镜像。 因此,如果基本层使用一组编译器标志(通常是这样) ,芯片供应商可以添加有利于特定芯片模型的编译器标志,而电路板供应商可以删除他们的电路板可能不支持的芯片功能。

对于物联网产品而言,这实际意味着使用已经支持 Yocto 的板子来构建一个解决方案的努力将是添加或修改基本功能之上的附加值。 虽然在当今的容器世界中这并不太难做到,但还是需要建立一个允许为目标创建镜像的构建和组态管理 / 值基础设施设置。

同样值得一看的是,Yocto 在开发项目上的支持程度,进而考虑物联网的解决方案。

Debian

Debian 是一个受人尊敬的基于二进制的开源发行版。 它既是发行版,也是其他知名衍生发行版(其中最著名的是 Ubuntu)的基线。

Debian 拥有大量已经预先为 ARM (物联网的选择架构)构建的软件包,但是这些软件包的 ARM 二进制文件的支持和维护水平往往远远低于英特尔的同类产品。 因此,"10,000 + 包"等度量标准并不是那么有意,需要了解那些对用户来说很重要的软件包以及它们的支持程度。

在自主安装使用的许多发行版(例如 Debian)中的一个缺点是,开发人员不理解或者不记得最终运行在机器上的包可能无法完成安装,因此他们不能依赖于目标机器的任何功能。 考虑到这种麻烦对于 docker 环境来说也是一个头疼的问题,发行版已经花费了很大的精力来清理这些依赖项,所以这个问题比以前要小。

为一小组软件集建立一个构建环境的努力是微不足道的,但是为系统构建所有软件包的基础结构可能会变得非常重要。

正因为如此,Debian 对 IoT 来说是一个不错的选择,在这种情况下,只需要添加或创建一些软件包来完成您的平台。

EdgeX Foundry

在严格意义上,EdgeX Foundry 并不是一个发行版,因为它对发行版中的 BSP组成部分没有任何关注。 BSP是包含 Linux 内核本身的部分,设备驱动程序和库使硬件平台成为可能。 它从一个层面开始,需要一个工作的 Linux 系统和 docker 的支持作为底层基础。 它提供了各种各样的容器,为物联网设备提供丰富的中间件和垂直设备,特别是边缘设备中(在 docker parlance 中,容器是一个独立的模块,通常提供一个垂直的功能,如数据库或 web 服务,几乎没有或根本不依赖主机操作系统、库等)。

Edgex 背后的概念为更大的物联网设备,特别是为边缘设备指明了前进的方向,但是还需要做的工作是定义一个更有约束的版本,提供一套良好的基线服务。 在这方面已经取得了进展,一些服务从 JVM 转移到了 golang 为基础的实现,但是基于 Linux 的中低端物联网在不久的将来仍然是遥不可及的。

Foundries.io Microplatform

这种方案使用基于 Yocto 的方法创建了一个 Linux 平台,创建了一个板级支持层,然后在上面叠加一套集装箱式的微服务。 他们的集装箱是一个比 EdgeX Foundry 方法更小、更适中的集合,足迹更小。

虽然可以通过订阅使用自动更新和管理的完全访问 Foundries.io 产品,底层平台是开源的。

结论

基于 linux 的物联网正在从传统的嵌入式模型向更加灵活的模型转变,从单一的团队 / 工具链 / 模型转变为更加灵活的固件、中间件和应用组件的分离。 然而,这种迁移不是没有成本的,并且对 CPU、内存和磁盘需求提出了更高的要求。 为了一个物联网项目选择一个 Linux 基准,需要考虑自己能承受的尺寸大小和产品规划的寿命。 更小、更快速的替换产品最好能够紧跟当今可靠的解决方案,比如 Yocto。 为了能够提供更多资源并且需要将新特性作为一种需求推广到已部署产品的产品,应该将更主流的 Linux 发行版和新的以容器为中心的解决方案作为前进的路径。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2903

    文章

    44262

    浏览量

    371203
  • Linux
    +关注

    关注

    87

    文章

    11225

    浏览量

    208909
  • 应用软件
    +关注

    关注

    0

    文章

    50

    浏览量

    9073
收藏 人收藏

    评论

    相关推荐

    嵌入式 Linux 操作系统配置

    随着物联网(IoT)和智能设备的快速发展,嵌入式系统在各个领域扮演着越来越重要的角色。Linux因其开源、灵活和稳定的特性,成为嵌入式系统的首选操作系统。 1. 硬件选择 在配置嵌入式Linu
    的头像 发表于 11-06 10:22 209次阅读

    RTOS正在缩小与Linux的差距

    ,在对实时性和资源占用有严格要求的场景独领风骚。如果时间倒回五年前,那时候IoT彻底火了,但大型科技公司在面对RTOS和Linux的抉择,对R
    的头像 发表于 09-10 08:07 685次阅读
    RTOS正在缩小与<b class='flag-5'>Linux</b>的差距

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。 硬件选择 在开始嵌入式
    的头像 发表于 09-02 09:11 396次阅读

    详解Linux的权限控制

    本章将和大家分享Linux的权限控制。废话不多说,下面我们直接进入主题。
    的头像 发表于 08-05 15:32 469次阅读
    详解<b class='flag-5'>Linux</b><b class='flag-5'>中</b>的权限控制

    Linuxcut命令的实用示例

    Linux command cut 用于文本处理。您可以使用此命令通过选择列从文件中提取部分文本。
    的头像 发表于 08-05 15:14 289次阅读

    iot.espressif.cn云端升级固件失败了怎么解决?

    SDK版本:esp_iot_sdk_v1.3.0IoT_Demo 修改user_light.h 下 #define PRIV_PARAM_START_SEC 0x7C 修改
    发表于 07-15 06:57

    求助,如何更新esp-iot-solutionlvgl库的版本?

    因为现在esp-iot-solution组件自带的lvgl是7.5的,如果我想使用最新的lvgl版本,我怎么才能正确的更新它呢?
    发表于 06-28 06:56

    论述RISC-C在IOT领域的发展机会

    选择。 低功耗与低成本: RISC-V的低功耗设计使其在IoT设备具有极高的竞争力。IoT设备往往需要长时间运行且不易频繁更换电池,因此低功耗成为了一个关键需求。RISC-V通过精
    发表于 06-27 08:43

    IoT网关在工业应用的重要性及应用

    一、IoT网关的定义 IoT网关,即物联网网关,是物联网(IoT)系统的重要组成部分。它主要实现感知网络与通信网络,以及不同类型感知网络之间的协议转换,既能够支持广域互联,也能满足局
    的头像 发表于 06-12 16:17 361次阅读

    IOT台是什么?有什么功能?

    物联网(IoT)是当今科技领域的热门话题,它通过各种传感器和通信技术,实现对物体和过程的智能化感知、识别、计算和管理,IOT台便是物联网的重要应用场景,作为连接万物的智能平台,扮演着至关重要的角色
    的头像 发表于 06-03 14:14 619次阅读

    使用 PREEMPT_RT 在 Ubuntu 构建实时 Linux 内核

    盟通技术干货构建实时Linux内核简介盟通技术干货Motrotech如果需要在Linux实现实时计算性能,进而有效地将Linux转变为RTOS,那么大多数发行版都可以打上名为PREE
    的头像 发表于 04-12 08:36 2209次阅读
    使用 PREEMPT_RT 在 Ubuntu <b class='flag-5'>中</b>构建实时 <b class='flag-5'>Linux</b> 内核

    nb-iot单灯控制器的nb-iot是什么?

    nb-iot单灯控制器的nb-iot是什么? NB-IoT是一种低功耗宽带物联网技术,主要应用于物联网设备的通信连接。它基于现有的蜂窝网络基础设施,并提供了更低的功耗、更广的覆盖范围
    的头像 发表于 02-03 11:34 1512次阅读

    如何解决Linux系统的网络连接问题?

    如何解决Linux系统的网络连接问题? Linux系统的网络连接问题是常见的技术难题之一,通常涉及在Linux上配置网络接口、解决网络故
    的头像 发表于 01-12 15:17 896次阅读

    NB-IoT标准全解析,技术方案选择不迷路!

    NB-IoT标准全解析,技术方案选择不迷路!
    的头像 发表于 12-01 16:02 1370次阅读
    NB-<b class='flag-5'>IoT</b>标准全解析,技术方案<b class='flag-5'>选择</b>不迷路!

    IoT和IIoT应用选择微控制器开发工具包的介绍性指南

    IoT和IIoT应用选择微控制器开发工具包的介绍性指南
    的头像 发表于 11-30 15:51 519次阅读
    为<b class='flag-5'>IoT</b>和IIoT应用<b class='flag-5'>选择</b>微控制器开发工具包的介绍性指南