嵌入式开发:微服务如何增强嵌入式系统开发的敏捷性

更新时间: 2022-11-28 12:06:52来源: 粤嵌教育浏览量:4930

尽管嵌入式设备的使用越来越多,但嵌入式开发技术仍然停留在过去。时至今日,软件和硬件之间仍有很强的依赖性,通常使用整体设计。这意味着每次都要从头开始,而且完全缺乏敏捷性。

 

硬件设备需要有更多的无处不在的连接,代码应该能够重用——在微服务方法中。这意味着从现代软件开发中借鉴概念,并将其应用于嵌入式世界——在机器人、家庭自动化、航空、太空和许多其他领域——这将使开发更快、更容易。

 

这篇文章将阐述采用现代软件开发并将其应用于边缘和嵌入式开发(基于开源方法)的理由,并展示这是如何实现的,以及人们今天如何开始。我们将研究在嵌入式项目中使用微服务的优势和潜在障碍,以及在吞吐量、延迟和安全性方面需要考虑的变量。

 

开始考虑微服务而不是单片:嵌入式开发人员的冒险之旅

人们习惯于将项目视为一组相互依赖的复杂的电路板、驱动程序和应用程序。比如,我们开发了几个星期的代码,然后有人在某个地方做了一些小改动,我们不得不从头开始重新编码所有内容。

 

在这个越来越关注敏捷性和成本控制的时代,似乎难以相信,只要你改变项目中的变量,就可以继续开发无法重用的代码。开发一个不容易根据外部变化(例如半导体短缺)及时调整的项目变得不可思议。这种浪费时间和精力的行为不能再这样下去了。

因此,很重要的一点是,看看这种灵活性的缺乏在嵌入式开发之外的其他领域是否也是如此。硬件经常被比作软件,在这种情况下,它提供了一个例子。

 

九年来,Docker如何使容器中的可移植软件应用程序的开发大众化?组成一个系统的小段代码?可以随意重用的独立服务?

 

微服务理念似乎显而易见

在软件开发中,部分得益于微服务的出现,许多想法可以很快推出。当你对一个应用程序、软件或web应用程序有了想法时,你甚至不考虑它背后运行的是什么硬件。它是透明的、流动的,并且随时间而变化。但是,我们在嵌入式开发中,嵌入式系统没有这种通用性,因为它们需要大量的抽象。

 

微服务是在2000年出现的。根据谷歌趋势,自2014年以来,人们一直在谈论这个话题。在先驱中,Netflix致力于普及这些架构。

这个想法是把这个大蛋糕分成几个小蛋糕,每个蛋糕都是一种服务。服务是一个独立的单元,它执行特定的任务,并与其他服务通信以完成其使命。

 

随着物联网的兴起,微服务已经出现在硬件领域。但目前,这些设备是唯一使用微服务的设备,可能是因为它们可以访问互联网。我们的设备、机器人和系统的内部网络在很大程度上仍然停留在过去。

 

嵌入式开发的挑战

嵌入式开发的主要挑战是克服软件和硬件之间的强耦合。在软件世界中,我们有API允许我们开发代码而不需要处理底层硬件。我们可以改变应用程序的数据库,而不必改变使用它的代码。在硬件领域,通常需要非常了解所用的电路板、其寄存器或协议,以便能够与固件交换信息,使我们的系统正常工作。

 

这使得很难从一个项目到另一个项目重用代码,也很难快速适应变化。通常还需要很好地了解用于开发的工具,这些工具通常专用于一个微控制器或一系列微控制器。

所有这些因素使得很难找到具有必要技能的开发人员,并使开发速度更慢、成本更高。

 

微服务在嵌入式开发中的优势

微服务的主要优势在于,它允许开发人员分离不同的软件,从而在应用程序和驱动程序之间实现清晰的分离。这使得可以为不同的硬件平台重复使用相同的应用程序代码,并且改变硬件平台而不必改变除了相关驱动程序之外的代码。

 

微服务还有一个优势,即基于一组服务修订更容易测试和部署特定的配置。

你可以使用开源微服务协调器(如Luos)轻松同步所有板上的所有服务或计算机或云上的远程进程。

 

微服务对嵌入式开发的潜在障碍

微服务依赖于服务之间的通信。一个好的微服务架构使得服务之间的通信变得容易和流畅。微服务架构将控制的主板之间的网络。

在任何情况下,都必须交换信息,以便微服务架构不会对网络延迟产生任何影响。但由于它简单透明,很容易过度使用,这意味着需要更多的网络数据带宽。

 

对于在同一个微控制器上运行的多个服务,这会增加一些可能影响代码性能的操作。敏捷是有代价的,即使是最小的RTOS也是如此。例如,如果服务需要从传感器获取数据,它必须发送请求,等待传感器响应,然后处理数据。

 

安全性可能是一个障碍,因为服务越多,潜在的攻击面就越多。此外,微服务使代码片段自然地协同工作,恶意代码也是如此。因此,仔细考虑使用微服务的安全影响非常重要。

对于某些应用程序,比如那些需要实时响应的应用程序,吞吐量和延迟比安全性更重要。对于其他应用程序来说,安全性比吞吐量和延迟更重要,例如那些处理敏感数据的应用程序。

 

选择一个组织和简化交流的协调器

在嵌入式领域,有很多现有的操作系统,如FreeRTOSNuttX或泽法,但没有太多的工具以一致的方式协调的多个电路板。微服务协调器的使用使这个实际案例更加灵活。硬件不可知的引导加载程序将允许从任何物理连接更新任何板,而无需拆卸所有部件。我们可以连接到STM32以更新STM32嵌入式开发人员需要在嵌入式和边缘项目中获得这种灵活性

免费预约试听课