24小(xiǎo)时联系電(diàn)话:18217114652、13661815404

中文(wén)

您当前的位置:
首页>
電(diàn)子资讯>
行业资讯>
寻找实时嵌入式软件开...

行业资讯

寻找实时嵌入式软件开发解决方案


寻找实时嵌入式软件开发解决方案

了解典型嵌入式实时操作系统(RTOS)应用(yòng)程序的常见问题和潜在解决方案,以及标准化和可(kě)重用(yòng)性问题以及在应用(yòng)程序中移植RTOS代码的示例。

嵌入式处理(lǐ)器已经发展成為(wèi)复杂而强大的设备,通常可(kě)以在一个小(xiǎo)的物(wù)理(lǐ)封装中满足各种要求。随着应用(yòng)程序变得越来越复杂,工程师必须跟上步伐,以应对由此导致的软件复杂性增加。在工业应用(yòng)中,该软件通常运行多(duō)年(如果不是几十年的话),并且在其整个生命周期内管理(lǐ)嵌入式应用(yòng)并非易事。

在实践中,一些重要的问题会影响所有(yǒu)重要的软件项目,无论它们是否依赖于RTOS。此类问题的示例包括在应用(yòng)程序的整个生命周期内管理(lǐ)构建系统、可(kě)移植性注意事项、日志(zhì)记录和shell机制。在下面的图1中,您可(kě)以看到一个带有(yǒu)可(kě)定制组件集的示例RTOS

1.示例RTOS中的可(kě)定制组件集。 

本文(wén)介绍了RTOS的常见问题和任務(wù)。然后,在检查Zephyr OS在示例应用(yòng)程序中的作用(yòng)之前,它分(fēn)析了嵌入式软件开发系统对标准化和可(kě)重用(yòng)性的需求。 

耗时的RTOS挑战

几乎每个重要的软件项目都需要一个可(kě)靠的构建系统,无论项目是否包含实时组件。在应用(yòng)程序的整个生命周期(可(kě)能(néng)跨越多(duō)年)中维护这样的构建系统并不是一项简单的任務(wù)。包含的组件和外部库中看似微小(xiǎo)的更新(xīn)和更改会很(hěn)快导致耗时的错误搜寻,从而占用(yòng)开发人员的时间。 

软件和模块更新(xīn)

如果没有(yǒu)存储库管理(lǐ)工具,开发人员不仅必须检查主RTOS内核的更新(xīn),而且还必须追踪项目中使用(yòng)的每个外部模块的每一个变化。但是,必须记住,某些模块依赖(或基于)外部库和模块,开发人员随后也必须对其进行跟踪。这些子模块中缺少更新(xīn)可(kě)能(néng)会破坏构建在模块之上的组件,从而导致耗时的错误搜索。管理(lǐ)这些依赖链并非易事,存储库或依赖管理(lǐ)工具為(wèi)工程师节省了大量时间,他(tā)们可(kě)以专注于实现嵌入式应用(yòng)程序。  

跨平台移植

将项目从一个设备移植到另一个设备会很(hěn)快成為(wèi)一个复杂而冗長(cháng)的过程。即使工程师决定使用(yòng)来自同一制造商(shāng)的不同设备,该过程也可(kě)能(néng)涉及许多(duō)耗时的重新(xīn)配置任務(wù)。一些修复和实现可(kě)能(néng)在一个系统上工作,而在使用(yòng)其他(tā)硬件时它们不能(néng)按预期运行。

此类问题的原因可(kě)能(néng)是:

不同的内存布局

硬件地址的变化

不同的硬件功能(néng)

不同的驱动接口

以将值写入系统中的闪存的程序為(wèi)例。在他(tā)们最初的设计中,工程师使用(yòng)了一个包含片上闪存和闪存控制器的微控制器单元(MCU)。然而,由于供应短缺,设计团队将设计切换到另一个没有(yǒu)内置闪存和外部闪存模块的MCU。由于该软件包含用(yòng)于访问片上闪存的硬件特定代码,因此团队无法在不重新(xīn)设计代码库的重要部分(fēn)的情况下轻松地将应用(yòng)程序移植到新(xīn)的 MCU平台。 

这个问题会很(hěn)快导致不同设备的多(duō)个相似代码库,从而导致更严重的问题,例如,在实施影响所有(yǒu)代码库的错误修复时。图书馆组织和配置管理(lǐ)进一步增加了这种重新(xīn)配置任務(wù)的复杂性。 

状态和错误记录

通常,更复杂的项目需要一些日志(zhì)机制来输出调试和状态消息,或者需要一个外壳来让开发人员和外部系统与实现的软件进行交互。然而,这些设施并不总是RTOS的一部分(fēn),开发人员必须实施它们或将以前实施的解决方案移植到他(tā)们当前的项目中。自定义实现还必须确保線(xiàn)程安全,因此必须在将它们包含在软件的生产版本中之前进行广泛的评估和测试。

常见的RTOS解决方案

鉴于上述问题和任務(wù),许多(duō)传统RTOS提供实时调度程序、同步支持和内存管理(lǐ)功能(néng)。下面,我们将检查几个流行的选项(FreeRTOSAzure RTOSZephyr OS)及其潜在的优缺点。

