ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Jetson Xavier NX三M.2载板实战:NVMe、WiFi与AI加速卡共存配置指南

Jetson Xavier NX三M.2载板实战:NVMe、WiFi与AI加速卡共存配置指南 最近在折腾 Jetson Xavier NX核心工作是给我的模块配一块靠谱的载板Carrier Board因为 Xavier NX 是核心板必须插在载板上才能跑起来。挑了一圈最后选了一块带三个 M.2 插槽的载板这也是目前很多 AI 边缘计算项目里非常主流的一个配置。真正用起来才发现“三槽”这个设计不只是多两个接口那么简单它牵扯到 PCIe 通道分配、供电、散热、模块选型甚至刷机流程都得跟着调整。这篇文章就把我这段时间的实操记录和经验整理一下重点说说三个 M.2 插槽怎么规划、怎么选模块、怎么把系统配置到能同时跑 NVMe SSD、WiFi 模块和 AI 加速卡给正在选载板或者已经入手三 M.2 方案的朋友一个参考。1. 三个 M.2 插槽的设计思路与价值拆解1.1 为什么载板要设计三个 M.2 插槽Xavier NX 这颗芯片本身算力很强但只有核心模块是完全跑不起来的存储、网络、扩展接口全靠载板提供。官方开发套件的载板通常只给一个 M.2 Key M给 NVMe SSD 用和一个 M.2 Key E给 WiFi 模块用日常用够可一旦做机器人、边缘服务器、多路相机处理这种项目马上会发现接口不够。而三 M.2 载板的思路就是一次性把扩展性拉满常见规划是这样的槽位Key 类型总线协议典型用途理论带宽M.2 槽位 1Key MPCIe Gen3 x4NVMe 固态硬盘32 GbpsM.2 槽位 2Key M / BMPCIe Gen3 x1 或 SATA第二块 SSD 或 SATA 硬盘转接8 Gbps 或 6 GbpsM.2 槽位 3Key EPCIe Gen3 x1 USB 2.0WiFi 6 模块、蓝牙、AI 加速卡8 Gbps 480 Mbps这种“一存储一扩展一无线”的组合几乎覆盖了边缘计算设备的全部刚性需求。系统盘走高速 NVMe数据盘用独立槽位和系统盘分离AI 推理卡或无线通信模块单独占用一个槽位互不干扰。相比官方单 M.2 方案三个槽位给了项目很大的冗余度不用再外接一堆 USB 转接盒。1.2 三个槽位的带宽分配逻辑很多人看到三槽第一反应是“三个都能跑 PCIe x4 吗”答案是做不到Jetson 平台给不了这么多通道。Xavier NX 模块对外引出的 PCIe 资源是一组 x8 和一组 x1——注意这里说的是一组是由 SoC 内建 PCIe 控制器提供的。开发套件里一般把 x8 拆成一个 x4给 M.2 Key M、两个 x1给其他设备x1 那组给千兆网卡或 WiFi。第三方载板想做出三 M.2就必须在这有限的通道里做精细切换。我选的这块载板槽位 1 独占 x4 通道跑 NVMe SSD槽位 2 走 x1槽位 3 走 x1 USB。这里有个关键点M.2 槽位其实同时支持 PCIe 和 SATA 两种信号但 Xavier NX 自身没有 SATA 控制器所以载板上的 SATA 功能是通过 USB 转接芯片实现的。如果槽位 2 想做 SATA SSD就得看载板有没有额外桥接芯片选板时一定得看这块载板的通道架构图不能只看插槽数量。1.3 热词里为什么总提“SATA 硬盘和 M.2 硬盘”很多刚入手 Jetson 的朋友会在这两个词上纠结。简单说M.2 是一种物理接口形态长得像一根口香糖SATA 和 NVMe 是数据传输协议。M.2 接口的 SSD 可以走 SATA 协议速度约 550 MB/s也可以走 NVMe 协议速度 1.5 GB/s 到 3.5 GB/s 不等。在 Xavier NX 这种嵌入式平台上NVMe SSD 几乎是唯一推荐因为系统盘速度直接决定开机时间、深度学习框架加载速度我的实测是同一块板子用 NVMe 做系统盘比 eMMC 开 PyTorch 环境快一倍左右。2. 载板选型与核心细节解析2.1 三 M.2 载板的关键选型标准不是所有带三个 M.2 的载板都值得买我筛选时主要看这几个硬指标一是 PCIe 通道拆分方式。载板的通道拆分由硬件走线和 PCIe 交换芯片决定有的板子固定死 x4/x1/x1有的用拨码开关或电阻配置。固定方案通常更稳定可配置方案灵活但容易出错。我建议尽量选固定拆分的板子减少调试成本。二是供电能力。M.2 SSD 峰值功耗可以到 8WWiFi 模块约 2WAI 加速卡像 Intel Movidius 大约 4W三个同时跑就有 14W再加上 Xavier NX 模块本身 10W 到 20W不同模式整体功耗不低。载板需要提供充足的 3.3V/5V/12V 电源且最好支持 DC 宽压输入。我看到有些号称三 M.2 的板子实际供电设计只够一个槽位满载其他槽位就只能轻度使用这种板子别买。三是散热结构。M.2 SSD 在高负载下温度轻松到 80°C三槽布局如果太紧凑互相之间会形成热岛效应。选板时看 SSD 安装位置是否独立、和核心模块之间的距离、有没有散热片固定孔。四是系统兼容性。Xavier NX 载板需要对应的设备树Device Tree来启用各接口第三方载板通常需要自己修改设备树或用商家提供的镜像。选主流的第三方品牌如 Seeed、Auvidea、Connect Tech社区资料更全踩坑后容易找到解决方案。2.2 M.2 Key 类型避坑指南M.2 接口有个特别容易踩的坑叫 Key 定义。简单来说Key 就是金手指上的缺口位置不同的 Key 对应不同的总线协议和适用场景Key 类型缺口位置支持协议适用设备Key M右侧PCIe x4 / SATANVMe SSD、部分 AI 加速卡Key B左侧SATA / PCIe x2SATA SSD、WWAN 模块Key BM两侧PCIe x2 / SATA兼容性最强的 SSDKey E中间PCIe x1 / USBWiFi 模块、蓝牙、部分 AI 加速卡Key AE中间PCIe x1 / USB高端 WiFi 6 模块买到载板后第一步不是插模块而是确认三个插槽的 Key 定义和引脚定义。比如 Key E 插槽虽然能插某些 AI 加速卡但 Intel Movidius 的 M.2 版本是 Key AE插到纯 Key E 槽里要确认针脚兼容性而某些 SSD 明明是 M.2 2280 规格却是 SATA 协议不是 NVMe插到只支持 PCIe 的槽位里完全不识别。这些都是硬件选型阶段就该确认好的。2.3 载板上 M.2 插槽的固定方式与安装方向M.2 模块常见长度有 2242、2260、2280 三种数字前两位代表宽度 22mm后两位代表长度 42mm/60mm/80mm。载板上的固定螺柱位置决定能装多长的模块一般有三到四个可调位。安装时注意 M.2 模块是稍微倾斜插入插槽金手指完全进入后下压用一颗小螺丝锁在螺柱上。这个螺丝非常重要不少人在测试阶段不锁螺丝SSD 弹起来导致系统重启后找不到盘。这块三槽载板的槽位方向也值得注意有的槽位是正面朝上有的因为布局限制是背面朝上SSD 颗粒面和载板元件面可能贴合很近散热风道会受影响。我实际使用中给槽位 1 的 SSD 加了铜片散热片温度从 82°C 降到 65°C效果非常明显强烈建议至少给系统盘配散热措施。3. 实操过程与核心环节实现3.1 安装环境准备先说我的整体硬件配置大家可以直接参考核心模块Jetson Xavier NX16GB 版本生产型模块载板第三方三 M.2 载板型号我就不贴了布局是槽位 1 Key M x4 槽位 2 Key M x1 槽位 3 Key E x1/USB系统盘三星 970 EVO Plus 500GBNVMeM.2 2280数据盘西数 SN550 250GBNVMe用槽位 2 做数据存储WiFi 模块Intel AX210M.2 Key EWiFi 6 蓝牙 5.2电源DC 12V 5A 适配器安装顺序建议是先把 Xavier NX 模块装到载板上再接 M.2 模块最后通电。因为要在小空间里反复调整先装外围模块容易挡住核心模块的卡扣。核心模块安装时要对准边缘连接器均匀用力下压听到两声清脆的咔嗒声才算到位。这一步千万别大力出奇迹Xavier NX 连接器非常精密压偏会导致部分引脚虚接。M.2 模块的安装顺序看槽位空间我习惯先装槽位 2数据盘再装槽位 1系统盘最后装槽位 3 的 WiFi 模块。原因是槽位 1 通常在最外侧先装了它旁边槽位的空间会被压迫螺丝刀不好伸进去。3.2 刷机与系统配置载板装好后就要刷系统。Xavier NX 的刷机流程热词里大家经常搜“SDK Manager 安装”我用的是 SDK Manager 的完整流程这里记录一下第一步准备一台 Ubuntu 18.04 或 20.04 主机用 USB 线连接载板的 USB Type-C 刷机口。部分载板是 Micro-USB 和 Type-C 双口注意选标有 Recovery 的那一个。第二步把 Xavier NX 模块进入 Recovery 模式。操作是按住载板上的 Recovery 按键同时按一下 Reset 按键之后松开 Recovery。在主机上用lsusb确认设备是否识别为 NVIDIA 设备lsusb # 应该看到 0955:7e19 NVIDIA Corp. APX第三步打开 SDK Manager登录 NVIDIA 账号选择 Jetson Xavier NX 对应的 JetPack 版本。我用的 JetPack 5.1.2自带 L4T r35.4.1。SDK Manager 会先下载系统镜像再刷写到模块上。这里需要说明在刷机界面有一个特别容易忽略的选项是否格式化并安装 Jetson SDK 组件选择“仅安装系统镜像”会更快后续再单独安装 CUDA 和 PyTorch 也完全没问题。第四步刷机完成后系统默认从 eMMC 启动。如果想要系统直接跑在 NVMe 上需要把根文件系统复制到 SSD。JetPack 5.x 自带一套脚本可以在启动后执行sudo nvme format /dev/nvme0n1 sudo mkfs.ext4 /dev/nvme0n1 sudo mount /dev/nvme0n1 /mnt sudo cp -a / /mnt # 修改 /mnt/etc/fstab将 root 挂载点指向 /dev/nvme0n1这样操作后开机从 NVMe 引导系统响应速度有可感知的提升。3.3 三个 M.2 槽位的系统级识别与验证系统跑起来后我做的第一件事是验证三个插槽是否都被内核正确识别。查看 PCIe 设备lspci -tv正常应该看到类似这样的树状结构-[0000:00]--00.0 NVIDIA Corporation Device -01.0 NVIDIA Corporation Device -02.0-[02]----00.0 Samsung Electronics Co Ltd NVMe SSD Controller -03.0-[03]----00.0 Sandisk Corp WD Blue SN550 NVMe SSD -04.0-[04]----00.0 Intel Corporation Wi-Fi 6 AX210如果你的输出里某个设备没有出现大概率是设备树里对应节点的status还是disabled需要修改设备树重新编译。这里有个实用技巧JetPack 系统的设备树在/boot/kernel_tegra194-*目录下修改后运行sudo /opt/nvidia/jetson-io/config-by-pin.py这个工具可以交互式启用/禁用某些接口如果载板厂商提供了对应的设备树 overlay直接强制加载即可比手动改设备树 DTS 文件靠谱得多。查看 NVMe 设备lsblk # 应该看到 nvme0n1 和 nvme1n1 两个 NVMe 盘这里有个命名细节系统从 eMMC 启动时NVMe 设备的编号是按 PCIe 枚举顺序来的不是按 M.2 槽位物理位置。所以槽位 1 的 SSD 可能显示为 nvme1n1槽位 2 反而显示为 nvme0n1。要确认哪个盘对应哪个槽位用nvme list查看序列号最稳妥别靠设备名猜。3.4 Conda 环境与 AI 推理栈的搭建Xavier NX 到手后热词榜上“conda 安装”是大家问得最多的。这里直接说结论Xavier NX 是 ARM64 架构不能直接用 Anaconda 官网的 x86_64 安装包。正确做法是用 Ubuntu 自带的archarm64版本或者安装 Miniforge这是专门为 ARM 平台优化过的 Miniconda 发行版。我用的是 Miniforge安装命令wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh bash Miniforge3-Linux-aarch64.sh装好后 conda 的用法和 x86 平台完全一样PyTorch 的安装也直接走 JetPack 自带的预编译包pip install torch2.1.0 torchvision0.16.0这三个 M.2 槽位对 AI 工作流的实际价值在加载大模型时特别明显。我用槽位 1 的 NVMe 跑系统槽位 2 挂模型数据集两者并行读写不会争抢带宽。在 x86 桌面上实现同样效果需要两个独立 NVMe 盘位在 Xavier NX 上一条载板就搞定了这也是为什么我觉得三 M.2 设计对边缘 AI 项目非常实用。4. 常见问题与排查技巧实录4.1 M.2 SSD 开机不识别这个问题我遇到过两次一次是槽位 2 的 SSD 认不到另一次是槽位 1 的盘识别了但在 fstab 里挂载失败。排除思路是分层排查确认 M.2 模块物理安装到位。M.2 插槽经常因为倾斜角度不够导致金手指没完全插入表现为开机时模块发烫但系统不识别。重新插拔确定模块尾部下压到和载板平面基本平行用螺丝锁紧。确认供电。Jetson 的 M.2 槽位供电电流有限制如果载板没有额外供电接口大功率 SSD 在高速读写时可能掉盘。实测有些 SSD 峰值功耗超过 10W在 Xavier NX 平台上运行不稳定。建议系统盘选功耗低的型号三星 PM981a、西数 SN550 都是比较稳的选择。确认设备树。如果是第三方载板且使用官方镜像启动往往需要在设备树里启用特定 PCIe 控制器。用dmesg | grep pci查看是否有设备在枚举阶段被拒绝再对照载板原理图确认通道配置。4.2 WiFi 模块蓝牙不工作Intel AX210 插到 Key E 槽位后WiFi 部分是免驱的内核直接识别为iwlwifi驱动但蓝牙不工作。排查后发现AX210 蓝牙走的是 USB 2.0 通道而载板的 Key E 引出的 USB 引脚需要额外的 GPIO 使能信号。解决办法是找到载板原理图确认蓝牙复位和使能引脚对应的 GPIO 编号然后在系统里手动拉高sudo sh -c echo 1 /sys/class/gpio/gpioXXX/value如果你不想跟 GPIO 较劲更省事的方法是在设备树 overlay 里加上对应的 GPIO 初始化代码。这部分不同载板差异很大建议优先去厂商的 GitHub 仓库找现成 overlay。另外Xavier NX 的 Wi-Fi 天线接口和 M.2 插槽位置通常分布在载板边缘两块天线要成 90 度交叉摆放否则信号衰减非常严重。4.3 三 M.2 同时满载时的散热处理这是最容易被低估的问题。我用 stress 工具同时对两块 NVMe 做持续写入再把 AX210 的 WiFi 打满结果槽位 1 的 SSD 温度直接到了 87°C系统开始降速保护写入速度从 1.6 GB/s 掉到 500 MB/s 左右。处理方式分两步加散热片。在 SSD 主控上贴导热硅胶垫加铝制散热片厚度要注意超过 2mm 就会顶到载板背面的电容。我的方案是 1mm 硅胶垫 1.5mm 铝片实测温度降幅 15°C 左右。加风道。如果是开放式测试台用一个小型 5V 风扇对着 M.2 区域吹如果放在机箱里务必让风扇出风方向经过 SSD 区域。Xavier NX 本身的散热风扇转速只由核心模块温度控制不会管 M.2 的温度所以 M.2 散热必须独立照顾。4.4 数据盘与系统盘的挂载策略同时装两块 SSD最值得花时间规划的是挂载策略。我的建议是系统盘用 ext4只放系统和 pip 包数据盘用 ext4 并设置noatime挂载参数减少不必要的 IO 写入。在/etc/fstab里可以这样配置/dev/nvme0n1p1 / ext4 defaults,noatime 0 1 /dev/nvme1n1p1 /data ext4 defaults,noatime,nofail 0 2注意加一个nofail选项这样第二块盘没插的时候系统也能正常启动不至于开机就卡在挂载等待超时。顺便提一下在 Xavier NX 上做 conda 环境迁移时把整个 conda 目录放到数据盘是个好思路。因为系统盘容量有限一个 PyTorch 环境加上 CUDA 依赖能到 8GB放数据盘不仅省空间数据盘挂了也不会影响系统完整性。4.5 刷机过程中 USB 连接不稳定最后说一个刷机时常见的坑SDK Manager 刷到一半USB 连接断开显示 write timeout。这通常是主机 USB 接口供电不足或 USB 线质量不好导致的。注意事项有三条使用主机后面板的直连 USB 口不要经过 USB Hub。线材要短推荐 1 米以内的带屏蔽 USB Type-C 线。刷机时关闭主机和载板的省电模式有些 Linux 主机会在系统空闲时暂停 USB 设备。另外部分第三方载板的 Recovery 模式入口和官方开发套件不一样有的不是 Recovery Reset 组合而是一个单独的 Force Recovery 按键。如果你按照官方流程按住没反应查载板说明书找一下 Force Recovery 按键的位置。5. 三 M.2 载板适合谁不适合谁最后聊聊这个方案的定位帮助大家判断自己到底需不需要三个 M.2 插槽。如果你的项目是纯软件验证跑跑 PyTorch 示例、玩玩图像分类那官方开发套件的单 M.2 完全够用。但对做机器人、无人车、边缘推理服务器的朋友三 M.2 的扩展性就是刚需。比如我做的一个多路视频分析盒系统盘跑 Linux数据盘存视频流另一个槽位插了 AI 加速卡做辅助推理三个设备同时工作PCIe 带宽分配得很干净没有任何一条通道成为瓶颈。不过要提醒一点三 M.2 载板不是没有代价的。它的 PCB 面积更大占用的机箱空间更多功耗也更高而且因为要拆分配置 PCIe 通道价格通常比官方载板贵一截。如果你是预算敏感型项目建议先把需求盘明白再决定要不要上三槽。就我目前的实践来看在 Xavier NX 这样定位的平台上三个 M.2 插槽确实属于“用一次就回不去”的配置但前提是你真的用得上第二个和第三个槽位。我在实际组装和使用这块三 M.2 载板的过程中最大的感受是载板选型和系统配置的复杂度往往比 Xavier NX 模块本身还要高。硬件安装虽然简单但把三个 M.2 设备都跑通、跑稳、跑满速背后是对通道规划、Key 定义、设备树、供电散热这几个环节的综合把握。希望这篇文章能帮准备上车 Xavier NX 三 M.2 方案的朋友少走弯路选板时看清楚规格装模块时耐心一点系统配置后第一时间验证所有槽位剩下的就是痛快使用了。
返回列表