开源软件要么被视为集成到嵌入式系统中的快速功能的廉价、快速的替代方案,要么被视为会绊倒你并给毫无戒心的开发团队带来问题的魔鬼。使用开源软件有很多优点,也有很多缺点。对于那些对在他们的项目中成功使用开源软件感兴趣的人,这里有五个步骤来成功地将开源集成到你的嵌入式应用程序中。
第一步——确定你的需求,研究可用的开源选项
每个嵌入式应用都有不同的要求,具体取决于目标行业、系统功能、硬件能力以及所需的稳定性和可靠性水平等因素。你的系统需求将有助于决定哪些开源项目非常适合你的应用程序。一旦你理解了这些需求,你就可以开始研究可能满足你需求的开源软件了。
当你第一次确定开源解决方案时,从一个广阔的网络开始并不是一个坏主意。大多数开源解决方案可能不符合你的要求和需求,但在第一步,先了解要求和需求,然后确定潜在的选项。
第2步–评估许可证和合规性要求
对于一个商业产品来说,你将会遇到的开源软件的最大问题之一就是许可和遵从需求。有许多不同类型的开源许可,但是,评估解决方案许可证是否符合公司的需求至关重要。如果你选择了一个带有错误许可证的解决方案,你可能会被迫发布你的源代码!因此,让一个专门研究开源许可的律师来审查你的潜在解决方案列表总是一个好主意。
除了许可需求,你还需要考虑系统的合规性要求,以及开源软件是否满足这些要求。例如,如果你正在使用医疗设备,你可能会发现对文件存储系统的健壮性有一些要求。使用spiffs, eefs,或者LittleFS如果是这样,是否符合你的法规遵从性需求?也许他们都有,也许他们都没有。但是,你的法规遵从性需求可能会迫使你朝着一个方向或另一个方向前进。
第3步–适用性评估和测试
重要的是要认识到所有的开源软件都是不平等的。它也不一定是根据你的需求设计的!他们的需求可能与你的一致,也可能不一致。
不要抱有开源解决方案能够满足你的需求的幻想,即使它是由已经集成到工具链中的芯片供应商提供的。你应该评估软件是否满足你的许可、性能、代码大小、集成和维护需求。最好花时间运行并测试该解决方案。
你可以对潜在的开源解决方案进行许多评估和测试。比如使用工具pmccabe测量代码的圈复杂度。复杂性度量可以帮助你了解代码库中隐藏bug的可能性。
步骤4–集成和定制
一旦你选择了开源解决方案,真正的工作就开始了。你必须将其集成到你的代码库中。当你使用第三方解决方案(即使是开源解决方案)时,最好通过API或包装函数将其隐藏在应用程序中。原因是你可能会发现你需要改变解决方案。如果你将应用程序代码与解决方案紧密耦合,你将不得不返回并更改所有代码!如果你通过一个接口抽象代码,你必须更新接口调用的函数,并且你可以很快回到业务中。
成功集成开源软件的另一个关键是为必要的功能开发单元测试。像RTOS或文件系统这样的大型开源项目可能会随着时间的推移而改变。你不希望对你使用的东西进行更改,然后破坏你的应用程序代码。每当你将软件集成到代码中时,你都应该编写单元测试以确保它按照你的预期工作。你不需要为整个解决方案编写单元测试;只需为你使用的部分编写单元测试。
步骤5–维护解决方案
幸运的是,你选择的开源软件现在已经集成到你的应用程序中,并且正在成功运行。你现在必须在代码中维护开源解决方案。解决方案可能会随着时间的推移而改变,以添加新功能,修复bug,甚至修补安全漏洞!为了确保你的代码继续满足客户的需求并按预期运行,你需要在产品的整个生命周期中维护它。
结论
开源软件可能对嵌入式软件团队有利,也可能是主要的绊脚石。这篇文章探讨了将开源软件集成到嵌入式应用程序中的五个步骤。你已经看到了检查许可和合规性要求的重要性。我们还讨论了评估软件质量和开发单元测试的重要性。也许最重要的集成技巧是通过API将解决方案与应用程序代码分离。
遵循这些步骤应该有助于你增加将开源软件成功集成到嵌入式系统中的机会。