Microchip UG0881 PolarFire SoC FPGA 启动和配置
保修单
Microsemi 对此处包含的信息或其产品和服务对任何特定目的的适用性不作任何保证、陈述或保证,Microsemi 也不承担因应用或使用任何产品或电路而产生的任何责任。 此处销售的产品和 Microsemi 销售的任何其他产品都经过有限测试,不应与关键任务设备或应用程序结合使用。 任何性能规格都被认为是可靠的,但未经验证,买方必须对产品进行并完成所有性能和其他测试,无论是单独测试还是与任何最终产品一起测试,或安装在任何最终产品中。 买方不得依赖 Microsemi 提供的任何数据和性能规格或参数。 买方有责任独立确定任何产品的适用性并对其进行测试和验证。 Microsemi 在此处提供的信息“按原样、原样”提供,存在所有错误,与此类信息相关的全部风险完全由买方承担。 Microsemi 不向任何一方明示或暗示授予任何专利权、许可或任何其他知识产权,无论是关于此类信息本身还是此类信息描述的任何内容。 本文档中提供的信息为美高森美所有,美高森美保留随时对本文档中的信息或任何产品和服务进行任何更改的权利,恕不另行通知。
关于Microsemi
Microsemi 是 Microchip Technology Inc.(纳斯达克代码:MCHP)的全资子公司,为航空航天和国防、通信、数据中心和工业市场提供全面的半导体和系统解决方案组合。 产品包括高性能和抗辐射模拟混合信号集成电路、FPGA、SoC和ASIC; 电源管理产品; 计时和同步设备和精确的时间解决方案,设定世界时间标准; 语音处理设备; 射频解决方案; 分立元件; 企业存储和通信解决方案、安全技术和可扩展的反tamp呃产品; 以太网解决方案; 以太网供电 IC 和中跨; 以及定制设计能力和服务。 了解更多信息 www.microsemi.com.
引导和配置
PolarFire SoC FPGA 使用高级上电电路确保在上电和复位时可靠上电。 在上电和复位时,PolarFire SoC FPGA 启动顺序遵循上电复位 (POR)、设备启动、设计初始化、微控制器子系统 (MSS) 预启动和 MSS 用户启动。 本文档介绍 MSS 预引导和 MSS 用户引导。 有关 POR、设备启动和设计初始化的信息,请参阅 UG0890:PolarFire SoC FPGA 上电和重置用户指南。
有关 MSS 功能的更多信息,请参阅 UG0880:PolarFire SoC MSS 用户指南。
启动顺序
当 PolarFire SoC FPGA 上电或复位时,启动序列开始。 它在处理器准备好执行应用程序时结束。 此启动顺序贯穿几个 stages 在它开始执行程序之前。
Boot-up过程中会执行一系列操作,包括硬件上电复位、外设初始化、内存初始化,以及将用户自定义应用程序从非易失性内存加载到易失性内存中执行。
下图显示了启动序列的不同阶段。
图 1 启动顺序
MSS 预引导
设计初始化成功完成后,MSS 预引导开始执行。 在完成所有正常的启动程序后,MSS 从复位状态释放。 系统控制器管理设备的编程、初始化和配置。 如果编程设备配置为系统控制器挂起模式,则不会发生 MSS 预引导。
初始化的 MSS 预引导阶段由系统控制器固件协调,尽管它可能利用 MSS 核心复合体中的 E51 来执行预引导序列的某些部分。
在 MSS 预引导期间会发生以下事件tage:
- MSS 嵌入式非易失性存储器 (eNVM) 的上电
- 初始化与 MSS Core Complex L2 缓存相关的冗余修复
- 用户引导代码的身份验证(如果启用了用户安全引导选项)
- 将操作 MSS 移交给用户启动代码
MSS Core Complex 可以以四种模式之一启动。 下表列出了 MSS 预引导选项,这些选项可以配置并编程到 sNVM 中。 引导模式由用户参数 U_MSS_BOOTMODE[1:0] 定义。 其他引导配置数据取决于模式,由用户参数 U_MSS_BOOTCFG 定义(参见第 3 页表 4 和第 5 页表 6)。
表1 • MSS 核心复杂启动模式
U_MSS_BOOTMODE[1:0] | 模式 | 描述 |
0 | 怠速启动 | 如果未配置 MSS,则 MSS Core Complex 从引导 ROM 引导 |
1 | 非安全启动 | MSS Core Complex 直接从 U_MSS_BOOTADDR 定义的地址启动 |
2 | 用户安全启动 | MSS Core Complex 从 sNVM 启动 |
3 | 出厂安全启动 | MSS Core Complex 使用工厂安全启动协议启动 |
选择引导选项作为 Libero 设计流程的一部分。 改变模式只能通过生成新的FPGA编程来实现 file.
图 2 • MSS 预引导流程
空闲启动
如果未配置 MSS(例如ample,空白设备),然后 MSS 核心复合体执行引导 ROM 程序,该程序将所有处理器保持在无限循环中,直到调试器连接到目标。 引导向量寄存器保持它们的值,直到设备被重置或新的引导模式配置被编程。 对于已配置的设备,可以使用
U_MSS_BOOTMODE=0 Libero 配置器中的引导选项。
笔记: 在此模式下,不使用 U_MSS_BOOTCFG。
下图显示了空闲启动流程。
图 3 • 空闲启动流程
非安全启动
在此模式下,MSS Core Complex 从指定的 eNVM 地址执行,无需身份验证。 它提供了最快的启动选项,但没有代码映像的身份验证。 地址可以通过在 Libero Configurator 中设置 U_MSS_BOOTADDR 来指定。 此模式还可用于通过 FIC 从任何 FPGA 架构内存资源启动。 这种模式是使用
U_MSS_BOOTMODE=1 引导选项。
MSS 核心复合体通过 U_MSS_BOOTCFG(如下表所列)定义的引导向量从复位状态释放。
表2 • U_MSS_BOOTCFG 在非安全启动模式下的使用 1
偏移量(字节) |
大小(字节) |
姓名 |
描述 |
0 | 4 | 引导EC0 | E51 的引导向量 |
4 | 4 | 引导EC1 | U540 的引导向量 |
8 | 4 | 引导EC2 | U541 的引导向量 |
16 | 4 | 引导EC3 | U542 的引导向量 |
20 | 4 | 引导EC4 | U543 的引导向量 |
下图显示了非安全启动流程。
图 4 • 非安全启动流程
用户安全启动
此模式允许用户实现自己的自定义安全启动,并且用户安全启动代码放置在 sNVM 中。 sNVM 是一个 56 KB 的非易失性内存,可以通过内置的物理不可克隆功能 (PUF) 进行保护。 这种引导方法被认为是安全的,因为标记为 ROM 的 sNVM 页面是不可变的。 上电时,系统控制器将用户安全引导代码从 sNVM 复制到 E51 监视器内核的数据紧密集成内存 (DTIM)。 E51 开始执行用户安全启动代码。
如果用户安全引导代码的大小大于 DTIM 的大小,则用户需要将引导代码拆分为两个 stages。 sNVM 可能包含下一个 stage 用户开机顺序,可以进行下次开机的鉴权tage 使用用户认证/解密算法。
如果使用经过身份验证或加密的页面,则使用相同的 USK 密钥(即,
U_MSS_BOOT_SNVM_USK) 必须用于所有经过身份验证/加密的页面。
如果身份验证失败,则可以将 MSS Core Complex 置于重置状态,并将 BOOT_FAIL tamp可以举起呃旗帜。 此模式是使用 U_MSS_BOOTMODE=2 引导选项实现的。
表3 • U_MSS_BOOTCFG 在用户安全引导中的使用
偏移量(字节) | 大小(字节) | 姓名 | 描述 |
0 | 1 | U_MSS_BOOT_SNVM_PAGE | SNVM 中的起始页 |
1 | 3 | 预订的 | 用于对齐 |
4 | 12 | U_MSS_BOOT_SNVM_USK | 对于经过身份验证/加密的页面 |
下图显示了用户安全启动流程。
图 5 • 用户安全启动流程
出厂安全启动
在此模式下,系统控制器从 eNVM 读取安全启动映像证书 (SBIC) 并验证 SBIC。 验证成功后,系统控制器从其专用的安全内存区域复制工厂安全启动代码,并将其加载到 E51 监控器内核的 DTIM 中。 默认安全启动使用存储在 eNVM 中的 SBIC 对 eNVM 映像执行签名检查。 如果没有错误被报告,复位被释放到 MSS 核心复合体。 如果报告了错误,则 MSS 核心复合体将置于复位状态,并且 BOOT_FAIL tamp呃旗帜升起。 然后,系统控制器在amper 标志,它向 FPGA 架构发出信号以供用户操作。 此模式是使用 U_MSS_BOOTMODE=3 引导选项实现的。
SBIC 包含受保护二进制 blob 的地址、大小、哈希和椭圆曲线数字签名算法 (ECDSA) 签名。 ECDSA 提供了一种使用椭圆曲线密码术的数字签名算法的变体。 它还包含每个硬件的复位向量
系统中的线程/内核/处理器内核 (Hart)。
表4 • 安全启动映像证书 (SBIC)
抵消 | 大小(字节) | 价值 | 描述 |
0 | 4 | 图片地址 | MSS 内存映射中 UBL 的地址 |
4 | 4 | 影像联动 | UBL 的大小(以字节为单位) |
8 | 4 | 引导EC0 | E51 的 UBL 中的引导向量 |
12 | 4 | 引导EC1 | UBL 中用于 U540 的引导向量 |
16 | 4 | 引导EC2 | UBL 中用于 U541 的引导向量 |
20 | 4 | 引导EC3 | UBL 中用于 U542 的引导向量 |
24 | 4 | 引导EC4 | UBL 中用于 U543 的引导向量 |
28 | 1 | 选项[7:0] | SBIC期权 |
28 | 3 | 预订的 | |
32 | 8 | 版本 | SBIC/图像版本 |
40 | 16 | 直接连接网络 | 可选的 DSN 绑定 |
56 | 48 | H | UBL 图像 SHA-384 哈希 |
104 | 104 | 代码设计 | DER 编码的 ECDSA 签名 |
全部的 | 208 | 字节 |
直接连接网络
如果 DSN 字段不为零,则将其与设备自己的序列号进行比较。 如果比较失败,则 boot_fail tamper 标志被设置并且身份验证被中止。
版本
如果 SBIC 撤销由 U_MSS_REVOCATION_ENABLE 启用,则 SBIC 将被拒绝,除非 VERSION 的值大于或等于撤销阈值。
SBIC 撤销选项
如果 SBIC 撤销由 U_MSS_REVOCATION_ENABLE 启用且 OPTIONS[0] 为“1”,则所有低于 VERSION 的 SBIC 版本在完成 SBIC 身份验证后将被撤销。 撤销阈值保持在新值,直到它再次由具有 OPTIONS[0] = '1' 和更高 VERSION 字段的未来 SBIC 增加。 撤销阈值只能使用此机制增加,并且只能通过比特流重置。
当动态更新撤销阈值时,使用用于密码的冗余存储方案来存储阈值,使得设备启动期间的电源故障不会导致后续设备启动失败。 如果撤销阈值更新失败,则保证阈值为新值或旧值。
表5 • U_MSS_BOOTCFG 在工厂引导加载程序模式下的使用
偏移量(字节) |
大小(字节) |
姓名 |
描述 |
0 | 4 | U_MSS_SBIC_地址 | MSS地址空间中SBIC的地址 |
4 | 4 | U_MSS_REVOCATION_ENABLE | 如果非零则启用 SBIC 撤销 |
下图显示了工厂安全启动流程。
图 6 • 工厂安全启动流程
MSS 用户引导
当控制权从系统控制器交给 MSS 核心复合体时,MSS 用户启动就会发生。 MSS 预引导成功后,系统控制器将重置释放到 MSS 核心复合体。 可以通过以下方式之一启动 MSS:
- 裸机应用
- Linux应用
- AMP 应用
裸机应用
可以使用 SoftConsole 工具开发 PolarFire SoC 的裸机应用程序。 此工具提供输出 file.hex 形式的 s,可用于 Libero 流程以包含到编程比特流中 file. 可以使用相同的工具使用 J 调试 Bare Metal 应用程序TAG
界面。
下图显示了 SoftConsole Bare Metal 应用程序,它有五个 harts(内核),包括 E51 Monitor 内核。
图 7 • SoftConsole 项目
Linux应用
本节介绍在所有 U54 内核上运行的 Linux 的启动顺序。
一个典型的引导过程包括三个tages. 第一个tage 引导加载程序 (FSBL) 从片上引导闪存 (eNVM) 执行。 FSBL加载第二个stage 引导加载程序 (SSBL) 从引导设备到外部 RAM 或缓存。 引导设备可以是 eNVM 或嵌入式内存微控制器 (eMMC) 或外部 SPI 闪存。 SSBL 将 Linux 操作系统从引导设备加载到外部 RAM。 在第三个tage, Linux 从外部RAM 执行。
下图显示了 Linux Boot Process 流程。
图 8 • 典型的 Linux 引导流程
FSBL、设备树、Linux 和 YOCTO 构建的详细信息,如何构建和配置 Linux 将在本文档的未来版本中提供。
AMP 应用
Libero MSS Configurator 的详细说明以及如何使用 SoftConsole 调试多处理器应用程序将在本文档的未来版本中提供。
不同的启动源
将在本文档的未来版本中更新。
引导配置
将在本文档的未来版本中更新。
缩略词
本文档中使用了以下缩写词。
表1 • 缩略词列表
首字母缩略词扩展
- AMP 非对称多处理
- DTIM 数据紧密集成存储器(也称为 SRAM)
- 椭圆曲线数字图像分析 椭圆曲线数字签名算法
- 易非易失性存储器 嵌入式非易失性存储器
- FSBL 第一tage 引导装载程序
- 哈特 硬件线程/核心/处理器核心
- 卫星发射系统 微处理器子系统
- 电源复位 上电复位
- PUF 物理上不可克隆的函数
- 只读存储器 只读存储器
- SCB 系统控制器桥
- sNVM 安全非易失性存储器
修订历史
修订历史描述了文档中实施的更改。 更改按修订列出,从当前出版物开始。
修订版 2.0
以下是此次修订中所做更改的摘要。
- 有关 Factory Secure Boot 的信息已更新。
- 有关裸机应用程序的信息已更新。
修订版 1.0
本文档的首次发布。
微半导体总部
一个企业,Aliso Viejo,
CA 92656美国
在美国境内: +1 800-713-4113
美国境外: +1 949-380-6100
销售量: +1 949-380-6136
传真: +1 949-215-4996
电子邮件: sales.support@microsemi.com
www.microsemi.com
©2020 Microsemi,Microchip Technology Inc. 的全资子公司。保留所有权利。 Microsemi 和 Microsemi 徽标是 Microsemi Corporation 的注册商标。 所有其他商标和服务标志均为其各自所有者的财产。
文件/资源
![]() |
Microchip UG0881 PolarFire SoC FPGA 启动和配置 [pdf] 用户指南 UG0881 PolarFire SoC FPGA 启动和配置,UG0881,PolarFire SoC FPGA 启动和配置,启动和配置 |