物联网(2)——“物”

嵌入式设备

物联网中"物"的定义多种多样。这里我们将“物”定义为通过网络传输和接收信息的嵌入式计算设备(或嵌入式系统)。

嵌入式设备

什么是嵌入式系统?

嵌入式系统基于微控制器 (MCUs),并运行内存占用量小的软件。一些基于Linux和Android的系统也可以称为嵌入式系统。但通常,这些通用操作系统需要应用处理器,并且具有其他功能,如动态应用程序加载。这就是为什么基于MCU的嵌入式系统通常被描述为深度嵌入式系统,而不是更一般地定义嵌入式系统。于我们而言,这些深度嵌入式系统是物联网中的“物”(Thing)。

近几年, 32 位架构的 MCUs 价格有所下降,在嵌入式系统中也越来越普遍。32 位 MCU更优异的性能,为嵌入式系统开发人员提供了新的选择。

对于 8 位和 16 位 MCUs,通常使用前后台方法(例如无限循环)编写软件。但随着 32 位 MCUs 价格下降,实时操作系统(RTOS) 现在成为更好的选择,RTOS允许运行更灵活、可扩展性更强的软件。完整的 RTOS ——具有内核、GUI、文件系统、USB 堆栈、网络等功能——可适用于小于 1MB 的内存空间。使用 RTOS,嵌入式系统的软件体系结构可以更加灵活。故障排除和添加新功能将得到明显简化,固件升级也更简单。总之,将 RTOS 与 32 位处理器一起使用,意义重大。

“物”的处理器

那么,您应该选择哪种处理器架构呢?迄今为止,主要竞争者是英特尔和ARM。

英特尔将其Atom处理器定位为嵌入式 CPU,并针对工业互联网。另一方面,新的英特尔Quark处理器完全针对的是嵌入式系统市场。

ARM 的处理器系列包括一系列 32 位架构的CPU,并且这些架构已授权给大量供应商。ARM 芯片是最好的低功耗架构之一,与英特尔相比,处理器的软件启动要简单得多。

人们普遍认为,IoT 硬件应始终保持低成本,这样我们才能在全球广泛使用 IoT 设备(每个灯泡都有IP 地址)。但事实上,低成本并不是每个应用场景的解决方案,尤其是在涉及 IP 网络时。

首先,TCP/IP 堆栈不是一小段代码。当然,您可以找到适合 32 KB 代码空间的开源 TCP/IP 堆栈,但通常这是通过裁剪 TCP/IP 标准实现的。这可能会导致问题,因为您可能需要一个可在绝大多数 IP 网络上运行的设备。

其次,TCP 需要相当数量的网络缓冲区才能高效工作,这需要宝贵的 RAM。而且,如果您需要使用 Java,则 IoT 设备将需要 RTOS 作为运行 Java 虚拟机 (JVM) 的基础。所有这些因素都反对为 IoT 设备选择低成本架构。

选取 MCU

在设计 IoT 设备时,选哪个 MCU才 是一个好的开始?

  • 对于 IoT 设备中的 ARM 处理器,Cortex-M0 是完美的。对于网关,ARM Cortex-M3/M4 或 Cortex-A 是不错的选择,因为它们的处理能力更高。
  • 对于非 ARM 处理器,IoT设备可以选择瑞萨 RL78 或 RX100,网关则可以选择瑞萨 RX600 或 RZ。

无论哪种方式,拥有更大闪存和RAM的新处理器会周期性的出现在市场上,而且经常是成本更低。

节能

直到最近,在嵌入式系统中节省能量的常见策略是尽可能快地运行程序,然后立即进入睡眠模式。但是,现在有一些处理器核心架构几乎不消耗任何电源,但性能会降低。对于 WSN 边缘节点设计来说,这是一个有吸引力的选项。这种性能功率权衡意味着设计的晶体管接近(或低于)其阈值电压运行。

ARM 目前正在研究一种处理器内核,优化后能在接近 CMOS 晶体管阈值的电压下运行,且时钟频率在几十千赫兹之间。ARM 的近阈值设计与 Cortex-M0 架构兼容,这对软件界来说是个好消息。近阈值设计更易于实现,因为 ARM 可以与多个厂合作,而无需描述芯片过程。这不同于亚阈值设计。亚阈值设计需要自定义制造流程,且带来更大的风险。

编程语言

深度嵌入式系统中使用的编程语言包括 C、C++,有时也用Java。需要注意的是,Java 始终在操作系统上层运行。因此,您的选择不是在C/C++Java中二选一,而是是否会使用C/C++和Java。

Java 对 IoT 设备很有吸引力,因为全球 Java 开发人员的数量为行业带来了巨大的增长潜力。据估计,全球约有45万嵌入式软件工程师,还有约900万Java开发人员。

Java 引擎的资源需求不容忽视。Oracle 的 嵌入式Java ME专为小型设备而设计,Oracle 估计满足以下系统要求:

  • 基于 ARM 架构 SOC 的系统
  • 内存占用(近似值)
    • 从 130 KB RAM/350KB ROM(用于最小、自定义配置)
    • 到700 KB RAM/2000 KB ROM(用于完整标准配置)
  • 非常简单的嵌入式内核,或功能更强大的嵌入式操作系统/RTOS
  • 至少一种类型的网络连接(有线或无线)

这些数字不符合我们对深度嵌入式设备的定义。上述要求,加上嵌入式内核和通信堆栈,一共需要M级字节的ROM和RAM。显然,Java在物联网设备中的作用将仅限于功能更强大、成本更高的系统。

“物”设计(设备设计)

当成本不是问题时,您可以选择一个强大的处理器来运行设备所需的所有任务。但是,通常工程上用的折衷方法是在传感器/执行器设备中使用两个处理器。第一个低成本处理器(8 或 16 位)用于物理世界接口,第二个 32 位处理器运行网络接口。第二个处理器通常放置在单独的模块中,该模块已通过协议和 FCC 合规性认证。

带2个处理器的IoT设备

当使用两个处理器时,传感器/执行器处理不严格要求实时内核,但强烈建议通信模块使用实时内核。

网关设计

网关连接两个不同的网络,以便数据可以在它们之间流动。通常这用于专有网络和 Internet 之间的连接。

网关架构

例如,在家庭自动化中,不同的公用事业公司可能会在你的家里安装各种各样的 IoT 设备,每个设备都有自己的网关。这些设备可以包括电力或煤气、水、电话、互联网、电缆/卫星、报警系统、医疗设备等。其中一些网关可能需要其他功能,如本地存储或用户界面。

猜你喜欢

转载自blog.csdn.net/tuxinbang1989/article/details/109727239