M.2 Key M 接口
RUBIK Pi 3 提供一个标准 M.2 插槽,用于连接 NVMe 存储,可安装 2280 规格(22*80mm)M.2 SSD 硬盘。M.2 插槽最大支持 PCIe Gen 3 x 2。M.2 接口最大对外输出能力为 3.3V 2A,可单独控制开关。
M.2 Key M 接口使用了 QCS6490 的 PCIe1 总线,设备路径为:/sys/bus/pci/devices/0001:00:00.0
M.2 Key M 接口为下图 18:
M.2 Key M 接口可以接入规格为2280的固态硬盘,如下图所示:
PCIe 总线功能验证
在接入 2280 规格的固态硬盘后,生成的设备节点为 /dev/nvme*
。
您可以通过类似如下的命令挂载固态硬盘,通过访问 /opt 目录下的内容验证 PCIe 总线接口。
sudo mount /dev/nvme0n1p1 /opt/
PCIe 功耗优化
PCIe 定义了两种功耗管理方法。
-
功耗管理软件,用于确定每个设备的功耗管理功能并分别对各个设备进行管理
-
不需要软件干预的系统,例如主动状态功耗管理 (ASPM)
当链路上未传输任何数据包时,设备会将链路置于节能状态。
PCIe L0 链路状态
PCIe 功耗管理定义了以下 L0 链路状态:
-
L0:工作状态
-
L0s:具有低恢复延迟的 ASPM 状态(节能待机状态)
PCIe 设备状态
PCIe 功耗管理定义了以下设备状态:
-
D0(必选): 设备处于完全 ON 状态,此时存在两个子状态
-
D0(uninitialized):当设备退出复位状态后等待枚举和配置时,该功能处于 D0(uninitialized) 状态
-
D0(active)
-
当完成枚举和配置过程后,该功能处于 D0(active) 状态
-
当系统软件启用一个或多个(任意组合)功能参数(如内存空间启用、I/O 空间启用、总线主启用(BME)位)时,该功能进入 D0(active) 状态
-
-
-
D1(可选):轻度休眠状态
-
该功能只能发出 PME 消息, 无法发出其他 TLP
-
该功能只能充当配置事务的目标,无法充当其他事务的目标
-
该功能通过发出设定 PM 控制和状态寄存器的软件命令来进入 D1 状态
-
-
D2(可选):深度休眠状态
-
该功能只能发出 PME 消息,无法发出其他 TLP
-
该功能只能充当配置事务的目标,无法充当其他事务的目标
-
该功能通过发出设定 PM 控制和状态寄存器的软件命令来进入 D2 状态
-
-
D3(必选):设备处于最低功耗状态,此时该功能必须支持两种 D3 状态
-
D3(hot)
-
该功能只能发出 PME 消息,无法发出其他 TLP
-
该功能只能充当配置事务的目标,无法充当其他事务的目标
-
该功能通过设定功耗状态位域发出软件命令来进入 D3(hot) 状态
-
-
D3(cold):设备进入 D3(cold) 状态并断电;当恢复供电时,设备进入 D0(uninitialized) 状态
PCIe 调试
M.2 Key M 接口使用了 QCS6490 的 PCIe1 总线,设备路径为:/sys/bus/pci/devices/0001:00:00.0
lspci
和 setpci
命令为 Linux 发行版的本机命令。这两条命令提供多种级别的输出,并且还可用于在某个时间点查看 PCI 总线上训练的不同组件的功能和状态。这些功能大多反映的是 PCIe 基本规范所需的配置空间寄存器。更多详细信息,可访问 https://pcisig.com/specifications
如需查看使用说明,可运行以下命令。
lspci --help
以下功能有助于解决 PCIe 问题。
-
显示设备信息
lspci
示例输出
0000:00:00.0 PCI bridge: Qualcomm Device 010b
0000:01:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)
0001:00:00.0 PCI bridge: Qualcomm Device 010b -
显示设备控制寄存器中的 PCIe 设备和厂商 ID。
lspci -nvmm
示例输出
Slot: 00:00.0
Class: 0604
Vendor: 17cb
Device: 010b
IOMMUGroup: 6
Slot: 01:00.0
Class: 0c03
Vendor: 1912
Device: 0014
Rev: 03
ProgIf: 30
IOMMUGroup: 6
Slot: 0001:00:00.0
Class: 0604
Vendor: 17cb
Device: 010b
DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@1
IOMMUGroup: 7