SoC FPGA 裸机开发人员中心

裸机开发所使用软件运行时环境不使用操作系统 (OS) 或实时操作系统 (RTOS)。在裸机配置中,可以使用 SoC FPGA 的硬处理系统(HPS)。英特尔提供硬件库 (HWLIB),它包含高级应用编程接口 (API) 和低级宏,支持您使用大部分 HPS 外设。

您可以访问以下链接获取各种资源,以便开始通过英特尔® SoC FPGA 进行裸机开发。  如果您是新用户,建议您充分利用每种资源。

 

  • 通过 My Intel 页面创建您的 My Intel 账户。
  • 您可以通过 My Intel 账户提交服务申请、注册课程、下载软件、访问资源、参加培训课程等。

什么是裸机?

  • 裸机表示处理器系统的实际寄存器接口和硬件特性。 
  • 裸机开发所使用软件运行时环境不使用 OS 或 RTOS。  
  • 在裸机配置中,可以使用 SoC FPGA 的 HPS。英特尔提供的 HWLIB 包含 API 和低级宏,支持您使用大部分 HPS 外设。

为何选择裸机开发?

  • 采用裸机方法具有以下优势:
    • 绝对控制硬件
    • 提高效率
    • 最大限度减小空间(闪存和内存空间)
    • 不依赖其他源代码或库
    • 更严谨地验证正确性和执行代码覆盖分析
  • 选择裸机开发的其他原因包括:
    • 需要执行主板启动,而且一次支持一种外设
    • 需要复用以裸机形式开发的现有传统代码
    • 缺乏 OS 或 RTOS 使用方面的经验

 

裸机注意事项

开发 HPS 裸机应用时,您必须熟悉如何开发运行时功能,以确保应用高效使用 CPU 子系统中的可用资源。例如,您需要具备以下条件:

  • 熟知硬件平台
  • 如果想充分利用 CPU 子系统,必须开发运行时功能以管理内核与高速缓存子系统之间的进程,因为典型的裸机应用仅使用一个内核
  • 开发管理和安排进程、处理进程间通信和同步应用内事件的功能

如果安排的项目让自己没有时间满足上述条件,建议您考虑使用商用 Linux 或 RTOS 解决方案。

 

备选方案 优势 备注
Linux 网络、存储、多任务处理、进程间通信、同步化等等。 您不需要特别了解 Linux 内核就能在项目中使用 Linux。例如,您可以编写 Linux 用户空间应用和直接访问 FPGA 知识产权 (IP) 寄存器,与裸机应用的运行方式类似。
RTOS 多核处理、多任务处理、进程间通信和同步化(取决于 RTOS) 简单的 RTOS 易于使用。类似于使用已实施的 C 函数库,无需自己编写函数。
Bootloader 缩短启动时间,并访问启动加载程序中已实施的特性,比如大容量存储和网络

可用的启动加载程序包括:

  • U-Boot:开源 GPL 许可证,适用于所有 SoC
  • MPL:开源 3 子句 BSD 许可证,适用于所有 SoC
  • UEFI:开源 3 子句 BSD 许可证,不适用于 Arria® V SoC 和 Cyclone® V SoC

以下是裸机开发典型的设计流程图:

 

