如何克服资源有限的系统中 Linux 开发的障碍

作者:Brandon Lewis

投稿人:DigiKey 北美编辑

开源技术通过消除专有壁垒和促进协作,为电子系统开发人员提供了一条降低成本、缩短上市时间及延长产品生命周期的路径。如今,开源机会遍及整个系统栈,从操作系统到单板计算机 (SBC) 硬件及半导体 IP。

然而,在资源受限的设备(如工业物联网 (IIoT) 和机器人系统)上运行 Linux 时,仍然面临着计算要求高、安全风险大和确定性延迟等挑战。

本文简要回顾了设计人员在资源有限的系统中部署 Linux 时所面临的挑战,然后介绍了 BeagleBoard.orgBeagleV-Fire SBC 与 Linux 结合一起的方法,并阐述其如何最大程度地提升未来设计的灵活性。文中还展示了如何使用 Microchip Technology 的开源电路板支持包 (BSP) 来构建初始 Linux 配置。

嵌入式系统开源开发面临的挑战

在嵌入式开发中采用开放源码技术的做法已得到广泛认可。有众多制造商和个人工程师组成生态系统,提供各种即用型资产,加快了硬件设计和软件集成的速度。特别是,Linux 的灵活性使其成为需要联网、高级应用框架和人工智能 (AI) 集成的系统的领先软件解决方案。

不过,在资源更有限的设备上部署 Linux 还需要考虑更多因素:

  • 计算需求:传统的微控制器单元 (MCU) 很难满足最小 Linux 发行版的内存和存储要求。随着开发人员添加后台服务以支持应用、子系统和用户空间框架 (USF),这些子系统会消耗更多资源,导致庞大的软件栈无法运行。
  • 延迟:机器人和工业自动化等高精度应用需要可预测的时间,以保证系统协调和运行安全。Linux 内核的 PREEMPT_RT 功能提高了确定性,而专用实时操作系统 (RTOS) 为资源受限的硬件提供了更低的延迟和开销。
  • 安全性:部署在公共环境中的嵌入式系统面临未经授权访问的风险,因此安全引导、防篡改和硬件信任根 (RoT) 等标准安全措施至关重要。此外,《欧盟网络韧性法案》(CRA)等法规规定,具有数字元素的产品在设计上必须安全。
  • 电源:边缘设备通常在电力资源有限的偏远环境中运行。更高的能效可延长电池寿命,或利用环境能源实现运行。同样,更高的能效可以简化散热管理,提高瓦特性能,支持先进的边缘处理。
  • 生命周期管理:尽管许多工业部署需要 10 到 15 年的产品可用性,但 CRA 要求数字设备的支持期至少为 5 年。因此,为了确保 Linux 内核支持的一致性,开发人员必须对可升级性和硬件可用性进行规划。

为了克服这些挑战,开发人员可以从开源和嵌入式 Linux 生态系统中获取更多资源,并利用 Linux 的简化软硬件组合来实现边缘应用的快速发展。

使用开源 SBC 和 RISC-V 完成 Linux 实现

虽然通用 Linux 发行版为应用的就绪提供了一条捷径,但它们往往包含了手头项目不需要的软件包和服务。相比之下,由 OpenEmbedded 支持的 Yocto 项目可让开发人员根据特定用例来构建自定义 Linux 映像。这就消除了不必要的功能,使轻量级发行版能够在资源有限的硬件上运行,同时保留先进的功能,例如 AI 驱动的计算机视觉或通过标准工具进行预测性维护。

此外,Yocto 项目还为开发人员提供了以下便利:

  • 可重复构建,便于长期维护
  • 自定义内核配置,提高性能、安全性和响应速度
  • 特定板层集成,确保硬件与软件兼容,缩短开发时间

与空中下载 (OTA) 更新机制(如 SWUpdate、RAUC 和 Mender)的简单集成,也有助于开发人员在漫长的产品生命周期内定期提高设备性能和安全性。因此,Yocto 项目现已成为嵌入式 Linux 系统的标准。

同样,开源 SBC 长期以来一直被用来加速 Linux 应用的开发,它提供了一个即用型参考平台,将处理、内存、存储和 I/O 资源整合在一个自足的封装中。有了开放式 SBC,开发人员就可以快速制作系统原型,验证软件堆栈,然后只需极少的返工就能迁移到自定义硬件中。

