从通信、采样传感器到执行机器学习 (ML) 推断,物联网 (IoT) 边缘设备开发人员需要将越来越多样化的处理密集型功能整合到设计中。同时,开发人员还需要保持或降低功耗。因而,开发人员所需要的是在设计的重心元件(即微控制器)上采用更加灵活的架构方法,以便增加功能,同时实现性能、功能和功耗之间的很佳平衡。
这种架构方法就是多核微控制器。顾名思义,这些微控制器在单个封装中集成了多个处理内核。不过,仅仅使用多个内核是解决不了问题的。开发人员需要了解对称和非对称多核处理器之间的差别、如何进行功能划分,以及如何对这些内核进行有效编程。
本文将首先介绍多核微控制器的概念,然后再讨论开发人员如何充分利用多核微控制器来平衡性能和能量限制。本文将以STMicroelectronics的STM32H7系列中的几款多核微控制器为例来进行说明。此外,本文还将探讨开发人员如何充分利用多核处理及借以分担工作负载的若干用例。
多核微控制器简介
如上所述,多核微控制器拥有多个处理内核,采用两种常用的配置:对称和非对称处理。对称内核配置包含两个或多个完全相同的处理内核。例如,这些内核可能都是Arm Cortex-M4处理器。另一方面,非对称内核可能包含Arm Cortex-M7处理器和Arm Cortex-M4处理器,也可能包含Arm Cortex-M4和Arm Cortex-M0 处理器。这类组合的示例有很多,具体取决于应用和设计要求。
物联网开发人员对多核微控制器非常感兴趣,因为此类控制器使开发人员能够将应用分成多个执行域。通过划分执行域,能够jing确控制应用的性能、功能和功率需求。例如,一个内核可用于通过高分辨率显示屏和触摸面板的用户交互,而第二个内核则用于管理系统的实时要求,例如控制电机、继电器和采样传感器。
开发人员可通过多种方式来划分应用,其中两大范式是将应用分成:
各种功能/实时处理
实时/安全
在第yi种范式(各种功能/实时处理)中,系统与上文所述完全一样。显示屏、机器学习推断、音频播放和存储器等实现各种功能的应用元器件都由一个内核进行处理。然后,第二个内核用于处理实时功能,例如电机控制、感测和通讯栈(图1)。
图1:一种使用多核微控制器进行应用设计的范式是,将实现各种功能的应用元器件置于一个内核中,并将实时处理元器件置于第二个内核中。(图片)
第二种范式是将应用分成实时和安全功能。在第yi个内核中,应用可处理显示、存储器访问和实时音频播放等功能。另一方面,第二个内核则只作为安全处理器。因此,第二个内核将处理设备和网络密钥等关键数据存储,同时还处理加密、安全引导程序以及属于安全软件类别的任何其他功能(图2)。
图2:另一种使用多核微控制器进行应用设计的范式是,将实时应用元器件置于一个内核中,并将所有安全元器件置于第二个内核中。(图片)
除此之外,还可通过一些其他方式来分解多核微控制器的应用空间,但这两种范式似乎很受物联网开发人员青睐。
选择多核微控制器开发板
虽然多核微控制器越来越受青睐,但仍算不上主流控制器,因而器件选型可能比较棘手。如果开发人员想要使用多核微控制器,那么很好选择具有下列特性的开发板:
包括用于各种功能应用探索的LCD
扩展I/O
低成本
由久经验证的生态系统提供支持,包括示例代码、社区论坛,并可接触到知识丰富的 FAE
让我们来看看 STMicroelectronics 推出的几款产品示例,首先从STM32H745I-DISCO开始(图3)。该开发板基于STM32H745ZIT6双内核微控制器,包含一个运行频率为480MHz的Arm Cortex-M7内核和第二个运行频率为240MHz的Arm Cortex-M4处理器。该器件具有双jing度浮点单元和L1缓存——16KB数据缓存和16KB指令缓存。这款Discovery板相当值得关注,因为它有许多附加功能,例如:
SAI音频编解码器
微机电系统 (MEMS) 麦克风
板载四通道SPI闪存
4GB eMMC
子板扩展
以太网
用于音频和耳机的针座
该开发板具有许多内置功能,因而非常容易着手尝试使用多核微控制器,并切实提高应用性能。
STM32H745I-DISCO板集成了各种板载传感器和存储器功能,使开发人员能够测试运行频率分别为480MHz和240MHz的双核微控制器。
如果开发人员希望开发板具有附加功能和更多扩展I/O,STM32H757I-EVAL可能正是理想之选。STM32H757I-EVAL包括许多评估板所不具备的功能,例如:
8M x 32位SRAM
1Gb四通道SPI NOR双闪存
用于指令跟踪的嵌入式跟踪宏单元 (ETM)
电位计
LED
按钮(拨动、操纵杆、唤醒)
这些附加功能,尤其是I/O扩展,对刚刚入门的开发人员非常有用。
STM32H757I-EVAL板为开发人员提供了许多扩展空间,便于访问外设,并带有LCD屏幕,以便开始着手多核应用。(图片)
介绍了几款开发板后,接下来将简单提出一些建议,帮助大家开始着手多核微控制器应用。
初次多核应用如何着手
无论选择两款STM32H7开发板中的哪一款,开始着手时都需要两个主要工具。第yi个工具是STMicroelectronics的STM32CubeIDE,这款无偿集成开发环境 (IDE) 使开发人员可以编译自己的应用代码,并将其部署到开发板。此外,STM32CubeIDE还提供对应用进行单步调试所需的资源,适用于Windows、Linux和MacOS等主要操作系统。
第二个工具是STMicroelectronics的STM32H7固件包。其中包括适用于STM32H7开发板的下列示例:
多核处理
使用FreeRTOS
外设驱动程序
FatFS(文件系统)
开发人员会想要加载固件应用包,并熟悉所选开发板支持的示例。不过,开发人员需要特别注意两个文件夹。第yi个是包含两个示例以显示如何使用OpenAMP的应用文件夹(图5)。这些示例显示如何在微控制器内核之间来回传输数据,即一个内核向另一个内核发送数据,后者再将数据回传。两个示例以不同的方式执行此操作。一个是不带操作系统的Bare Metal,而另一个使用FreeRTOS。
图5:STM32Cube_FW_H7提供多个示例,演示了如何开始着手使用OpenAMP的多核处理。(图片 Embedded Group)
第二组示例分别演示了如何配置带和不带RTOS的内核(图6)。一个示例显示如何在各内核上运行FreeRTOS;而另一个示例显示如何在一个内核上使用RTOS,并在第二个内核上运行Bare Metal。固件包中还有几个其他示例可用于演示其他功能。不过,上述示例是入门学习的不错选择。
图6:STM32Cube_FW_H7提供多个示例,演示了如何配置使用多核处理器的操作系统。(图片 Embedded Group)
加载示例项目后,开发人员会看到类似于图7所示的项目布局。如图所示,项目按内核划分了应用代码。另外,还可以设置构件配置,使开发人员一个只能使用一个内核,请参见图7中的灰显文件。
图7:OpenAMP Ping-Pong项目示例向开发人员演示了如何在两个CPU内核之间创建通信通道。(图片 Embedded Group)
本文中不包含示例代码的完整描述,但读者可以查阅所有示例项目的相关readme.txt文件,以获得示例代码如何工作的详细描述,然后查看源代码以了解如何实际执行处理器间通信(IPC)。
使用多核微控制器的技巧与诀窍
着手使用多核微控制器并不难,但要求开发人员开始以略微不同的方式考虑自己的应用设计。以下是着手使用多核微控制器的一些“技巧与诀窍”:
仔细评估应用,确定哪种应用域划分很合理。虽然可以在单个处理器上混用多个域,但不小心就可能会影响性能。
花些时间探索OpenAMP框架的内置功能以及您的应用如何充分利用这些功能。
加载STM32H7处理器的应用示例,并运行适用于所选开发板的多核应用示例。H747包括两个示例:一个用于FreeRTOS,另一个用于OpenAMP。
进行应用调试时,切勿忘记有两个内核正在运行!确保在调试环境中选择正确的线程,以检查调用历史。
充分利用硬件信号量等内部硬件资源来同步各内核的应用执行。
首次使用多核微控制器时,只需从受到有力支持的开发板开始着手,然后遵循这些“技巧与诀窍”,开发人员即可节省不少时间,省去很多麻烦。
总结
对于物联网边缘系统的开发人员而言,多核微控制器能够更好地满足应用要求,实现功能、性能和功耗之间的平衡。此类微控制器允许开发人员将应用按域划分,例如各种功能/实时处理或实时/安全处理。将应用分成不同的域后,开发人员即可在不需要时禁用某个内核以节能,或适时启用以提高应用性能。
如上所述,市面上有许多不同的开发板可用于开始探索多核微控制器应用设计,并能完全控制性能和能耗。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。