Linux* 开发人员中心

SoC FPGA 和 Nios® II 处理器

Linux 是一款最常用的开源操作系统 (OS)。Linux 模仿 Unix 而建,提供了支持众多设备的内置驱动程序,包括英特尔® SoC FPGA 主板上的设备。

英特尔提供了基于 kernel.org 上 Linux 内核的 SoC FPGA Linux* 内核,还添加了其他组件,如板卡支持包和驱动程序。  

英特尔是 Linux 基金会的核心成员,并参加了众多 Linux 开源项目。英特尔是一个实力雄厚的 Linux 社区参与者和赞助方。英特尔 Linux 开发网站 RocketBoards.org 提供了入门帮助、设计示例、文档和社区论坛,旨在分享理念,促进协作。

访问以下链接,以了解如何在英特尔 SoC FPGA 设备上使用 Linux。如果您是首次使用的用户,建议您依次访问以下资源。

访问 RocketBoards.org并单击 Register 按钮。RocketBoards.org 支持访问:

  • 全面的 SoC FPGA Linux* 信息:
    • 更新为最新的 Linux 版本
    • 分步入门指南
    • 英特尔® SoC FPGA 黄金系统参考设计 (GSRD)
    • 来自英特尔和 SoC 社区的示例项目、应用和设计
  • 社区支持
    • 访问英特尔和 SoC 社区的论坛讨论和合作
    • 会员积极参与回答有关 SoC FPGA 和 Linux 的问题

为什么使用嵌入式 Linux?

对于嵌入式系统,如智能手机、平板电脑、PDA、机顶盒和个人媒体播放器,嵌入式 Linux* 操作系统是一个必然选择,因为它为设计人员提供他们在操作系统中期望的特性。

成本

  • 这款社区支持的开源软件是免费的。您可以从免授权的 Linux 操作系统内核开始,构建您的 Linux 系统。嵌入式 Linux 社区提供了可用的框架和应用,用于创建完整的系统解决方案。

性能

  • 相比标准 Linux,嵌入式 Linux 提供了更高的实时性能,因为它为在嵌入式平台上运行而专门定制,并且针对功率进行了优化。

尺寸

  • 相比标准 Linux 操作系统,嵌入式 Linux 内核更简单、更小巧。

支持

  • 众多公司不断推出内核兼容性更新和高级工具,为开源嵌入式 Linux 的发展做出贡献。
  • RocketBoards.org 等嵌入式 Linux 支持网站为新高级用户提供了入门指南、设计示例和社区论坛。
  • 需要商用嵌入式 Linux 解决方案的开发人员可以使用 WindRiver、MonteVista 和 Timesys 的现有 Linux 发行版。
  • 开发人员可以找到多个设备特定驱动程序,如 USB 和以太网。

定制

  • 开发人员可以针对他们的特定应用自定义 Angstrom 发行版。  最新版 Linux 内核始终可从 kernel.org 下载。

易用性

  • Linux 操作系统驱动程序可轻松提供高级设备抽象。  您可以构建 Linux* 驱动程序,以支持用户空间访问 FPGA 结构中的自定义用户外设。  

安全性

  • 嵌入式 Linux* 提供了经过测试的高稳定性内核,可与安全关键应用搭配使用。
  • 开源安全组为嵌入式 Linux 应用提供演示文稿、文献和安全认证。
可移植性
  • 许多自定义微处理器拥有嵌入式 Linux 内核支持。

创新

  • 协作开发支持 Linux 的快速演进。
  • Linux 社区为新功能的孵化和测试提供了更快速的途径。
  • 由于不受合同的约束,开发人员可以创建面向 Linux 操作系统的新用例、新市场和新平台。

嵌入式 Linux 与英特尔® SoC FPGA 的配合十分默契,原因是:

  • Linux 提供了可充分利用英特尔 SoC 硬处理器系统对称多处理器配置的特性
  • WindRiver、MontaVista 和 Timesys 等开发厂商提供英特尔嵌入式 Linux 解决方案,以加快上市速度
  • 面向英特尔 SoC FPGA 的 Linux 内核在创建与运行过程中执行正常的 ARM* Linux 进程。

