使用虚拟原型实现持续集成和部署流程

文摘   2024-11-21 06:00   上海  
为嵌入式程序员提供硅片前平台,用于开发、集成、测试和调试代码。
不久前,嵌入式软件开发人员挤在寒冷的启动实验室中,在最终系统的物理原型上集成和测试他们的代码。除了不方便之外,这种方法还有两个主要问题。在大型软件团队中复制原型的成本相当高,而且必须维护和管理这些系统。程序员轮班工作以最大限度地提高硬件利用率已成为常态,这加剧了不便。转向高度网络化的系统意味着程序员可以在办公室而不是实验室工作,但这并没有降低所涉及的成本。
当嵌入式处理器从独立部件转移到片上系统 (SoC) 设备时,物理原型的最大问题出现了。定制芯片的设计和制造需要数月时间。芯片从代工厂运来后才能构建物理原型,而这在项目计划中对于软件集成和测试来说已经太晚了。嵌入式编程是基于 SoC 的系统计划中的主要任务之一,因此上市时间 (TTM) 被推迟。此外,直到硬件和软件一起运行后,才可能发现细微的设计错误。如果必须在生产前修复这些错误,TTM 将进一步推迟,项目成本将激增。

避免这些问题的唯一方法是为嵌入式程序员提供一个硅片前平台来开发、集成、测试和调试他们的代码。虚拟原型,即 SoC 和硬件系统的抽象软件仿真模型,提供了这样的解决方案。它们包含用于嵌入式处理器的快速指令集模拟器 (ISS),能够执行将在生产系统中运行的相同代码。虚拟原型可以与虚拟和现实世界的 I/O 设备交互,这是系统测试的重要组成部分。它们还可以更好地测试异常情况,包括注入可能导致实际硬件损坏的虚拟故障。它们可以部署到嵌入式软件团队中,而无需花费构建和维护物理原型的成本。

最重要的是,虚拟原型缩短了 TTM。由于它们不需要包含许多实现细节,因此可以与 SoC 的寄存器传输级 (RTL) 硬件设计并行开发和使用虚拟原型。这实现了真正的硬件-软件协同开发,并大大“提前”了项目进度。设计和嵌入式代码之间的不一致可以尽早发现,大大降低了由于功能问题而导致芯片故障的可能性。
随着硬件虚拟原型的出现,软件开发也在经历自身的演变。当今许多编程项目都使用持续集成 (CI),其中代码更改会频繁(有时一天几次)签入主存储库,并立即重建和测试软件可执行文件。CI 方法与仅在指定检查点合并所有程序员的代码的传统做法形成了鲜明对比。到那时,代码的各个部分可能已经出现很大差异,导致集成步骤变得非常困难,并且需要大量调试工作才能解决问题。CI 可以立即发现这些问题,以便快速轻松地解决这些问题。CI 有时与持续部署 (CD) 结合使用,在持续部署中,已通过所有自动化测试的成功构建将发布到所有系统的生产中。
虚拟原型的嵌入式代码在许多方面都是典型的软件项目,因此 SoC 团队也希望从 CI 和 CD 中受益。除了作为交互式开发平台之外,虚拟原型还可以运行自动集成回归测试。将成功的构建传播给所有程序员和所有系统可使整个项目团队保持同步并提高生产力。CI/CD 流程推动虚拟原型在回归中的采用,并进一步自动化嵌入式软件开发流程。

MachineWare 为虚拟原型的开发和使用提供了解决方案。该解决方案包括一系列针对流行处理器和微控制器架构的预验证 ISS 开发套件 (VPK)。VPK 包含特定于设计的虚拟原型、调试和分析工具以及示例软件。它们是所有类型的软件开发的理想选择,包括设备驱动程序、操作系统和中间件。VPK 可以集成到不同的客户 IDE 的内组装和调试,从而可以深入了解任何问题。

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


软硬件协同设计 HW-SW Co-Design
欢迎后台留言,AI 客服全天在线。脱离物理硬件,开发测试和调试软件。基于虚拟原型的软硬件协同设计,提前一年实现产品上市创收,降低一半开发时间。
 最新文章