5.12 Firmware Image Download command
Firmware Image Download命令用于下载全部或部分image,以便将来更新控制器。当Admin Submission Queue 或 I/O Submission Queues 上的其他命令未完成时,可能会提交Firmware Image Download命令。Firmware Image Download命令将心的image(全部或部分)下载到控制器。
image可以由多个片段构成,这些片段通过单独的Firmware Image Download命令单独下载。每个Firmware Image Download命令都包含一个 Dword Offset 和 Number of Dwords,用于指定一个 dword 范围。主机软件应确保image片段没有重叠的Dword范围,并且 NUMD 字段和 OFST 字段满足 FWUG 字段中指示的对齐和粒度要求(参见Figure 1)。固件部分可能会乱序提交给控制器。更新Boot Partition 时,主机软件应按顺序提交image部分。如果范围重叠,控制器可能会返回 Overlapping Range 错误。
Figure 1: Identify – Identify Controller Data Structure
Bits | Description |
---|---|
。。。 | 。。。 |
319 | Firmware Update Granularity (FWUG): 该字段指示固件映像下载命令正在更新的固件映像的粒度和对齐要求(请参阅第5.12节)。如果固件映像下载命令中的NUMD字段或OFST字段中指定的值不符合此粒度和对齐要求,则固件更新可能会以命令中的无效字段的状态中止。为了与主机软件实现最广泛的互操作性,建议控制器将该值设置为尽可能低的值。该值以4个KiB单位报告(例如,1h对应于4个KiB,2h对应于8个KiB)。值0h表示没有提供关于粒度的信息。FFh的值表示没有限制(即,数据字中的任何粒度和对齐都是允许)。 |
新firmware image不会作为 Firmware Image Download命令的一部分激活。有关固件更新过程的详细信息,请参阅第 8.1 节。固件更新过程不会修改 Boot Partition 的内容。有关Boot Partition更新过程的详细信息,请参阅第 8.13.2 节。
主机软件不应与 Boot Partitions 和/或firmware image的更新命令序列重叠(请参阅第 3.11 节和第 8.2.2 节)。下载 image 后,主机软件会在下载另一个 image 之前发出Firmware Commit交命令。在完成 Firmware Commit 命令后处理第一个 Firmware Image Download 命令将导致控制器丢弃下载的image所有剩余部分(如果有)。如果在firmware download和Firmware Commit命令完成之间发生Reset,则控制器应丢弃所有image下载的部分(如果有)。
Firmware Image Download命令使用 Data Pointer、Command Dword 10 和Command Dword 11 字段。保留所有其他命令特定字段。
Figure 180: Firmware Image Download – Data Pointer
Bits | Description |
---|---|
127:00 | Data Pointer (DPTR): 此字段指定应从中传输数据的位置。该字段的定义见图106。 |
Figure 181: Firmware Image Download – Command Dword 10
Bits | Description |
---|---|
31:00 | Number of Dwords (NUMD): 此字段指定为这部分固件传输的dwords的数目,这是一个0based 值。如果此字段中指定的值不满足FWUG字段指示的要求,则firmware update可能会中止,状态码为 “ Invalid Field in Command”。 |
Figure 182: Firmware Image Download – Command Dword 11
Bits | Description |
---|---|
31:00 | Offset (OFST): 此字段指定从正在下载到控制器的firmare image的开始偏移的dwords数目。当固件分块下载时,Offset用于构建完整的firmware image。与firmware image开头对应的片段为0h的Offset。如果此字段中指定的值不满足FWUG字段指示的要求,则Firmware update可能会失败,状态码为 “ Invalid Field in Command”。 |
5.12.1 Command Completion
完成 Firmware Image Download 命令后,控制器将完成队列条目发布到 Admin Completion Queue。Firmware Image Download 命令特定状态值在Figure 183 中定义。
Figure 183: Firmware Image Download – Command Specific Status Values
value | Description |
---|---|
14h | Overlapping Range: 如果firmware image具有重叠范围则会指示此错误。此错误可能表示下载的firmware image的粒度或对齐方式不符合Identify Controller Data Structure中的FWUG字段。 |