T536主板的M.2接口SSD固态硬盘的使用-盈鹏飞嵌入式

CoM-T536产品特性:

  • 采用Allwinner公司Cortex-A55四核T536处理器,最高速度为1.6GHZ;
  • 支持2TOPS NPU,仅特定型号支持;
  • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
  • 支持1-4G Bytes LPDDR4 SDRAM;
  • 支持EMMC 4G-64G大容量电子盘,可启动;或支持SPI NAND启动;
  • 支持双通道LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI显示, 分辨率最高1920x1020@60fps;
  • 支持PCIE2.1;支持最多17路UART;支持四路CANFD;支持双路千兆以太网;
  • 稳定的操作系统的支持,可预装LINUX 5.10/Ubuntu 20.04
  • 邮票孔198POS设计, 尺寸为:53.5*45MM

CoM-T536功能图:

image

STK-T536评估板功能图:

image

3.17、PCIE2.1_SSD固态硬盘测试

STK-T536评估板支持M.2 SSD固态硬盘接口。STK-T536只支持2242尺寸的固态,同时固态务必满足M.2 KEY-B标准;T536处理器只支持PCIE2.1x1标准,现在能够采购到的M.2接口固态硬盘最低符合PCIE3.0x2标准(常用的是PCIE3.0x4标准或者更高,M.2 KEY-M接口),因此T536读写固态硬盘的速度一般。以下是市场上能采购到的PCIE3.0x2标准的固态(有NVME PCIe Gen3x2字样)和PCE3.0x4(有NVME PCIe Gen3x4字样)标准的固态,外观区别如下:
image

对于STK-T536开发板来说,只有上图中左边的固态可用,右边的固态无法插入,不可用。
将固态硬盘插入CN10接口,同时跳线J1务必断开!!
备注:
1)J1 open时,M.2接口(CN10)供电为3.3V
2)该接口不支持SATA协议的固态硬盘,只支持PCIE接口的固态硬盘。
image

评估板上电系统启动后,会出现如下信息:

点击查看代码
[5.649101] sunxi-pcie 4800000.pcie: host bridge /soc@3000000/pcie@4800000 ranges:
[5.657618] sunxi-pcie 4800000.pcie:      err 0x0020000000..0x0020ffffff -> 0x0020000000
[5.666702] sunxi-pcie 4800000.pcie:       IO 0x0021000000..0x0021ffffff -> 0x0021000000
[5.675781] sunxi-pcie 4800000.pcie:      MEM 0x0022000000..0x0028ffffff -> 0x0022000000
[5.890801] sunxi-pcie 4800000.pcie: pcie link up success
[5.896858] sunxi-pcie 4800000.pcie: PCIe speed of Gen2
[5.902780] sunxi-pcie 4800000.pcie: PCI host bridge to bus 0000:00
[5.909809] pci_bus 0000:00: root bus resource [bus 00-ff]
[5.915964] pci_bus 0000:00: root bus resource [??? 0x20000000-0x20ffffff flags 0x0]
[5.924650] pci_bus 0000:00: root bus resource [io  0x0000-0xffffff] (bus address [0x21000000-0x21ffffff])
[5.935476] pci_bus 0000:00: root bus resource [mem 0x22000000-0x28ffffff]
[5.943199] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400
[5.949941] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[5.957486] pci 0000:00:00.0: supports D1
[5.961979] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[5.972328] pci 0000:01:00.0: [1e4b:1202] type 00 class 0x010802
[5.979101] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[5.986940] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[5.993819] pci 0000:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at 0000:00:00.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[6.022335] pci 0000:00:00.0: BAR 8: assigned [mem 0x22000000-0x220fffff]
[6.029986] pci 0000:00:00.0: BAR 6: assigned [mem 0x22100000-0x2210ffff pref]
[6.038091] pci 0000:01:00.0: BAR 0: assigned [mem 0x22000000-0x22003fff 64bit]
[6.046299] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[6.052158] pci 0000:00:00.0:   bridge window [mem 0x22000000-0x220fffff]
[6.060098] nvme nvme0: pci function 0000:01:00.0
[6.065442] nvme 0000:01:00.0: enabling device (0000 -> 0002)

系统启动过程出现pcie link up success 字样,表示M.2接口工作正常,否则说明 PCIe link 失败,请确认 phy 是否正常工作。正常识别固态硬盘后,udev自动挂载该固态到/ssd目录,详情请查看/lib/udev/rules.d/80-nvme-mount.rules。udev会根据该规则调用脚本nvme-mount.sh,脚本内容如下:

点击查看代码
#!/bin/bash

ROOTFS_TYPE=`blkid -s TYPE -o value /dev/$1`

if [[ $ROOTFS_TYPE  == "ntfs" ]];then
	if [ -d /ssd ];then
		mount -t ntfs-3g /dev/$1 /ssd
	else
		mkdir /ssd
		mount -t ntfs-3g /dev/$1 /ssd
	fi
else
	if [ -d /ssd ];then          
                mount  /dev/$1 /ssd
        else                         
                mkdir /ssd           
                mount /dev/$1 /ssd
        fi    
fi

从脚本中可以看出,该脚本只适合固态上有一个分区的挂载。如果无法找到/ssd目录,可通过如下指令重新扫描PCIE总线:

