嵌入式项目中使用开源软件需要注意哪些问题??

前言

开源软件无处不在,有潜力帮助企业加快开发和提高软件质量。但如果不谨慎行事,它们可能是一个挑战。

下面是五个成功利用开源软件的最佳实践。

使用抽象层解决依赖关系

笔者审阅代码库时发现的一个常见问题是,开发人员将应用程序代码与使用的软件库紧耦合。例如,如果一个开发人员正在使用FreeRTOS,那么应用程序代码调用特定于FreeRTOS API的方法是,如果开发人员决定更改RTOS,则必须重写大量代码来替换所有这些RTOS调用。

你可能会认为更改库是很少见的,但你会惊讶,经常是团队开始使用某个操作系统、库或组件后,而当他们决定需要进行更改时,却不得不返回并重写代码。

当团队选择一个开源组件,甚至是商业组件时,他们应该做的第一件事就是创建一个与该组件交互的抽象层。以RTOS为例,一个团队应该使用OS抽象层OSAL(它允许他们使用独立于OS的API编写应用程序代码)。

如果操作系统发生变化,应用程序不会在意,因为它正在访问一个抽象层,软件更改可能只需要几分钟而不是几天。

尽可能利用集成软件

大多数开源软件都是在自己的沙盒中编写的,而没有考虑到它可能需要与之交互的其他组件。组件通常使用不同的编码标准、样式、测试程度等编写。

当你开始将多个设计为不能相互协作的开源组件组合在一起时,可能会导致长时间的调试、头疼和错过最后期限。所以,尽可能选择已经集成并测试在一起的组件。

一个很好的例子是使用Amazon FreeRTOs连接AWS。FreeRTOS已经与连接到云所需的附加连接库进行了集成和测试,因此不要选择其他库,除非它也经过测试和集成。另一个例子是许多微控制器制造商生产的代码生成器工具。

这些工具通常已经集成了驱动程序软件组件、RTOS、文件系统、USB和其他一些组件。它们已经被证明可以协同工作,可以节省时间和金钱。

执行软件审核和质量分析

有很多优秀的开源软件,也有很多不太好的软件。在开发人员决定在项目中使用开源组件之前,他们需要确保他对软件进行尽职调查,或者雇佣别人做这件事。这包括花时间审核组件并执行质量分析。

在开始使用开源组件时,至少应检查源代码的以下方面:使用圈复杂度度量的复杂性、从功能上确保其满足业务需求和目标、遵守最佳实践和编码标准(根据需要)、处理错误的能力、可测试性。

这至少可以帮助开发人员了解他们正在使用什么,以及潜在的问题和陷阱。

从活跃社区中选择软件

通过快速的网络搜索或浏览github来找到解决问题的软件组件总是很诱人的。在选择一个开源组件时,确保其有一个活跃的社区是非常重要的。

这包括,在论坛上提问会得到快速的响应,新版本会定期发布,软件也会随着新功能的增加而不断改进。选择一个不活跃的社区的组件会导致开发人员被迫自己解决问题,或者更糟的是,不得不维护组件。

由律师审查许可证

开源软件许可可能很复杂。有十几种不同的许可方案,对用户提出了不同的要求。在某些情况下,开发人员可以使用他们认为合适的开源软件。在其他一些情况下,可以使用该软件,但任何其他软件也必须是开源的。

虽然这些许可证在最近几年变得更加容易理解,但是产品开发人员正在经营一项业务,因此有必要聘请一名律师来审查软件许可。这是一项额外的开支,但这是成本的一部分,从长远来看可以节省开支。

结论

适当地利用开源软件可以使开发团队受益匪浅。然而,为了成功,开发人员需要确保明智地选择开源组件。这包括抽象出组件,以确保其应用程序保持灵活性和可维护性。还需要仔细检查开源软件,以确保满足质量和一般要求。

遵循这些最佳实践可以帮助团队避免陷入导致产品延迟、解决方案架构不良的解决方案、质量问题以及产品开发过程中经常出现的许多其他问题的泥潭。

1.傻瓜式教程:如何使用“多合一”开发工具STM32CubeIDE

2.单片机6年想转嵌入式Linux ,不知如何下手?

3.80家MCU国产和国外厂家汇总

4.对比STM32和GD32固件库,你会发现其中的秘密!

5.你的单片机裸机程序框架是怎样的?

6.大神Jim Keller背书!RISC-V进军AI和汽车芯片领域!

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值