着手将多核微控制器用于物联网边缘设备的原因和方法

作者:Jacob Beningo

投稿人:DigiKey 北美编辑

从通信、采样传感器到执行机器学习 (ML) 推断,物联网 (IoT) 边缘设备开发人员需要将越来越多样化的处理密集型功能整合到设计中。同时,开发人员还需要保持或降低功耗。因而,开发人员所需要的是在设计的核心元件(即微控制器)上采用更加灵活的架构方法,以便增加功能,同时实现性能、功能和功耗之间的最佳平衡。

这种架构方法就是多核微控制器。顾名思义,这些微控制器在单个封装中集成了多个处理内核。不过,仅仅使用多个内核是解决不了问题的。开发人员需要了解对称和非对称多核处理器之间的差别、如何进行功能划分,以及如何对这些内核进行有效编程。

本文将先介绍多核微控制器的概念,然后再讨论开发人员如何充分利用多核微控制器来平衡性能和能量限制。本文将以 STMicroelectronics 的 STM32H7 系列中的几款多核微控制器为例来进行说明。此外,本文还将探讨开发人员如何充分利用多核处理及借以分担工作负载的若干用例。

多核微控制器简介

如上所述,多核微控制器拥有多个处理内核,采用两种常用的配置:对称和非对称处理。对称内核配置包含两个或多个完全相同的处理内核。例如,这些内核可能都是 Arm® Cortex®-M4 处理器。另一方面,非对称内核可能包含 Arm Cortex-M7 处理器和 Arm Cortex-M4 处理器,也可能包含 Arm Cortex-M4 和 Arm Cortex-M0+ 处理器。这类组合的示例有很多,具体取决于应用和设计要求。

物联网开发人员对多核微控制器非常感兴趣,因为此类控制器使开发人员能够将应用分成多个执行域。通过划分执行域,能够精确控制应用的性能、功能和功率需求。例如,一个内核可用于通过高分辨率显示屏和触摸面板的用户交互,而第二个内核则用于管理系统的实时要求,例如控制电机、继电器和采样传感器。

开发人员可通过多种方式来划分应用,其中两大范式是将应用分成:

  • 各种功能/实时处理
  • 实时/安全

在第一种范式(各种功能/实时处理)中,系统与上文所述完全一样。显示屏、机器学习推断、音频播放和存储器等实现各种功能的应用元器件都由一个内核进行处理。然后,第二个内核用于处理实时功能,例如电机控制、感测和通讯栈(图 1)。

各种功能/实时处理范式的示意图图 1:一种使用多核微控制器进行应用设计的范式是,将实现各种功能的应用元器件置于一个内核中,并将实时处理元器件置于第二个内核中。(图片来源:STMicroelectronics)

第二种范式是将应用分成实时和安全功能。在第一个内核中,应用可处理显示、存储器访问和实时音频播放等功能。另一方面,第二个内核则只作为安全处理器。因此,第二个内核将处理设备和网络密钥等关键数据存储,同时还处理加密、安全引导程序以及属于安全软件类别的任何其他功能(图 2)。

实时应用元器件置于一个内核中的示意图图 2:另一种使用多核微控制器进行应用设计的范式是,将实时应用元器件置于一个内核中,并将所有安全元器件置于第二个内核中。(图片来源:STMicroelectronics)

除此之外,还可通过一些其他方式来分解多核微控制器的应用空间,但这两种范式似乎最受物联网开发人员青睐。

选择多核微控制器开发板

虽然多核微控制器越来越受青睐,但仍算不上主流控制器,因而器件选型可能比较棘手。如果开发人员想要使用多核微控制器,那么最好选择具有下列特性的开发板:

  • 包括用于各种功能应用探索的 LCD
  • 扩展 I/O
  • 低成本
  • 由久经验证的生态系统提供支持,包括示例代码、社区论坛,并可接触到知识丰富的 FAE

让我们来看看 STMicroelectronics 推出的几款产品示例,首先从 STM32H745I-DISCO 开始(图 3)。该开发板基于 STM32H745ZIT6 双内核微控制器,包含一个运行频率为 480 MHz 的 Arm Cortex-M7 内核和第二个运行频率为 240 MHz 的 Arm Cortex-M4 处理器。该器件具有双精度浮点单元和 L1 缓存——16 KB 数据缓存和 16 KB 指令缓存。这款 Discovery 板相当值得关注,因为它有许多附加功能,例如:

  • SAI 音频编解码器
  • 微机电系统 (MEMS) 麦克风
  • 板载四通道 SPI 闪存
  • 4 GB eMMC
  • 子板扩展
  • 以太网
  • 用于音频和耳机的针座

该开发板具有许多内置功能,因而非常容易着手尝试使用多核微控制器,并切实提高应用性能。

STMicroelectronics 的 STM32H745I-DISCO 板图片图 3:STM32H745I-DISCO 板集成了各种板载传感器和存储器功能,使开发人员能够测试运行频率分别为 480 MHz 和 240 MHz 的双核微控制器。(图片来源:STMicroelectronics)

如果开发人员希望开发板具有附加功能和更多扩展 I/O,STM32H757I-EVAL 可能正是理想之选(图 4)。STM32H757I-EVAL 包括许多评估板所不具备的功能,例如:

  • 8 M x 32 位 SRAM
  • 1 Gb 四通道 SPI NOR 双闪存
  • 用于指令跟踪的嵌入式跟踪宏单元 (ETM)
  • 电位计
  • LED
  • 按钮(拨动、操纵杆、唤醒)

