| 名称 | 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 DOWN或NO-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_schematic和documents.custom_carrier_pinmux_xls都是必需的。 如果任一缺失,则拒绝运行—— 无法猜测定制载板上的 MGBE 路由。仅参考开发套件的配置文件跳过此检查。 dtc在 PATH 中。
过程
参见 references/procedure.md 获取完整的逐步过程(步骤 1–8)。摘要:
- 解析活动目标 + 文档。 验证活动配置文件、custom_carrier、覆盖层跟踪器;定位相关的适配指南章节和引脚映射。
- 每个控制器的提问循环。 AskUserQuestion 由
questions.json驱动(控制器、phy_mode、连接类型、I²C 总线/地址、复位 GPIO、兼容列表)。 - 从 phy_mode 推导最大速度。 反编译 BPMP DTB 以选择子节点 vs 顶层令牌语法;在 notes 中引用检查结果。
- 验证 HSIO 引脚 + 自动修复。 运行
pin_verifier.py检查 MDC/MDIO/RESET/INT;暴露不匹配并路由到/jetson-customize-pinmux。 - (不进行 ODMDATA 编辑。) MGBE ODMDATA 令牌由
/jetson-customize-uphy发出。步骤 5 仅记录 BPMP DTB 令牌形式的检查(子节点 vs 顶级)到notes[]用于审计。 - 追加合成覆盖层片段。 为每个控制器写一个片段到合成定制覆盖层
.dts;遵守/* custom-bsp: mgbe:mgbe... */标记约定;运行 cpp/dtc/fdtoverlay 预检查。 - (保留。) 兄弟技能排序 / 交叉验证。
- 运行状态边车 + 摘要 + 下一步链。 写入
<profile-stem>.jetson-customize-mgbe.json并输出单行 + 表格摘要,然后根据references/procedure.md步骤 8 通过连续的AskUserQuestion提示驱动下游链。绝不要用打印的“下一步:…”行替代提示。
注意事项
- 标准 Thor BPMP DTB 没有
/mgbe/mgbe@N子树——只有/uphy下的mgbe<N>-speed。mgbe<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 提交是面向设备的输出;边车仅供工具和幂等性使用。
参考
questions.json— 步骤 2 使用的 Q-1…Q-8 提示模式。../../scripts/pin_verifier.py— 共享的 HSIO 引脚验证器(步骤 4)。../../references/platform_template.yaml— 步骤 1 使用的documents:块。../../context/bsp-customization-workflow.md— 覆盖层编辑协议(批量的 pristine + customization 提交)。../jetson-customize-uphy/SKILL.md— 负责 UPHY 通道分配的兄弟技能。必须在本技能之前运行以设置 MGBE 分配配置的uphy1-config-N。../jetson-customize-pinmux/SKILL.md— 步骤 4 调用的兄弟技能(需操作员确认)以修复引脚 SFIO 不匹配。../jetson-derive-carrier/SKILL.md— 必须首先运行;生成步骤 5 中编辑的载板 flash-conf 分支和本技能在其后排序的载板基础覆盖层。../jetson-init-source/SKILL.md— 生成本技能提交到的覆盖层跟踪器和 bsp_sources 仓库。