紧凑、强大、高效且具有成本效益的基于 ARM 的开发板提供多种诱人的硬件选择

投稿人:DigiKey 北美编辑

{ph0}你的核心竞争力是什么?{/ph0} 这个问题极少被问及,乍看之下是个基本的问题,但你的答案可能决定了设计的市场成败。 随着芯片集成度越来越高并变得愈加商品化,而且芯片的构建架构也越来越标准化,相比将资源集中到在该硬件上运行的、更容易实现差异化的软件而言,投入宝贵的开发资金、时间和人力来设计自己的开发板及其它相关硬件已可能不再具有任何意义(即使它{ph0}曾经{/ph0}有意义)。

若决定对基于 ARM{ph0}®{/ph0} 的系统实施过程进行标准化,相对于自己开发硬件且尤其在产量不大的情况下,各种不同的 Raspberry PI 基金会开发板是非常不错的选择。 这些开发板在全球范围内已被踊跃采用,且购买途径多,因此供应充足、价格实惠。 这些开发板基于多代 CPU 内核,型号众多,其尺寸和重量、功耗规格、时钟速度和连接性、内存以及其它外设分配各不相同。 这些开发板的标准化 HAT(顶部安装硬件)接头和软件协议可提供更进一步的外设扩展支持,以及调试和其它开发支持。 并且,当系统出货量达到一定水平,对你而言自己生产硬件能获得收益时,这些开发板的开源规范可让你轻松实现这种转变。

该表简要列出了将在本文其余部分详细讨论的四种 Raspberry Pi 开发板。 由于处理器性能和其他功能将成为选择开发板的主要(但并非唯一)标准,本文结尾将介绍基准测试代码样本和其它评估指导。

Raspberry Pi A+ 型 Raspberry Pi B+ 型* Raspberry Pi 2 B 型 Raspberry Pi 3 B 型
{ph0}SoC{/ph0} Broadcom BCM2835 Broadcom BCM2836 Broadcom BCM2837
{ph0}CPU{/ph0} 700 MHz(32 位)单核 ARM1176JZF-S 900 MHz(32 位)四核 ARM Coretex-A7 1.2 GHz 64 位四核 ARM Cortex-A53
{ph0}系统内存(与 GPU 帧缓冲区共享){/ph0}
256 MB 512 MB 1 GB
{ph0}USB 2 端口{/ph0} 1 (来自 BMC2835) 4(来自单独的多端口集线器 IC)
{ph0}集成式网络{/ph0} 通过集成 USB 适配器实现 10/100Mbps 有线以太网 10/100 Mbps 以太网、802.11n Wi-Fi、蓝牙 4.1
{ph0}额定功率{/ph0} 200 mA (1 W) 600 mA (3 W) 800 mA (4 W)
{ph0}尺寸{/ph0} 2.56 in x 2.22 in 3.37 in x 2.224 in
{ph0}重量{/ph0} 0.8 oz 1.6 oz

* 停产

{ph0}表 1:四种 Raspberry Pi 的对比说明了一些选择范围{/ph0}

上述所有四种开发板都有以下共同特性:

  • 通过 15 针 MIPI CSI 摄像头接口连接器接入视频输入
  • 两个视频输出选择:数字 HDMI(1.3 和 1.4)和模拟复合视频(3.5 mm TRRS 插孔)
  • I{ph0}2{/ph0}S 数字音频输入
  • 三个音频输出选择:数字式 HDMI、I{ph0}2{/ph0}S、模拟式(3.5 mm 插孔)
  • 通过 MicroSDHC 插槽连接的非易失性存储器件
  • 17 个 GPIO 针脚,以及 HAT ID 总线
  • 通过微型 USB 电缆或者带有可选 GPIO 电源连接器的串行电缆与控制台连接

{ph0}Raspberry Pi ("1"){/ph0}

本文讨论的 {ph0}A+ 型{/ph0}(图 1)是 A 型板的后续版本,尺寸更小、成本更低的。A 型板本身已经是原始 Model B 的成本削减版本。A+ 型尺寸 2.56 in x 2.22 in (65 mm x 56.5 mm) 匹配 HAT(顶部安装硬件)附加扩展卡的尺寸。本文所述四种开发板都支持这种扩展卡。 这个型号开发板的 SDRAM (256 MB) 是这四种开发板中最小的,仅提供一个 USB 接口,且没有集成网络支持(尽管都可通过基于 USB 和 HAT 的外设进行扩展)。

