电子硬件设计发生了一场悄无声息的革命。随着硅集成的继续进行(受摩尔定律的支持),工程师逐渐从主要在组件和电路级别进行开发,转向更多地使用电路板、模块和子系统。
好处是电子设计效率的显着提高。这种转变现在正在软件中复制,开发人员希望更多地使用可重用模块,而不是主要依赖于他们自己编写的代码行。
转向模块化设计有许多优势。一是通过使用吸引许多客户的平台来分享规模经济的能力更强。工业用户在模块化硬件方面有着悠久的历史。Versa Module Eurocard (VME) 和 CompactPCI 标准为在小批量市场工作的集成商和原始设备制造商 (OEM) 提供了使用高性能计算的能力。他们可以执行更广泛的计算机功能定制,而无需在高端印刷电路板 (PCB) 设计上投入时间和精力。从那时起,摩尔定律在功能方面取得了令人难以置信的进步,同时还降低了单个部件的成本。Raspberry Pi 单板计算机就是一个关键示例。
具有成本效益的现成硬件
通过利用智能手机片上系统 (SoC) 平台带来的规模经济,Raspberry Pi 背后的联盟能够提供比最初为教育用途创建的设计更有效的产品。硅供应商产生的非经常性工程 (NRE) 成本很容易被主要目标市场吸收,为 Raspberry Pi 的目标用户带来了更大的价值。这种成本优势传递给了工业部门。集成商和 OEM 已利用 Raspberry Pi 平台的模块化优势,使用 HAT 扩展总线添加自己的自定义接口模块。
Pi 模块的使用使工程团队不必采购类似的组件并将它们设计到定制的 PCB 上。与创建前端 HAT 模块所需的相比,这些通常需要更耗时的信号完整性和功能检查。很多时候,这些定制模块可以使用相对简单的两层或四层 PCB。
现成的软件模块的出现
类似的模块化软件趋势已经出现。工程师现在可以完全专注于可以增加价值的应用程序元素。这一趋势不仅是由规模经济和一些供应商有效摊销 NRE 的能力推动的,而且是网络集成和服务驱动的商业模式的更大趋势。嵌入式系统在今天通常是不完整的,除非它构成更大的系统系统的一部分,例如物联网 (IoT)。在这种环境中,可以使用设备来帮助提供一项或多项服务——其中许多服务将在用于支持它们的硬件的生命周期内发生变化。物联网和云的这种结合正在产生利用这些功能的新商业模式,例如软件即服务 (SaaS) 和按使用付费。
模块化始于操作系统。操作系统支持对构建灵活的模块化环境至关重要的抽象。通常,操作系统提供一系列服务,范围从简单的输入/输出到完整的网络堆栈,所有这些服务都通过一组记录在案的应用程序编程接口 (API) 进行访问。只要服务继续支持 API,交付它们的代码就可以更改,而不会影响使用这些 API 的应用程序。对于随许多微控制器开发工具一起提供的简单实时调度程序 FreeRTOS [1]来说,对于商业和更复杂的 RTOS 实现(例如 Wind River 的 VxWorks [2])来说也是如此。 VxWorks 为嵌入式操作系统设定了行业标准,为一些最关键的基础设施和设备提供动力。
Linux 和其他操作系统可以通过使任务彼此隔离来使内存管理更进一步。简单 RTOS 结构的一个可能问题是它们在完全未分区的内存空间中运行。一项任务中的错误或恶意行为可能导致数据和代码在另一项任务中被意外覆盖,从而导致系统崩溃或其他不良结果。Linux 使用由硬件内存管理单元介导的虚拟寻址来防止任务访问彼此的内存空间。它们只能通过操作系统 API 或建立在这些 API 之上的应用程序间协议进行交互。
虚拟内存寻址不是任务隔离的绝对要求。一些微控制器架构,包括 Arm Cortex-M 和 Cortex-R 系列的几个成员,可以在平坦的内存空间中实施内存保护。Arm 还在其许多处理器中提供了 Trustzone 安全软件模式,这使得将敏感软件与用户级任务隔离成为可能。有了这种保护,将自定义代码与为应对常见任务而开发的越来越多的现成软件模块组合起来变得更加容易。
开源和专有功能的集成
如今,工程师可以通过 Github、Sourceforge和其他服务访问一系列免费的开源软件模块和协议栈。还提供为安全关键应用提供更大支持、附加功能或认证的商业堆栈。硅制造商整合的参考设计通常会结合一系列开源和专有功能,以使客户更容易构建原型到完整的产品实施。在某些情况下,参考设计实现了一个完整的应用程序,最终用户可以根据自己的需要进行调整。
一些系统设计人员正在利用软件日益增加的模块化来构建可以调整参数并自动生成代码的开发环境。这些工具通常使用开发人员在图形用户界面上组装的基于块的软件表示。一个例子是用于 PIC8、PIC16 和 PIC32 微控制器系列的 Microchip MPLAB 代码配置器。
高级应用程序(例如机器学习和图像处理)是用户可以从专家的高 NRE 投资中受益的领域的示例,并且可以避免用户必须从头开始构建此类软件所需的多年开发时间。Caffe、PyTorch 和 Google 的 Tensorflow 使构建、训练和调整复杂的人工智能 (AI) 模型成为可能,这些模型可以轻松集成到嵌入式处理管道中。对于图像处理,OpenCV 是一个广泛使用的库,可以轻松集成到实时应用程序中。随着机器学习的兴起,当今越来越普遍的使用模型是 OpenCV 在将图像数据传递给使用 Caffe 或 Tensorflow 构建的 AI 模型之前对图像数据进行预处理,自定义代码主要用于提供对事件的实时响应模型检测。
把这一切放在一起
开发人员现在可以访问面向云的软件模块和工具,这些模块和工具可轻松与常见的网络堆栈和 RTOS 实现集成。这使得不同复杂程度的嵌入式系统能够集成到物联网中。例如, Avnet 的 IoT Connect™ 平台为人工智能等复杂任务提供基于云的处理。由于该系统是由云和嵌入式设备软件服务定义的,亚马逊网络服务和微软 Azure 等云提供商现在提供了一系列将两者结合在一起的产品:所有这些都利用了他们所使用的软件组件的模块化。
模块化正在改变嵌入式软件工程师所需的技能。职责的平衡正在从代码开发转变为基于预先存在的模块构建灵活架构的能力,这些模块允许在部署新服务时轻松进行自定义编码和运行时配置。通过利用这种模块化,原始设备制造商和系统集成商可以轻松满足客户的需求,而这在传统方式中是无法想象的。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !