Jetson PCIe 内核定制
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/jetson-customize-pcie。
技能介绍
问题背景
在 Tegra264(Thor,pcie@C0..C5)和 Tegra234(Orin,pcie@C0..C10)上,PCIe 控制器与 USB3、MGBE、UFS 共用 UPHY 通道池。要让某个插槽或 M.2 在烧录后能正确枚举,BPMP 侧的 ODMDATA 与 内核 DT 叠加层 必须同时一致:前者管 PHY 电源与参考时钟,后者管内核探测、通道宽度、链路速度与 RC/EP 模式。只改一边会出现典型故障——禁用控制器却未关 ODMDATA 时 BPMP 仍给 PHY 上电;或 ODMDATA 已关电但内核仍去探测,从而在 dmesg 里看到链路超时。
技能如何工作
本技能只产出内核 DT 叠加层,把 jetson-customize-uphy 侧车(.jetson-customize-uphy.json)里已确定的控制器 enable/通道分配,转成按控制器划分的 fragment@N 块,按 bsp-customization-kernel-dtb.md 追加到 bsp_sources/ 的复合定制 .dts。不编辑 ODMDATA="..." 及 pcie@N_status、pcie@N_max-link-speed 等令牌——那些由 /jetson-customize-uphy 在烧录配置分支做原子提交。
流程要点包括:对照开发套件与定制载板拓扑(反编译 DTB、在原理图里查 PEX_* 网络);用 pin_verifier.py 核对 PE_CLKREQ_L、PE_RST_L 等;从 UPHY 分配表推导各控制器的 okay/disabled、lanes 与 speed(模式默认硬绑定 RC);预检 dtc/fdtoverlay 后提交叠加层;最后做 ODMDATA 与叠加层交叉检查,矛盾时停止并询问用户,不会静默 git reset --hard。
边界与注意
- 先决条件:
/jetson-init-source、/jetson-derive-carrier、/jetson-customize-uphy已跑通;定制载板必须提供documents.custom_carrier_schematic与documents.custom_carrier_pinmux_xls,缺一则拒绝运行。 - EP 模式仅在步骤中显式
mode_override="ep"时才会写入;日常路径是 RC。 - 烧录配置里叠加层的 Makefile/注册由
/jetson-build-source负责,本技能不在范围内。
使用场景
- 定制载板烧录后 M.2 或 PCIe 插槽无法枚举,需在 `bsp_sources` 追加与 UPHY 分配一致的内核叠加层
- 运行 `jetson-customize-uphy` 切换通道配置(如启用 PCIe C3)后,要为各控制器生成对应的 `fragment@N` 片段
- 链路在 `dmesg` 中以错误通道宽度训练,需核对叠加层 `num-lanes` 与侧车中的 UPHY 通道数是否匹配
- 从开发套件迁移到定制载板时,需对照原理图 `PEX_*` 网络与反编译 DTB 确认 PCIe 拓扑再写叠加层
适合人员
- 负责 Jetson Orin/Thor 定制载板 BSP 集成、需在 UPHY 技能之后补齐 PCIe 内核 DT 的嵌入式工程师
- 持有载板原理图与 pinmux 表、要在不手改 ODMDATA 的前提下完成 PCIe 控制器侧设备树定制的硬件软件协同人员
- 烧录后排查 `dmesg` PCIe 链路超时或枚举失败、需做 ODMDATA 与叠加层一致性交叉检查的 Linux 驱动/BSP 维护者
- 按智雨 Jetson 定制工作流依次执行 derive-carrier、customize-uphy 后,继续推进 PCIe 叠加层提交与预览门确认的集成开发者