电子硬件设计发生了一场悄无声息的革命。随着硅集成的继续(由摩尔定律的经济学提供),工程师逐渐从主要在组件和电路级别开发转向更多地使用电路板、模块和子系统。
好处是电子设计效率的显着提高。这种转变现在正在软件中复制,开发人员希望更多地使用可重用模块,而不是主要依赖他们自己编写的代码行。
转向模块化设计有很多优势。一个是更大的能力分享规模经济,这些经济来自于使用吸引许多客户的平台。工业用户在模块化硬件方面有着悠久的历史。Versa Module Eurocard (VME) 和 CompactPCI 标准为在小批量市场中工作的集成商和原始设备制造商 (OEM) 提供了使用高性能计算的能力。他们可以对计算机的功能进行更广泛的定制,而无需在高端印刷电路板(PCB)设计上投入时间和精力。从那时起,摩尔定律在功能方面取得了令人难以置信的收益,同时还降低了单个零件的成本。Raspberry Pi单板计算机就是一个关键的例子。
经济高效的现成硬件
通过利用智能手机片上系统(SoC)平台带来的规模经济,Raspberry Pi背后的财团已经能够提供比最初为教育用途创建的设计更有效的产品。硅供应商产生的非经常性工程(NRE)成本很容易被主要目标市场吸收,为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和其他服务访问一系列免费的开源软件模块和协议栈。还提供为安全关键应用提供更强大支持、附加功能或认证的商用堆栈。芯片制造商组合在一起的参考设计通常会结合一系列开源和专有功能,使客户更容易构建原型,直至完整的产品实施。在某些情况下,参考设计实现了最终用户可以根据自己的需求进行调整的完整应用程序。
一些系统设计人员正在利用软件日益模块化的优势来构建调整参数和自动生成代码的开发环境。这些工具通常使用开发人员在图形用户界面上组装的软件的基于块的表示形式。一个例子是Microchip的MPLAB代码配置器,用于PIC8、PIC16和PIC32微控制器系列。
高级应用程序,如机器学习和图像处理,是用户可以从专家的高NRE投资中受益的领域的例子,并且如果用户必须从头开始构建,这种软件将需要多年的开发时间。Caffe,PyTorch和Google的Tensorflow使构建,训练和调整复杂的人工智能(AI)模型成为可能,这些模型可以轻松集成到嵌入式处理管道中。对于图像处理,OpenCV是一个广泛使用的库,可以很容易地集成到实时应用程序中。随着机器学习的兴起,当今越来越普遍的使用模型是OpenCV在传递给使用Caffe或Tensorflow构建的AI模型之前预处理图像数据,自定义代码主要用于为模型检测到的事件提供实时响应。
将一切整合在一起
开发人员现在可以访问面向云的软件模块和工具,这些模块和工具可轻松与常见的网络堆栈和 RTOS 实施集成。这使得不同复杂程度的嵌入式系统能够集成到物联网中。例如,安富利的IoT Connect™ Platform[5]为AI等复杂任务提供基于云的处理。由于系统由云和嵌入式设备软件服务定义,因此Amazon Web Services和Microsoft Azure等云提供商现在提供一系列将两者结合在一起的产品:所有这些都利用了他们采用的软件组件的模块化。
模块化正在改变嵌入式软件工程师所需的技能组合。责任的平衡正在从代码开发转向基于预先存在的模块构建灵活架构的能力,这些模块允许在部署新服务时轻松自定义编码和运行时配置。通过利用这种模块化,原始设备制造商和系统集成商可以轻松跟上客户需求的步伐,这是传统方式无法想象的。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !