嵌入式软件

浏览我们的资源库,以了解更多关于PCB设计的嵌入式软件。

使用ATmega328P开始嵌入式系统的DevOps入门 使用ATmega328P开始嵌入式系统的DevOps入门 DevOps和敏捷方法论已经通过强调协作、自动化和持续改进,彻底改变了软件开发。将DevOps原则应用到我的设计和项目中,已经成为改变游戏规则的一步,提高了效率和可靠性。在这篇文章中,我们将介绍如何为一个使用 ATmega328P微控制器的 现有嵌入式系统项目设置持续集成(CI)工作流。通过本文,你将看到这些实践如何简化你的开发过程并交付更高质量的产品。 理解嵌入式系统的DevOps和敏捷 DevOps是一套实践,由软件界推广,它将软件开发(Dev)和IT运维(Ops)融合为一个持续的流程。在软件界,开发软件然后“扔过墙”给运维团队让他们部署给客户曾是常态。DevOps引入了一种方式,不仅拆除了这堵墙,还将整个过程自动化。在硬件界,我们发现产品开发和生产之间有相似之处,不断地将设计“扔过墙”给我们的制造工程团队,以确保一切都为生产做好了准备。 在嵌入式产品设计中,我们仍然需要将软件通过生产,但面临着比以往任何时候都要快的挑战,并且要以尽可能高的质量交付。通过DevOps原则,我们旨在解决其中的一些挑战。 硬件依赖性:嵌入式系统依赖于硬件和这些PCB的特定修订版。如果不简化为自动化和高度可扩展,测试和部署可能会变得复杂。DevOps实践通过使用相同的硬件和软件设置,并将其通过自动化的持续集成(CI)系统,帮助自动化这些过程。 长时间构建:构建嵌入式软件可能难以设置,并导致长时间的构建。CI通过将构建卸载到云端,利用开发者通常无法访问的更强大的实例,自动化并加速了这一过程。 手动测试:在实际硬件上进行测试是必不可少的,但通常是手动的、乏味的和耗时的。通过硬件在环(HIL)测试的自动化提高效率和准确性,并可以卸载到配置有CI系统的自动化测试设备的设置中。 通过应用DevOps原则,我们能够使用敏捷方法论在构建-测试-部署范式中快速迭代,为我们希望发布到生产的每个附加功能。 它是如何工作的 “构建、测试和部署”是你在讨论DevOps时经常会听到的一组常用词汇。在嵌入式系统中,我们做的事情也是一样的,因为我们的部署同样会进入生产环节(然后是最终客户)。在 项目的仓库中,我们使用Gitlab CI来驱动我们的端到端工作流程,以实现嵌入式DevOps。我们使用所谓的“管道”来创建完成特定任务的作业,例如编译软件、在目标上运行测试或将其作为官方包发布。在Gitlab中,管道是一系列按顺序流动的作业集合,如下所示: 图1:在Gitlab中使用的ATmega328P DevOps工作流程示例管道 这里是CI脚本(.gitlab-ci.yml文件)的细节分解,以给你一个如何工作的概念。 Docker:如 容器化构建和运行环境以进行硬件在环测试中所讨论的,这个阶段构建Docker镜像,以创建一个一致的环境来构建、测试和刷新代码。这确保了在不同的机器和架构(例如桌面PC与树莓派)上构建过程的可重现性。 测试:这个阶段运行单元测试,以验证你的代码是否按照你的意图进行操作。自动化测试在修改或重构现有代码时快速且重要。