本文所述的另一个第“1”代 Raspberry Pi 开发板是 B+ 型板(这种型号现已停产,但为了便于与其它型号比较,故在此加以讨论)。 其系统板的基底面为 3.37 in x 2.224 in (85.6 mm x 56.5 mm),大于 Model A+(等于随后将介绍的 Raspberry Pi 2 和 Raspberry Pi 3 的面积之和)。 多出的面积得到了很好的利用,系统内存实现了 512 Mb,USB 端口翻了四倍,并加入了嵌入式 10/100 Mb 有线以太网支持功能。

另外,在如今智能手机采用十核心 CPU 的时代,700 MHz 单核 ARM11 CPU 可能略显过时,但要记住正是这款 CPU 为最初的 Apple iPhone{ph0}®{/ph0} 和后续的 iPhone 3G 提供了“动力”。 若你的性能需求不高,Broadcom BCM2835 则已足够,能使 Model A+ 开发板实现低功耗而极具吸引力。

最初的 Raspberry Pi 设计基于 Broadcom 的 BCM2835 SoC,该 SoC 集成了 700 MHz 单核 ARM11 CPU。{ph0/}

最初的 Raspberry Pi 设计基于 Broadcom 的 BCM2835 SoC,该 SoC 集成了 700 MHz 单核 ARM11 CPU。{ph0/}

{ph0-start/}图 1:最初的 Raspberry Pi 设计基于 Broadcom 的 BCM2835 SoC,该 SOC 集成了 700 MHz 单核 ARM11 CPU。 该板提供两种开发板外形尺寸(和特性集):体积较小的 Model A+(顶部)和体积较大的 Model B+(底部)。 (感谢 Seeed Technology 提供图片){ph0-end/}

{ph0}Raspberry Pi 2{/ph0}

{ph0}Raspberry Pi 2 B 型{/ph0} 在 Raspberry Pi A+ 型和 B+ 型推出的次年上市,尺寸与上一代较大的型号一致,但从特性集升级的角度来看,有两个关键方面值得注意。 首先,相比 B+ 型系统其内存实现了翻倍(四倍于 A+ 型的 SDRAM),达到 1 GB。 其次,更重要的是,该板从 Broadcom 的 BCM2835 迁移到 BCM2836,CPU 时钟速度提升 200-MHz,并从单核 ARM11 升级为四核 ARM Cortex{ph0}®{/ph0}-A7。

GPU 保持不变意味着 Raspberry Pi 2 没有必要用于驱动更高的图形和视频帧率,因为现在的 CPU 处理能力足够强劲,已不再是瓶颈)。 但是,说到处理能力,这次 CPU 升级在通常情况下能显著提升应用程序运行时的速度,其原因我将在下文详细讨论。 同样,如之前所说,即使 64 位 CPU 越来越多地应用到哪怕是入门级的智能手机中,也不能小觑四核 32 位 CPU。 毕竟 ARM Cortex-A7 的 800 MHz 双核曾用于 iPhone 4S。

Raspberry Pi 2 B 型采用含 900 MHz 四核 ARM Cortex-A7 CPU 的 Broadcom BCM2836 处理器。{ph0/}

{ph0-start/}图 2:Raspberry Pi 2 B 型保留了前代 Raspberry Pi B+ 型的尺寸,但将应用处理器升级为含 900 MHz 四核 ARM Cortex-A7 CPU 的 Broadcom BCM2836。 (感谢 Seeed Technology 提供图片){ph0-end/}

{ph0}Raspberry Pi3{/ph0}

{ph0}Raspberry Pi 3 B 型{/ph0}一年后推出,与其前代 Raspberry Pi 2 一样有所升级,进一步将 Broadcom 的应用处理器从 BCM2836 升级为 BCM2837,即从 900 MHz 四核 ARM Cortex-A7、32 位 CPU 升级为 64 位 1.2 GHz 四核 ARM Cortex-A53 处理器。 BCM2837 的 GPU 内核为 Broadcom VideoCore IV,其功能保持不变,但时钟速度已针对三维图形处理提高到 300 MHz,针对视频处理提高到 400 MHz。 后者性能提升可实现 H.264 (MPEG-4 AVC) 高配置文件内容的全 1080p 60 Hz 编码和解码。 GPU 更广泛的重要性及其在该 SoC 和开发板中的时钟速度提升将在稍后继续讨论。

