PolarFire® SoC 上电启动流程

PolarFire Family Power-Up and Resets User Guide

 PolarFire SoC MSS Technical Reference Manual

 

PolarFire® SoC Software Development and Tool Flow User Guide

 

The MSS Core Complex can be booted in one of four modes. The following table lists the MSS pre-boot options, which can be configured and programmed into the sNVM. The boot mode is defined by the user parameter U_MSS_BOOTMODE[1:0]. Additional boot configuration data is mode-dependent and is defined by the user parameter U_MSS_BOOTCFG (see Table 3, page 4 and Table 5, page 6).

MSS Core Complex 可在四种模式中的任意一种下启动。下表列出了可在 sNVM 中配置并烧录的 MSS 预启动选项。启动模式由用户参数 U_MSS_BOOTMODE[1:0] 定义。其余的启动配置数据则取决于所选模式,并由用户参数 U_MSS_BOOTCFG 定义(参见第 4 页的表 3 和第 6 页的表 5)。 

 

查了半天,也没找到  U_MSS_BOOTMODE 在哪里配置? 问题解决是在 softconsole → run → Extern tools , 来自文档:PolarFire® SoC Software Development and Tool Flow User Guide

操作记录:

 PolarFire® SoC softconsole fpgenprog.exe 路径错误 导致 无法更改 启动模式 - 所长 - 博客园

 

image

 

image

 

 

 

 

linux 启动方式

image

 

 

这份名为 《Microchip PolarFire FPGA and PolarFire SoC FPGA Power-Up and Reset User Guide》 的文档详细阐述了 PolarFire 芯片从上电到稳定运行的整个过程。以下是其核心内容的总结,并特别突出了与 SoC 启动相关的细节。

文档核心内容总结

该文档主要描述了 PolarFire FPGA 和 PolarFire SoC FPGA 的电源序列要求、各种复位类型以及整个器件从断电到进入用户模式的完整启动流程。

 

1. 电源序列 (Power-Up Sequencing)

这是启动的物理基础,要求非常严格。

  • 核心电压 (VCC):

    • PolarFire SoC: 要求 VCC 和 VCCPLL 必须先于所有其他电源上电。

    • PolarFire FPGA: 要求相对宽松,VCC 可以在其他电源之前、之后或同时上电。

  • 辅助电压 (VCCAUX, VCCIOS, etc.): 必须在核心电压 VCC 稳定后上电。

  • 电池备份电压 (VBAT_BKUPS): 如果使用,必须在 VCCAUX 之前或同时上电。

  • 关键点: 不正确的上电顺序可能导致器件无法启动或损坏。建议使用 Microchip 推荐的电源管理芯片(PMIC)来实现正确的时序。

 

2. 复位类型 (Reset Types)

文档定义了多种复位信号,它们在不同层级和条件下触发:

  • 上电复位 (Power-On Reset, POR):

    • 由电源监控电路产生,是所有复位信号的根源。

    • 当检测到核心电压 VCC 达到有效电平时,POR 信号会被释放。

  • 硬件复位 (HW_RST):

    • 由外部 HRESET_N 引脚触发,产生一个全局复位。

  • ** fabric 复位 (FABRIC_POR_N)**:

    • 源自 POR 和 HW_RST,用于复位 FPGA 架构逻辑。

  • 系统控制器复位 (SYS_CONTROLLER_RST):

    • SoC 特有。复位整个微控制器子系统(MSS),包括 E51 和 U54 核心。

  • 调试复位 (DEBUG_RST):

    • 由调试器通过 JTAG 发起,用于复位调试逻辑。

 

3. 启动流程 (Boot Flow)

这是文档中最关键的部分,详细描述了复位释放后芯片内部的操作序列。

Phase 0: 电源稳定与 POR

  • 电源按要求序列上电并稳定。

  • 芯片内部的 POR 电路监控电压,一旦 VCC 有效,POR 信号被释放。

Phase 1: 硬件初始化与启动源选择

  • 器件解除复位,开始内部初始化。

  • 采样配置引脚 (MODE[4:0]): 器件根据这些引脚的电平状态,锁定启动源(如 SPI Flash, eNVM, SD卡等)和其他关键配置(如调试是否启用、安全启动模式等)。此采样仅在 POR 之后进行一次。

 

Phase 2: BootROM 执行 (Stage 0)

  • SoC 特有。E51 作为启动核心(Boot Hart)开始执行固化在芯片内部 ROM 中的代码。

  • 主要任务:

    1. 初始化: 配置 MSS 的基础环境(如指令缓存)。

    2. 认证: 如果启用了安全启动(Fabric Authentication),它会验证 FPGA 比特流和 FSBL 代码的完整性和真实性。

    3. 加载 FSBL: 从选定的启动源中加载第一级引导程序(FSBL) 的镜像到芯片的紧耦合存储器(LIM)或 L2 Scratchpad 中。

    4. 跳转: 验证通过后,将执行权交给 FSBL。

 

Phase 3: 用户模式启动 (Stage 1 and Beyond)

  • FSBL 执行: E51 核心执行用户提供的 FSBL 代码。

    • 初始化关键硬件: 如系统时钟 PLL、DDR 内存控制器、必要的外设(如 UART)。

    • 加载后续镜像: 从非易失性存储器加载更大的第二级引导程序(SSBL)或裸机应用程序到已初始化的 DDR 内存中。

    • 唤醒应用核心: 通过写寄存器,释放 U54 核心的复位,使其从指定的地址(在 DDR 中)开始执行。

    • 跳转: E51 最终跳转到 DDR 中的主应用程序代码。

  • 应用程序执行: 所有核心(E51 和 U54s)开始在 DDR 中运行用户代码(裸机或操作系统)。

 

总结与关键要点

  1. 电源是根基: 严格的电源序列是成功启动的绝对前提,错误的序列会导致无法预知的行为。

  2. 配置采样是关键一刻: 器件在 POR 释放后立即采样 MODE[4:0] 等引脚,并锁定配置。一旦进入用户模式,这些配置就无法再更改,除非再次发生 POR。

  3. BootROM 是信任根: SoC 的启动流程由硬件和不可更改的 BootROM 固件主导。它建立了最初的安全信任链(如果启用)并加载了用户的第一段代码(FSBL)。

  4. E51 是启动核心: 在整个启动过程中,E51 核心是唯一从上电开始就活动的处理器核心,它负责初始化环境并唤醒其他 U54 核心。

  5. 清晰的阶段划分: 启动流程清晰地分为:

    • 硬件控制阶段 (Phase 0-2): 由 POR, 配置采样, BootROM 执行组成。

    • 软件控制阶段 (Phase 3): 从 FSBL 开始,后续所有代码均由用户提供。

这份文档是理解 PolarFire SoC 底层硬件行为、排查启动失败问题和设计可靠电源电路的权威参考。

posted on 2025-09-02 13:47  所长  阅读(44)  评论(0)    收藏  举报

导航