首页 > 编程知识 正文

nvme转pcie接口如何设置系统启动,nvme与ngff区别

时间:2023-05-06 15:21:21 阅读:22160 作者:3975

Boot Partitions具有可选的NVM存储空间,主机无需初始化队列或启用控制器即可读取。 用于访问引导分区的简单接口可用于从主机ROM运行的平台初始化代码(如引导装载器),并且不将image存储在另一存储介质(如SPI闪存)上有关读取引导分区内容的说明,请参阅8.2.1节。

支持引导分区的NVMe控制器有两个大小相同的引导分区,使用引导分区标识符0h和1h。 这两个引导分区允许主机在将引导分区标记为活动之前更新其中一个以验证其内容。 NVM子系统中的控制器可以共享同一引导分区。

只能使用Firmware Image Download和Firmware Commit命令(请参见第8.2.2节)修改引导分区的内容,而不使用Replay Protected Memory Block

8.2.1重新引导分区一个引导分区是连续的数据块,主机可以通过NVMe属性读取该数据块,如图412所示。

要使用NVMe属性读取引导分区的内容,主机将向主机介质分配引导分区内存缓冲器,以便控制器可以从引导分区复制内容。 主机初始化bootpartitionsmemorybufferbaseaddress。 主机通过设置引导分区id、引导分区读取大小和引导分区读取偏移来执行启用引导分区读取。 主机可以继续从引导分区加载,直到加载了整个引导分区。

主机可以在NVM子系统通电时随时读取引导分区的一部分。 也就是说,CC.EN是否设置为“1”无关紧要。 在读取引导分区时,主机不应修改相应的nvmetransportbindingspecification中所述的特定于传输的属性、重置或shut down控制器

要从引导分区读取数据,主机执行以下操作:

根据需要,初始化PCIe link等的传输; 确定控制器是否支持引导分区(cap.bps )哪个引导分区活动(BP info.ab PID )、引导分区大小(BP info.bppid ) 为主机分配物理上连续的内存缓冲器,以保存引导分区的内容; 在复制内容的内存缓冲器中初始化地址(BPMBL.BMBBA ); 通过写入引导分区重新读取选择(BPR sel )属性开始从引导分区传输数据。 这包括bootpartitionidentifier (BPR sel.bpid )、BPR sel.BPR SZ (BPR分区读取大小)和bppartitionreadoffset (BPR分区读取大小) 在传输引导分区内容时设置bootreadstatus(BPinfo.BRS )字段,以指示正在进行引导分区读取操作。 然后,等待控制器完全传输引导分区的请求部分,将其显示在status字段(BPINFO.BRS )中。 如果BPINFO.BRS设置为10b,则请求的引导分区数据已传输到引导分区内存缓冲器。 如果BPINFO.BRS设置为11b,则在传输请求的Boot Partition数据时出错,主机可能会再次请求Boot Partition数据。

在内存受限的环境中,主机可以通过读取引导分区的一部分并将数据从引导分区内存缓冲器移动到另一个内存位置来引导小分区内存缓冲器的引导端口然后,导入引导分区的另一部分,直到导入整个引导分区。

如果支持引导分区日志页(请参见5.16.1.1节),请参阅引导分区日志页(请参见5.16.1.21节)

8.2.2 writingtoabootpartitionbootpar

tition内容可由Host使用Firmware Image Download和Firmware Commit命令在控制器enable时(CC.EN 设置为“1”)进行修改。
Boot Partition的更新过程是:

Host发出Firmware Image Download命令以将Boot Partition的内容下载到控制器。可能有多个Boot Partition要下载,因此正在下载的Boot Partition的每个部分的偏移量在Firmware Image Download命令中指定。Host软件应从Boot Partition的开头开始按顺序发送Boot Partition image;Unlock Boot Partitions进行写操作(参考8.2.3节);Host在该控制器上提交Firmware Commit命令(参见第 5.12 节),提交操作为 110b,指定下载的image替换Boot Partition ID 字段中指定的Boot Partition的内容;控制器完成Firmware Commit命令。在某些错误情况下会采取以下措施: 如果由于无法写入Boot Partition导致firmware active失败,则控制器报Boot Partition Write Prohibited错误;(可选)Host读取Boot Partition的内容以验证它们是否正确(参见第 8.2.1 节)。Host软件通过发出一个 Commit Action 为 111b 的 Firmware Commit 命令来更新active Boot Partition ID;Host Lock Boot Partition 访问以防止进一步修改(参见8.2.3 节)。