Raspberry Pi 3 的外形尺寸沿袭了前几代产品,但进一步升级了 SoC。{ph0/}

{ph0-start/}图 3: Raspberry Pi 3 的外形尺寸沿袭了前几代产品,但进一步将 SoC 升级为 Broadcom 的 1.2 GHz(64 位)四核基于 ARM Cortex-A53 的处理器 BCM2837。 (感谢 Seeed Technology 提供图片){ph0-end/}

Raspberry Pi 3 B 型还显著增强了所含的连接技术选项。 同样提供了 10/100 Mbps 有线以太网,但这个版本增加了仅 2.4 GHz 的 802.11n Wi-Fi 和蓝牙 4.x 功能(在之前几代的开发板要实现这两项功能时需要安装其它外设)。

{ph0}那么,哪个处理器更好?{/ph0}

正如前文所述,CPU 时钟速度、内核数量和特性集功能是最初的 Raspberry Pi、2、3 代之间的关键区别。 Raspberry Pi A+ 型和 B+ 型的 ARM11 是相对比较简单的按顺序 8 级流水线设计,具有有限的乱序指令完成支持,并运行 ARMv6 指令集。 尽管额定最高运行频率为 700 MHz,但据用户报告,超频至 800 MHz 时仍稳定运行。实现这种特殊内核还包括该架构的可选浮点单元 (FPU)。

Raspberry Pi 2 B 型中的 ARM Cortex-A9 是 ARM11 的后续版本,也基本上是 32 位架构。 和 BMC8285 一样,BMC3286 在超频时也常常保持稳定,这次是从 900 MHz 超频至 1.1 GHz。 相比 ARM11,ARM Cortex-A9 架构有显著改进,提供乱序、推测问题以及超标量 8 级流水线。 ARM Cortex-A9 可运行后续版本 ARMv7-A 的指令集;BMC3286 中的内核也包括可选浮点(相比 ARM11 中所用版本已经过改进)和 "NEON" SIMD 协处理器。 当然,BMC3286 嵌入了{ph0}四{/ph0}个处理器内核,而其前身 BMC3285 仅有一个。

最终,Raspberry Pi 3 B 型也采用了四核 ARM Cortex-A53。该处理器也是带双向超标量执行流水线的 8 级流水线处理器,但这次是支持最新一代 ARMv8-A 指令集的全 64 位实施方案。 NEON SIMD 和浮点协处理器又再次可供你选择,而且相比 ARM Cortex-A9 中的实施方案,都再一次得到增强。 此外,BMC3286 仅可最高以 1.1 GHz 运行,并且仅可采用超规格的超频配置获得更高频率,BMC3287 却能确保在 1.2 GHz 下运行,并且根据一些用户的报告,可稳定超频至 1.4 GHz。

你应当选择哪个处理器? 答案是取决于应用,因此读者需要根据自己的需要进行选择。 一方面,不要选择对于你的需求而言过慢的 CPU,尤其是当你希望为今后不可避免的软件升级保留一些性能“空间”时。 另一方面,没有必要为超出你需求的处理器买单;记住你的选择不仅是性能,还有价格和功耗。 CPU 并非你选择 Raspberry Pi 开发板的唯一标准,你还需要考虑内存需求、网络连接选择和其它属性。

另外,若你的软件大部分时间都处于等待输入的空闲循环中,更高的时钟速度可能意义不大。 还应注意,仅当你的软件具有较低的指令间依赖性时,超标量和乱序支持等架构特性才能达到明显更高的、可实现的 IPC(指令/时钟)。 类似地,相比更简单的单核 CPU,缺乏线程独立性将导致多核 CPU 的吞吐量优势只能部分发挥,而 64 位指令集理论优势在特定应用程序中可能无法发挥作用(更何况其需求更大的内存)。 反过来,要记住,即使 ARM Cortex-A53 只运行 32 位代码,{ph0} ARMv8 指令集中 AArch32 的改进{/ph0}也有可能提升性能。

