在同一个嵌入式 CPU 上运行多个操作系统 - 原始设备制造商如何克服芯片短缺危机?

随着技术的发展,特别是汽车、消费电子和医疗领域的发展,从汽车信息娱乐系统到手术室的智能手术屏,芯片几乎嵌入了日常生活的方方面面。由于大流行病的影响,半导体生产放缓导致芯片短缺,预计到 2023 年底将出现芯片短缺。但这一问题仍在继续,并干扰了通用技术的生产。随着越来越多的国家取消限制,经济复苏,嵌入式设备和其他技术的制造商也能恢复正常。但大流行后的状况造成了芯片短缺,限制了制造商制造和分销产品的能力。对于工程师、产品经理和开发人员来说,这似乎是一个难以逾越的障碍,但也有替代方案--虚拟化和容器。这两种解决方案都可用于嵌入式 Linux 系统,为多个操作系统提供支持,从而保证应用程序的部署按期完成。

容器和嵌入式 Linux

由于嵌入式系统资源有限,在嵌入式Linux中使用容器环境与桌面环境不同。在市场上,容器是管理程序之外的一种轻量级、更灵活的选择,开发人员可以将应用程序与运行在同一系统上的其他应用程序隔离开来。尽管与 chroot 不同,Linux 中的容器与之类似,进程与其他应用程序隔离,并为应用程序提供专用的命名空间、内存和网络资源。容器与其他容器是隔离的,但它们仍可使用其 API 相互通信。 容器之间的通信可以受制于细粒度的安全策略(大致相当于网络技术中的防火墙)。

在开发过程中,容器比虚拟机更方便,用途更广。开发人员可以创建一个容器,并将其部署到各种系统,包括本地嵌入式开发环境或目标嵌入式硬件。容器的配置和自定义环境设置都已打包,因此只需部署容器即可。换句话说,在部署应用程序后,不再需要对目标设备进行单独配置。同样,嵌入式 Linux系统也可以跨芯片组、模拟器和设备进行配置。

容器的另一个优点是可以根据需要创建和移除容器,因此维护起来要容易得多。无需通过安装的更新来管理应用程序,而是可以移除应用程序容器,并为每个新版本、更新或补丁重新创建。这一省时省力的优势使容器成为许多应用程序工程师和开发团队的首选,因为他们需要部署多个操作系统、应用程序和版本。

对于使用嵌入式 Linux 的制造商来说,容器可以通过提供灵活的应用部署解决方案,帮助缓解芯片短缺的困境。不过,要托管多个操作系统,容器必须与管理程序或虚拟化结合使用。

管理程序、虚拟机和嵌入式 Linux

尽管在开发过程中使用容器有很多理由,但一些原始设备制造商仍然偏爱虚拟化。容器的一个缺点是与底层操作系统共享资源,因此必须针对每个操作系统进行设计。虚拟化有利于开发人员开发必须在各个操作系统上运行的多个应用程序。开发人员使用虚拟化环境模拟每个目标设备及其操作系统,从而设计和测试应用程序。

虚拟化允许应用程序在抽象硬件实例上运行,因此,如果开发人员有一个应用程序必须与操作系统交互,就好像它是在专用硬件上运行一样,那么虚拟化就很有帮助。就资源使用而言,这可能有点 "笨重",但它仍然允许开发人员在单个设备上运行多个操作系统。由于目前芯片有限,这对那些在没有传统工程和质量保证测试所需的硬件的情况下努力维持部署期限的制造商来说是一个巨大的好处。

在嵌入式 Linux 中,基于内核的虚拟机(KVM)通常用于支持虚拟化。KVM 使虚拟化环境能够在相同的物理硬件上运行,它已经成为 Linux 内核的原生部分,为开发人员提供了一种解决方案,使每个虚拟机实例都能以自己的内存、CPU 和网络资源运行。 

在需要使用多个操作系统的情况下,除了容器之外,还可以使用虚拟机。容器的一个基本问题是,支持的所有容器的操作系统内核版本必须相同,例如,这就是在嵌入式 Linux 操作系统之上继续运行Android容器的原因。在这种复杂的情况下,为了超越这些限制,原始设备制造商有时会使用虚拟机来虚拟化硬件,然后部署为在单个实例上运行特定操作系统而配置的容器。开发人员可以两全其美,既可以使用管理程序运行多个操作系统,又可以使用容器部署孤立的应用程序。

虚拟化和容器如何帮助解决芯片短缺问题?

报道,芯片短缺可能会持续到 2023 年。这意味着,针对嵌入式系统的应用开发人员必须想方设法在可用于测试的芯片减少的情况下继续开发产品。虚拟机和容器技术使在单个物理硬件设备上测试多个操作系统上的应用程序成为可能。L4B Software与这两种技术合作,使制造商能够在芯片短缺的情况下按期完成开发,并为嵌入式应用提供支持。

新的行动呼吁