Linux 注意事项

在您决定使用 Linux 系统后,需要对设计的某些方面予以考虑:

  • 决定您是否想构建您自己的 Linux 系统或使用商用产品
    • 如果您决定不去构建您的 Linux 发行版,可以使用 WindRiver、Monta Vista、Timesys 或其他 Linux 应用提供商提供的商用产品。
  • 如果您决定自定义设计,必须确定从 kernel.org 下载的 Linux 内核版本。自定义设计需要更多的软件开发工作,但是提供成本较低的解决方案。
  • 确定使用哪一个内核。该决定需要基于您的应用需求。这两个版本被归类为“稳定”和“开发”。请访问 kernel.org 查看各种可用的内核选项。
  • 确定您的构建策略。当前受支持的构建策略包括:
  • 确定您想要使用现有的设备驱动程序还是自行创建。您可以在 RocketBoards.org 上查阅可用的英特尔 SoC FPGA 设备驱动程序列表。 
  • 选择如何实施多处理。英特尔 SoC 硬处理器系统是一个典型的对称多处理 (SMP) 硬件配置。  您可以使用支持内核绑定或核心预定的 SMP 等方法实施对称多处理 (AMP)。请参考技术参考手册 (TRM) 了解详情。
  • 确定您是否需要自定义 Linux 构建过程中的某些组件。如需要,您必须熟悉以下内容;
    • Linux 启动流程
    • 板卡启动过程中使用的工具
    • U-Boot 自定义
    • Linux 根文件系统和它的定制方法

Linux 系统上的 Nios® II 处理器

如欲获取 Linux 内核构建和启动指令,请访问 Nios® II Linux 用户手册网站。

上图包含 3 个基本阶段:

阶段 说明
启动 ROM 使处理器退出重置,执行最低配置并将 U-Boot 加载至片上 RAM
U-Boot 配置 I/O、FPGA、锁相回路 (PLL) 和时钟,初始化 DDRAM 并加载 Linux* 内核
Linux 管理进程、内存、网络堆栈和设备驱动程序并运行最终应用

这些阶段包括以下主要步骤:

  1. 使用 Platform Designer 创建硬件设计。设计包括:
    • 时钟、引脚、DDR 和接口的 HPS 配置
    • FPGA 知识产权 (IP)、引脚、内存控制器和 PLL 的 FPGA 结构配置。
  2. 使用英特尔 Quartus® Prime 软件工具编译硬件设计。创建以下文件:
    • SRAM 目标文件 (SOF):保存用于配置 FPGA 结构的数据
    • 切换文件:包含第二阶段启动加载程序 (SSBL) 生成器创建 HPS 启动加载程序所用的信息
    • 可编程片上系统信息 (SOPCINFO) 文件:用于创建包含 FPGA 软 IP 地址的设备树的硬件系统信息。
  3. 使用英特尔 Quartus Prime 软件工具将 SOF 文件转换为用于编写 FPGA 程序的原始二进制文件 (RBF)。
  4. 配置英特尔 SoC FPGA 嵌入式开发套件 (SoC EDS) 板卡支持包 (BSP) 编辑器中的启动加载程序生成器工具,以使用切换文件生成启动加载程序 (U-Boot)。
  5. 选择并配置您的启动源。您可以从 FPGA、SD/MMC、QSPI 或 NAND 中选择。
  6. 启动 Linux 内核。也可以编写硬件或软 IP 驱动程序。

 

有关 SoC EDS 工具和组件的基本知识,请参阅英特尔® SoC FPGA 嵌入式开发套件用户指南。虽然并非文档的所有部分都描述了启动加载程序和 Linux* 开发,英特尔强烈建议您至少查阅以下部分:

SoC EDS 部分 说明
简介 提供了特性和硬件-软件开发流程的综述。
安装

描述了如何安装 SoC FPGA EDS 和附带的 ARM* Development Studio 5* (DS-5*)

