嵌入式开发:五步实现开源软件与嵌入式应用的完美融合

发表时间: 2023-10-24 09:34

  开源软件要么被视为集成到嵌入式系统中的快速功能的廉价、快速的替代方案,要么被视为会绊倒你并给毫无戒心的嵌入式开发团队带来问题的噩梦。使用开源软件有很多优点,也有很多缺点。对于那些对在他们的项目中成功使用开源软件感兴趣的人,这里有五个步骤来成功地将开源集成到你的嵌入式应用程序中。

  步骤1:确定你的需求,研究可用的开源选项

  每个嵌入式应用都有不同的要求,具体取决于目标行业、系统功能、硬件能力以及所需的稳定性和可靠性水平等因素。你的系统需求将有助于决定哪些开源项目非常适合你的应用程序。一旦你理解了这些需求,你就可以开始研究可能满足你需求的开源软件了。

  当你第一次确定开源解决方案时,从一个广阔的网络开始并不是一个坏主意。大多数开源解决方案可能不符合你的要求和需求,但在第一步,我们希望了解你的要求和需求,然后确定潜在的选项。

  步骤2:评估许可证和合规性要求

  对于一个商业产品来说,你将会遇到的开源软件的最大问题之一就是许可和遵从需求。存在许多不同类型的开源许可。但是,评估解决方案许可证是否符合贵公司的嵌入式开发需求至关重要。如果你选择了一个带有错误许可证的解决方案,你可能会被迫发布你的源代码!因此,让一个专门研究开源许可的律师来审查你的潜在解决方案列表总是一个好主意。你可能会找到基于许可证的解决方案来删除你的潜在客户列表。

  除了许可需求,你还需要考虑系统的合规性要求,以及开源软件是否满足这些要求。例如,如果你正在使用医疗设备,你可能会发现对文件存储系统的健壮性有一些要求。使用spiffs, eefs,或者LittleFS如果是这样,是否符合你的法规遵从性需求?也许他们都有,也许他们都没有。但是,你的法规遵从性需求可能会迫使你朝着一个方向或另一个方向前进。

  步骤3:适用性评估和测试

  重要的是要认识到所有的开源软件都是不平等的。它也不一定是根据你的需求设计的!开源软件通常始于某个有需求的嵌入式开发人员的宠物项目。他们的需求可能与你的一致,也可能不一致。在最糟糕的情况下,它们可能看起来是一致的,只有当你深入细节时,你才会发现它们并不一致的丑陋事实。当一个项目获得动力时,多个涉众开始维护项目的情况并不少见,所有人都带着他们对软件发展方向的愿景。

  你可以对潜在的开源解决方案进行许多评估和测试。你还应该使用像这样的工具pmccabe来衡量代码的圈复杂度。复杂性度量可以帮助你理解代码库中隐藏错误的可能性。

  

  第4步:集成和定制

  一旦你选择了开源解决方案,真正的工作就开始了。你必须将它集成到你的代码库中。当你使用第三方解决方案时,即使是开源的,通过API或包装函数对应用程序隐藏它也是一个好主意。原因是你可能会发现你需要改变解决方案。如果你将应用程序代码与解决方案紧密耦合,你将不得不返回并更改所有代码!如果你通过一个接口抽象代码,你必须更新接口调用的函数,并且你可以很快地回到业务中。

  成功集成开源软件的另一个关键是为必要的功能开发单元测试。在嵌入式开发中,像RTOS或文件系统这样的大型开源项目可能会随着时间而改变。你不希望对你使用的东西进行更改,然后破坏你的应用程序代码。每当你将软件集成到代码中时,你都应该编写单元测试来确保它能如你所愿。你不需要为整个解决方案编写单元测试;只需为你使用的部分编写单元测试。

  步骤5:维护解决方案

  幸运的是,你选择的开源软件现在已经集成到了你的应用程序中,并且工作正常。不幸的是,这并不是故事的结尾。现在,你必须在代码中维护开源解决方案。随着时间的推移,解决方案可能会发生变化,以添加新功能、修复错误,甚至修补安全漏洞!为了确保你的代码继续满足客户的需求并按预期运行,你需要在产品的整个生命周期中维护它。

  结论

  开源软件可能对嵌入式开发团队有利,也可能是主要的绊脚石。这篇文章探讨了将开源软件集成到嵌入式应用中的五个步骤。你已经看到了检查许可和合规性要求的重要性。我们还讨论了评估软件质量和开发单元测试的重要性。也许最重要的集成技巧是通过API将解决方案从应用程序代码中分离出来。遵循这些步骤应该有助于你增加将开源软件成功集成到嵌入式系统中的机会。祝你好运!