Intel Stratix 10配置用户指南

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

5.6.5. 添加一个应用程序映像

按照下面步骤将一个应用程序映像添加到闪存中:

  1. 通过在Tcl Console窗口中运行 QSPI_OPEN QSPI_SET_CS命令设置对AS x4接口和闪存的独占访问。您现在可以独占访问AS x4接口和闪存,直到运行QSPI_CLOSE命令放弃访问权限。使用QSPI_WRITE命令将新应用程序映像写入闪存中。
  2. 或者,rsu1.tcl脚本包括program_flash函数,该函数将一个新应用程序映像编程到闪存中。执行以下命令:
    program_flash new_application_image.rpd 0x03FF0000 1024

    program_flash函数使用三个参数:

    1. 要写入闪存的.rpd文件。
    2. 起始地址。
    3. 每个QSPI_WRITE命令要写入的字数。QSPI_WRITE支持每条写指令最多1024个字。
    图 82. 编程新应用程序映像
    $ source rsu1.tcl
    /channels/local/top/master_1
    $ program_flash new_application_image.rpd 0x03ff0000 1024
    total number of words is 458752
    total number of page is 448
    total number of sector is 28
    reading rpd is completed
    start erasing flash
    erasing flash is completed
    start writing flash
    writing flash is completed

  3. 使用QSPI_WRITE命令将新的应用程序映像起始地址写入配置固件指针模块(CPB)中的新映像指针入口。开始写入前,要确保新的图像指针入口值为0xFFFFFFFF
    注: 编辑配置固件指针模块和子分区表时,必须更新两个副本(CBP0和CBP1)。请参考来了解关于配置固件指针模块的详细信息。
根据上述实例,CPB0和CPB1中的地址偏移0x20必须指向应用程序映像的起始地址。将新的应用程序映像的起始地址写入到下一个映像指针插槽前,下一个新映像指针插槽值必须为0xFFFFFFFF
表 45.  配置固件指针模块内容
CPB起始地址 + 0x20 内容
CPB0 + 0x20 = 0x002E4020 当前应用程序映像指针入口(最高优先级) 0x002F4000
CPB0 + 0x28 = 0x002E4028 下一个映像指针入口 0xFFFFFFFF
CPB1 + 0x20 = 0x002EC020 当前应用程序映像指针入口(最高优先级) 0x002F4000
CPB1 + 0x28 = 0x002EC028 下一个映像指针入口 0xFFFFFFFF
表 46.  配置固件指针模块内容
CPB起始地址 + 0x20 内容
CPB0 + 0x20 = 0x004A0020 当前应用程序映像指针入口(最高优先级) 0x004B0000
CPB0 + 0x28 = 0x004A0028 下一个映像指针入口 0xFFFFFFFF
CPB1 + 0x20 = 0x004A8020 当前应用程序映像指针入口(最高优先级) 0x004B0000
CPB1 + 0x28 = 0x002EC028 下一个映像指针入口 0xFFFFFFFF
您可以使用QSPI_read函数来验证新映像指针入口值是否为0xFFFFFFFFQSPI_read函数使用过两个参数:
  1. 起始地址
  2. 要读取的字数
图 83. 验证新映像指针入口值是否为0xFFFFFFFF
$ qspi_read 0x002e4020 1
0x002f4000
$ qspi_read 0x002e4028 1
0xffffffff
% qspi_read 0x002ec020 1
ISR is empty
0x002f40000
% qspi_read 0x002ec028 1
0xffffffff

您现在可以通过使用QSPI_write_one_word函数将新应用程序映像地址写入到下一个映像入口。QSPI_write_one_word函数使用两个参数:
  1. 地址
  2. 字的值
图 84. Writing an Address Pointer to the New Image Pointer Entry
% qspi_write_one_word 0x002e4028 0x03ff0000
% qspi_write_one_word 0x002ec028 0x03ff

您现在可以对下一个映像指针入口运行QSPI_read函数以确保是使用所需的新应用程序映像的起始地址写入的。

验证新映像指针的更新

% qspi_read 0x002e4028 1
0x03ff0000
% qspi_read 0x002ec028 1
0x03ff0000

通过置位nCONFIG管脚,主机软件现在使用新应用程序映像对 Intel® Stratix® 10 FPGA进行重配置。或者,您可以重启PCB。重配置后,检查当前映像地址。预期的地址应该为0x03ff0000。添加新映像后,您的应用程序映像列表包括最新添加的应用程序映像和旧的应用程序映像(现在成为次要映像)。最新添加的应用程序映像具有最高优先级。

注: 当远程系统更新主机加载应用程序映像时,决策固件以相反的顺序遍历映像指针入口。重启器件时新映像具有最高优先级。