这些附加功能,尤其是 I/O 扩展,对刚刚入门的开发人员非常有用。

STMicroelectronics 的 STM32H757I-EVAL 板图片图 4:STM32H757I-EVAL 板为开发人员提供了许多扩展空间,便于访问外设,并带有 LCD 屏幕,以便开始着手多核应用。(图片来源:STMicroelectronics)

介绍了几款开发板后,接下来将简单提出一些建议,帮助大家开始着手多核微控制器应用。

首个多核应用如何着手

无论选择两款 STM32H7 开发板中的哪一款,开始着手时都需要两个主要工具。第一个工具是 STMicroelectronics 的 STM32CubeIDE,这款免费集成开发环境 (IDE) 使开发人员可以编译自己的应用代码,并将其部署到开发板。此外,STM32CubeIDE 还提供对应用进行单步调试所需的资源,适用于 Windows、Linux 和 MacOS 等主要操作系统。

第二个工具是 STMicroelectronics 的 STM32H7 固件包。其中包括适用于 STM32H7 开发板的下列示例:

  • 多核处理
  • 使用 FreeRTOS
  • 外设驱动程序
  • FatFS(文件系统)

开发人员会想要下载固件应用包,并熟悉所选开发板支持的示例。不过,开发人员需要特别注意两个文件夹。第一个是包含两个示例以显示如何使用 OpenAMP 的应用文件夹(图 5)。这些示例显示如何在微控制器内核之间来回传输数据,即一个内核向另一个内核发送数据,后者再将数据回传。两个示例以不同的方式执行此操作。一个是不带操作系统的 Bare Metal,而另一个使用 FreeRTOS。

OpenAMP STM32Cube_FW_H7 图片图 5:STM32Cube_FW_H7 提供多个示例,演示了如何开始着手使用 OpenAMP 的多核处理。(图片来源:Beningo Embedded Group)

第二组示例分别演示了如何配置带和不带 RTOS 的内核(图 6)。一个示例显示如何在各内核上运行 FreeRTOS;而另一个示例显示如何在一个内核上使用 RTOS,并在第二个内核上运行 Bare Metal。固件包中还有几个其他示例可用于演示其他功能。不过,上述示例是入门学习的不错选择。

STM32Cube_FW_H7 提供多个示例的图片图 6:STM32Cube_FW_H7 提供多个示例,演示了如何配置使用多核处理器的操作系统。(图片来源:Beningo Embedded Group)

加载示例项目后,开发人员会看到类似于图 7 所示的项目布局。如图所示,项目按内核划分了应用代码。另外,还可以设置构件配置,使开发人员一次只能使用一个内核,请参见图 7 中的灰显文件。

OpenAMP Ping-Pong 项目示例的图片图 7:OpenAMP Ping-Pong 项目示例向开发人员演示了如何在两个 CPU 内核之间创建通信通道。(图片来源:Beningo Embedded Group)

本文中不包含示例代码的完整描述,但读者可以查阅所有示例项目的相关 readme.txt 文件,以获得示例代码如何工作的详细描述,然后查看源代码以了解如何实际执行处理器间通信 (IPC)。

使用多核微控制器的技巧与诀窍

着手使用多核微控制器并不难,但要求开发人员开始以略微不同的方式考虑自己的应用设计。以下是着手使用多核微控制器的一些“技巧与诀窍”:

  • 仔细评估应用,确定哪种应用域划分最合理。虽然可以在单个处理器上混用多个域,但不小心就可能会影响性能。
  • 花些时间探索 OpenAMP 框架的内置功能以及您的应用如何充分利用这些功能。
  • 下载 STM32H7 处理器的应用示例,并运行适用于所选开发板的多核应用示例。H747 包括两个示例:一个用于 FreeRTOS,另一个用于 OpenAMP。
  • 进行应用调试时,切勿忘记有两个内核正在运行!确保在调试环境中选择正确的线程,以检查调用历史。
  • 充分利用硬件信号量等内部硬件资源来同步各内核的应用执行。

首次使用多核微控制器时,只需从受到有力支持的开发板开始着手,然后遵循这些“技巧与诀窍”,开发人员即可节省不少时间,省去很多麻烦。

总结

对于物联网边缘系统的开发人员而言,多核微控制器能够更好地满足应用要求,实现功能、性能和功耗之间的平衡。此类微控制器允许开发人员将应用按域划分,例如各种功能/实时处理或实时/安全处理。将应用分成不同的域后,开发人员即可在不需要时禁用某个内核以节能,或适时启用以提高应用性能。

如上所述,市面上有许多不同的开发板可用于开始探索多核微控制器应用设计,并能完全控制性能和能耗。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

Jacob Beningo

Jacob Beningo 是一位嵌入式软件顾问,目前与十几个国家的客户保持合作,通过帮助客户改善产品质量、降低成本和加快上市时间来大幅改变他们的业务。Jacob 先后发表了 200 多篇关于嵌入式软件开发技术的文章,是一位广受欢迎的演讲者和技术培训师。他拥有三个学位,其中包括密歇根大学的工程硕士学位。如有需要,欢迎随时通过 jacob@beningo.com 与其联系,也可访问其网站 www.beningo.com,并订阅其月度 Embedded Bytes Newsletter

关于此出版商

DigiKey 北美编辑