现有硬件和软件的许多来源都可以整合到开源社区提供的新设计中。商业上可行的开源产品范围从 Linux 等操作系统软件到 BeagleBoard 等物理硬件设备。虽然此类基本构建块通常可以免费使用,但它们仍然受原始创建者发布设计时所依据的条款的约束,无论是 GNU 公共许可证、Apache 还是类似的。
可扩展性的主要缺点是传统范例是为底层硬件平台构建一个板级支持包(BSP),然后在已从应用程序开发人员那里抽象出硬件的测试软件平台之上构建所有应用程序。如果底层硬件最终需要在现场进行更改,那么在大多数情况下,需要打开外壳,更换电路板,并且必须构建、测试和安装新的 BSP。
克服这个缺点的第一步是严格定义一组最低级别的硬件接口,这些接口可以通过详细的电气和机械文档公开,并由成为已发布 BSP 一部分的锁定驱动程序代码在最低层提供支持。这需要在产品的工业设计中进行规划和适应。在大多数情况下,这不仅仅意味着简单地选择一个普遍存在的 USB 连接器并假设已考虑到可扩展性。USB 可能会在许多市场中造成实际的环境问题,例如缺乏对高振动用途的适用性。当以前未知的 USB 设备作为核心设备的新突出物连接时,也会对产品的美观产生潜在的负面影响。
过去,个人计算机行业已成功使用定义通用电气和机械扩展接口的方法。最早的 PC 机器模型在 IBM 的产品和随后的许多克隆产品之间共享 ISA 总线通用性。不幸的是,由于各种物理原因,当前的 PC 扩展槽策略不能很好地转化为大多数嵌入式应用程序,并且嵌入式设计缺乏 PC BIOS 的通用性,无法使不同的硬件在软件开发人员看来相对统一。因此,对于嵌入式产品来说,为现场添加的硬件部署软件支持可能会更加困难。
用于部署驱动程序软件的 PC 模型也普遍优于嵌入式产品的行业标准。现代 PC 操作系统(包括基于 Microsoft 的各种 Linux 发行版)在新硬件枚举时自动读取设备信息,并自动从中央存储库中检索相关的软件驱动程序。对于最终用户来说,这通常是一种非常令人满意的体验,如果现场可扩展嵌入式设备要取得成功,就需要重新创造这种体验。
易于开发的硬件与易于部署且对现场安装人员的影响最小的软件支持相结合,在实际开发大多数最终产品的嵌入式空间中一直缺乏。通过考虑硬件扩展选项的平台独立性以及部署软件的集中机制的深思熟虑的设计方法,可以在产品系列的嵌入式空间中复制 PC 方法。
尽管这种从标准化平台创建可定制设备的方法可以应用于许多需要现场可配置性的设备,但它在以物联网 (IoT) 空间连接为中心的设备中尤为重要。在考虑通用监控应用程序时,很容易设计一个实现一些标准接口的通信网关,但要提供一个与现有的各种传感器和执行器通信的通信网关要困难得多。标准方法是选择一个市场并利用该市场中最常见的接口。借助现场可扩展平台,OEM 不再需要选择特定的市场来追求。如果需要支持额外的传感器或执行器,
一个开放式 IoT 网关产品通过 GPIO、USB 或其他在制造时固定的接口进行扩展。作为传统的嵌入式设备,它具有定制的 Linux BSP 以充分利用硬件提供的灵活性,并且没有显着的发布后扩展能力。USB 提供了添加功能的途径,但如前所述,它对实际现场部署施加了限制。
为第二代产品采用新方法,创建了扩展端口,因此除了可以在机械实用的情况下使用的传统 USB 端口之外,还有许多其他接口可以在扩展时暴露出来卡,包括 USB 本身、UART、SDIO、I2C、Wi-Fi 等。这有助于确保网关架构在平台设计中具有合理的使用寿命,因为它能够在新的扩展端口卡可用时接受它们。作为一种开放策略,
下一步是找出合理的方法来利用这种标准化的硬件接口,同时提供一定程度的抽象,使其他软件开发人员无需开发低级驱动程序或从头开始构建新的 BSP 即可创建应用程序。
对于计算密集度较低的设备,ARM 的 mbed 方法提供了很好的解决方案,该方法旨在支持其 Cortex-M 系列设备。SDK 由 ARM 在 Apache 2.0 开源许可下提供给社区,对于过去从事过 OS 和非 OS 嵌入式软件开发的人来说,感觉非常熟悉。使用 mbed,硬件的软件支持可以放置在一个中央存储库中,供任何潜在用户检索和构建他们的应用程序。ARM 本身通过 mbed 在处理器 I/O 级别提供一定程度的平台独立性,因此可以将代码从一个受支持的 mbed 设备迁移到另一个设备,即使这些设备来自不同的微处理器供应商。然后可以使用 ARM 的工具轻松构建具有正确平台支持的用户创建的软件,或与可用于商业销售的其他第三方开发环境一起使用。ARM 用于部署 mbed 代码的本机部署机制就像在 USB 接口上拖放一样简单,但如果设备倾向于远程部署并进行现场升级,OEM 可以选择以更适合自己需要的方式扩展部署。
由于计算密集型应用程序可能无法在 Cortex-M 处理器上很好地运行,因此可能还需要考虑另一种方法。Linux 是一个显而易见的选择,因为大多数高端嵌入式处理器供应商倾向于将他们自己的开发套件的初始 BSP 发布到社区中,并且通常与初始发布时提供的开源硬件一起发布。这种方法的挑战在于认识到任何定制都需要精通嵌入式 Linux 的软件工程师,或者需要构建抽象层。混合模型既支持更有限的嵌入式 Linux 开发人员,也支持在其 Linux 开发系统上构建完整平台的开发人员,以及操作水平高于 Java、Python、Perl 或其他语言的工程师。
MultiTech 网关它是 2014 年底推出的系列之一,将有公开记录的硬件扩展槽。扩展接口是多网关产品通用的,所有支持的底层驱动代码都将开放并提供给mbed和Linux。这允许 OEM 和第三方创建新的扩展板,这些扩展板易于启动和部署到更广泛的应用程序中。
扩展卡定义了个性化机制,以便平台知道需要哪些驱动程序资源,以及是否需要从基于云的存储库中检索任何其他软件。相同的卡可在产品线内的任何平台上工作,允许最终开发人员选择最适合单个应用程序的处理能力级别。在这两种情况下,一般的嵌入式软件工程师都会对这些进行开发感到自在,因为该模型遵循可扩展标准硬件接口的传统 PC 范例,其软件本身存在于主设备上或从中央存储库自动下载。关键优势在于,这种方法创建的平台易于被广泛的软件工程师理解,并且基于已经获得广泛社区支持的开源工件。这导致产品可以在初始现场部署之前和之后快速定制,并且时间大大减少。尽管提供的示例以物联网应用为中心,但通用方法很好地适用于需要考虑现场可配置性和支持各种已知和未知功能的任何应用。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !