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

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

文章图片

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

许多开发人员认为物联网和嵌入式 Linux 设备是他们今天工作环境的扩展 。 但现实情况是 , 为嵌入式 Linux 设备开发和维护应用程序伴随着一系列独特的挑战和工作流程 。 此外 , 一些创建新物联网产品的嵌入式开发人员由于各种原因没有采用容器等现代工具及其实践 。

软件开发更复杂
毫无疑问 , 软件开发 , 尤其是云计算 , 这些年来变得更加复杂 。 同样的复杂程度也适用于物联网和嵌入式 Linux 系统 。 嵌入式设备越来越复杂 , 并将继续变得越来越复杂 。 当前的 Raspberry Pi 和 Nvidia 板就是很好的例子 。 这些是片上系统 (SOC) 的示例 , 它提供了许多具有许多创新功能的资源 , 可以使开发和管理应用程序和其他系统变得更加复杂 。
云开发人员所需的技能范围广泛而多样 , 无论是从单个开发人员的角度来看 , 还是从整个团队的角度来看都是如此 。 云开发人员需要处理许多不同的系统 , 从像 Git 这样的源代码控制存储库到像 Kubernetes 这样的自动化持续集成和部署管道和编排系统 。 尽管如此 , 在你开始将应用程序部署到云之前 , 你还需要掌握开发应用程序的语言和框架以及存储系统 。
嵌入式工程师和硬件
嵌入式工程师还有管理硬件的额外要求 。 与拥有近乎无限资源的云不同 , 嵌入式工程师还必须评估板的功能和限制 。

嵌入式 Linux 产品也往往会在市场上销售很长时间 , 有时甚至长达 10 年 。 因此 , 另一个考虑因素是软件和固件必须可靠且易于更新 。 大多数设备都是连接的 , 并且像裸机服务器一样是物联网基础设施的基本组件 。 嵌入式开发人员最不想担心的是会导致整个网络或生态系统崩溃的关键软件错误 。
嵌入式工程和现代云技术
通过采用容器及其实践等现代云技术 , 可以满足许多这些特定于嵌入式的要求 。 但采用容器还有许多其他好处 , 可以帮助嵌入式工程团队 , 例如更快的周转时间 , 以将概念原型验证到生产就绪 , 以及提高开发速度 。
从概念验证到生产就绪
在处理新的和复杂的框架和库时 , 嵌入式工程师必须保持高效并领先于曲线 。 例如 , 工程师需要快速构建和迭代可与客户一起评估和测试的概念证明或产品原型 , 以快速确定其是否是可构建并推向市场的可行产品 。
上市速度
原型经过测试和批准后 , 你需要做好准备并尽快将其推向市场 。 如果测试成功 , 你还希望成为市场上第一个使用有望领先于竞争对手的新一代产品的人 。
生命周期管理的长期视野
嵌入式 Linux 设备需要长期维护 , 需要一种可靠的方式来安全地更新和维护设备 。 对于嵌入式系统 , 嵌入式开发人员需要一致的电源和一种简单的方法来回滚或转发到良好状态 , 以防出现问题而不是最终导致设备变砖 。
在没有容器的情况下构建嵌入式 Linux 系统多年来 , 构建嵌入式 Linux 系统几乎没有变化 。 尽管有像 Buildroot 和 Yocto 这样专门针对嵌入式系统的发行版 , 但围绕嵌入式系统设计和架构的开发方法和实践与 20 年前相似 。
传统上 , 嵌入式团队的发布周期很慢 , 包括每隔几个月甚至每年一次的整体发布 , 其中包含每个小的更改到一个大版本中 。 这种类型的释放可能适用于封闭的设备 。 但是 , 如果你的设备连接到互联网或在一个车队中呢?如果是这种情况 , 则需要快速交付其中一些更改和更新 。
单映像整体部署
以下是嵌入式 Linux 工程师在创建嵌入式系统时将采用的传统工作流程 。 编译和调试后 , 结果是部署到板上的单个图像 。

在组装和定制板级支持包以及 Linux 内核库和模块后 , 你需要决定要用于你的应用程序的框架和库 。 然后 , 整个系统使用 Yocto 或 Buildroot 分层构建或“配方” 。
当然 , 这从来没有听起来那么简单 , 而且在使用特定工具链进行交叉编译时 , 通常会出现依赖冲突需要调试 。 但是 , 一旦完成 , 最终结果是部署到设备的单个整体映像 。
单一映像部署的优缺点
单个图像的一个优点是可以对其进行优化以在设备上运行得更快 。 但是 , 一个缺点是 , 如果有关键补丁、新功能或任何其他类型的更新 , 嵌入式开发人员必须重复整个过程 , 这可能很耗时 。