1.5.1. 操作命令
复位Quad SPI Flash
命令 | 代码(十六进制) | 命令长度 7 | 响应长度7 | 描述 | |||
---|---|---|---|---|---|---|---|
NOOP | 0 | 0 | 0 | 发送OK状态响应。 | |||
GET_IDCODE | 10 | 0 | 1 | 响应包含一个自变量,即器件的JTAG IDCODE。 | |||
GET_CHIPID | 12 | 0 | 2 | 响应包含64位CHIPID值,该值以最不重要的字为首。 | |||
GET_USERCODE | 13 | 0 | 1 | 该响应包含一个自变量(即,32-bit JTAG USERCODE),配置比特流将该代码写入器件。 | |||
GET_VOLTAGE | 18 | 1 | n8 | GET_VOLTAGE命令有一个信号自变量,它是指定要读取的通道的位掩码。Bit 0指定channel 0,bit 1指定channel 1,依此类推。 该响应包含位掩码中设置的每个位的one-word自变量。返回的电压是一个无符号定点数,二进制小数点以下16位。例如,a voltage of 0.75V的电压返回0x0000C000。9 10 |
|||
GET_TEMPERATURE | 19 | 1 | n 11 | GET_TEMPERATURE命令返回内核架构的温度或者您指定的收发器通道位置。
对于 Intel® Stratix® 10器件,请使用sensor_req自变量指定位置。sensor_req包含以下字段:
对于 英特尔Agilex® 7器件,使用sensor_req自变量指定位置。sensor_req包含以下字段:
返回温度是一个有符号的固定值,二进制小数点以下8位。例如,温度10°C返回0x00000A00。温度-1.5°C返回0xFFFFFE80。 如果位掩码指定了一个无效位置Location,则命令返回一个错误码,该代码是0x80000000 -0x800000FF范围中的任意值。 对于 Intel® Stratix® 10器件,请参阅 Intel® Stratix® 10模拟到数据转换器用户指南中的温度传感器通道和位置小节了解关于传感器位置的信息。 对于 英特尔Agilex® 7器件,请参阅 英特尔Agilex® 7电源管理用户指南了解有关局部内置式温度传感器的更多信息。 |
|||
RSU_IMAGE_UPDATE | 5C | 2 | 0 | 从数据源(可以是工厂或者应用程序映像)出发重新配置。 该命令采用一个可选的64位自变量,并用其指定flash存储器中的重配置数据地址。将该自变量发送到IP时,您首先发送位[31:0],然后发送位[63:32]。如果您不提供此自变量,则假定其值为0。
一旦器件开始处理该命令,就会返回响应header以响应FIFO,然后再继续重新配置该器件。请确保host Pc或host控制器停止为其它中断服务,并专注于读取响应header,以指示命令成功完成。否则,一旦开始重新配置过程,host PC 或者host控制器可能无法接收到响应。 一旦器件继续重新配置,外部host和FPGA之间的连接会丢失。如果在设计中使用了PCIe,就需要重新枚举PCIe连接。
重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
|
|||
RSU_GET_SPT | 5A | 0 | 4 | RSU_GET_SPT为RSU使用的两个子分区列表(SPT0和SPT1)检索quad SPI flash位置。 4-word(四字)响应包含以下信息: |
|||
字 | 名称 | 描述 | |||||
0 | SPT0[63:32] | quad SPI flash中的SPT0地址。 | |||||
1 | SPT0[31:0] | ||||||
2 | SPT1[63:32] | quad SPI flash中的SPT1地址。 | |||||
3 | SPT1[31:0] | ||||||
CONFIG_STATUS | 4 | 0 | 6 | 报告上次重配置的状态。您可以使用此命令检查配置期间和配置后的配置状态。响应包含以下信息: |
|||
字 | 汇总 | 描述 | |||||
0 | 状态 | 描述最近的配置相关的错误。如果没有配置错误时则返回0。
该错误字段有2个字段:
请参阅Mailbox Client Intel® FPGA IP用户指南中的Appendix: CONFIG_STATUS and RSU_STATUS Error Code Descriptions了解更多信息。 |
|||||
1 | Quartus版本 |
对于 Intel® Stratix® 10器件: 英特尔 Quartus Prime软件版本19.4或更新中适用,字段显示:
对于 英特尔Agilex® 7器件:英特尔 Quartus Prime软件版本19.4到21.2中适用,该字段显示:
适用于英特尔 Quartus Prime软件21.3或更新版本,Quartus版本显示:
例如,在英特尔 Quartus Prime软件版本21.3.1中,以下值表示Quartus主要发布和小规模发布版本号,以及Quartus版本更新号:
|
|||||
2 | 管脚状态 |
|
|||||
3 | 软核功能状态(soft function status) | 包含每个软核功能的值,即便没有对SDM管脚分配功能。
|
|||||
4 | 错误位置 | 包含错误位置。如果没有错误则返回0。 | |||||
5 | 错误详情 | 包含关于错误的详细信息。如果没有错误则返回0。 | |||||
RSU_STATUS | 5B | 0 | 9 | 报告当前远程系统升级状态。您可以使用该命令来查看配置器件或者配置完成后的配置状态。该命令返回以下响应: | |||
字 | 汇总 | 描述 | |||||
0-1 | 当前映像 | 当前运行的应用程序映像的Flash存储器偏移量。 | |||||
2-3 | 失败映像 | 最高优先权失败应用程序映像的Flash存储偏移量。如果flash存储器中有多个可用映像,则存储第一个失败映像的值。全0值(all 0s)表示无失败映像。如果没有失败的映像,则状态信息的其余字的remainder剩余部分不存储有效信息。
注: nCONFIG上的上升沿,用于从ASx4进行重新配置,不会清楚该字段。仅当Mailbox Client接收到新的RSU_IMAGE_UPDATE命令并从失败映射的更新映像成功配置后才会更新关于失败映像的信息。
|
|||||
4 | 状态 | 失败映像的错误代码。
该错误的字段有两个部分:
如果无错误则返回值0。请参阅Mailbox Client Intel® FPGA IP用户指南中的附录:CONFIG_STATUS和RSU_STATUS 错误代码描述了解更多信息。 |
|||||
5 | 版本 | RSU接口版本和错误源。 请参阅硬核处理器系统远程系统更新用户指南中的RSU状态和错误代码部分了解更多信息。 |
|||||
6 | 错误位置 | 存储失败映像的错误位置。如果无错误则返回值0。 | |||||
7 | 错误详情 | 存储失败映像的错误详情。如果无错误则返回值0。 | |||||
8 | 当前映像重试计数器 | 针对当前映射尝试的重试次数的计数。计数器起初为0。第一次重试后计数器设置为1,第二次重试后计数器设置为2。 在您的英特尔 Quartus Prime Settings File (.qsf)中指定重试的最大次数。该命令是:set_global_assignment -name RSU_MAX_RETRY_COUNT 3。MAX_RETRY计数器的有效值为1-3。实际可用重试次数为MAX_RETRY -1 该字段添加于英特尔 Quartus Prime Pro Edition软件版本19.3中。 |
|||||
RSU_NOTIFY | 5D | 1 | 0 |
清除RSU_STATUS响应中所有错误的信息并复位重试计数器。one-word自变量具有如下字段:
该命令在英特尔 Quartus Prime Pro Edition软件19.3版本之前不可用。 |
|||
QSPI_OPEN | 32 | 0 | 0 | 请求对quad SPI的专属访问。您可以在任何其他QSPI请求前发布该请求。如果quad SPI未被使用并且SDM未配置器件,则SDM接受请求。如果SDM获得访问权限则返回OK。接收到OK响应后,发布QSPI_SET_CS命令以选择flash器件。 SDM将专属访问权限授予使用该mailbox的client客户端。其他client不可访问quad SPI,直到有效client客户端使用QSPI_CLOSE命令放弃该访问权限。 使用SDM_IO管脚访问QSPI flash存储器器件仅适用于AS x4配置方案,JTAG配置和针对AS x4配置编译的设计。对于Avalon流传输接口 ( Avalon® ST) 配置方案,您必须将QSPI flash存储器与GPIO管脚连接起来。 默认情况下,在包含HPS的设计中,无法通过任何mailbox client IP访问quad SPI flash存储器器件,除非您在HPS软件配置中禁用QSPI。
重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
|
|||
QSPI_CLOSE | 33 | 0 | 0 | 关闭对quad SPI接口的专属访问。
重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
|
|||
QSPI_SET_CS | 34 | 1 | 0 | 通过片选线指定其中一个连接的quad SPI器件。按照以下描述选用一个one-word自变量:
注: 英特尔Agilex® 7或 Intel® Stratix® 10支持一个AS x4 flash存储器件用于从与nCSO[0]连接的quad SPI器件进行AS配置。一旦器件进入用户模式,您最多可以使用4个具有Mailbox Client IP的AS x4 flash存储器或者HPS作为数据存储。Mailbox Client IP或HPS可以使用nCSO[3:0]来访问quad SPI器件。
在 Intel® Stratix® 10器件中的AS x4配置方案期间,该命令为可选。片选线(chip select line)遵循最后执行的QSPI_SET_CS命令或者在AS x4配置后默认遵循nCSO[0]命令。 在 英特尔Agilex® 7器件中的AS x4配置方案期间,每个QSPI_OPEN命令后都需要此命令。 JTAG配置方案期间,每个QSPI_OPEN命令后都需要该命令。
重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
|
|||
QSPI_READ | 3A | 2 | N | 读取连接的quad SPI器件。最大传输大小为4 kilobytes (KB)或1024个字。
取两个自变量:
对于部分成功的读取,QSPI_READ可能会错误地返回OK状态。
注: 在器件配置进行中,您无法运行QSPI_READ命令。
重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
|
|||
QSPI_WRITE | 39 | 2+N | 0 | 将数据写入quad SPI器件。最大传输大小为4 kilobytes (KB)或1024个字。
取三个自变量:
要为写入准备存储空间,请先使用QSPI_ERASE命令在发布该命令。
注: 在器件配置进行中,您无法运行QSPI_WRITE命令。
重要: 重新复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明进行。
|
|||
QSPI_ERASE | 38 | 2 | 0 | 擦除quad SPI器件的4/32/64 KB扇区。取两个自变量:
重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
|
|||
QSPI_READ_DEVICE_REG | 35 | 2 | N | 从quad SPI器件读取寄存器。最大读取为8个字节。取两个自变量:
成功读取后返回OK响应代码,随后是从器件读取来的数据。读数据返回为4字节的倍数。如果要读取的字节不是4字节的精确倍数,则用4字节的倍数填充,直到下一个字边界且填充的位值为零。
重要: 复位quad SPI时,您必须遵循复位Quad SPI Flash中指定的说明。
|
|||
QSPI_WRITE_DEVICE_REG | 36 | 2+N | 0 | 写入quad SPI的寄存器。最多写入8个字节。取3个自变量:
要执行扇区擦除或子扇区擦除,您必须按最高有效字节(MSB)到最低有效字节(LSB)的顺序指定串行flash地址,如下所示。 要使用QSPI_WRITE_DEVICE_REG command命令擦除位于地址0x04FF0000的Micron 2 gigabit (Gb) flash存储器,请以MSB到LSB顺序写入该flash地址,如下所示: Header: 0x00003036 Opcode: 0x000000DC 要写入的字节数:0x00000004 Flash 地址:0x0000FF04 成功写入会返回OK响应代码。该命令填充不是4字节倍数的数据直到下一个字的边界。该命令以0填充数据。
重要: 复位quad SPI后,您必须遵循复位Quad SPI Flash中指定的说明。
|
|||
QSPI_SEND_DEVICE_OP | 37 | 1 | 0 | 向quad SPI发送命令操作码。取一个自变量:
成功发送命令会返回OK响应码。
重要: 复位quad SPI后,您必须遵循复位Quad SPI Flash中指定的说明。
|
|||
QSPI_READ_SHA | 6E | 2 | 16/12/8 | 指示固件读取从flash控制器来的数据并使用三个Secure Hashing Algorithms (SHA)中的其中一个来计算其哈希值。可将返回的哈希值与之前使用相同算法得到的哈希值进行比较来。从而确定flash内容的一致性。 该命令取两个32位字作为自变量。 Word 0:
Word 1:
响应长度因命令中选择的SHA变体而有所不同。
注: 仅 英特尔Agilex® 7器件支持该命令。
|
|||
GET_CONFIGURATION_TIME | 65 | 0 | 2 | 返回配置网络控制时钟的64位周期计数,最低有效位排在首位。计数值除以配置网络控制时钟频率可提供配置时间的估计值。配置网络时钟的操作频率取决于英特尔 Quartus Prime中的时钟源设置配置。该命令可与任何支持的配置方案一起使用。 通常,配置周期计数由低32位捕获。固件不太可能返回64位周期计数。如果一旦出现该情况,您必须连接两个32位字来获得总周期计数值。 例如: 返回的响应:0x007C27EE = 8136686个周期。 配置控制时钟频率:200 MHz 配置时间:(8136686/200000000) × 1000 = 40.68 ms
注: 仅 英特尔Agilex® 7器件支持该命令
|
|||
配置时钟源 | 配置网络控制时钟频率 | ||||||
外部振荡器(OSC_CLK_1) | 250 MHz | ||||||
内部振荡器 | 170 MHz到230 MHz | ||||||
READ_SEU_ERROR | 3C | 0 |
|
当检测到SEU错误时,错误信息被存储在错误消息队列中。此命令提供了一种检查队列并从中删除条目的方法。 在Device and Pin Options窗口中设置SEU_ERROR管脚,您可能会观察到错误消息队列中存在一个或多个错误时,SEU_ERROR 信号保持高电平。当错误消息队列为空时,该信号变低。 当错误消息队列中没有错误时,响应为一个字长。 当队列中存在一个或多个错误时,队列中的第一个错误将被删除并在后续字中返回。此命令每次从队列中返回一个元素。
注: 如果您的设计包含Advanced SEU Detection Intel® FPGA IP,则请勿使用该mailbox命令。
|
|||
字 | 名称 | 描述 | |||||
0 | Error Count | Bit[31:0]:Error Message Queue中的错误总数。 | |||||
1 | Sector Address | 请参阅相应的SEU缓解用户指南关于位的描述。 | |||||
2 | Error Data | ||||||
QSPI_READ_SHA512 | 6E | 2 | 16 | 该命令采用两个32位字作为自变量。 Word 0:
Word 1:
响应长度返回16个字。
注: 仅 Intel® Stratix® 10器件支持该命令。
|
|||
STATUS_VR | 713 | 1 | 1 | 提供电源管理固件 (PMF) 和电压调节器 (VR) 数据的接口。此命令适用于启用了VID且同时启用了VR轮询和PMF的器件。
采用如下所述的输入自变量之一:
英特尔 Quartus Prime Pro Edition软件版本23.3或更高版本中有该命令。
注: 仅 英特尔Agilex® 7器件支持该命令。
|
对于CONFIG_STATUS和RSU_STATUS主要和次要错误码的描述,请参阅附录:CONFIG_STATUS和RSU_STATUS错误码描述。