PolarFire SOC Auto Update 和 IAP 文档阅读(二)

 文档来自:PolarFire FPGA and PolarFire SoC FPGA Programming User Guide

  PolarFire SOC Auto Update 和 IAP 文档阅读一 - 所长 - 博客园

PolarFire SOC Auto Update 和 IAP 文档阅读二 - 所长 - 博客园

PolarFire SOC Auto Update 和 IAP 文档阅读(三) AUTO UPDATE - 所长 - 博客园

PolarFire SOC Auto Update 和 IAP 文档阅读(四) IAP - 所长 - 博客园

PolarFire SOC Auto Update 和 IAP 文档阅读(五) AUTO recovery - 所长 - 博客园

 PolarFire SOC Auto Update 和 IAP 文档阅读(六) Back Level Protection - 所长 - 博客园

 

系统服务相关文档: PolarFire Family System Services User Guide 

 

3.3.2.3 系统服务请求(提问)

在 PolarFire FPGA 和 PolarFire SoC FPGA 两种器件中,发起系统服务请求的核心方式一致:向系统控制器(System Controller)传递一个 16 位的 “系统服务描述符”(16-bit system service descriptor),具体规则和配套机制如下:

1. 16 位系统服务描述符的功能划分

这个 16 位的描述符是 “请求指令的核心”,分为两部分明确分工:
  • 低 7 位:指定要执行的 “具体服务类型”(比如是比特流认证、IAP 编程还是自动更新);
  • 高 9 位:指定 “地址偏移”(用于定位后续数据交互的具体内存位置)。

2. 2KB 内部邮箱 RAM 的作用

器件内部有一块 2KB 大小的 “邮箱 RAM”(mailbox RAM),它相当于系统控制器与请求发起方(FPGA 架构用户逻辑或 SoC 的 MSS)之间的 “数据中转站”,主要用途有两个:
  • 传递 “服务输入数据”:发起方把服务所需的参数、配置等数据存到这里;
  • 存储 “服务输出结果”:系统控制器执行完服务后,把结果存到这里供发起方读取。
其中,“邮箱地址”(mailbox address)会对应一个 “服务专属的数据结构”—— 如果某个服务需要额外的输入参数,或要返回额外的输出信息,就通过这个数据结构在邮箱 RAM 中交互。

3. 服务完成后的反馈机制

当系统控制器完成服务后,会主动写入一个 “状态码”:
  • 若服务成功,写入 “成功完成码”;
  • 若服务失败(如数据错误、权限不足),写入 “错误码”(用于定位问题原因)。

4. 补充参考信息

  • 文中提到的 “系统服务请求描述符各比特位的具体定义”,可查看后续表格(原文 “the following table”);
  • 若需了解 “从 FPGA 架构(Fabric)侧读写邮箱 RAM 的通信细节”,可参考《PolarFire System Services SgCore User Guide》(PolarFire 系统服务 SgCore 用户指南)。PolarFire System Services Simulation User Guide

image

 3.3.2.4. Bitstream and IAP Image Authentication System Services

  出于安全性和可靠性考虑,编程比特流必须先经过认证和验证,然后才能对器件进行编程。比特流认证成功后,会阻止自动恢复(功能)。??
   在认证进行期间,PolarFire FPGA 中的架构用户逻辑(fabric user logic)以及 PolarFire SoC FPGA 中的 MSS 用户应用程序(MSS user application)会继续正常运行,但无法访问 SPI 闪存和系统服务。
   在使用自动更新(Auto update)或在应用编程(IAP)对器件进行编程前,用户应用程序可运行认证系统服务。

3.3.2.4.1. Bitstream Authentication System Service

  比特流认证系统服务会解析存储在 SPI 闪存中的比特流镜像,并验证该比特流的完整性。下表列出了比特流认证服务请求中的各个字段。

image

 

3.3.2.4.2. IAP Image Authentication System Service

IAP 镜像认证系统服务(IAP Image Authentication System Service)会执行两项核心操作:
  1. 解析存储在 SPI 闪存中的镜像(image);
  2. 验证该镜像的镜像描述符(image descriptor)、比特流(bitstream) 以及设计初始化数据(design initialization data) 这三部分的完整性(确保数据未被篡改或损坏)。
下表列出了 IAP 镜像认证服务请求中的各个字段,具体内容可参考:

image


表 3-11:IAP 镜像认证服务请求(Table 3-11. IAP Image Authentication Service Request)

3.3.2.4.3. Authentication Service Status Codes

若比特流认证(bitstream authentication)或 IAP 镜像认证(IAP image authentication)成功,系统会生成状态码 0;若这两种认证失败,则会生成一个 8 位的错误码(用于区分具体的失败原因,如数据篡改、格式错误等)。
 关于错误码的详细说明(如每个错误码对应的具体故障类型),可参考 “附录:错误码”(Appendix: Error Codes)部分

 

3.3.2.4.4. Usage of Authentication System Services   编程镜像组成与两类认证服务的核心区别

首先明确编程镜像(programming image) 的构成:它包含三部分内容 —— 镜像描述符(image descriptor)、比特流(bitstream),以及可选的设计初始化数据(optional design initialization data)。
在此基础上,两类认证系统服务的验证范围存在关键差异:
  • 比特流认证系统服务(bitstream authentication system service):仅能用于认证 “比特流” 这一部分,不涉及镜像描述符和可选的设计初始化数据。
  • IAP 镜像认证系统服务(IAP image authentication system service):可用于认证 “完整的编程镜像”,即同时覆盖镜像描述符、比特流,以及可选的设计初始化数据。
简单来说,前者是 “局部验证”(仅核心比特流),后者是 “全面验证”(整个编程镜像),用户可根据对数据安全性的需求选择对应服务。
 
 

错误code :

image

 

image

 

posted on 2025-09-25 11:08  所长  阅读(13)  评论(0)    收藏  举报

导航