持久内存与安全机制 - 第358页
NVME2.0协议解读 1 min read

持久内存与安全机制 - 第358页

Blog Author

我们继续深入分析 NVM Express® Base Specification Revision 2.0b 第 347 页中关于 Boot Partition 的写入机制与保护机制的规范内容。


🧭 章节:8.2.2 – Boot Partition 写入流程(Writing to a Boot Partition)


🧱 写入流程总览

主机通过 Firmware Image DownloadFirmware Commit 命令完成对 Boot Partition 的更新。具体流程如下:


Step 1:下载 Boot Partition 镜像

  • 主机发送 Firmware Image Download 命令,将 Boot Partition 镜像内容上传到控制器。
  • 镜像可被分段上传,每个段落的位置通过命令中的 offset 字段指定。
  • 注意:主机应从 Boot Partition 开始地址起顺序发送所有段内容,不能跳过或乱序。

Step 2:解锁 Boot Partition(可选,但推荐)

  • 解锁机制定义于 8.2.3 节,目的是允许 Boot Partition 写入。
  • 若未解锁,控制器可能拒绝写入并返回 Boot Partition Write Prohibited 错误。

Step 3:提交写入请求

  • 主机发送 Firmware Commit 命令,指定:
  • Commit Action = 110b:表示要将下载的镜像写入指定的 Boot Partition。
  • 指定 Boot Partition ID 字段来标明是写入 0号分区还是 1号分区。

Step 4:控制器处理 Firmware Commit 命令

  • 正常情况:Boot Partition 写入成功,命令返回成功状态。
  • 错误情况:
  • 写入失败(如 Boot Partition 未解锁):返回 Boot Partition Write Prohibited 错误码。

Step 5(可选):验证写入内容

  • 为确保写入成功,主机可以通过 Boot Partition 读取流程(见 8.2.1)重新读取内容验证。
  • 验证通过后,再发送一条 Firmware Commit 命令来激活新镜像:

  • Commit Action = 111b:设置当前激活的 Boot Partition ID。


Step 6:锁定 Boot Partition

  • 可使用 Boot Partition Protection 机制(定义于 8.2.3)再次锁定 Boot Partition,防止后续写入篡改。

🚨 注意事项(非常关键)

  1. 写入中断风险:如果写入过程中出现错误、复位或断电,Boot Partition 内容可能出现混合状态(旧数据 + 新数据)。

    ➤ 因此建议在激活前 必须读取并验证内容

  2. 不应在写入时读取:读操作可能获取到混合内容,导致验证失败。

  3. 不能重叠两个写入流程:在一个 Boot Partition 更新流程中,不能启动另一个更新流程,否则行为未定义。

  4. 同一控制器提交命令:Boot Partition 更新命令应全部通过同一个控制器或 Management Endpoint 发出,否则 Firmware Commit 可能返回 Invalid Firmware Image 错误。


🛡️ 章节:8.2.3 – Boot Partition Protection(引导分区保护机制)简介

  • 如果控制器同时支持 Boot PartitionReplay Protected Memory Block (RPMB),那么必须也支持 Boot Partition Protection。
  • 该机制通过 RPMB(可防篡改区域) 控制对 Boot Partition 的写入权限。

➤ 接下来 8.2.3 节将介绍如何设置 Boot Partition 的写入保护。你是否希望我继续中文逐步解读 Boot Partition Protection 的机制 和 RPMB 相关操作?