许可 提供了 SoC FPGA EDS 的许可选项和许可安装方法
嵌入式命令 Shell 描述了如何启动可以访问其他 SoC FPGA EDS 工具的 shell
alt-boot-disk-util 描述了在物理 SD 卡上升级预加载程序和启动加载程序的实用程序
bsp-editor 详细描述了支持您生成板卡支持包 (BSP):启动加载程序和 Linux 设备树的图形用户界面 (GUI)
Linux 编译器 汇总了 SoC EDS 中包含的编译器

作为一个硬件系统,Linux 位于所有其他软件之下。它接收来自这些程序的请求,并将请求传送至计算机硬件。

了解 Linux* 内核的 5 个主要子系统能够帮助您高效使用以下特性:

  • 进程调度程序
  • 进程间通信 (IPC)
  • 内存管理 
  • 文件系统
  • 网络子系统:
  • RocketBoards.org 是所有 GSRD(黄金系统参考设计)二进制文件的起点,包含面向英特尔® SoC FPGA 开发套件的项目示例。
  • 单击主页上的 START 按钮或选择 Documentation 选项卡下下拉菜单中的 Getting Started

如欲查找特定主板的特性、规格、文档和设计支持,请从主页的导航菜单中选择 BOARD。  

注意,英特尔® SoC FPGA 开发套件提供入门指南和多个设计示例。

选择在您的设计中使用的英特尔® Quartus® Prime 软件版本。

提示:

  • 如欲访问最新的设计工具更新和安全补丁,请使用最新版英特尔 Quartus Prime 软件。
  • 如果您的目标是特定的 Linux* 版本,请务必选择兼容该 Linux 版本的正确工具版本。

 

根据您选择的开发板和工具版本,Select a Task下拉菜单中的任务可能有所不同。您可以完成的大多数任务在开发板之间共享。

您可以选择以下常见任务:

  • 从 SD 卡启动 Linux
  • 编译硬件设计
  • 生成 U-Boot 和设备树
  • 生成 Linux* 设备树
  • 编译 Linux
  • 生成与更新 SD 卡
  • 从 QSPI 闪存启动
  • 从 NAND 闪存启动

下载中心下载英特尔® SoC FPGA 嵌入式开发套件 (SoC EDS)并按照本说明安装 SoC EDS。

该 SoC EDS 包含所有 SoC FPGA 开发所需的重要工具,如生成 U-Boot 和 Linux* 设备树。  该 SoC EDS 提供黄金硬件参考设计 (GHRD)。

更多详情敬请参考英特尔 SoC FPGA 嵌入式开发套件概览页面。

英特尔® SoC EDS 提供配置、编译和创建二进制文件所需的以下工具和实用程序:

  • Linaro Linux* 编译器随 SoC EDS 一起发运
  • 设备树生成器工具用于创建面向 SoC 系统的设备树,包含使用 Platform Designer 创建的 FPGA 设计
  • SoC EDS SD 卡启动实用程序是一款在 SD 卡上更新启动软件的工具

此时,您已下载并安装了英特尔® Quartus® Prime 软件和英特尔 SoC EDS 黄金系统参考设计 (GSRD)。  您还从 GSRD 获得了黄金系统参考设计 (GSRD)。  为了编译您的 Linux* 项目,您必须执行以下一般步骤:

  1. 使用 Platform Designer 将您的自定义硬件组件添加至设计。
  2. 使用英特尔 Quartus Prime 软件编译您的设计。
  3. 使用 SoC EDS 和 GSRD 源工具构建预加载程序或 U-Boot。
  4. 从 Git 树或使用 Angstrom 发行版分别构建 Uboot、Linux 和根文件系统。
  5. 将任意自定义驱动程序添加至 Linux 内核源,并对内核配置进行必要的补充。
  6. 创建 Linux 应用。
  7. 选择并编写面向设备的启动源。
  8. 在您的设备上运行应用。

访问软 IP Linux 项目示例。本示例:

  • 将黄金系统参考设计 (GSRD) 用作添加自定义高分辨率计时器的基础
  • 构建启动英特尔® Arria® 10 SoC 设备所需的所有库
  • 创建与硬件交互的 Linux* 驱动程序和用户空间应用程序
  • 提供关于如何启动您的设备和构建面向客户组件的 Linux 驱动程序的参考信息