流程概要如下:

  1. 首先是硬件设计,包括:
    • HPS 配置:时钟设置、引脚多路传输和配置、DDR 设置、连接外设等。
    • FPGA 结构内容:FPGA 中的实例化 IP 核,FPGA 引脚、内存控制器和锁相环路 (PLL) 配置
  2. 硬件设计采用英特尔 FPGA 完整设计套件工具进行编译,生成以下文件:
    • SOF 文件:用于通过各种方法配置 FPGA 结构,比如外部程序员、外部闪存、HPS 启动加载程序或 HSP 应用
    • Handoff:其中包含的信息用于 Second Stage Bootloader Generator 创建在 HPS 上使用的启动加载程序
    • SOPCINFO 文件:用于自动创建包含 FPGA 软 IP 地址的头文件
    • SVD 文件:包含 FPGA 软 IP 寄存器的相关信息,以便 ARM* Development Studio 5* (DS-5*) 英特尔 SoC FPGA 版调试程序在调试过程中将这些信息简单直观地展示给用户
  3. 用户在 HWLIB 的帮助下编写自定义源代码,期间还可能用到 FPGA IP 地址头文件
  4. 用户在裸机编译器的帮助下编译裸机应用
  5. 用户使用 ARM DS-5 英特尔 SoC FPGA 版本调试裸机应用

 

  • 建议通过英特尔提供的 SoC 开发套件着手开发,因为入门级裸机示例将在这些开发板上运行。
  • 如欲查看可用的 SoC FPGA 开发板,请访问所有开发套件页面并点击“SoC 系列套件”。
  • 英特尔 SoC FPGA EDS 提供所有 SoC FPGA 开发(包括裸机)所必需的工具。更多详情请参阅概述页面。 
  • 访问下载中心下载英特尔 SoC FPGA EDS。 
  • 按照说明安装英特尔 SoC FPGA EDS。
  • 如果 ARM DS-5 英特尔 SoC FPGA 版本用于调试和/或跟踪裸机应用,您需要获得许可证。购买的英特尔 SoC FPGA 开发套件时通常包含许可证。  参阅 SoC EDS 用户指南的许可证设置说明
  • 英特尔 SoC FPGA EDS 提供下列裸机构建工具:
    • 英特尔 SoC FPGA Mentor CodeSourcery 版本 – 基于 GCC,不需要许可证
    • ARM Compiler 5 – 许可证包含在英特尔 SoC FPGA EDS 许可证中
  • 也可以使用其他用于 ARM 平台的构建工具套件 — 前往生态系统页面,点击“开发工具”了解更多信息。
  • 入门示例项目适用于 GCC 和 ARMCC 编译器,它们是英特尔 SoC FPGA EDS 的一部分。
  • 英特尔 SoC FPGA EDS 包含 ARM DS-5 英特尔 SoC FPGA 版本,完全支持调试和跟踪裸机程序 — 要求许可证
  • 也可以使用其他用于 ARM 平台的构建工具套件 — 前往生态系统页面,并点击“开发工具”。
  • 入门示例项目使用 ARM DS-5 英特尔 SoC FPGA 版本进行调试和跟踪
  • 示例入门应用适用于 Cyclone V、Arria V 和英特尔 Arria 10 设备,支持 ARMCC 和 GCC 编译器。 
  • 示例应用将使用
    • HPS SDRAM、MMU、高速缓存、 
    • HPS 计时器、中断
    • HPS-FPGA 桥接
    • FPGA 软 IP:SysID
    • FPGA 中断
  • 访问以下链接下载所需的版本:

ARM DS-5 英特尔 SoC FPGA 版本管理的项目有两大类型:

  • 基于 makefile 的项目:项目通过手动编辑 makefile 来管理,ARM DS-5 英特尔 SoC FPGA 版本仅调用 makefile 上的“make all”和“make clean”来分别构建和清理项目。
  • 基于插件的项目:  ARM DS-5 英特尔 SoC FPGA 版本全面管理项目,包括待编译文件、编译器选项、构建和清理。

基于 makefile 的项目的优势是不仅能调用裸机编译器,还能调用其他工具,因此更加灵活。使用基于插件的项目唯一的优势是相比用文本编辑器编辑 makefile,它可以通过 ARM DS-5 英特尔 SoC FPGA 版本图形界面更轻松地进行设置。

 

建议入门时使用提供的脚本自动创建基于插件基于 makefile 的项目。此处提供完整说明。

