| 名称 | jetson-customize-uphy |
| 描述 | 在Orin/Thor定制载板上配置Jetson UPHY通道分配(uphy0/uphy1-config)。不要用于引脚复用或纯PCIe修改。 |
| 版本 | 0.0.2 |
| 开源协议 | “Apache-2.0” metadata: data-classification: public |
| 作者 | “Jetson Team” tags: - bsp - phase-2 - io - uphy domain: meta |
自定义UPHY通道分配
目的
在Jetson定制载板上选择一种UPHY通道分配方式,并编辑载板flash-conf分支中的ODMDATA="...",以应用所选的uphyX-config-N令牌(以及uphy0-config-6所需的UPHY_CONFIG=""清除)。此处不执行每个控制器的内核DT对齐——在ODMDATA提交生效后,此技能会分派到各控制器技能(/jetson-customize-pcie、/jetson-customize-mgbe、/jetson-customize-usb),这些技能必须将所选分配与参考内核DTB逐节点比较,并且仅当K-stock值与所选分配不一致时发出overlay片段。发现过程是智能体式的:选项、通道和控制器来自适配指南、载板原理图以及模组/SoC TRM,在运行时确定——绝不硬编码。每个面向用户的步骤都以Markdown表格形式呈现数据,最终摘要包含变更汇总表。
先决条件
- 活动目标平台配置文件中包含
reference_devkit:和custom_carrier:。 <source.root_path>/Linux_for_Tegra/.git已初始化(/jetson-init-source)。- 已存在Forked载板配置(
/jetson-derive-carrier)。 - 可通过
documents.adaptation_guide->documents.bsp_developer_guide-> 网络获取 -> 步骤1提示回退,访问到适配指南。 - 当存在
custom_carrier:时,必须有documents.custom_carrier_schematic和documents.custom_carrier_pinmux_xls。 如果缺少任一文件,技能将拒绝运行——无法猜测定制载板的布线决策。仅参考开发套件配置文件(无custom_carrier:块)则不需要这些文件。
概述
UPHY(统一PHY)是Tegra264(Thor)和Tegra234(Orin)上共享的高速PHY池。通道分配由ODMDATA标记(uphy0-config-N,Thor还有uphy1-config-N)选择,这些标记在烧写时由tegraflash_impl_t264.py::tegraflash_update_bpmp_dtb()解析,并写入BPMP DTB的/uphy/uphy{0,1}-config。
输出是<source.root_path>/Linux_for_Tegra/中的一个原子ODMDATA提交,包含所选的uphyX-config-N标记、UPHY_CONFIG=""清除(用于uphy0-config-6),以及从所选分配中推导出的每个控制器的ODMDATA标记(pcie@N_status=*、mgbeN-speed-*、USB SS每端口标记)。子技能(/jetson-customize-pcie、/jetson-customize-mgbe、/jetson-customize-usb)仅负责内核DT overlay片段——它们绝不能改动ODMDATA。所有提交遵循../../context/bsp-customization-workflow.md中的“批量原始+定制”模式。上游BSP位于<bsp_image.root_path>/,从不编辑。
何时调用
- 用户说“配置UPHY”、“uphy通道分配”、“设置uphy0-config-N”、“更改MGBE速度”,或要求在定制载板上重新映射PCIe / MGBE / USB3 / UFS。
- UPHY供应的控制器在烧写后无法枚举,或冷启动在BL31 SError中死机 /
BPMP firmware is not ready。 - 下游技能报告FMON故障或BPMP-DTB通道不匹配。
步骤(概要)
共八步;详细内容见references/procedure.md。
-
解析目标与文档。 若无活动配置文件、定制载板、源码树git或forked载板配置,则拒绝执行。解析适配指南 / 原理图 / 模块设计指南 / SoC TRM。
-
在适配指南中定位“Configure the UPHY Lane”(PDF / HTML镜像 /
WebFetch)。并交叉核对模块设计指南和SoC TRM。 -
交叉参考载板原理图。 引用UPHY网络名称(
MGBE2_TX_P/N、PEX5_LN0+-等)。匹配网络数为零 = 未布线。 -
枚举匹配的UPHY选项。 展示所有记录的
uphy0-config-N(Thor还有uphy1-config-N)索引。 -
询问用户选择哪个配置(硬性门禁)。 首先打印表格,然后
AskUserQuestion——每个UPHY表面一个,且如果任何分配的通道未布线则需载板布线确认。将答案持久化到JSON sidecar(references/run-state-sidecar.md)。 -
编辑载板flash-conf分支(原子ODMDATA提交)。 此技能拥有本次运行的所有ODMDATA标记。一个
ODMDATA="..."行,一次提交,包含所有标记。子技能绝不能触碰ODMDATA。解编译BPMP DTB:
<bsp_image.root_path>/Linux_for_Tegra/bootloader/generic/<BPFDTB_FILE>(BPFDTB_FILE来自载板配置)以快照库存状态,然后按以下顺序发出标记:a. UPHY表面标记 — 每个所选的
uphyX-config-N(Thor:两个表面都要,即使其中一个等于指南默认值)。顺序先uphy0再uphy1;分隔符,。 b. 每控制器标记 — 每一行若计划状态与BPMP库存不同,则发一个。匹配的行不发标记(冗余标记可能导致整行失效)。- PCIe:
pcie@N_status=okay|disabled。 - MGBE:分配时
mgbeN-speed-<rate>,禁用时**mgbeN-speed-del**。FMON始终在控制器自己的时钟上布防,与UPHY分配无关——缺少del⇒ BL31 SError重启循环。这是Thor上最常见的烧写后故障。 - USB SS:当SoC语法暴露每端口标记时使用。
c.
UPHY_CONFIG=""清除当选择了uphy0-config-6时(根据适配指南进行BCT引脚复用清除)。
- PCIe:
-
构建每控制器分配表并分派。 为每个UPHY供应的控制器(PCIe / MGBE / USB SS / UFS)派生一行,包含
{类别, 实例, 已分配?, BPMP库存, K库存, 已布线?, 期望K状态}。该表同时驱动(a)第6步的ODMDATA标记和(b)子技能的overlay片段——在第6步提交之前构建它。然后调用
/jetson-customize-pcie、/jetson-customize-mgbe和/jetson-customize-usb仅用于内核DT overlay片段(不做ODMDATA编辑——第6步拥有该行)。每个子技能从<bsp_image.root_path>/Linux_for_Tegra/kernel/dtb/tegra<soc>-*-nv.dtb重新读取K库存,当K库存与期望K状态匹配时跳过发出。UFS处理保持内联此处(无UFS子技能)。当控制器类别在此SoC上存在时,调用所有三个(例如在Orin上跳过MGBE)。先询问操作员;若
yes,则内联运行该子技能。 -
摘要+下一步链。 标题、细分、选择表(UPHY表面 | 所选配置 | 通道摘要 | UPHY_CONFIG清除)、变更摘要表(文件 | 仓库 | 提交SHA | 单行摘要,涵盖此技能的提交+每个派发子技能的提交),然后根据
references/procedure.md第8步通过连续AskUserQuestion提示驱动下游链(更多I/O?构建与提升?烧写?验证?)。绝不要用打印出的“下一步:…”行替代提示。
限制
- 仅支持Tegra234 (Orin)和Tegra264 (Thor)的UPHY表面。
- 不编辑引脚复用、BPMP DTB中不存在的纯PCIe DT属性(
num-lanes、pcie-mode)或上游BSP文件。 - 不烧写、不构建、不提升——请链接到
/jetson-build-source及下游技能。 - 禁止硬编码选项表;如果没有适配指南源可供解析,技能会拒绝执行而不是猜测。
- 不支持跨版本的表驱动:每次运行都会针对活动BSP版本重新读取指南。
故障排查
- 在
uphy0-config-6之后冷启动重启循环 / BL31plat_setup.c:726/BPMP firmware is not ready:载板配置中后面的一行^UPHY_CONFIG=重新覆盖了清除。请注释掉它(参见references/procedure.md第6步)。 - 烧写时
wait-for-device failed,BPMP DTB未变:某个ODMDATA标记格式错误(例如mgbe0-speed-0)。一个错误的标记会导致整行ODMDATA="..."失效。请检查references/procedure.md中的语法。 - 禁用某个MGBE后出现BL31 SError重启循环:缺少
mgbeN-speed-del。FMON在控制器自己的时钟上布防,与UPHY分配无关。 - 新布线的控制器无法枚举:库存内核DTB中为
status="disabled"。Overlay必须发出status="okay"(见references/procedure.md中的矩阵第4行)。 - Pinmap delta=0但板卡仍然行为异常:UPHY差分对不在pinmux
.xlsm中。请依据原理图网络名称而非pinmap进行决策。 - 重复的
pcie@<addr>片段:另一个技能(jetson-customize-pcie)已经拥有该节点。将此技能的范围限定为MGBE / UFS / USB3 SS / PCIe状态专用,并引用其他overlay。
参考
references/procedure.md— 完整的八步流程。references/gotchas.md— 通用注意点。references/run-state-sidecar.md— JSON sidecar模式+幂等性。../../references/platform_template.yaml—documents:模式。../../context/bsp-customization-workflow.md— overlay编辑协议。../../references/bsp-customization-kernel-dtb.md— 复合overlay文件名/附加协议。../jetson-derive-carrier/SKILL.md— 生成此技能编辑的配置。../jetson-init-source/SKILL.md— 生成此技能提交到的两个git仓库。../jetson-generate-kb/SKILL.md— 为芯片系列+文件位置咨询的知识库。