RISC-V 开放标准指令集架构 (ISA) 在此基础上更进一步,允许系统设计人员创建定制的处理平台,且无需支付昂贵的许可费用。有了 RISC-V,设计人员可以选择指令集的哪些部分,甚至可以进行扩展,以满足他们的特定用例。由于原始设计是根据伯克利软件发布 (BSD) 许可证创建的,因此衍生作品既可以是开放和自由的,也可以是封闭和专有的。

对于开发人员和架构师来说,Yocto 项目、开放式 SBC 和 RISC-V 减少了对单一供应商路线图的依赖,提高了长期设计的灵活性。此外,Linux 上游对 RISC-V 的支持不断增加,同时 RISC-V 也成为了 Yocto 项目的白金会员,这些都凸显了嵌入式 Linux 社区对该技术的兴趣。

用于紧凑型 Linux 集成的高性能 RISC-V SBC

BeagleBoard.org 开源 BeagleV-Fire SBC(图 1)为应对这些挑战提供了一个结构紧凑、I/O 丰富的平台。该系统采用 Microchip PolarFire FPGA 片上系统 (SoC),具有高能效运行能力、硬件安全功能和连贯的 RISC-V CPU 集群,可支持运行实时工作负载的 Linux 应用。开发人员可使用 SBC 制作基于嵌入式 Linux 的机器人控制器、工业网关、边缘 AI 加速器和定制 I/O 平台原型。

BeagleBoard BeagleV-Fire® 图片图 1:BeagleBoard.org BeagleV-Fire 是一个紧凑型 SBC 平台,用于将开源技术集成到嵌入式设备中。(图片来源:BeagleBoard.org)

该平台结构紧凑,尺寸为 86.38 mm × 54.61 mm × 18.8 mm,采用高能效 MPFS025T-FCVG484E PolarFire SoC。它采用连贯的多核架构,四个 RV64GC 应用内核用于运行 Linux,一个 RV64IMAC 监控内核用于管理底层功能。

为了最大限度地提高性能并确保各内核之间的数据准确性,PolarFire SoC 提供了共享二级缓存、相干内存子系统和集成 DDR 内存控制器,以支持 2 千兆字节 (Gb) 板载 LPDDR4 内存。BeagleV-Fire 的 16 Gbyte eMMC 存储器和 128 兆字节 (Mb) SPI 闪存可进一步支持复杂的应用。

除了 RISC-V 处理器子系统,PolarFire SoC 还集成了 FPGA 结构(图 2),能够让开发人员为低延迟实时应用构建确定性处理路径,并为 AI 推理流水线实现定制硬件加速。作为完整系统的一部分,该结构包含 23K 逻辑元件和自己的辅助资源,使其能够独立于主处理内核运行。

Microchip 的 SmartFusion2 SoC FPGA 示意图(点击放大)图 2:Microchip PolarFire SoC 系列结合了多个 RISC-V 处理内核与用于确定性工作负载的多功能 FPGA 结构。(图片来源:Microchip Technology)

PolarFire SoC 具有多种安全引导选项,其集成的硬件安全功能允许开发人员实现深度安全模型,使其成为满足现代网络安全要求的有用平台。这些功能包括:

  • 通过物理不可克隆功能 (PUF) 实现不可更改的硬件信任根
  • 通过一次性可编程 (OTP) 或安全非易失性存储,使用唯一设备机密 (UDS) 和硬件强制密钥访问控制,实现安全密钥存储
  • 防篡改模块

除此以外,BeagleV-Fire 还提供了多个集成物理端口,可用于构建应用就绪系统,在该系统中可验证和测试定制的 Linux 发行版(图 3)。其中包括一个 RJ45 千兆以太网端口、一个用于供电和连接的 USB Type-C 端口、一个 M.2 Key E 插座、两个兼容 BeagleBone 的 46 针 Cape 针座(用于扩展生态系统)以及一个用于直接集成的摄像头串行接口 (CSI)。BeagleV-Fire 提供 JTAG TAG-CONNECT 接口布局用于调试,还支持 SYZYGY 兼容扩展,用于面向 FPGA 的外设。

端口带标签的 BeagleBoard.org BeagleV-Fire 图片图 3:BeagleBoard.org BeagleV-Fire 封装尺寸虽小,但提供了多个物理端口,可直接连接应用。(图片来源:BeagleBoard.org)

如何在 BeagleV-Fire SBC 上构建初始 Linux 配置

