嵌入式软件可以运行任何东西,从8位微控制器到运行微控制器和应用内核的复杂多核FPGA系统。虽然我们的行业规模庞大,并且正在发生许多事情,但在2024年及以后,有几个总体趋势将是必不可少的。让我们看看基于微控制器的系统的几个行业趋势。
嵌入式软件趋势1:利用人工智能
人工智能(AI)是一个显著而明显的趋势,所以让我们马上解决这个问题。人工智能技术正以指数级的速度发展,并有可能彻底改变你创建嵌入式软件的方式。人工智能将进入软件开发生命周期的许多领域,包括以下领域:
l 代码生成
l 排除故障
l 代码审查
已经有各种各样的工具采用“CoPilot”的名称来帮助软件开发。例如,Github CoPilot与Visual Studio代码集成,提供开发人员可以接受的代码生成建议。
问题不是你是否应该在嵌入式软件开发中使用人工智能技术,而是你应该如何使用它们来加速和改进你的嵌入式软件。
嵌入式软件趋势2:改进CI/CD流程
嵌入式软件团队正在快速采用DevOps。它为团队提供了自动化构建、测试和部署过程的方法。这些概念和技术可以帮助团队更快地开发更高质量的软件。然而,很多嵌入式团队很难为他们的嵌入式产品实现合理的管道,尤其是中小型公司。
CI/CD技术已经达到了一个成熟的水平,嵌入式团队可以利用这些技术更好地利用CI/CD。团队更容易采用DevOps和CI/CD,并预计未来一年将呈上升趋势。实现了管道的团队没有充分利用它们,这意味着他们没有从他们的努力中获得全部利益。开发过程中质量和可观察性的潜在改进现在太重要了,不容忽视。
嵌入式软件趋势3:在32位应用程序中逐步淘汰C,替用C++和Rust
编程语言之战今年将继续。我相信我们将继续看到C编程语言开始被淘汰,并被C++和Rust等更现代的语言所取代。在我们有生之年,C语言不会被完全取代;然而,越来越多的团队在开始新项目时放弃C,而更喜欢使用C++。
值得注意的是,这种转变发生在32位微控制器领域。这些器件变得如此强大,以至于它们推动了微控制器和应用处理器之间的界限。它们现在如此复杂,以至于接近通用计算应用程序,在这些应用程序中采用像C++或Rust这样的现代语言更有意义。
人们对Rust很感兴趣,但它在嵌入式领域的应用可能会更快。考虑到嵌入式产品采用新技术的速度非常缓慢,这并不奇怪。在为硬件提供板条箱的硅供应商支持Rust之前,我们不会看到采用Rust的巨大推动力。在此之前,主流趋势将是使用它们随C++一起提供的C库。
嵌入式软件趋势4:以开发人员为中心的工作流
开发人员通常只是接受了芯片供应商提供的工具。该团队根据供应商设计工具的方式调整其开发工作流程。例如,多年来,团队一直使用基于Eclipse的ide进行嵌入式软件开发。虽然方便,但它不容易与现代开发过程、CI/CD、AI工具等很好地集成。
使用像Visual Studio Code这样的工具,开发人员可以完全自定义最适合自己的工作流程。虽然这似乎是一个小趋势,但它有可能提高开发人员的效率并帮助团队按时交付。如果每个从事项目的开发人员都可以定制他们的工具,以适合他们需求的方式进行开发,而不是采用一些通用过程,他们将能够更快地开发代码。更快的交付速度意味着有更多的时间专注于质量和节省成本或交付更多功能的能力。
随着时间的推移,我们会看到以开发人员为中心的工作流受到更多关注。毕竟,一家公司最大的资产是员工,因此帮助他们以合适的方式工作是合乎逻辑的。
嵌入式软件趋势5:迈向更高的抽象层次
在嵌入式软件行业中,向更高级别的抽象转移并不是什么新鲜事。抽象为我们提供了一种简化复杂软件和交互的机制。随着软件变得越来越复杂,对更高层次抽象的需求不再是奢侈品,而是必需品!
微控制器硬件和物联网应用的复杂性已经将嵌入式软件的边界推到了现在与通用计算相交的地步。它已经存在了一段时间,但公司现在意识到如何成功利用这一交叉点。
例如,一个团队传统上可能选择一个RTOS,但仍然编写他们所有的低级驱动程序。相反,今天的团队将通过选择支持POSIX并且已经有驱动程序和Hal的RTOS来抽象这些细节。他们的应用程序将利用这些抽象概念,因此对底层硬件和中间件的了解非常少。与很难找到的嵌入式软件开发人员组成的团队不同,任何了解一般计算机科学技术的实习生都可以启动并运行系统。
我们可以期待通用计算能力和抽象的大幅提升,以及无代码解决方案的增加。
嵌入式软件趋势结论
这五个趋势迫使许多嵌入式软件团队重新思考他们如何开发和构建他们的嵌入式系统。需要注意的是,虽然这些都是比较重大的行业趋势,但每个行业和团队都是不同的。你可能会发现其中一些趋势并不影响你的日常开发工作。其他人可能会迫使你大幅改变开发软件的方式。