开始设计时,您需要考虑以下细节:

  • 确定您想使用的开发套件和软件版本,这点非常重要。  一般情况下,最好从最新版着手。  如果您必须使用特定的 Linux 版本,请确保您选择的工具版本具有兼容性。
  • 每个开发套件和工具版本均包含各自的参考设计。  GSRD 提供一系列基本硬件和软件系统组件,您可以将它们用作创建自定义设计的基础。
资源库 说明
linux-socfpga.git/

SoC FPGA Linux* 开发资源库

  • 镜像 kernel.org Linux 资源库版本
  • SoC FPGA 特定的下游分支

补丁与更新

meta-altera.git/

面向 SoC FPGA Yocto 方案的资源库

  • 自定义 Yocto 方案的起点
angstrom-socfpga.git/ SoC FPGA Angstrom 发行版的安装脚本
uboot-socfpga.git/ SoC FPGA U-Boot 开发资源库
sopc2dts.git/ 设备树生成器 (sopc2dts) 资源库
linux-refdesigns.git/ 面向 Linux 参考设计的软件源代码

以下链接详细介绍了如何手动创建与生成 Linux* 启动过程中使用的二进制文件。

资源 SoC 设备 GSRD 版本
创建与更新 SD 卡 英特尔® Arria® 10 17.0
闪存编程:QSPI, NAND, and SDMMC 英特尔 Arria 10 16.1
FPGA 编程 Cyclone® V / Arria V 17.0
生成 U-Boot 脚本 Cyclone V  
生成与编译预加载程序 Cyclone V / Arria V All
生成 U-Boot 和设备树 英特尔 Arria 10 17.0
预加载程序和 U-Boot 自定义 Cyclone V / Arria V 13.1
构建 initramfs 内核 (Simple Root Filesystem) 英特尔 Arria 10 /
Cyclone V / Arria V
All
设备树生成器 (Linux)  英特尔 Arria 10 17.0
了解 Linux 设备树 英特尔 Arria 10 /
Cyclone V / Arria V
All
编译 Linux(使用 Angstrom 或从 GIT 构建内核和 RFS) 英特尔 Arria 10 /
Cyclone V / Arria V
All
Yocto 用户手册 Arria V 14.0
Angstrom 根文件系统构建方法 英特尔 Arria 10 /
Cyclone V / Arria V
All
使用 meta-altera 构建 Yocto RFS 英特尔 Arria 10 /
Cyclone V / Arria V
All
资源 SoC 设备 GSRD 版本
Datamover 设计示例 Cyclone® V 14.0
部分重配置 英特尔® Arria® 10 16.1
支持 MSI 的 PCIe* 根端口 英特尔 Arria 10 / Cyclone V / Arria V 17.0
SGMII 设计示例 Cyclone V 14.0

SoC 硬 IP 驱动程序支持

英特尔® FPGA SoC 硬处理器系统集成了众多来自以下供应商的第三方 IP 核:

  • ARM
  • Synopsys* DesignWare
  • Cadence

由于这些第三方 IP 核通常应用广泛,且受到社区支持,因此,适用于它们的驱动程序一般经过充分测试,而且非常稳定。

RocketBoards.org 保存面向英特尔 SoC FPGA 外设的可用驱动程序列表。

Rocketboards.org 是一个英特尔® SoC FPGA Linux* 资源网站。它是一个用于查找设备特定应用注释的合作网站,描述了如何构建 Linux 启动所需的各种组件。

面向英特尔® SoC FPGA 的 Linux 基于来自 kernel.org 的开源 Linux* 内核开发。可通过英特尔 FPGA 论坛获取 Linux 内核(驱动程序和 BSP)的英特尔 SoC FPGA 特定部分支持。

Rocketboards 论坛是一个社区网站,支持英特尔 FPGA 产品不同用户之间的协作。使用搜索引擎查找相关材料。欢迎您的更新与踊跃参与。

正如许多开源项目,我们鼓励客户在不是专门面向英特尔 SoC FPGA 的领域使用面向 Linux 的开源邮件列表。

使用您的 My Intel 帐户提出帮助服务申请,注册培训课程或访问其他资源。注册之后方可访问这些服务。