{ph0}图形增强{/ph0}

另一项片载处理能力将让 SoC 选择过程变得更加复杂(或者你也可以认为,这让选择变得自由)。 概念上,你可以将图形处理器(这种情况下为图形内核)视作大规模并行处理“引擎”,非常适合于像素处理任务,以及各种更广泛的数字信号处理和其它运算。 这种技术称之为 GPGPU(通用图形处理器),正变得越来越流行,但需要软件支持才能发挥硬件潜力。

遗憾的是,本文讨论的所有这三代 Broadcom SoC 中的 VideoCore{ph0}®{/ph0} IV GPU 并不支持(至少现在并不支持)OpenCL(一种开放的标准编程语言集合)以及 Khronos Group 所维护的异构并行编程 API(Raspberry Pi 2 和 3 中的现有 OpenCL 支持目前仅限于利用 CPU 的各种资源)。 但是,{ph0}Broadcom 在 2014 年 10 月以开源形式发布{/ph0}{ph1}全套 VideoCore IV 规范{/ph1} (PDF) 时,针对通用目的的{ph2}提供了一种访问和控制 GPU 的替代性方案{/ph2}。

例如,Raspberry Pi 发烧友 Pete Warden(他也是 Google 研究工程师、后被 Google 收购的 Jetpac 的前创始人和首席技术官)已说明如何通过他以前公司的 {ph0}Deep Belief 深入学习 SDK{/ph0} 和 VideoCore IV 使用的 QPU(SIMD 四核处理器) 汇编程序/反汇编程序,利用 GPU 显著加快对象识别运算(此处可查看该解决方案: https://petewarden.com/2014/08/07/how-to-optimize-raspberry-pi-code-using-its-gpu/)。 该开源社区还指出了如何{ph0}使用相同的 QPU{/ph0} 提升 FFT 处理速度。 还有许多其他项目示例,通常包括 Github 托管的开源代码;我建议使用如下关键字搜索:

  • "Raspberry Pi GPGPU"
  • "Broadcom VideoCore IV GPGPU"
  • "Raspberry Pi OpenCL"
  • "Broadcom VideoCore IV OpenCL"

{ph0}摄像头和结论{/ph0}

{ph0}正如我在最近的一篇文章中提到的{/ph0}(并且 Pete Warden 的项目也给出了例证),深入学习的模式认知能力尤其适用于各种图像分析应用。 但是,如何将这些图像传输到开发板中? 通常的选择是基于 MIPI CSI 的 {ph0}Raspberry Pi 摄像头模块{/ph0}(图 4),该模块采用 OmniVision Technologies 的 OV05647 5 Mpixel CMOS 图像传感器构建。 请记住,即使深入学习并非你的强项,Raspberry Pi 开发板也将是计算机视觉应用的出色选择,尤其应考虑到该板在 {ph0}OpenCV 开源计算机视觉库社区受到追捧{/ph0}。

Raspberry Pi 摄像头模块集成了 MIPI SPI 接口。{ph0/}

{ph0}图 4: Raspberry Pi 摄像头模块集成了 MIPI SPI 接口,而本文所讨论的各个 Raspberry Pi 系统开发板都配备该接口;其 5 百万像素分辨率足以应付许多计算机视觉任务。{/ph0}

更广泛地讲,有许多软件选项可供你用于利用和整合开源;{ph0}Wikipedia 提供的长长的条目列表{/ph0}是个不错的着手点。 类似地,尽管软件模拟可以就选择哪一代的 Broadcom SoC(进而选择 Raspberry Pi 开发板)提供参考,但这些开发板价格便宜,你大可以考虑各卖一个,然后做实际评估或在软件模拟评估之外做进一步的评估;外形尺寸相似的 Raspberry Pi Model B+、Raspberry Pi 2 Model B 和 Raspberry Pi 3 Model B 尤其适合硬件替换和软件测试。

最后,希望你别忘了享受其中的乐趣! Raspberry Pi 社区的规模、多样性和能量可能有时会带来大量的内容输出,让人应接不暇,但哪怕一点点研究也能快速发掘出有价值的“金块”,能让你的下一次设计更快上市、更加稳定、并且更具成本效益。

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

关于此出版商

DigiKey 北美编辑