剖析物联网的需求:增长最快的引擎

 

  图6:多核嵌入式 MCU 示例(PSoC 6 BLE)

  处理器间通讯(实现外设共享和信息交换):

  多核 MCU 通过需要处理器间通讯(IPC)来协调内核之间的运行。IPC 充当分配处理器间消息的通信管理器。现代 CPU 架构(如 ARM Cortex)支持硬件和固件中的多核通信,比如 SEV(发送事件)指令在执行时会提示设备中的所有核心。MCU 供应商采用多种方法来实现 IPC:

  中断法:这种方法让一个内核向另一个内核发送一个中断来指示一个应用程序事件。通常中断程序非常紧凑,不会占用太多的代码存储空间。与任何中断机制一样,每个中断都有自己的 ISR(中断服务程序),通过它可以让相应的内核执行特定的任务。在实际的数据传递中,有一个可以被多个内核访问的共享内存。除了共享数据之外,它还提供了请求和确认消息的机制。

  邮箱:邮箱是 RAM 中的专用存储空间,用于让每个 CPU 相互发送和接收消息。每个内核都要维护自己的 RAM 内存(邮箱)并将消息发送到其他内核的邮箱。

  消息队列:消息队列使用共享内存的两个区域来存储每个核心发送给另一个核心的消息。第一个区域是被称为命令缓冲器的专用存储器,用于存储从主机发送到从机的命令。另一个专用存储器被称为消息缓冲器,它使从机能够响应主机。

 

  图7:处理器间通讯(IPC)的各种模式

  信号量:信号量是一种防止多个源同时访问共享资源的机制。在多核处理器中,共享硬件位置作为信号量指示特定内核是否正在使用特定的共享外设等。在访问外设之前,系统中的其他内核会读取信号量状态以查看是否可用。

  串行存储器接口(IoT 内存的选择):

  内存是任何物联网系统不可缺少的组成部分。其功能主要是代码和数据存储。现代物联网设备不断增长的智能化需求带动了对更大代码和数据存储器的需求。但是将所有这些内存作为内部存储器集成到设备中会增加 MCU 的芯片尺寸和成本。另一种方法是根据需要提供外部扩展内存。这样开发人员就能够根据最终应用程序的需要添加内存。另外,如果在开发过程中内部存储空间预算不足,则可以增加外部存储器而不必重新设计整个系统。

  了解外部存储器接口的速度和安全性以及使用方法也很重要。通常情况下,在节省 MCU上有限的 IO 引脚方面,串行存储器比并行存储器更好。基于 SPI 的串行存储器为数据记录提供了理想的接口速度,而直接执行外部代码则需要更高的速度。这些要求使 MCU 制造商必须提供 SPI 的替代品。以下是不同方案的数据吞吐量速度比较。

  SPI:支持1位/循环的吞吐量

  双路SPI:支持2位/循环的吞吐量

  四路SPI:支持4位/循环的吞吐量

  双四路SPI:支持1字节/循环的吞吐量

  通常情况下,MCU 同时支持多种类型的存储器,为开发人员提供了最大的灵活性。

  由于许多物联网系统会处理用户的个人数据,因此确保数据的安全尤为重要。代码存储器也同样需要保护,以防止设备被非法入侵。外部存储器在安全性方面更加脆弱,因此需要特殊的机制来保护外部存储的数据。为此,MCU 使用各种加密技术(例如 AES、DES、RSA)来保护数据和代码免受非法访问。例如,赛普拉斯半导体的 PSoC 6 BLE MCU 提供了一个特殊的串行存储器接口(SMIF)外设,该外设支持直接执行外部代码的 XIP(现场执行)模式和记录数据的 MMIO(内存映射 IO)模式。它使用特殊命令进行控制,比如闪存的编程/擦除、存储器设备的睡眠模式输入等。

 

  图8:串行存储接口(SMIF)示例