SoC FPGA Bootloader 开发人员中心
SoC FPGA Bootloader 开发人员中心提供了可用的 SoC Bootloader,包括主要特征、入门方法和其他资源。
Intel® SoC FPGA 使用 Bootloader 在硬核处理器系统 (HPS) 上加载和运行最终用户应用程序。最终用户应用程序可能是简单的裸机应用程序,也可能是复杂的操作系统,如 Linux* 操作系统。
此页面介绍了什么是 Bootloader,列出了可用的引导加载程序及其主要特征,说明了如何入门 Bootloader,并列出了其他一些资源。
1.什么是 Bootloader
Bootloader 定义
当 SoC 设备启动时,首先会运行一个名为 BootROM 的软件。出于多种原因,BootROM 具有以下受限功能:
- 需要装入片上 ROM,因此体积要小
- 更改费用高昂,因此必须要非常稳定,这意味着功能也相对较少
- 该软件不了解系统的配置方式,因此无法引导所有内容
而另一方面,最终用户应用程序通常较大,需要按最终用户的期望对系统进行配置,然后才能运行。
Bootloader 的工作是弥合 BootROM 和最终用户应用程序之间的鸿沟。
单阶段 Bootloader
典型 Bootloader 任务
- 配置引脚复用和引脚设置,如转换速率、电压和上拉/下拉
- 配置时钟树中的时钟
- 引导并校准 SDRAM
- 初始化闪存
- 配置 FPGA 结构
- 从闪存加载最终应用程序
- 将控制权传递给最终应用程序
除以上列出的功能外,Bootloader 还提供了以下高级功能,这些功能支持更加复杂的部署,同时让开发更加简便:
- 用于从云端引入最终用户应用程序的网络访问。
- 支持更加便捷地诊断问题的调试工具。
- 用于交互式命令的命令行界面。
- 运行框架的应用程序,利用此框架,Bootloader 可以加载、运行直至完成简单的最终用户应用程序。应用程序完成后,控制权将传回到 Bootloader。
多阶段 Boootloader
有时,Bootloader 流程可分为多个阶段,通常分为两个阶段。
对于 Cyclone® V SoC,BootROM 仅可加载一个最大 64 KB 的引导加载程序,因为在这个阶段中尚未启动 SDRAM。同样,对于英特尔® Arria® 10 个 SoC,BootROM 只能加载一个最大 256 KB 的 Bootloader。由于这些大小限制,无法实现诸如联网或复杂文件系统访问等高级功能。如果需要此类功能,Bootloader 的第一阶段可启动 SDRAM,然后加载具有更多功能的第二阶段。两阶段 Boootloader 是 Cyclone V SoC、Arria® V SoC 和Arria® 10 SoC 的默认选项。
基于 SDM 的设备的 Bootloader
对于英特尔® Stratix® 10 SoC、英特尔® Agilex 7 SoC 和英特尔® Agilex®® 5 SoC,通常使用两阶段 Bootloader。较小的第一阶段 Bootloader 是 FPGA 配置比特流的一部分,由安全设备管理器 (SDM) 加载到 HPS 片上 RAM,而较大的第二阶段 Bootloader 需要存储在 HPS 可访问的位置。
2.硬件交付
交付概述
所有英特尔 SoC FPGA 项目都以一个硬件项目开始,其中用户会输入影响 HPS 的各种系统设置。这些特性包括:
- 引脚复用
- 引脚设置
- SDRAM 设置
- 时钟设置
Bootloader 负责应用这些设置,而 Bootloader 接收这些设置的过程称为硬件到软件交付。
可采用多种形式进行此交付,这取决于具体的 Bootloader 和 SoC 设备家族。通常:
- 对于 Cyclone V 和 Arria V SoC,此交付是 XML 文件、二进制文件和源代码文件的组合,这些文件转换为源代码,然后编译至 Bootloader
- 对于英特尔 Arria 10 SoC,此交付包含在单个 XML 文件中,而此文件将转换为设备树文件并供 Bootloader 使用。
- 对于英特尔 Stratix 10 SoC、Intel Agilex 7 SoC 和 Intel Agilex 5 SoC,此交付信息是FPGA配置比特流的一部分
输入或更改交付信息的主要方法是在 Quartus Platform Designer 中进行编辑。
除了交付信息,Bootloader 还提供了各种设置,供用户通过以下方式进行选用:
- 编辑 Bootloader 源代码
- 使用设备树时编辑 Bootloader 设备树
Cyclone V Soc 和 Arria V SoC 交付
英特尔 Arria 10 SoC 交付
英特尔 Stratix 10 SoC、Intel Agilex 7 SoC 和 Intel Agilex 5 SoC 交付
3.可用 Bootloader
可用 Bootploader 的概述
下表列出了可用的 Bootloader、许可证类型、支持的 SoC 以及两阶段支持的可用性:
U-Boot
U-Boot 是一款业内广泛使用的 Bootloader,它提供了各种功能:
- 可选的第一阶段称为“SPL”,用于片上 RAM 有限的系统(例如 Cyclone V SoC 和 Arria V SoC)
- 联网功能
- 闪存支持
- 命令行界面
- 脚本编辑
- U-Boot 自定义应用
U-Boot 遵照通用公共许可 (GPL) 开发,因此向公开交付的产品添加的任何内容也必须予以公开。
U-Boot 源代码在 GitHub 网站的 U-Boot SoC FPGA 页面上提供。
通用 U-Boot 主页位于 Das U-Boot -- the Universal Boot Loader 网页。
ATF
ARM 可信固件 (ATF) 是 ARMv8-a 安全世界软件的参考实现,实现了各种 ARM 接口标准,如可信板启动要求 (TBBR) 和安全监视器呼叫 (SMC)。
ATF 依照 BSD 许可合作开发,这让开发和部署过程更加便捷。
ATF 英特尔 SoC FPGA端口的源代码可通过 https://github.com/altera-opensource/arm-trusted-firmware 访问。