Target# echo 1 > /sys/bus/pci/devices/0000:00:00.0/rescan //重新扫描
Target# lspci -s 01:00.0 -vv //查看pci信息
重新扫描后,一般都可以找到/ssd目录。
以下是以金胜维公司的nx系列固态为例,重新扫描得到的终端信息:

点击查看代码
root@T536-embfly:/dev# echo 1 > /sys/bus/pci/devices/0000\:00\:00.0/rescan
[   35.853373] pci 0000:01:00.0: [1e4b:1202] type 00 class 0x010802
[   35.860172] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[   35.868070] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[   35.874964] pci 0000:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at 0000:00:00.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[   35.897580] pcieport 0000:00:00.0: BAR 8: assigned [mem 0x22200000-0x222fffff]
[   35.905678] pci 0000:01:00.0: BAR 0: assigned [mem 0x22200000-0x22203fff 64bit]
[   35.914451] nvme nvme0: pci function 0000:01:00.0
[   35.919771] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[   35.921222] sunxi:sound-mach:[WARN]: 372 asoc_simple_parse_ucfmt(): set data late to default
[   35.933172] nvme nvme0: allocated 8 MiB host memory buffer.
 [   35.935864] sunxi:sound-mach:[ERR]: 488 simple_parse_of(): simple_dai_link_of failed
[   35.961109] nvme nvme0: 4/0/0 default/read/poll queues
[   38.100644] axp2202-aldo1: disabling
[   38.104901] axp2202-cldo4: disabling
[   38.109226] axp2202-vmid: disabling
root@T536-embfly:/dev# lspci -s 01:00.0 -vv
01:00.0 Non-Volatile memory controller: MAXIO Technology (Hangzhou) Ltd. NVMe SSD Controller MAP1202 (rev 01) (prog-if 02 [NVM Express])
        Subsystem: MAXIO Technology (Hangzhou) Ltd. NVMe SSD Controller MAP1202
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 574
        Region 0: Memory at 22200000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [40] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [50] MSI: Enable+ Count=8/32 Maskable+ 64bit+
                Address: 000000004539f000  Data: 0008
                Masking: ffffffe0  Pending: 00000000
        Capabilities: [70] Express (v2) Endpoint, MSI 1f
                DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W
                DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM not supported
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 5GT/s (downgraded), Width x1 (downgraded)
                        TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
                         10BitTagComp- 10BitTagReq- OBFF Via message, ExtFmt- EETLPPrefix-
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS- TPHComp- ExtTPHComp-
                         AtomicOpsCap: 32bit- 64bit- 128bitCAS-
                DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
                         AtomicOpsCtl: ReqEn-
                LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
                         EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
                         Retimer- 2Retimers- CrosslinkRes: unsupported
        Capabilities: [b0] MSI-X: Enable- Count=9 Masked-
                Vector table: BAR=0 offset=00003000
                PBA: BAR=0 offset=00002000
        Capabilities: [100 v2] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
                AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
                        MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
                HeaderLog: 00000000 00000000 00000000 00000000
        Capabilities: [148 v1] Device Serial Number 00-00-00-00-00-00-00-00
        Capabilities: [158 v1] Alternative Routing-ID Interpretation (ARI)
                ARICap: MFVC- ACS+, Next Function: 0
                ARICtl: MFVC- ACS-, Function Group: 0
        Capabilities: [168 v1] Secondary PCI Express
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-
                LaneErrStat: 0
        Capabilities: [1d4 v1] Latency Tolerance Reporting
                Max snoop latency: 0ns
                Max no snoop latency: 0ns
        Capabilities: [1dc v1] L1 PM Substates
                L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1- L1_PM_Substates+
                          PortCommonModeRestoreTime=10us PortTPowerOnTime=1000us
                L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
                           T_CommonMode=0us
                L1SubCtl2: T_PwrOn=0us
        Capabilities: [1ec v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
        Capabilities: [2ec v1] Vendor Specific Information: ID=0001 Rev=1 Len=038 <?>
        Kernel driver in use: nvme

在Linux系统中,nvme0n1 表示NVMe设备的第一个命名空间(Namespace),它代表了一个逻辑设备。具体来说,nvme0 是指代第一个固态NVMe 设备的名称,它代表了一个物理设备,而 nvme0n1 则是指代 NVMe 设备中的一个命名空间。在 nvme0n1 之下,可以有多个分区。例如,/dev/nvme0n1p1 表示 nvme0n1 设备上的第一个分区,其中的 "p1" 表示第一个分区。如果有更多的分区,它们将被表示为 /dev/nvme0n1p2、/dev/nvme0n1p3 等等。
以下是如何在 Linux 系统中查看和操作 nvme0n1 设备的示例:
- 查看设备信息:

Target# lsblk

- 挂载分区:

Target# sudo mount /dev/nvme0n1p1 /mnt

- 卸载分区:

Target# sudo umount /mnt

- 创建新分区:

Target# sudo fdisk /dev/nvme0n1

备注:如果固态硬盘已经分区,且分区符合您的要求,则没有必要再进行分区。

posted @ 2026-04-17 17:40  embfly168  阅读(6)  评论(0)    收藏  举报