jetson-customize-mgbeSkill jetson-customize-mgbe

该技能用于定制Jetson Thor平台上的MGBE(多千兆以太网)25G/10G/1G QSFP配置。它通过生成内核设备树覆盖层,将BPMP的UPHY通道分配与内核侧的MGBE控制器启用及PHY连接相结合,实现定制载板上QSFP光口或电口的以太网功能。此技能不涉及UPHY通道分配和ODMDATA编辑,只负责内核侧的控制器和PHY管道配置。关键词:Jetson Thor, MGBE, 25G Ethernet, QSFP, 内核设备树覆盖层, PHY模式, 载板定制, BSP

BSP与板级支持 0 次安装 0 次浏览 更新于 9/6/2026
名称 jetson-customize-mgbe
描述 >- 通过内核-DT覆盖层启用Jetson Thor 25G/10G/1G MGBE QSFP。 不要用于UPHY通道分配或ODMDATA编辑。
版本 0.0.1
开源协议 “Apache-2.0” metadata: data-classification: public
作者 “Jetson Team” tags: - bsp - phase-2 - io - mgbe - ethernet domain: meta permissions: file_read: - “{workspace}/target-platform/” - “{source.root_path}/” - “{bsp_image.root_path}/Linux_for_Tegra/” - “{documents.root_path}/” file_write: - “{workspace}/target-platform/” - “{source.root_path}/bsp_sources/hardware/nvidia/” shell: - “dtc” - “fdtoverlay” - “cpp” - “git”

定制 MGBE / 25G QSFP

概述

Thor T264 暴露了 mgbe0…mgbe3。在定制载板上,25G QSFP 笼 (或 10G / 1G 光纤路径)通过 SerDes 连接到其中之一——可能 在笼前有或没有外部 MDIO PHY。本技能生成内核-DT覆盖层,将 BPMP 分配与 内核侧 status="okay" + PHY 管道连接结合起来,作用于 &mgbeN

不在范围内:

  • UPHY 通道分配——由 /jetson-customize-uphy 负责。如果所选 的 uphy1-config-N 没有分配目标 MGBE,则拒绝执行。
  • 所有 ODMDATA 令牌(mgbeN-speed-*、子节点 mgbeN_status=*)——由 /jetson-customize-uphy 在其单一原子 ODMDATA 提交中负责。本技能绝对不能触碰 ODMDATA=

输出是对 bsp_sources/ 硬件仓库中合成定制覆盖层 .dts一次提交/jetson-build-source 将合成覆盖层编译为 .dtbo,并负责其 Makefile 和 flash-conf 注册。

何时调用

  • 用户说“启用25G”、“配置QSFP”、“设置MGBE PHY模式”、 “将MGBE连接到QSFP”,或要求启用10G / 1G光纤路径。
  • 冷启动成功但 ip link show mgbe<N> 报告配置的控制器上 state DOWNNO-CARRIER,或者控制器根本未出现。
  • jetson-customize-uphy 已使用 uphy1-config-8(或其他分配 MGBE 的配置)运行, 你现在需要启用每个控制器侧。

先决条件:

  • 已选择包含 reference_devkit: (Thor) + custom_carrier: 块的活动配置文件。
  • <source.root_path>/Linux_for_Tegra/.git 存在 (/jetson-init-source)。
  • /jetson-derive-carrier 已运行——载板 flash-conf 分支位于 覆盖层跟踪器中。
  • /jetson-customize-uphy 已选择分配目标 MGBE 控制器通道的 UPHY 配置(Thor 上 MGBE0…3 25G 为 uphy1-config-8)。
  • 已在提示中注册或提供了事实来源文档: 适配指南、模块设计指南、SoC TRM。
  • 当存在 custom_carrier: 时,documents.custom_carrier_schematicdocuments.custom_carrier_pinmux_xls 都是必需的。 如果任一缺失,则拒绝运行—— 无法猜测定制载板上的 MGBE 路由。仅参考开发套件的配置文件跳过此检查。
  • dtc 在 PATH 中。

过程

