jetson-customize-pcie について
Tegra264 Thor と Tegra234 Orin の PCIe コントローラー動作を設定する、Jetson BSP 開発者向けスキルです。キャリアボード資料と UPHY 割り当て情報からカーネルデバイスツリーのオーバーレイを生成し、別スキルが管理する ODMDATA との整合性を確認します。
主な機能
- 01基板資料から PCIe トポロジーを特定
- 02コントローラー有効化とレーン設定を導出
- 03カーネル DT オーバーレイ片を生成
- 04dtc と fdtoverlay による検証
- 05既存 ODMDATA との整合性確認
- 06実行状態サイドカーへの記録
活用シーン
- 01UPHY レーン再割り当て後の PCIe 設定
- 02書き込み後にスロットが認識されない問題の調査
- 03PCIe リンク幅や速度の調整
- 04配線済み PCIe コンパニオン経路の有効化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia/ skills --skill jetson-customize-pcieインストール後、Claude Code で/jetson-customize-pcieを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.jsonreferences/gotchas.mdprocedure.md詳細
PCIe のカスタマイズ(コントローラーごとの状態/レーン数/速度)
概要
Tegra264(Thor、[email protected])および Tegra234(Orin、
[email protected])では、PCIe は複数のコントローラーに分割されており、
USB3/MGBE/UFS と UPHY レーンプールを共有しています。各コントローラーの
実行時の動作は、両方が必須となる 2 つの設定箇所によって決まります。
| 設定箇所 | 対象 | ここで決まる内容 |
|---|---|---|
ODMDATA pcie@N_status=…(および pcie@N_max-link-speed、pcie@N_pcie-mode、pcie@N_clk-scheme、pcie-cN-endpoint-enable) | BPMP DTB 内の /pcie/pcie@N | UPHY レーンの電源、refclk のゲーティング、コントローラー側の電源レール |
&pcieN に対するカーネル DT オーバーレイ | カーネル DTB 内の /bus@0/pcie@<addr> | カーネルのプローブ、レーン幅、リンク速度、RC/EP モード |
無効化の際にカーネルオーバーレイを省略すると、電源がオフの PHY をカーネルが プローブしてしまい、dmesg にリンクタイムアウトが記録されます。無効化の際に ODMDATA トークンを省略すると、BPMP が PHY を有効な状態に保持します。
テーブル駆動ではなく、エージェント駆動です — コントローラーのテーブルも
questions.json もありません。各コントローラー、レーン幅、回路図上で配線された
コネクター、信頼できる DT ノードのアドレスはすべて、ドキュメント、DTB、
キャリアのピンマップから実行時に検出します。
出力されるのはカーネル DT オーバーレイのコミットのみです。コントローラーごとの
fragment@N ブロックを、次のドキュメントに従って複合カスタムオーバーレイの
.dts に追加し、
../../references/bsp-customization-kernel-dtb.md
bsp_sources/ ハードウェアリポジトリにコミットします。
/jetson-build-source が複合オーバーレイを .dtbo にコンパイルし、Makefile と
flash-conf への登録を管理します。
このスキルは ODMDATA="..." を編集してはいけません。 すべての ODMDATA トークン
(pcie@N_status=…、pcie@N_max-link-speed、pcie@N_pcie-mode、
pcie@N_clk-scheme、pcie-cN-endpoint-enable に加え、
uphyX-config-N の設定箇所のトークンと UPHY_CONFIG="" によるクリア)は、
/jetson-customize-uphy がキャリアの flash-conf フォーク上で単一のアトミックな
コミットとして出力します。このスキルが UPHY サイドカーから取得する割り当てテーブルには、
各コントローラーの okay/disabled/レーンごとのサイズ設定がすでに示されています。
このスキルはそのテーブルをカーネル DT オーバーレイのフラグメントに変換するだけで、
オーバーレイがすでに customize-uphy によってコミット済みの ODMDATA と一致することを
検証します(Step 8 の整合性チェック — 不一致は報告し、黙って修正することはありません)。
呼び出すタイミング
- ユーザーが「PCIe を設定」「PCIe コントローラーを有効化」「PCIe の num-lanes を
設定」「PCIe のリンク速度を変更」と指示した場合、または
pcie@N_statusトークンの 切り替えを依頼した場合。 - 特定の PCIe スロットまたは M.2 コネクターがフラッシュ後に列挙されない場合、または リンクが誤ったレーン幅/速度でトレーニングされる場合。
jetson-customize-uphyが実行され、PCIe コントローラー間でレーンが再割り当てされた場合 (例:uphy0-config-7からuphy0-config-6に切り替えて PCIe C3 を有効化)。 この場合、コントローラーごとの設定も有効化する必要があります。- QSFP 経路が配線済みだと
jetson-customize-mgbeが報告したものの、カーネルが PCIe 側の 付随デバイスをプローブしない場合(まれなケース。XFI 構成)。
前提条件:
reference_devkit:とcustom_carrier:ブロックを含む有効なプロファイル。<source.root_path>/Linux_for_Tegra/.gitが存在すること (/jetson-init-source)。/jetson-derive-carrierが実行済みであること — キャリアの flash-conf フォークが オーバーレイトラッカーに登録されていること。/jetson-customize-uphyが実行済みであること — その JSON サイドカー<workspace>/target-platform/<profile-stem>.jetson-customize-uphy.jsonが コントローラーごとのenable判定を決定します。- 信頼できる情報源となるドキュメントが登録済み、またはプロンプトで提供されていること: Adaptation Guide、Module Design Guide、SoC TRM。
custom_carrier:が存在する場合、documents.custom_carrier_schematicとdocuments.custom_carrier_pinmux_xlsの両方が必須です。 いずれかが欠けている場合は 実行を拒否してください。カスタムキャリア上の配線は推測できません。 リファレンス開発キットのみのプロファイルでは、この確認を省略します。dtcが PATH 上にあること。
手順(概要)
手順の詳細な手順説明は
references/procedure.md にあります。大まかな流れは次のとおりです。
- 有効なターゲットを特定し、信頼できるソース文書(
<carrier-pinmap>、<ref-dtb>、<uphy-state>を含む)を開きます。<uphy-state>がない場合は拒否します。 <ref-dtb>を逆コンパイルし、回路図でPEX<N>_*ネットラベルを検索して、PCIe トポロジー(開発キットとカスタムキャリア)を比較します。AskUserQuestion(multiSelect)を使い、カスタマイズするコントローラーを選びます。- コントローラーごとに、ピンマップ、回路図、
pin_verifier.pyを使用してPE<N>_CLKREQ_L、PE<N>_RST_L、任意のPE<N>_WAKE_Lを検証します。 - コントローラーごとの計画を自動導出します(
<uphy-state>からenable、Adaptation Guide からlanes/speedを取得し、modeは"rc"に固定)。その後、必須の確認またはカスタマイズのゲートを設けます。 - コントローラーごとの
fragment@Nブロック(マーカー/* custom-bsp: pcie:pcie@<addr> */)を、bsp_sources/内の複合カスタムオーバーレイ.dtsに追加します。事前チェックとしてdtcとfdtoverlayを実行します。ワークフローのプレビューゲートを通じてコミットします。ODMDATAは編集しないでください —/jetson-customize-uphyは、単一のアトミックな ODMDATA コミットでpcie@N_status=…、pcie@N_max-link-speed、pcie@N_pcie-mode、pcie@N_clk-scheme、pcie-cN-endpoint-enableをすでに出力しています。このスキルでは、コントローラーごとの計画をカーネル DT オーバーレイのフラグメントに変換するだけです。 - (この手順はステップ 6 に統合されています — オーバーレイのみを出力します。)
- ODMDATA とオーバーレイの整合性を相互確認します。矛盾する行がある場合は、処理を停止し、2 つのコミットからどう復旧するかユーザーに尋ねてください。
自律的に
git reset --hardを実行してはいけません。 - 実行状態の JSON サイドカーを
<workspace>/target-platform/<profile-stem>.jetson-customize-pcie.jsonに書き込み、概要を作成します。その後、references/procedure.mdのステップ 9 に従い、AskUserQuestionプロンプトを順番に使用して、下流の次の手順のチェーンを進めます。プロンプトの代わりに「次の手順: …」という行を表示してはいけません。
制限事項
- モードは RC に固定されています。 エンドポイントモードは、オペレーターがステップ 5c で
mode_override="ep"を渡した場合にのみ出力されます。 enableは導出され、質問しません。 UPHY に割り当てられたコントローラーは必ずokayに、割り当てられていないコントローラーは必ずdisabledに設定されます。- 上流の BSP は編集しません。 出力先は
Linux_for_Tegra/とbsp_sources/のみです。 - オーバーレイの事前マージは妥当性確認であり、本番ビルドではありません。 正式な処理は
/jetson-build-sourceが担います。 - Flash-conf のオーバーレイ登録は対象外です。
/jetson-build-sourceのステップ 5.0a が担当します。
トラブルシューティング
<uphy-state>がない → 先に/jetson-customize-uphyを実行します。- フラッシュ後にスロットが列挙されない →
dmesg | grep pcieを確認し、ODMDATA のpcie@<N>_status=okayとオーバーレイのフラグメントが一致していることを再確認します(references/procedure.mdのステップ 8 の表)。 - リンクが誤った幅でトレーニングされる →
<uphy-state>の UPHY 設定で想定されるレーン数が割り当てられていることを確認します。カーネルフラグメントのnum-lanesはその値と一致する必要があります。 compatibleが一致しない → フラグメントではなく、複合ルートを修正します。不一致の場合、UEFI プラグインマネージャーは警告なしでスキップします。- ODMDATA とオーバーレイの行に矛盾がある → ユーザーに尋ねます。自動的に
git reset --hardを実行してはいけません。gotchas を参照してください。 - よくある落とし穴 —
references/gotchas.mdを参照してください(RC の固定、ノードアドレスの取得元、標準で無効になっているコントローラー、jetson-customize-uphyとのファイル内ハンドオフ)。
参考資料
references/procedure.md— 9 ステップの手順全体(トポロジーの差分、プランの導出、オーバーレイの追記、ODMDATA の照合、サイドカー)。references/gotchas.md— 失敗モードと不変条件(RC のピン留め、アドレスの取得元、BPMP の引き継ぎ)。../../scripts/pin_verifier.py— 共通 HSIO ピン検証ツール(ステップ 4)。../../references/platform_template.yaml— ステップ 1 で使用するdocuments:ブロック。../../context/bsp-customization-workflow.md— オーバーレイ編集プロトコルとコミットメッセージのプレビューゲート。../../references/bsp-customization-kernel-dtb.md— 複合オーバーレイのファイル名/スケルトン/追記プロトコル。../jetson-customize-uphy/SKILL.md— UPHY レーン割り当てを担当する兄弟スキル。そのサイドカーがコントローラーごとのenable判定を制御します。../jetson-customize-pinmux/SKILL.md— HSIO ピンの SFIO 不一致を修正するため、ステップ 4 で(オペレーターの確認を得て)呼び出す兄弟スキル。../jetson-customize-mgbe/SKILL.md— MGBE コントローラー用の兄弟スキル。2 つの対象面(ODMDATA とオーバーレイ)のパターンを共有します。../jetson-derive-carrier/SKILL.md— 最初に実行する必要があります。ステップ 6 で編集するキャリアの flash-conf フォークを生成します。../jetson-init-source/SKILL.md— このスキルが変更をコミットするオーバーレイトラッカーと bsp_sources リポジトリを生成します。