持久内存与安全机制 - 第358页
我们继续深入分析 NVM Express® Base Specification Revision 2.0b 第 347 页中关于 Boot Partition 的写入机制与保护机制的规范内容。
🧭 章节:8.2.2 – Boot Partition 写入流程(Writing to a Boot Partition)
🧱 写入流程总览
主机通过 Firmware Image Download 和 Firmware 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,防止后续写入篡改。
🚨 注意事项(非常关键)
-
写入中断风险:如果写入过程中出现错误、复位或断电,Boot Partition 内容可能出现混合状态(旧数据 + 新数据)。
➤ 因此建议在激活前 必须读取并验证内容。
-
不应在写入时读取:读操作可能获取到混合内容,导致验证失败。
-
不能重叠两个写入流程:在一个 Boot Partition 更新流程中,不能启动另一个更新流程,否则行为未定义。
-
同一控制器提交命令:Boot Partition 更新命令应全部通过同一个控制器或 Management Endpoint 发出,否则
Firmware Commit可能返回 Invalid Firmware Image 错误。
🛡️ 章节:8.2.3 – Boot Partition Protection(引导分区保护机制)简介
- 如果控制器同时支持 Boot Partition 和 Replay Protected Memory Block (RPMB),那么必须也支持 Boot Partition Protection。
- 该机制通过 RPMB(可防篡改区域) 控制对 Boot Partition 的写入权限。
➤ 接下来 8.2.3 节将介绍如何设置 Boot Partition 的写入保护。你是否希望我继续中文逐步解读 Boot Partition Protection 的机制 和 RPMB 相关操作?