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