利用虚拟原型,实现整车开发 CI/ CD 流程

MachineWare为嵌入式程序员提供开发、集成、测试和调试代码的硅前开发平台。
虚拟原型的内容,我们的公众号累积有超过了百万字。为什么我们投入这么大精力?因为我们知道,启动虚拟原型项目之前,用户要能够对虚拟原型进行完整评估和理解,才能发挥其价值。要完整理解虚拟原型,需要时间。虚拟原型,会让整个行业和生态受惠;而虚拟原型的普及和传播,早晚需要人去做。虚拟原型在国内,是一个相对前沿又非常技术底层的概念。很多人初次听到虚拟原型,容易和 Hypervisor 混淆,我们也经常在客户现场看到。知识的普及,一直是任重道远,希望这篇文章可以帮你了解更多。

当前的嵌入式软件开发人员,肩并肩挤在寒冷的调试实验室中,在最终系统的物理原型上集成和测试代码。除了不便之外,这种方法还有两大问题。在一个庞大的软件团队中复制原型的成本相当可观,而且这些系统必须得到维护和管理。为了最大限度地提高硬件利用率,程序员轮班工作已成为一种普遍现象,这又增加了不便。改用高度联网的系统意味着程序员可以在办公室而不是实验室工作,但这并没有降低相关成本。

利用虚拟原型,实现整车开发 CI/ CD 流程

MachineWare 提供了ARM 架构的硬件等价环境,部署到AWS、Baidu 或者私有云中。

当嵌入式处理器从分立部件转向片上系统(SoC)设备时,物理原型出现了最大的问题。定制芯片的设计和制造需要数月时间。在芯片从代工厂运抵之前,无法制作物理原型,而这在项目计划中已为时过晚,无法开始软件集成和测试。嵌入式编程是基于 SoC 的系统的主要任务之一,因此上市时间(TTM)会被推迟。此外,细微的设计缺陷可能要等到硬件和软件一起运行时才能发现。如果必须在投产前翻转芯片以修复这些错误,那么 TTM 将进一步下滑,项目成本也将激增。
避免这些问题的唯一方法是为嵌入式程序员提供一个硅前平台,用于开发、集成、测试和调试他们的代码。虚拟原型(SoC 和硬件系统的抽象软件仿真模型)正是这样一种解决方案。它们包含嵌入式处理器的快速指令集模拟器(ISS),能够执行与生产系统相同的代码。虚拟原型可以与虚拟和现实世界的 I/O 设备进行交互,这是系统测试的重要组成部分。虚拟原型还能更好地测试异常情况,包括注入可能导致实际硬件损坏的虚拟故障。虚拟原型可在整个嵌入式软件团队中部署,而无需支付构建和维护物理原型的成本。
最重要的是,虚拟原型缩小了 TTM。由于虚拟原型不需要包含许多实现细节,因此可以与 SoC 的寄存器传输级 (RTL) 硬件设计并行开发和使用。这就实现了真正的软硬件协同开发,并使项目进度大幅 "左移"。设计与嵌入式代码之间的不一致性会被及早发现,从而大大降低了因功能问题导致芯片转向的几率。

利用虚拟原型,实现整车开发 CI/ CD 流程

在硬件虚拟原型出现的同时,软件开发也经历了自身的演变。如今,许多编程项目都使用持续集成(CI),即经常(有时一天数次)向主资源库检查代码更改,并立即重建和测试软件可执行文件。CI 方法与只在指定检查点合并所有程序员代码的传统做法形成鲜明对比。到那时,代码的各个部分可能已经有了很大的差异,导致集成步骤充满挑战,并需要大量的调试工作来解决问题。CI 可以立即发现这些问题,从而快速、轻松地解决它们。CI 有时还与持续部署(CD)相结合,在 CD 中,通过所有自动测试的成功构建将在所有系统上发布到生产中。

利用虚拟原型,实现整车开发 CI/ CD 流程

MachineWare 和生态伙伴可以帮助用户搭建完整的虚拟整车开发环境。

虚拟原型的嵌入式代码在很多方面都是一个典型的软件项目,因此 SoC 团队也希望从 CI 和 CD 中获益。虚拟原型除了作为交互式开发平台外,还能运行自动化集成回归测试。向所有程序员和所有系统传播成功的构建结果,可以使整个项目团队保持同步并提高生产率。CI/CD 流程推动了虚拟原型在回归测试中的应用,并进一步实现了嵌入式软件开发流程的自动化。

利用虚拟原型,实现整车开发 CI/ CD 流程

松下汽车采用虚拟原型:在 AWS 上部署虚拟 ECU

MachineWare 提供了开发和使用虚拟原型的解决方案。该解决方案包括一系列经过预先验证的虚拟原型开发工具包(VPK),适用于流行的处理器和微控制器架构。VPK 包含特定设计的虚拟原型、调试和分析工具以及示例软件。它们非常适合各种类型的软件开发,包括设备驱动程序、操作系统和中间件。VPK 支持在 IAR、Tasking、Segger、Lauterbach 等集成开发环境 (IDE) 中组装和调试,可深入了解任何问题。

利用虚拟原型,实现整车开发 CI/ CD 流程

MachineWare 对汽车软件开发生态提供了完整的支持。

VPK 可集成到先进的 CI/CD 流程中,为嵌入式软件开发和测试创建高效的管道。容器是一种 "一次构建,随处运行 "的可执行软件包,其中包含在多种计算环境中快速可靠运行所需的一切内容。此外,检查点/恢复功能可避免冗余工作,从而大大加快测试周期。VPK 通过广泛的分析和调试功能提供额外的价值,并与各种先进的软件开发和测试技术无缝集成,包括:
  • GitLab 或 Jenkins DevOps 平台
  • Docker 容器
  • Kubernetes 开源容器编排系统
  • 用于管理 Kubernetes 集群的 Rancher 软件栈



利用虚拟原型,实现整车开发 CI/ CD 流程

原文始发于微信公众号(虚拟原型 Virtual Prototyping):利用虚拟原型,实现整车开发 CI/ CD 流程

版权声明:admin 发表于 2024年7月14日 上午6:03。
转载请注明:利用虚拟原型,实现整车开发 CI/ CD 流程 | CTF导航

相关文章