NVMe解读----Boot Partition(Read篇)

时间:2024-03-29 08:41:23

       Boot Partition提供一个可操作的NVMe存储区域,可以在不需要主控初始化队列或者使能控制器的情况下进行读取。

      An NVMe controller that supports Boot Partitions has two Boot Partitions of equal size using Boot Partition identifiers 0h and 1h.

NVMe解读----Boot Partition(Read篇)

 

     主控在读取Boot Partition的过程中主要进行初始化Boot Partition存储缓冲区的基地址,以及配置Boot Partition ID,Read Size和Read Offset;

      主控需要进行以下操作来完成对Boot Partition中的内容进行读取:

  •       必要情况下初始化传输协议(PCIE..);
  •       判断控制器(CAP.BPS)是否支持Boot Partition;
  •       判断需要启动的Boot Partition以及其内容大小(BPINFO.BPSZ);
  •       在主控中分配一段连续的物理存储缓冲区来存储boot partition的内容;
  •       配置Boot Partition Read Select 寄存器(BPRSEL)来初始化Boot Partition中传输的数据。包括配置Boot Partition identifier (BPRSEL.BPID),size of Boot Partition Read Size (BPRSEL.BPRSZ),Boot Partition Read Offset (BPRSEL.BPROF)。此外,在传输Boot Partition内容的过程中,Boot Read Status field (BPINFO.BRS)需要被配置来表明一次Boot Partition读操作正在进行中;
  •       根据Boot Read Status field (BPINFO.BRS)判断传输过程是否完成。当BPINFO.BRS == 2h,表示被要求的Boot Partition数据已经传到了Boot Partition缓冲区。如果BPINFO.BRS == 3h,则传输过程出现错误,主控可以选择是否重新进行传输。