参见 references/procedure.md 获取完整的逐步过程(步骤 1–8)。摘要:

  1. 解析活动目标 + 文档。 验证活动配置文件、custom_carrier、覆盖层跟踪器;定位相关的适配指南章节和引脚映射。
  2. 每个控制器的提问循环。 AskUserQuestion 由 questions.json 驱动(控制器、phy_mode、连接类型、I²C 总线/地址、复位 GPIO、兼容列表)。
  3. 从 phy_mode 推导最大速度。 反编译 BPMP DTB 以选择子节点 vs 顶层令牌语法;在 notes 中引用检查结果。
  4. 验证 HSIO 引脚 + 自动修复。 运行 pin_verifier.py 检查 MDC/MDIO/RESET/INT;暴露不匹配并路由到 /jetson-customize-pinmux
  5. (不进行 ODMDATA 编辑。) MGBE ODMDATA 令牌由 /jetson-customize-uphy 发出。步骤 5 仅记录 BPMP DTB 令牌形式的检查(子节点 vs 顶级)到 notes[] 用于审计。
  6. 追加合成覆盖层片段。 为每个控制器写一个片段到合成定制覆盖层 .dts;遵守 /* custom-bsp: mgbe:mgbe... */ 标记约定;运行 cpp/dtc/fdtoverlay 预检查。
  7. (保留。) 兄弟技能排序 / 交叉验证。
  8. 运行状态边车 + 摘要 + 下一步链。 写入 <profile-stem>.jetson-customize-mgbe.json 并输出单行 + 表格摘要,然后根据 references/procedure.md 步骤 8 通过连续的 AskUserQuestion 提示驱动下游链。绝不要用打印的“下一步:…”行替代提示。

注意事项

  • 标准 Thor BPMP DTB 没有 /mgbe/mgbe@N 子树——只有 /uphy 下的 mgbe<N>-speedmgbe<N>_status=disabled 子节点令牌在这些版本上会被静默拒绝;整个 ODMDATA 行随后在烧录时被丢弃。始终在发出前反编译 BPMP DTB(步骤 3);当子节点不存在时使用顶级虚线形式 (删除用 mgbe<N>-speed-del,设置用 mgbe<N>-speed-25G)。与 jetson-customize-uphy 相同的错误形式失败面。
  • phy_attach_kind=="phy" 时,mdio 子节点需要同时有 #address-cells = <1>#size-cells = <0>。缺失任一 → 内核在探测时拒绝 phy@<addr> reg 属性;MGBE 永远无法启动。
  • 覆盖层根 compatible 必须与活动 DT compatible 相交。 UEFI 插件管理器按 compatible 匹配过滤。不匹配的 覆盖层会被静默跳过——烧录成功,但 MGBE 保持禁用, dmesg 中无错误。始终针对已启动的参考 DUT 上的 /proc/device-tree/compatible 进行健全性检查。
  • OVERLAY_DTB_FILE 排序是 jetson-build-source 的问题, 不是本技能的。 本技能从不触碰载板 flash conf。合成定制覆盖层由 /jetson-build-source(步骤 5.0a)在平台 *-dynamic.dtbo 之后注册,这是正确的顺序。如果你发现自己 在本技能中追加 OVERLAY_DTB_FILE+=,你在重复所有权——停止,让构建技能来做。
  • UPHY 通道分配是 jetson-customize-uphy 的工作。 如果所选的 uphy1-config-N 没有为目标 MGBE 控制器分配通道,冷启动时 会出现 BL31 SError(fmon_update_config: detected fault 0x80)。始终先运行 /jetson-customize-uphy;在本技能的运行摘要 notes[] 中引用所选的 uphy1-config-N
  • 不要仅通过 ODMDATA 禁用 stock-okay 控制器。jetson-customize-uphy 相同规则:对于已在 BPMP DTB 中禁用的控制器,mgbe<N>_status=disabled 是无操作, 解析器可能将其视为歧义 → 丢弃 ODMDATA 行的其余部分。仅通过内核-DT覆盖层(status="disabled")禁用它。
  • 不要触碰 <bsp_image.root_path> 的上游 BSP。 所有 编辑落在覆盖层跟踪器 / bsp_sources 单仓库中,遵循 pristine + customization 提交模式。
  • JSON 边车是结构化状态,不是权威。jetson-customize-uphy 相同的警告:ODMDATA + 覆盖层 .dts + 两个 git 提交是面向设备的输出;边车仅供工具和幂等性使用。

参考