自由实时操作系统

FreeRTOS 最初是一个简单的实时内核,提供線(xiàn)程、同步和内存分(fēn)配机制。该项目的轻量级特性使其对各种嵌入式应用(yòng)程序具有(yǒu)吸引力。截至本文(wén)发表时,该项目由亚马逊维护。开发人员专注于添加额外的云服務(wù)集成,例如对 Amazon IoT 核心和其他(tā) AWS 服務(wù)的支持。MIT 许可(kě)证确保 FreeRTOS 保持免费。 

此外,轻量级核心调度程序易于集成到项目中,并且该操作系统仍然是当今最流行的 RTOS 之一。但是,与ThreadX不同,FreeRTOS 并非设计用(yòng)于安全关键系统。对于此类系统,工程师将不得不依赖使用(yòng)名為(wèi)SafeRTOS的商(shāng)业许可(kě)产品。

Azure 实时操作系统

Microsoft Azure RTOS,以前称為(wèi)ThreadX,是FreeRTOS的替代品。总體(tǐ)而言,Azure RTOS 提供了比FreeRTOS更好的硬实时功能(néng),并且还符合各种安全相关标准。但是,这些选项都无法有(yǒu)效解决一些首要问题。

一个问题是FreeRTOSAzure OS是如何被塑造未来的大公司收購(gòu)的。由于亚马逊和微软提供专有(yǒu)的云服務(wù),它们可(kě)能(néng)会让开发人员轻松连接到他(tā)们的特定云服務(wù)。但是,这些公司可(kě)以尝试让开发人员更麻烦地集成不同的云服務(wù)。  

和风操作系统

相比之下,Zephyr OS RTOS 领域中一个相对较新(xīn)的项目,旨在解决上述问题。它引入了标准化部件,开发人员可(kě)以在跨各种受支持平台的多(duō)个项目中使用(yòng)这些部件,而无需重新(xīn)配置工作。Zephyr OS 是一个社區(qū)管理(lǐ)的开源项目,提供独立于供应商(shāng)的解决方案,工程师无需支付许可(kě)费即可(kě)使用(yòng)。由于该项目的这种独立于供应商(shāng)和开源的性质,单个公司不太可(kě)能(néng)显着决定 Zephyr OS 与其他(tā)产品和服務(wù)的集成程度。图 2 显示了 Zephyr OS 的框图。

2. Zephyr OS 结构框图。 

Zephyr OS 的公开可(kě)用(yòng)源代码和广泛的在線(xiàn)文(wén)档还确保嵌入式工程师可(kě)以了解他(tā)们做出关键决策所需的所有(yǒu)有(yǒu)关 Zephyr 的详细信息,而无需对任何源文(wén)件进行逆向工程。此外,与完全闭源解决方案相比,由许多(duō)开发人员管理(lǐ)的开源项目通常具有(yǒu)更好的安全实施。此外,几乎任何开发人员和公司都可(kě)以添加对新(xīn)架构和硬件的支持。  

示例解决方案——Zephyr 项目

Zephyr项目(图 3)具有(yǒu)多(duō)个离散块,可(kě)用(yòng)于简化构建过程并通过标准化组件链接不同的库。 

3. Zephyr项目的主要功能(néng)。

一般来说,Zephyr构建系统让工程师可(kě)以自由选择他(tā)们想要如何实现特定选项以及他(tā)们想要使用(yòng)哪些内置设施。虽然SDK包含许多(duō)有(yǒu)利的功能(néng),但其中大部分(fēn)是完全可(kě)选的。工程师可(kě)以自由地在他(tā)们的项目中使用(yòng)它们,或者按照他(tā)们一贯的做法来实现功能(néng)。 

内置外设和驱动程序接口是这种方法的另一个例子。标准化的应用(yòng)程序编程接口(API) 允许工程师将大量代码重新(xīn)用(yòng)于标准通信选项,例如I2C和串行外围接口(SPI)。通用(yòng)异步收发器(UART) 驱动程序可(kě)确保内置日志(zhì)记录工具开箱即用(yòng)。  

Zephyr包管理(lǐ)器

Zephyr的内置包管理(lǐ)器(称為(wèi) West)从公共或私有(yǒu)存储库中提取外部包,并启动应用(yòng)程序的整个构建过程。它还负责刷新(xīn)MCU,并可(kě)以进一步生成物(wù)料清单(BOM)

此外,Zephyr将不属于Zephyr核心的代码保存在单独的外部存储库中。这些外部存储库包括可(kě)重用(yòng)的IoT应用(yòng)程序构建块,例如:

供应商(shāng)HAL

文(wén)件系统实现