如果在将下载的 image提交到boot partition时发生内部错误、重置或掉电情况,则boot partition的内容可能包含旧内容、新内容或两者的混合。Host软件应在将boot partition标记为active之前验证boot partition的内容,以确保activeboot partition稳定。

Host软件在写入boot partition时不应读取boot partition的内容。如果Host在覆盖内容时尝试执行boot partition读取操作,则控制器可能会返回新旧数据的组合。

Host软件不应与firmware/boot partition image update命令序列重叠(请参阅第 1.5.23 节)。在boot partition image update命令序列期间,如果为另一个firmware/boot partition image update命令序列提交firmware image下载命令或firmware提交命令,则该命令和正在进行的firmware image update的结果都是不确定的。

对于作为boot partition image update命令序列一部分的所有命令,Host软件应使用相同的控制器或Management Endpoint(请参阅 NVMe Management Interface Specification)。如果单个firmware/boot partition image update命令序列的命令被提交给多个控制器和/或Management Endpoint,则控制器可能会以Invalid Firmware Image状态abort firmware Commit命令。

8.2.3 Boot Partition Protection

支持Boot Partitions和 RPMB 的控制器应支持Boot Partition Protection。 Boot Partition Protection可以使用 RPMB 进行配置(请参阅第 8.18 节)。 图 413 显示了Boot Partition Protection的概述。

Figure 413: Boot Partition Protection Overview

 

所有Boot Partitions的默认状态都是“Unlocked”状态。在这种状态下,主机软件可以读写一个Boot Partition。

所有Boot Partitions保持Unlock状态,直到主机软件enable Boot Partition Protection。主机软件通过设置 RPMB Device Configuration Block数据结构中的Boot Partition Protection Enable位来启用Boot Partition Protection(参见第 8.18 节)。一旦启用Boot Partition Protection,控制器将拒绝禁用Boot Partition Protection的Authenticated Device Configuration Block Writes(即启用Boot Partition Protection是永久性的)。一旦Boot Partition Protection被启用,只有在使用 RPMB 解锁Boot Partition后才能修改Boot Partition。

激活Boot Partition Protection后,所有Boot Partitions的默认状态为“Locked”状态。在这种状态下,主机软件可以读取Boot Partition,控制器拒绝使用Firmware Commit命令写入Boot Partition的尝试。

可以使用Device Configuration Block数据结构中的相应位独立地lock或unlock每个Boot Partition。

5.16.1.21 Boot Partition (Log Identifier 15h)

Boot Partition Log page提供对Boot Partition的只读访问(参见第 8.2 节), 该控制器可通过 BPRSEL 寄存器访问Boot Partition(参见 3.1.3.14 节)。

该日志包含一个header,描述Boot Partition和Boot Partition Data,如图 262 所定义。Log Specific字段字段中的Boot Partition Identifier位确定Boot Partition。

Host读取此log page对 BPINFO(参见第 3.1.3.13 节)、BPRSEL 和 BPMBL(参见第 3.1.3.15 节)寄存器没有影响。

Figure 261: Command Dword 10 – Log Specific Field BitsDescription14:09Reserved08Boot Partition Identifier:该bit指定要返回的Boot Partition的Boot Partition identifier

Figure 262: Get Log Page – Boot Partition Log (Log Identifier 15h) BytesDescriptionBoot Partition Header00Log Identifier: 该字段设为15h03:01Reserved07:04

Boot Partition Information:包含定义Boot Partitions的特征。

BitsDescription31Active Boot Partition ID (ABPID):该位指示active Boot Partition的标识符。30:15Reserved14:00Boot Partition Size (BPSZ):此字段以 128 KiB 的倍数定义Boot Partition Data字段的大小。15:08ReservedBoot Partition DataBPSZ*128 KiB + 15:16Boot Partition Data:包含特定Boot Partition的内容

参考文档:NVMe 2.0, TP 6026

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。