Intel Stratix 10配置用户指南

ID 683762
日期 12/16/2019
Public
文档目录

5.4.2.5. 应用映像布局

应用程序映像包括SDM固件和配置数据。配置数据最多包括四个section。SDM固件包含指向这些section的指针。下表显示了应用程序映像中section的数量和指针的位置。

默认情况下,开始于地址偏移0x1FC0的应用程序映像*.rpd的前16个字节为0。但是,您可以使用这16个字节来存储Version ID以标识应用程序映像。提供此Version ID可让您稍后验证存储在闪存中的图像。

表 44.  应用程序映像section指针
偏移(offset) 大小(以字节为单位) 说明
0x1F00 4 section的数量
   
0x1F08 8 第一个section的地址
0x1F10 8 第二个section的地址
0x1F18 8 第三个section的地址
0x1F20 8 第四个section的地址
   
0x1FFC 4 CRC32 of 0x1000 to 0x1FFB

section指针必须与闪存中FPGA映像的实际位置匹配。有两个选项可满足此要求:

  • 您可以生成应用程序映像以匹配quad SPI闪存中的实际位置。因为不同的系统可能具有不同的更新集,所以此选项可能不适用。
  • 您可以生成应用程序映像,就好像位于地址零一样,然后更新指针以匹配实际位置。
以下步骤将指针从一个对INITIAL_ADDRESS创建的应用程序映像更新成一个对NEW_ADDRESS创建应用程序映像:
  1. 创建应用程序映像,目标为INITIAL_ADDRESS
  2. 从应用程序映像的offset 0xF100读取32-bit值来确定section的数量。
  3. 对于<s>= 1 to number_of_sections:
    1. section_pointer = 从0xF100 + (s * 8)读取的64-bit section pointer
    2. section_pointer减去INITIAL_ADDRESS
    3. NEW_ADDRESS加到section_pointer
    4. 存储更新的section_pointer
  4. 重新计算地址0x1000 to 0x1FFB的CRC32。在offset 0x1FFC上存储新值。必须按照以下步骤在数据副本上计算CRC32值:
    1. 交换每个字节的比特,以使这些比特以相反的顺序出现并计算CRC。
    2. 交换计算得出的CRC32值的字节以相反的顺序出现。
    3. 交换CRC32值的每个字节中的比特。
    4. 将CRC32值写入闪存。

使用HPS管理RSU时,U-Boot和LIBRSU客户端均实现上述过程,以将目标地址为零的应用程序映像重新定位到实际目标插槽地址中。

注: 出厂更新映像具有不同的格式。有关生成出厂更新映像的正确过程,请参考生成出厂更新映像主题。