公共库(如OpenAMPOpenThread

此外,West 还可(kě)以管理(lǐ)私有(yǒu)存储库中保存的其他(tā)外部库和代码。这些外部组件和第三方库有(yǒu)自己的发布时间表和CI/CD工具使用(yòng),完全独立于ZephyrZephyr中的这个元工具确保开发人员不必考虑如何在项目中包含外部库。此外,团队可(kě)以专注于构建他(tā)们的嵌入式应用(yòng)程序,而不是跟踪添加到Zephyr项目的所有(yǒu)外部第三方和官方软件模块的更改和依赖关系。在后台,West使用(yòng)CMake来管理(lǐ)构建过程。 

借用(yòng) Linux

Zephyr SDK借鉴了Linux的一些概念,其中两个是Kconfig和设备树。

Zephyr中,Kconfig 提供了一种将库链接到项目的简单方法,而无需确切知道要使用(yòng)哪些源文(wén)件和构建宏。Zephyr SDK 包括一个简单的Linux设备树实现,它允许开发人员记录系统中存在哪些硬件。然而,与Linux中的动态设备树(图 4)相比,Zephyr使用(yòng)它们更像是在编译时描述硬件的数据结构。

4.此图比较了本示例中使用(yòng)的两个评估板的设备树。突出显示的部分(fēn)显示了两个文(wén)件之间的差异。标记该标签是因為(wèi) littlefs(本示例中使用(yòng)的文(wén)件系统)需要它。 

此描述保持静态,在运行时不会更改。 

Zephyr的示例用(yòng)例

让我们仔细看看两个示例用(yòng)例——每个用(yòng)例都利用(yòng)MCUGPIO来控制某些引脚的状态——以说明这些功能(néng)是如何从实际在该领域工作的设计人员的角度结合在一起的。

MCU平台移植

在第一个示例中,使用(yòng)LPC55S69 MCU 的原始電(diàn)路板為(wèi)工业 I/O 面板应用(yòng)提供了足够数量的可(kě)用(yòng)GPIO引脚。然而,该设计的后续迭代采用(yòng)了S32K118 MCU(来自另一个硬件系列,具有(yǒu)相当数量的可(kě)用(yòng) I/O引脚)。

这种新(xīn)设计包含更多(duō)的外部组件,并且MCU没有(yǒu)提供足够的可(kě)访问GPIO引脚。因此,工程师添加了一个SPI-to-GPIO扩展器来弥补缺少的通道,并且他(tā)们需要在两个项目之间共享尽可(kě)能(néng)多(duō)的源代码。 

使用(yòng)Zephyr已包含的驱动程序(允许SPIGPIO转换器在系统中显示為(wèi)常规MCU GPIO引脚),开发人员无需更改源代码。相反,他(tā)们只需要為(wèi)较新(xīn)的電(diàn)路板设计更新(xīn)设备树。这让设计人员可(kě)以避免需要多(duō)个代码库、对源代码进行复杂的调整以及冗長(cháng)的回归测试和移植过程。这个例子进一步强调了工程师应该依靠久经考验的简单实现而不是快速修复和黑客来维护应用(yòng)程序的可(kě)靠性和安全性。

跨不同封装和引脚的移植

尽管Zephyr是非常特定于電(diàn)路板的,但开发人员不需要為(wèi)每个系列的自定义電(diàn)路板编写新(xīn)的设备树源文(wén)件。换句话说,开发人员可(kě)以利用(yòng)评估套件来测试他(tā)们想要在产品中使用(yòng)的 MCU,例如LPC55S69。对于原型,他(tā)们可(kě)以使用(yòng) 制造商(shāng)(在本例中為(wèi) NXP)提供的LPC55S69-EVKDST。这可(kě)以在图 5 中显示。 

5.工程师只需对Zephyr设备树结构和pinmux.c文(wén)件进行细微调整,即可(kě)将应用(yòng)程序从 EVK 移植到使用(yòng)不同封装中相同芯片的定制板上。

一旦开发人员验证代码在评估套件上工作,他(tā)们只需要為(wèi)他(tā)们的特定定制板创建一个定制设备树覆盖(DTO)。覆盖文(wén)件描述了定制板的特定硬件,以便Zephyr构建系统可(kě)以连接它。 

RTOS推向新(xīn)的高度

本文(wén)研究了使用(yòng)传统嵌入式RTOS所特有(yǒu)的几个总體(tǐ)问题。首先,在其整个生命周期内管理(lǐ)软件产品并非易事。问题始于维护和更新(xīn)第三方和官方外部库。开发人员通常必须跟踪对这些库所做的更新(xīn)。更新(xīn)那些引用(yòng)的库总是有(yǒu)风险的,因為(wèi)这样做可(kě)能(néng)会导致无效或损坏的依赖关系和版本不兼容。 

安全问题和潜在漏洞几乎困扰着所有(yǒu)大型软件系统,实时操作系统也不例外。即使是已建立的协议和产品,即使经过多(duō)年的可(kě)靠运行,也可(kě)能(néng)会受到损害。然而,闭源和专有(yǒu)软件产品面临更大的风险,因為(wèi)更少的开发人员可(kě)以检查代码并测试可(kě)能(néng)的安全缺陷。

Zephyr等开源系统為(wèi)开发人员提供了一种可(kě)访问的方式,以确保他(tā)们的设计从头开始实现标准化和可(kě)重用(yòng)性。在此处了解如何使用(yòng)恩智浦 MCU充分(fēn)利用(yòng)您的RTOS解决方案。

请输入搜索关键字

确定