物联网|嵌入式开发:简化物联网( 二 )


单映像整体部署
以下是嵌入式 Linux 工程师在创建嵌入式系统时将采用的传统工作流程 。 编译和调试后 , 结果是部署到板上的单个图像 。

在组装和定制板级支持包以及 Linux 内核库和模块后 , 你需要决定要用于你的应用程序的框架和库 。 然后 , 整个系统使用 Yocto 或 Buildroot 分层构建或“配方” 。
当然 , 这从来没有听起来那么简单 , 而且在使用特定工具链进行交叉编译时 , 通常会出现依赖冲突需要调试 。 但是 , 一旦完成 , 最终结果是部署到设备的单个整体映像 。
单一映像部署的优缺点
单个图像的一个优点是可以对其进行优化以在设备上运行得更快 。 但是 , 一个缺点是 , 如果有关键补丁、新功能或任何其他类型的更新 , 嵌入式开发人员必须重复整个过程 , 这可能很耗时 。
容器和管理复杂性
还记得开发人员说“在我的机器上工作!”的日子 。 使用容器 , 你现在可以做到这一点 。 本质上 , 容器允许你将带有应用程序及其底层依赖项的机器移动到另一台机器上 , 并确信它按预期运行 。 这是因为容器将应用程序和任何依赖项打包为可以在任何环境(包括嵌入式 Linux 设备)中运行的标准化单元 。
【物联网|嵌入式开发:简化物联网】将所有依赖项打包到一个独立的单元中 , 使系统和应用程序能够在没有任何外部帮助的情况下完成工作 , 并提供了许多单体架构所不具备的独特优势 。

嵌入式 Linux 系统的便携式构建模块
自包含的标准化软件单元的一个显着优势是能够将你的整体系统划分为逻辑组件 。 每个组件都可以独立地使用容器之间的接口和容器运行时来管理它们 。 例如 , 你可以将系统级组件与应用程序分开 。 你还可以在用户空间中为你的应用程序使用你想要的任何语言或框架 , 而不必担心下面运行的是什么操作系统 。 有关更多信息 , 请参阅“掌握嵌入式 Linux 设备上的容器”或观看演讲“(发行版)是否仍然相关” 。
便携式构建块为嵌入式世界提供了与云开发人员如今所使用的语言独立性相同的优势 。 今天 , 大多数云开发人员甚至都没有考虑他们正在运行什么 Distro , 甚至没有考虑在一个集群中运行了多少其他语言 。 相反 , 开发人员将时间花在他们的应用程序或服务上 , 以便为客户而不是基础设施提供价值 。 这些相同的好处也可以扩展到构建物联网的嵌入式开发Linux工程团队 。
更高效、更敏捷的工程团队
将内核库与用户区分开组件化的另一个优点是能够将更高级别的应用程序开发移交给另一个团队 。 例如 , 嵌入式 Linux 操作系统可以由根文件系统、引导加载程序、内核和 BSP 在单独的容器和其他可选实用程序(如容器中的网络和图形库)中组件化 。 一旦硬件工程师为特定板构建了系统 , 就可以使用简单的 Docker 组合文件跨项目共享标准系统级容器 。
同样 , 应用程序开发人员使用的框架(例如 UI 或分布式存储)也可以构建为容器 , 并以可移植的方式在应用程序开发团队之间共享 。 同样 , 这可以提高开发效率 , 并有助于快速完成概念验证 , 然后最终更快地将可生产的产品推向市场 。
简化的软件生命周期管理
容器化嵌入式 Linux 系统和应用程序库的另一个好处是它们可以更快、更有效地更新 。 通过容器管理不同版本库的能力 , 你无需重新开始并通过更新构建新的单体应用程序 , 你可以更新单个组件 , 而无需每次都重新构建整个系统 。 由于容器是不可变且可移植的 , 你还可以将测试和部署自动化为 CICD 管道 , 从众多可用的开放工具中进行选择 , 并使用更新和安全补丁快速构建新容器 。 所有这些最终都会加快产品交付速度并提高物联网安全性 。