在为 BeagleV-Fire 构建轻量级 Linux 发行版时,开发人员必须首先获得合适的 Yocto Project BSP 层。这将提供 U-Boot 配置、默认 Linux 内核配置、支持电路板的设备树以及外设支持定义。GitHub 存储库支持所有 PolarFire SoC 评估套件 BSP,包括 BeagleV-Fire。

安装完所有必需的 Yocto Project 依赖项后,需克隆以下层以提供构建基础:

  • bitbake
  • meta-openembedded-core
  • meta-yocto(用于 Poky 参考发行版)
  • meta-mchp-common
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community
  • 项目要求的附加层

完成上述工作后,就可以使用 MACHINE ="beaglev-fire" 的目标和 kas 配置文件构建最小镜像。清单 1 显示了一个配置示例:

副本
header:
  version: 19
 
repos:
  openembedded-core:
    url: git://git.openembedded.org/openembedded-core.git
    # yocto-5.0.15
    commit: 6988157ad983978ffd6b12bcefedd4deaffdbbd1
    layers:
      meta:
 
  bitbake:
    url: git://git.openembedded.org/bitbake.git
    # yocto-5.0.15
    commit: 8dcf084522b9c66a6639b5f117f554fde9b6b45a
    layers:
      bitbake: disabled
 
  meta-yocto:
    url: git://git.yoctoproject.org/git/meta-yocto.git
    # yocto-5.0.15
    commit: 9bb6e6e8b016a0c9dfe290369a6ed91ef4020535
    layers:
      meta-poky:
      meta-yocto-bsp:
 
  meta-mchp:
    url: https://github.com/linux4microchip/meta-mchp.git
    branch: scarthgap
    path: layers/third-party/meta-mchp
    layers:
      meta-mchp-common:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community:
 
machine: beaglev-fire
 
 
local_conf_header:
  Users: |
    EXTRA_IMAGE_FEATURES = "allow-empty-password empty-root-password \
allow-root-login"

清单 1:所示为一个示例配置文件,用于生成将 BeagleV-Fire 引导进入简单 shell 所需的所有构建构件。(示例来源:Microchip Technology)

运行 "kas build core-image-minimal" 就能创建将 BeagleV-Fire 引导到简单 shell 所需的所有构建构件,包括 U-Boot 二进制文件和包含 Linux 内核和模块、设备树和根文件系统的 FIT 映像。

在使用 Yocto 项目为 BeagleV-Fire 构建了最小 Linux 映像之后,就可以按照标准程序创建自定义映像,并根据项目的具体要求进行定制。例如,在机器人和工业系统中,Linux 通常与 FreeRTOS 或 Zephyr 等更传统的 RTOS 一起使用,以便在进行时间关键型操作的同时实现高级处理。BeagleV-Fire 的 PolarFire SoC 可以很好地支持这一功能,它可以配置为同时运行多个操作系统或裸机应用。

鉴于许多嵌入式设备需要 10 年或更长的工作寿命,开放式 RISC-V ISA、Linux 和基于 Yocto 的可重现性相结合,使基于 PolarFire SoC 的平台能够通过定期本地或 OTA 更新,适应新出现的安全威胁和新的应用要求。因此,BeagleV-Fire SBC 为开源应用提供了一个极好的起点,提高了智能边缘系统的灵活性和使用寿命。

结语

在资源有限的嵌入式系统中运行 Linux 时,计算限制、确定性延迟要求、安全风险和较长的生命周期需求都会带来合理的挑战。BeagleBoard.org BeagleV-Fire SBC 提供了一种混合架构,将 RISC-V Linux 功能与基于 FPGA 的确定性逻辑和硬件安全功能相结合,从而克服了这些挑战。与 Yocto Project 和 Microchip 的开源 BSP 层搭配使用时,开发人员可以使用该平台构建量身定制、可追踪的 Linux 发行版,并针对长寿命机器人、物联网和边缘计算应用进行优化。

DigiKey logo

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

关于此作者

Image of Brandon Lewis

Brandon Lewis

Brandon Lewis has been a technical writer and editor for over 15 years, serving as editor-in-chief at various electronics engineering trade publications. Brandon’s areas of focus include microcontrollers, multicore embedded processors, embedded Linux and real-time operating systems, industrial communications protocols, single-board computers and computer on modules, and other aspects of real-time computing. He is an accomplished podcaster, YouTuber, event moderator, conference chair, and product reviewer.

关于此出版商

DigiKey 北美编辑