PolarFire SOC Auto Update 和 IAP 文档阅读(八) 编程建议
7. 编程建议
为确保编程成功,建议遵循以下指导原则:
- 在对器件进行编程前,先对比特流(bitstream) 进行验证。
- 编程期间不要断言复位引脚(DEVRST_N),因为这可能会破坏器件配置。
- 根据所选的编程模式,使用正确的配置和编程接口。
- (在 JTAG 编程前)根据设计要求配置器件的I/O 状态。有关更多信息,请参阅《编程期间的 I/O 状态》(I/O States During Programming)。
- 对于外部 SPI 闪存的串行数据输出(SDO) 和串行数据输入(SDI) 走线,在使用 MPF050T 器件时,建议设置约 20Ω 的串联阻抗,以确保自动编程(auto programming) 和自动更新(auto update) 功能正常工作。
8. 编程期间的掉电
掉电(Brownout)是指电源电压降至推荐值以下时出现的一种情况。若编程期间发生掉电,器件会自动从编程失败中恢复(默认情况下自动恢复功能已启用),并使用存储在外部 SPI 闪存中的有效编程镜像对器件进行编程。
不建议仅对安全非易失性存储器(sNVM)组件或仅对增强型非易失性存储器(eNVM)组件的比特流执行在应用编程(IAP)。对这类比特流执行在应用编程(IAP)期间若发生电源故障,可能导致器件编程错误。
为避免此问题,应使用同时包含FPGA 架构组件(FPGA fabric component) 的比特流执行在应用编程(IAP)—— 该组件可确保掉电发生时,自动恢复功能得以执行。
不建议对安全设置执行在应用编程(IAP)/ 自动更新(Auto-update)编程,以防止因掉电事件导致意外器件锁定的风险。
9. 归零
这两个器件系列均具备内置功能,可根据用户设置对任意或所有配置存储元素执行归零(清除并验证)操作。内部易失性存储器(如本地静态随机存取存储器(LSRAM)、微静态随机存取存储器(μSRAM)及系统控制器随机存取存储器)会被清除并验证。
归零完成后,可通过JTAG/SPI 从机指令获取归零证书(zeroization certificate),以确认归零过程成功。有关归零的更多信息,请参阅《PolarFire FPGA 与 PolarFire SoC FPGA 安全用户指南》(PolarFire FPGA and PolarFire SoC FPGA Security User Guide)
10 外部 SPI 闪存编程
要执行在应用编程(IAP)或自动更新(Auto Update),需配备外部 SPI 闪存。该 SPI 闪存与系统控制器的 SPI(串行外设接口)连接,并存储编程镜像。
SPI 闪存被划分为多个扇区(sector)。第 1 个扇区(扇区 0)中的 1KB 存储空间用作SPI 目录(SPI directory),其中包含编程镜像索引(描述符指针,descriptor pointers)。闪存的剩余存储空间用于存储编程镜像。
补充技术术语说明:
- Sector(扇区):闪存的基本存储分区单位,不同容量的 SPI 闪存扇区大小可能不同(常见有 4KB、64KB 等),扇区是擦除、写入操作的最小单元之一,便于对闪存空间进行分区管理。
- SPI directory(SPI 目录):存储在 SPI 闪存固定位置(此处为扇区 0 的 1KB 空间)的 “索引区”,其核心作用是记录后续存储的各编程镜像的位置、版本、大小等关键信息,方便系统控制器快速定位并读取所需的编程镜像。
- Descriptor pointers(描述符指针):指向编程镜像 “描述符” 的地址指针。描述符中包含编程镜像的具体信息(如镜像类型、校验值、存储起始地址、长度),通过描述符指针,系统可精准找到并调用对应的编程镜像,是实现 IAP 和自动更新的关键索引机制。
10.1. 支持的 SPI 闪存器件
不同厂商的 SPI 闪存器件均实现了用于读取操作的标准指令集。系统控制器固件会执行以下指令来识别寻址模式(3 字节或 4 字节):
读取串行闪存探测参数(READ SERIAL FLASH DISCOVERY PARAMETER,指令码 5AH)
系统控制器支持通过FlashPro6 编程器和Libero 软件执行读写操作。但对于以下类型的 SPI 闪存器件:符合 JESD216 标准、支持 3 字节或 4 字节寻址,且支持 0BH 快速读取指令的器件,其仅支持由系统控制器执行的读取操作,且受特定存储容量限制。有关更多信息,请参阅《FlashPro6 SPI 闪存支持说明》(FlashPro6 SPI Flash Support)。
重要提示:
FlashPro5 编程器仅支持美光(Micron)型号为MT25QL01G的器件的读写操作,且该支持仅限于该闪存的前 128MB 空间。
10.2. SPI 索引
SPI 索引 是镜像描述符指针(image descriptor pointers) 的集合,这些指针指向编程镜像的起始位置。每个指针占用 4 个字节;若 SPI 闪存器件仅支持 3 字节寻址模式,则仅使用前 3 个字节。
为使在应用编程(IAP)恢复功能在上电时选择 “镜像 0(image 0)”,紧邻 “镜像 0 指针” 的那个编程镜像指针必须为空(空插槽,empty slot);否则,系统将选择自动更新(auto update)。下图展示了包含编程镜像描述符指针的 SPI 闪存目录:
图 10-1. SPI 闪存目录(Figure 10-1. SPI Flash Directory)

SPI 目录包含编程镜像的起始地址。SPI 目录占用外部 SPI 闪存扇区 0 中的 1KB 存储空间。
例如,若外部 SPI 闪存包含三个镜像:黄金镜像(golden image)、更新镜像(update image)和在应用编程(IAP)镜像,则这些镜像的存储起始地址分别为:0x400、0xA00000 和 0x1400000。
若使用 Libero 配置工具对 SPI 闪存进行编程镜像烧写,Libero 配置工具会自动完成 SPI 目录的编程。若用户应用程序对外部 SPI 闪存进行编程镜像烧写,则应用程序必须将每个镜像的起始地址写入 SPI 目录,且从 SPI 闪存的 0 地址开始写入,如下列图所示。

未完待续
浙公网安备 33010602011771号