英特尔® SoC FPGA 裸机开发人员中心
帮助您入门并了解在英特尔 SoC FPGAs上进行裸机开发的资源。
裸机开发采用软件运行时环境,软件运行时环境并不使用操作系统 (OS) 或实时操作系统 (RTOS)。在裸机配置中,可以使用 SoC FPGA 的硬处理系统 (HPS)。英特尔提供由上层应用程序编程接口 (API) 和底层宏组成的硬件库 (HWLIB),使您能够使用大多数 HPS 外设。
您可以通过以下链接访问各种资源,以便开始使用英特尔® SoC FPGA 进行裸机开发。如果您是第一次使用,我们建议您按顺序阅读这些资源。
设计注意事项
什么是裸机?
- 裸机指处理器系统的实际寄存器接口和硬件功能。
- 裸机开发采用不使用 OS 或 RTOS 的软件运行时环境。
- 在裸机配置中,可以使用 SoC FPGA 的 HPS。英特尔提供由上层 API 和底层宏组成的 HWLIB,使您能够使用大多数 HPS 外设。
为什么选择裸机?
- 使用裸机开发方法的优势如下:
- 对硬件进行绝对控制
- 提升效率
- 最大程度地减小尺寸(闪存和内存占用率)
- 不依赖于其他源代码或库
- 更易于正式验证正确性并执行代码覆盖率分析
- 选择裸机开发的其它原因如下:
- 需要执行开发板初启,一次只针对一个外设
- 需要重用已进行了裸机开发的现有遗留代码
- 缺乏 OS 或 RTOS 相关经验
裸机注意事项
要为 HPS 开发裸机应用程序,您必须熟悉运行时功能的开发,确保您的应用程序有效地利用 CPU 子系统中的可用资源。必要条件的示例如下:
- 深入了解硬件平台
- 由于典型裸机应用程序仅使用一个核心,如果您希望充分利用 CPU 子系统,应该能够开发运行时功能,以便管理核心与缓存子系统之间的进程
- 开发管理和调度进程、处理进程间通信以及同步应用程序内事件的功能
对于您计划的项目,如果没有足够的时间来熟悉以上几点,建议您考虑使用商用 Linux* 或 RTOS 解决方案。
备选解决方案 |
优势 |
说明 |
---|---|---|
Linux | 网络、存储、多任务处理、进程间通信、同步等。 | 无需成为 Linux 内核专家,即可在您的项目中使用 Linux。例如,您可以编写 Linux 用户空间应用程序并直接访问 FPGA 知识产权 (IP) 寄存器,与裸机应用程序的运行方式类似。 |
RTOS | 多核处理、多任务处理、进程间通信和同步,具体取决于 RTOS。 | 简单的 RTOS 易于使用。它与使用已实施的 C 函数库类似,无需自行编写这些函数。 |
Bootloader | 引导时间更短,并且可访问 Bootloader 中已实施的功能,如大容量存储和网络 | 可以使用的 Bootloader 包括: |
设计流程图
裸机开发的典型设计流程图如下所示:
流程汇总如下:
- 开始硬件设计,其中包括:
- HPS 配置:时钟设置、引脚复用和配置、DDR 设置、连接的外设等。
- FPGA 结构内容:在 FPGA 中实例化的 IP 核、FPGA 引脚、内存控制器和锁相环 (PLL) 配置
- 硬件设计使用英特尔® FPGA Complete Design Suite 工具编译,这些工具生成以下文件:
- SOF 文件:用于通过各种方法(外部编程器、外部闪存、HPS Bootloader,甚至 HPS 应用程序)配置 FPGA 结构
- 交接文件:包含第二阶段 Bootloader 生成器创建 Bootloader 所需的信息,Bootloader 将在 HPS 上使用
- SOPCINFO 文件:可用于自动创建带有 FPGA 软 IP 地址的头文件
- SVD 文件:包含有关 FPGA 软 IP 寄存器的信息,以便 ARM* Development Studio 5* (DS-5*) 英特尔 SoC FPGA 版调试器在调试期间以用户友好的格式显示这些寄存器
- 用户借助 HWLIB 编写自定义源代码,并可使用 FPGA IP 地址头文件
- 用户借助裸机编译器编译裸机应用程序
- 用户使用 ARM DS-5 英特尔 SoC FPGA 版调试裸机应用程序
安装英特尔 SoC FPGA EDS
- 英特尔 SoC FPGA EDS 提供所有 SoC FPGA 开发(包括裸机)所需的必备工具。请参阅 嵌入式软件和工具 了解更多信息,请参阅 嵌入式软件和工具 英特尔® SoC FPGA 。
- 从 FPGA下载中心下载英特尔® SoC FPGA Embedded Development Suite (SoC EDS) 专业版。
- 安装过程和安装 英特尔 SoC FPGA EDS 的工具。
- 如果 ARM DS-5 英特尔 SoC FPGA 版用于调试和/或跟踪裸机应用程序,您需要获取许可证。许可证通常包含在您购买的英特尔 SoC FPGA 开发套件中。请参阅英特尔® SoC FPGA Embedded Development Suite (SoC EDS) 用户指南 许可设置说明。
选择构建工具
- 英特尔 SoC FPGA EDS 提供以下裸机构建工具:
- 英特尔 SoC FPGA 版 Mentor CodeSourcery – 基于 GCC,无需许可证
- ARM Compiler 5 – 许可证包含在英特尔 SoC FPGA EDS 许可证中
- 可以使用针对 ARM 平台的其他构建工具套件 - 转到 英特尔® FPGA 和 英特尔® SoC FPGA 设备的生态系统。
- 入门示例项目适用于英特尔 SoC FPGA EDS 中包含的 GCC 和 ARMCC 编译器。
选择调试和跟踪工具
- 英特尔 SoC FPGA EDS 包含 ARM DS-5 英特尔 SoC FPGA 版,此版本对裸机程序的调试和跟踪提供全面支持 – 需要许可证
- 入门示例项目使用 ARM DS-5 英特尔 SoC FPGA 版进行调试和跟踪
实施入门应用程序
- 入门示例应用程序适用于 Cyclone V、Arria V 和英特尔® Arria® 10 设备,支持 ARMCC 和 GCC 编译器。
- 示例应用程序实施以下任务
- HPS SDRAM、MMU、缓存
- HPS 定时器、中断
- HPS 至 FPGA 桥接
- FPGA 软 IP:SysID
- FPGA 中断
- 在 SoCEDS 和 ARM Development Studio 主题 Rocketboards.org 上查找所需的文档和下载。
3.创建您自己的项目
裸机项目类型
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 项目文件,并进行所有必要的编译设置
- 创建一个简单的 main.c 文件,此文件仅打印一条 'hello world' 消息
- 导入所有相关的 HWLIB 文件
- 创建包含 FPGA 结构外设基地址的 system.h 文件(需要首先安装英特尔® Quartus® Prime 软件,否则将跳过此步骤)
- 创建用于调试应用程序的调试配置
- 创建用于运行 Bootloader 的调试配置 [可选]
- 创建用于从 ARM DS-5 英特尔 SoC FPGA 版配置 FPGA 结构的外部工具启动器 [可选]
- 创建用于在必要时重新生成 system.h 文件的外部工具启动器 [可选]
请注意,“入门”一节中所述的所有入门项目都是使用此方法创建的。
创建项目的替代方法
您也可以使用以下替代方法创建您自己的项目:
- 选项 1:手动创建 Makefile,然后参考 Arm* Development Studio* for 英特尔® SoC FPGA Edition 查找在 ARM DS-5 英特尔 SoC FPGA 版中将项目创建为 基于 Makefile 的项目 的建议。手动创建 Makefile 的流程超出了本指南的范围,需要您熟悉所有的构建工具及其选项。如果需要 Makefile,推荐方法是使用提供的脚本创建 Makefile。
- 选项 2:手动从头创建一个基于插件的项目。这包括手动复制提供的脚本创建项目时遵循的程序。请注意,此脚本提供了更多功能,是创建项目的推荐方法。此选项仅供参考。
- 选项 3:从现有项目开始,并根据您的需求进行修改。此选项特别适用于较短的测试和试验,但不建议使用此方法。
4.示例
裸机应用程序入门
表 A. 针对英特尔 SoC 开发板,实施:
- HPS SDRAM
- HPS MMU 和缓存
- HPS 定时器,带中断功能
- FPGA IP:SysID 和 PIO – 按钮、双列直插式封装 (DIP) 开关和 LED
- FPGA 中断
设备 |
编译器 |
示例 |
---|---|---|
Cyclone® V |
ARMCC |
|
Cyclone® V |
GCC |
|
Arria® V |
ARMCC |
|
Arria® V |
GCC |
|
英特尔® Arria® 10 |
ARMCC |
|
英特尔® Arria® 10 |
GCC |
英特尔 SoC FPGA EDS 中包含的裸机示例
表 B. 面向英特尔 SoC 开发板,可从 <SoC FPGA Installation Folder>\embedded\examples\software\ 获得:
示例名称 |
说明 |
设备 |
编译器 |
---|---|---|---|
HardwareLib-16550 |
使用 UART 和中断 API 实施控制台应用程序。 |
Cyclone® V |
ARMCC |
HardwareLib-ECCL2 |
设置 MMU 表并显示 L2 缓存的 ECC 功能。 |
Cyclone® V |
ARMCC |
HardwareLib-FPGA |
使用直接内存存取 (DMA) 配置 FPGA HPS,打开 H2F 桥,并与 FPGA 结构内的 GPIO 软 IP 组件通信。 |
Cyclone® V |
ARMCC |
HardwareLib-SPI |
与外置开发板上的 SPI EEPROM 通信。 |
Cyclone® V |
ARMCC |
HardwareLib-Timer |
设置定时器和中断。 |
Cyclone® V |
ARMCC |
HelloWorld-Baremetal | 使用半主机打印 "hello world" 消息。 | Cyclone® V Arria® V 英特尔® Arria® 10 |
ARMCC GCC |
其它裸机示例
表 C.面向英特尔 SoC 开发板,可参阅 “设计示例”页面 ,均使用 GCC 编译器:
示例 |
说明 |
设备(项目文件) |
设备(自述文件) |
---|---|---|---|
DMA |
对 DMA 进行初始化,执行内存间传输和零拷贝传输。 |
||
ECC |
为片上 RAM、SD/MMC、四路串行外设接口 (SPI)、DMA 和 L2 缓存设置和启用 ECC。注入单位/双位错误,并为单位/双位错误检测设置中断功能。 |
||
GPIO |
将通用输入/输出 (GPIO) 接口设置为驱动 HPS LED 的输出端口,并将 GPIO 设置为 HPS 按钮的输入端口。 |
||
I2C |
通过 I2C 与 LCD 屏幕、EEPROM 内存通信,并在两个 I2C 模块之间进行通信。 |
||
四核 SPI |
使用通用块 I/O 模式、间接模式和 DMA 模式对四路 SPI 执行读写操作。还设置 MMU 和缓存。 |
||
SD/MMC |
对 SD/MMC 卡进行初始化,使用块 I/O 功能进行读写操作。 |
||
计时器 |
在自由运行、单次、看门狗模式下使用定时器。执行定时器全局测量。 |
||
未托管 | 使用 UART(而非半主机)进行 printf 输出。还展示了如何从 SD 卡启动裸机程序。 | ||
SPI | 在通过 FPGA 结构连接的两个 SPI 模块之间进行通信。 | ||
HPS 至 FPGA 桥接 | 实施向 FPGA 结构公开的硬处理器系统 (HPS) 的内存映射接口。通过使用 HPS 的各种端口写入和读取 HPS 内存,从而执行内存测试,并测量数据移动性能。 | 示例 |
如何在 Cyclone V FPGA 上实施就地执行 (XIP)
有关如何从 QSPI 闪存运行裸机应用程序的完整说明,请参阅英特尔 FPGA Wiki 上的“Cyclone V QSPI XIP 示例设计”页面。
如何在 Cyclone V FPGA 上启动裸机应用程序
有关如何从以下位置启动 Cyclone V SoC 裸机应用程序的示例,请参阅“应用说明 709”的“启动示例”章节:
- SD/MMC
- QSPI
- FPGA
知识库
知识库提供大量支持解决方案、参考文章、错误消息和故障排除指南,并且可以全面搜索。
英特尔社区
英特尔社区是一个社区网站,为英特尔 FPGA 用户之间的协作提供支持。请查看“嵌入式设计套件 (EDS)”和“SoC 讨论”部分。使用搜索引擎查找相关材料。我们也鼓励您进行更新和投稿。
培训课程
您在开始裸机开发之前可以参加的基础培训课程如下。
资源 |
类型 |
培养的技能 |
---|---|---|
27 分钟免费在线课程 |
|
|
28 分钟的免费在线课程 |
|
|
8 小时的讲师指导式课程/虚拟课堂课程 |
|
学习 -英特尔 SoC FPGA EDS 用户指南
SoC EDS 用户指南是介绍所有英特尔 SoC FPGA EDS 工具和组件的基础性文档。我们强烈建议您阅读以下与裸机开发相关的章节:
SoC EDS 章节 |
说明 |
---|---|
概述和硬件与软件开发流程。 |
|
如何安装英特尔 SoC FPGA EDS 和 ARM DS-5 英特尔 SoC FPGA 版。 |
|
英特尔 SoC FPGA EDS 的许可选项以及如何安装许可证。 |
|
如何启动外壳并用它访问其它的英特尔 SoC FPGA EDS 工具。 |
|
基本操作,如启动 ARM DS-5 英特尔 SoC FPGA 版、裸机项目管理和调试。 |
|
HWLIB 概述以及如何获取英特尔 SoC FPGA EDS 安装文件中包含的 Doxygen 信息。 |
|
英特尔 SoC FPGA EDS 中包含的两种裸机编译器(ARMCC 和 GCC)的概述。 |
学习 - 英特尔 SoC FPGA EDS 入门指南
英特尔 FPGA Wiki 上的 SoC EDS 入门指南是一系列基本说明,可帮助您轻松完成英特尔 SoC FPGA EDS 入门。
其它文档和资源
技术参考手册
技术参考手册包含硬件的详细说明,包括所有外设的行为、基地址、中断映射和控制/状态寄存器。
SoC 文档页面
SoC 文档页面提供了一个统一位置,可以访问所有相关 SoC 文档,如技术参考手册、数据表和应用说明。
更多资源
资源 |
说明 |
---|---|
下载 SoC FPGA EDS。 |
|
请参阅所有可用的 FPGA 开发套件。单击左侧导航窗格上的 SoC 系列套件,查看支持 SoC FPGA 的开发板。 |
|
访问各种设计示例。单击左侧导航窗格上的 SoC 设计示例,查看针对 SoC FPGA 的示例。 |
|
访问整个英特尔 FPGA 培训课程。选择左侧导航窗格上的软件开发,然后搜索 "SoC",查找特定 SoC FPGA 相关课程。也可以选择任何其它感兴趣的领域。 |
|
访问整个英特尔 FPGA 培训目录。搜索 "SoC",查找特定 SoC FPGA 相关课程。也可以选择任何其它感兴趣的课程。 |
|
查看英特尔 SoC FPGA EDS 概述,包括最新版本中的新功能、发布说明和版本历史。 |
|
获取各种 SoC FPGA 相关资源(如操作系统、开发工具、IP 核和开发板)的链接。 |
|
访问由英特尔 FPGA 工程师创建的 200 多条视频。其中一些视频是通用的,其它视频与 SoC FPGA 产品相关。 |
|
通过此社区网站与其他英特尔 FPGA 用户协作。请查看嵌入式设计套件 (EDS) 和 SoC 讨论部分。使用搜索引擎查找相关材料。我们鼓励所有用户进行更新和投稿。 |