嵌入式开发:嵌入式Linux构建工作流和流程的普遍现状

更新时间: 2022-02-02 10:05:00来源: 粤嵌教育浏览量:11737

  许多使用容器等云技术的嵌入式开发人员将物联网和嵌入式Linux设备视为他们目前工作环境的扩展。但现实是,为嵌入式Linux设备开发和维护应用程序带来了一系列独特的挑战和工作流程。此外,由于各种原因,一些创建新物联网产品的嵌入式工程师没有采用容器等现代工具及其实践。


  我们将讨论工程师今天使用的典型嵌入式Linux构建工作流和流程。


  软件开发更为复杂


  毫无疑问,软件开发,特别是云计算,多年来变得更加复杂,同样的复杂程度也适用于物联网和嵌入式Linux系统。目前的Raspberry Pi和Nvidia板就是一个很好的例子。这些都是片上系统(SOC)的例子,它提供了许多具有创新功能的资源,使开发和管理应用程序和其他系统变得更加复杂。


  云开发人员所需的技能范围广泛多样,无论是从单个开发人员的角度还是整个团队的角度来看,云开发人员需要协调许多不同的系统,从Git之类的源代码管理存储库到Kubernetes之类的自动化持续集成和部署管道以及编排系统。尽管如此,在将应用程序部署到云端之前,开发应用程序还需要掌握各种语言、框架和存储系统。


  嵌入式工程师和硬件


  嵌入式工程师有管理硬件的额外要求,与云不同的是,云几乎有无限的资源,他们必须评估每个板的功能和限制。


  嵌入式Linux产品也倾向于在市场上存在很长时间,有时长达10年,因此,另外一个关键考虑因素是软件和固件必须可靠且易于更新。大多数设备都是连接的,就像裸机服务器一样,是物联网基础设施的基本组件。嵌入式开发工程师最不想考虑的是可能导致整个网络或生态系统崩溃的关键软件缺陷。


  嵌入式工程需要采用现代云技术


  通过采用容器及其实践等现代云技术,可以满足许多嵌入式特定需求。但是,采用容器也有许多其他好处,可以帮助嵌入式工程团队,例如加快从概念验证原型到生产准备的周转时间,提高开发速度。


  从概念验证到生产准备


  在处理新的和复杂的框架和库时,嵌入式工程师必须保持高效和领先。例如,工程师需要快速构建和迭代概念验证或可以与客户一起评估和测试的产品原型,以快速确定它是否是一个可以构建并推向市场的可行产品。



  上市速度


  随着原型的测试和批准,你需要做好准备并尽快将其投入市场。如果测试成功,你将希望在市场上率先推出新一代产品,有望领先于你的竞争对手。


  生命周期管理的长期前景


  嵌入式Linux设备需要长期维护。我们需要的是一种可靠的方法来安全地更新和维护设备。对于嵌入式系统,你需要一个一致的电源和一种简单的方法,以便在出现问题时返回或前进到良好状态,而不是以砖块设备结束。


  构建没有容器的嵌入式Linux系统


  多年来,构建嵌入式Linux系统几乎没有什么变化。尽管存在Buildroot和Yocto等特定于嵌入式系统的发行版,但围绕嵌入式系统设计和体系结构的嵌入式开发方法和实践与20年前类似。


  传统上,嵌入式团队有一个缓慢的发布周期,每几个月甚至每年发布一次monolith版本,将每个小的更改都包含在一个大的版本中。这种类型的释放可能适用于封闭设备。但是,如果你的设备连接到互联网中,该怎么办?如果是这种情况,则需要快速交付其中一些更改和更新。


  单映像单片部署


  下面是嵌入式Linux工程师在创建嵌入式系统时将开始的传统工作流程。编译和调试后,结果是一个单独的映像部署到板上。


  组装和自定义板支持包以及Linux内核库和模块后,需要决定应用程序使用的框架和库。然后,整个系统通过Yocto或Buildroot以层或“配方”的形式构建。当然,这并不像听起来那么简单,而且当使用特定的工具链进行交叉编译时,常常会出现需要调试的依赖冲突。但是,一旦完成,最终的结果是将单个单片映像部署到设备上。


  单个映像部署的优缺点


  单个映像的一个优点是可以对其进行优化,使其在设备上运行得更快。但缺点是,如果你有关键补丁、新功能或任何其他类型的更新,则必须重复整个嵌入式开发过程,这可能会很耗时。

免费预约试听课