脚本可以完成以下任务:

  • 创建项目文件夹
  • 创建 C 项目文件,包含所有必需的编译设置
  • 创建仅显示“Hello world”消息的简单 main.c 文件
  • 添加所有相关 HWLIB 文件
  • 创建 system.h 文件,其中包含 FPGA 结构外设的基本地址(要求首先安装英特尔 Quartus® Prime 软件,否则会跳过这一步)
  • 创建用于调试应用的调试配置
  • 创建用于调试启动加载程序的调试配置【可选】
  • 创建外部工具启动程序,用于通过 ARM DS-5 英特尔 SoC FPGA 版本配置 FPGA 结构【可选】
  • 创建外部工具启动程序,必要时用于重新生成 system.h 文件【可选】

请注意,入门章节中提到的所有入门项目均采用这种方法创建而成。

 

您还可以使用下列备选方法创建项目:

  • 选项 1:手动创建 makefile,然后按照说明在 ARM DS-5 英特尔 SoC FPGA 中以基于 makefile 的项目形式启用项目。手动创建 makefile 不在指南范围之内,需要您自己熟悉所有构建工具及其选项。  如果要求使用 makefile,建议使用提供的脚本进行创建。
  • 选项 2:从头开始按照说明手动创建基于插件的项目。包括手动复制所提供脚本在创建项目时需实施的流程。请注意,脚本可提供更多特性,因此建议您使用脚本方法创建项目。  此处提供的选项仅供参考。
  • 选项 3:从现有项目开始,根据需求修改现有项目。这种方法尤其适用于简短测试和实验,但不建议使用这种方法。

A.入门级裸机应用,针对英特尔 SoC 开发板,并使用:

  • HPS SDRAM 
  • HPS MMU 和高速缓存
  • HPS 计时器,包含中断
  • FPGA IP:SysID 和 PIO – 按钮、双列直插封装 (DIP) 交换机和 LED
  • FPGA 中断

B. 英特尔 SoC FPGA EDS 包含的裸机示例,针对英特尔 SoC 开发板,位于 <SoC FPGA Installation Folder>\embedded\examples\software\:

示例名称 说明 设备 编译器
HardwareLib-16550 使用 UART 和中断 API 实施控制台应用。 Cyclone V ARMCC
GCC
HardwareLib-ECCL2 设置 MMU 表并显示 L2 高速缓存的 ECC 功能。 Cyclone V ARMCC
GCC
HardwareLib-FPGA 使用直接内存访问 (DMA) 配置 FPGA HPS,打开 H2F 桥接并与 FPGA 结构中的 GPIO 软 IP 组件进行通信。 Cyclone V ARMCC
GCC
HardwareLib-SPI 与外部开发板上的 SPI EEPROM 通信。 Cyclone V ARMCC
GCC
HardwareLib-Timer 设置计时器和中断。 Cyclone V
Arria V
Intel Arria 10
ARMCC
GCC
HelloWorld-Baremetal 使用 semihosting 显示“hello world”消息。 Cyclone V
Arria V
Intel Arria 10
ARMCC
GCC

C.其他裸机示例,针对英特尔 SoC 开发板,可从设计示例页面获取,均使用 GCC 编译器:

示例 说明 设备(项目文件) 设备(自述文件)
DMA 初始化 DMA,执行内存-内存传输以及零-内存传输。 Arria V
Cyclone V
Intel Arria 10
Arria V
Cyclone V
Intel Arria 10
ECC 面向片上 RAM、SD/MMC、4 串行外设接口 (SPI)、DMA 和 L2 高速缓存设置和启用 ECC。注入单/双位错误,并设置中断支持单/双位错误检测。 Arria V
Cyclone V
Intel Arria 10
Arria V
Cyclone V
Intel Arria 10
GPIO 将通用输入/输出 (GPIO) 设置为输出端口以驱动 HPS LED、并将 GPIO 设置为输入端口以驱动 HPS 按钮。 Arria V
Cyclone V
Intel Arria 10
Arria V
Cyclone V
Intel Arria 10
I2C 通过 I2 与 LCD 显示屏、EEPROM 内存通信,以及支持两个 I2C 模块之间的通信。 Arria V
Cyclone V
Intel Arria 10
Arria V
Cyclone V
Intel Arria 10
Quad SPI 使用通用块 I/O 模式、间接模式和 DMA 模式执行 4 SPI 读写。另外设置 MMU 和高速缓存。 Arria V
Cyclone V
Arria V
Cyclone V
SD/MMC 初始化 SD/MMC 卡,并使用块 I/O 功能执行读写。 Arria V
Cyclone V
Arria V
Cyclone V
Timer 将计时器用于 free-running、one-shot 和 watchdog 模式。执行全球计时器测量。 Arria V
Cyclone V
Intel Arria 10
Arria V
Cyclone V
Intel Arria 10
Unhosted 将 UART 用于 printf 输出,而非 semihosting。另外展示如何通过 SD 卡启动裸机程序。 Arria V
Cyclone V
Arria V
Cyclone V
SPI 在 FPGA 结构连接的两个 SPI 模块之间进行通信。 Arria V
Cyclone V
Intel Arria 10
Arria V
Cyclone V
Intel Arria 10

请参阅 Intel FPGA 维基的 Cyclone V QSPI XIP 示例设计页面,获取有关如何通过 QSPI 闪存运行裸机应用的完整说明。

请参考应用注释 709“启动示例”章节,查看有关启动 Cyclone V SoC 裸机应用的示例:

  • SD/MMC
  • QSPI
  • FPGA

轻轻一点即可获得帮助!支持中心提供从培训课程到设计示例和论坛的各种在线技术资源,在设计流程的每一步为您提供专业指导。

知识库提供大量支持解决方案、参考文章、错误消息和故障排除指南,完全可搜索。

英特尔 FPGA 论坛是支持英特尔 FPGA 用户相互合作的社区网站。查看“嵌入式设计套件 (EDS)”和“SoC 讨论”部分。使用搜索引擎查找相关材料。欢迎大家随时更新和提供材料。

My Intel 账户可用来提交服务申请以获得有关特定主题的帮助。还可以用于注册培训课程和访问其他资源。要求首先注册登记。

开始进行裸机开发之前,建议您参加以下基础培训课程。

资源 类型 培养的技能
基于 ARM 的 SoC 的软件设计流程 免费的 27 分钟在线课程
  • 介绍 SoC 嵌入式开发套件 (EDS) 提供的软件开发工具
  • 介绍 HPSCreate(来自硬件软件传递文件的第二阶段启动加载程序)的启动流程
  • 使用 SoC EDS 和硬件库创建裸机或操作系统特定的应用
  • 选择一个在 ARM 处理器上运行的操作系统
  • 执行 FPGA 自适应 SoC 调试
SoC 裸机编程与硬件库 免费的 28 分钟在线课程
  • 使用 SoC EDS 中的工具开发裸机程序
  • 使用硬件库的特性开发低级软件
  • 了解可用于调试裸机应用的 SoC EDS 特性
面向基于 ARM 的 SoC 开发软件 8 小时讲师授课/虚拟课程
  • 介绍从硬件到软件的文件传递
  • 介绍 HPS 启动顺序和启动场景的各个阶段
  • 创建第二阶段启动加载程序
  • 使用英特尔硬件库编写裸机应用
  • 开始了解面向 ARM 处理器的各种操作系统
  • 使用 DS-5 Development Studio 执行 FPGA 自适应软件调试

SoC EDS 用户指南是一份描述全部英特尔 SoC FPGA EDS 工具和组件的基本文档。我们强烈建议您查看以下与裸机开发相关的部分:

SoC EDS 部分 说明
简介 概述和硬件-软件开发流程。
安装 如何安装英特尔 SoC FPGA EDS 和 ARM DS-5 英特尔 SoC FPGA 版本。
许可 英特尔 SoC FPGA EDS 的许可选项以及如何安装许可。
嵌入式命令 Shell 如何启动 shell 以及如何使用它访问其他英特尔 SoC FPGA EDS 工具。
ARM DS-5 英特尔 SoC FPGA 版本 基本操作,如启动 ARM DS-5 英特尔 SoC FPGA 版本、裸机项目管理和调试。
硬件库 HWLIB 概述以及如何获取英特尔 SoC FPGA EDS 安装中的 Doxygen 信息。
裸机编译器 有关英特尔 SoC FPGA EDS 中两个裸机编译器 ARMCC 和 GCC 的概述。

英特尔 FPGA 维基上的SoC EDS 入门指南是一套帮助您轻松掌握英特尔 SoC FPGA EDS 的基本说明。

指南 说明
开发板设置入门 设置英特尔 SoC 开发板。
运行工具入门 运行英特尔 SoC FPGA EDS 提供的某些工具。
基础裸机开发入门 导入、编译与调试提供的 Hello World 裸机应用示例。
HWLIB 裸机开发入门

提供完整的示例,以展示如何:

  • 导入示例项目(可用于 Cyclone V、Arria V 和英特尔 Arria 10 设备,支持 GCC 和 ARMCC 编译器)
  • 构建相同的应用
  • 运行来自 ARM DS-5 英特尔 SoC FPGA 版本的启动加载程序
  • 配置来自 ARM DS-5 英特尔 SoC FPGA 版本的 FPGA
  • 调试应用
  • 执行程序跟踪
  • 执行交叉触发
自动创建一个裸机 HWLIB 项目 通过脚本创建一个基于裸机 HWLIB 的完整项目。
手动创建一个裸机 HWLIB 项目 手动创建一个基于 HWLIB 的裸机项目。
Cyclone V HWLIB FPGA 裸机示例 配置 FPGA 并使用 HWLIB 通过 HPS 实施软 IP 控制。

技术参考手册

技术参考手册包含详细的硬件描述,如所有外设的行为、基地址、中断信号映射和控制/状态寄存器。

SoC 文档页面

SoC 文档页面支持您一站式便捷访问所有相关的 SoC 文档,如技术参考手册、数据表和应用注释。

更多资源

资源 说明
SoC FPGA EDS 下载 下载 SoC FPGA EDS。
英特尔 FPGA 开发套件 查看所有可用的 FPGA 开发套件。单击左侧导航窗格中的 SoC 系列套件,以查看支持 SoC FPGA 的开发板。
SoC FPGA 设计示例 访问各种设计示例。单击左侧导航窗格中的 SoC 设计示例,以查看面向 SoC FPGA 的示例。
英特尔 FPGA 培训课程 获取整套英特尔 FPGA 培训课程。选择左侧导航窗格中的软件开发,然后搜索“SoC”,以查找与 SoC FPGA 相关的特定课程。您也可以选择任何其他相关主题。
英特尔 FPGA 培训目录 访问完整的英特尔 FPGA 培训目录。搜索“SoC”,以查找与 SoC FPGA 相关的特定课程。您也可以选择任何其他相关主题。
英特尔 SoC FPGA EDS 概述 查看英特尔 SoC FPGA EDS 的概述,包括最新版的新特性、版本说明和版本历史。
SoC FPGA 生态系统 获得各种 SoC FPGA 相关资源的链接,如操作系统、开发工具、IP 核和开发板。
英特尔 FPGA 工程师对话视频 获取英特尔 FPGA 工程师创建的 200 多个视频。某些视频是通用视频,某些视频和 SoC FPGA 产品相关。
英特尔 FPGA 维基 从社区中获得关于英特尔 FPGA、技术、工具及其使用的知识。该网站是一个分享文章与项目的动态媒介,也是一个展示宣传材料和设计示例的平台。使用搜索引擎查找相关材料。欢迎大家随时更新和提供材料。
英特尔 FPGA 论坛 通过社区网站与其他英特尔 FPGA 用户协作。请参阅嵌入式设计套件 (EDS)SoC 讨论部分。使用搜索引擎查找相关材料。欢迎大家随时更新和提供材料。