jetson-init-target

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Initialize Target Platform

初始化目标平台

Overview

概述

This skill authors a new target-platform profile YAML — the write-side of the contract in
../../context/target-platform-contract.md
. It uses
../../references/bsp-platforms-catalogue.md
as the canonical product / flash-config catalogue and
../../references/platform_template.yaml
as the field schema.
Flow is linear: pick a reference product + flash config, then optionally add custom-carrier details. The two contract cases — reference-only vs reference + custom carrier — are distinguished only by whether the user provides custom-carrier details; there is no up-front mode prompt.
Scope is
reference_devkit:
and
custom_carrier:
only.
Sibling skills own the other blocks:
bsp_image:
jetson-init-image
;
source:
jetson-init-source
;
documents:
jetson-link-docs
.
Outputs: a new
target-platform/<name>.yaml
and (by default) an updated
active_target.yml
pointing at it. To switch among already-authored profiles, use sibling
jetson-set-target
.
本技能用于创建新的目标平台配置YAML文件——对应
../../context/target-platform-contract.md
中契约的写入端。它以
../../references/bsp-platforms-catalogue.md
作为标准产品/闪存配置目录,并以
../../references/platform_template.yaml
作为字段 schema。
流程为线性:选择参考产品+闪存配置,然后可选添加自定义载板详情。两种契约场景——仅参考配置 vs 参考配置+自定义载板——仅通过用户是否提供自定义载板详情来区分,无需提前选择模式。
仅负责
reference_devkit:
custom_carrier:
部分
。其他模块由关联技能负责:
bsp_image:
jetson-init-image
source:
jetson-init-source
documents:
jetson-link-docs
输出:新的
target-platform/<name>.yaml
文件,以及默认情况下更新后的
active_target.yml
(指向该新文件)。如需在已创建的配置文件间切换,请使用关联技能
jetson-set-target

When to invoke

调用时机

  • The user asks to create / author / add a new target platform profile.
  • A downstream skill refused with "no active target" and
    target-platform/
    contains no profile YAML files yet (otherwise prefer
    jetson-set-target
    ).
  • The user wants a target whose profile does not yet exist on disk.
  • 用户要求创建/编写/添加新的目标平台配置文件时。
  • 下游技能返回“无活动目标”错误,且
    target-platform/
    目录下无配置YAML文件时(否则优先使用
    jetson-set-target
    )。
  • 用户需要的目标配置文件尚未在本地磁盘存在时。

Procedure

操作流程

Quick-start prefill mapping

快速启动预填充映射

Follow the shared
quick_start_prefill
contract
. This skill consumes:
  • quick_start_prefill.target.active_platform
    as the selected catalogue row when it resolves to exactly one product.
  • quick_start_prefill.target.custom_carrier
    as the custom-carrier intent.
If
active_platform
resolves to one catalogue row, use it directly. Do not re-ask reference-product or flash-config questions; use the row's default flash config unless the prefill names a catalogue variant. Ask only when the prefill is missing, invalid, ambiguous, or names an unknown variant.
遵循共享的
quick_start_prefill
契约
。本技能会使用:
  • quick_start_prefill.target.active_platform
    :当它解析为唯一产品时,作为选中的目录行。
  • quick_start_prefill.target.custom_carrier
    :作为自定义载板的意图。
如果
active_platform
解析为唯一目录行,则直接使用。无需再次询问参考产品或闪存配置问题;除非预填充指定了目录变体,否则使用该行的默认闪存配置。仅当预填充缺失、无效、模糊或指定了未知变体时,才需要询问用户。

How the skill consumes the template

技能如何使用模板

Load
../../references/platform_template.yaml
once at skill startup and treat it as the schema for prompted blocks. Each placeholder value carries one of three sentinel markers:
MarkerBehavior
<REQUIRED: description>
Prompt the user. Value must be provided;
NA
is accepted with a warning that downstream skills may refuse.
<OPTIONAL: description>
Prompt the user. Value may be skipped (Enter or
NA
); skipped fields are omitted from the written profile (no empty key, no
NA
placeholder).
<DERIVED: description>
Filled programmatically from
bsp-platforms-catalogue.md
and the user's product / flash-config choice in the "Pick the reference product" and "Pick the flash config" steps. Not prompted.
Use the marker description as the prompt text verbatim. Match markers with the regex
^<(REQUIRED|OPTIONAL|DERIVED):\s*(.*)>$
after YAML parsing strips the surrounding quotes.
Block-level inclusion (
custom_carrier
) is decided by the skill flow, not by markers — adding/removing fields inside a block is a template-only change.
在技能启动时加载
../../references/platform_template.yaml
,并将其作为提示模块的schema。每个占位符值带有以下三种标记之一:
标记行为
<REQUIRED: description>
提示用户输入。必须提供值;接受
NA
但会警告下游技能可能拒绝该值。
<OPTIONAL: description>
提示用户输入。可跳过(按Enter或输入
NA
);跳过的字段会从写入的配置文件中省略(不会保留空键或
NA
占位符)。
<DERIVED: description>
根据
bsp-platforms-catalogue.md
以及用户在“选择参考产品”和“选择闪存配置”步骤中的选择自动填充。无需提示用户
直接使用标记描述作为提示文本。在YAML解析去除周围引号后,使用正则表达式
^<(REQUIRED|OPTIONAL|DERIVED):\s*(.*)>$
匹配标记。
模块级别的包含(如
custom_carrier
)由技能流程决定,而非标记——添加/移除模块内的字段仅需修改模板。

Survey current state

检查当前状态

  1. If
    target-platform/
    does not exist, create it and copy
    ../../references/active_target_template.yaml
    to
    target-platform/active_target.yml
    (note
    .yml
    extension).
  2. Read
    target-platform/active_target.yml
    .
  3. List
    target-platform/*.yaml
    (excluding
    active_target.yml
    ).
SituationAction
No profile YAMLs existProceed — this is the bootstrap case. The new profile will be set as
active_target
automatically in the "Write" step (no activation prompt in the "Confirm" step).
Profiles exist,
active: NA
Show the list of existing profiles and confirm the user wants to author a new one (rather than activate one of the existing profiles via
jetson-set-target
).
Profiles exist,
active:
names a present file
Show the active profile and the full list. Ask whether the user wants to (a) author a new profile alongside, or (b) switch to one of the existing profiles via
jetson-set-target
. If (b), stop and tell the user to run
jetson-set-target
.
active:
names a missing file
Tell the user the pointer is broken; offer to author a new profile (and replace the pointer) or to fix the pointer manually.
  1. 如果
    target-platform/
    目录不存在,则创建该目录,并将
    ../../references/active_target_template.yaml
    复制到
    target-platform/active_target.yml
    (注意扩展名是
    .yml
    )。
  2. 读取
    target-platform/active_target.yml
    文件。
  3. 列出
    target-platform/*.yaml
    文件(排除
    active_target.yml
    )。
场景操作
无配置YAML文件继续操作——这是初始化场景。新配置文件会在“写入”步骤自动设置为
active_target
(“确认”步骤无需激活提示)。
存在配置文件,
active: NA
显示现有配置文件列表,并确认用户是否要创建新配置文件(而非通过
jetson-set-target
激活现有配置文件)。
存在配置文件,
active:
指向现有文件
显示当前活动配置文件及完整列表。询问用户是要(a)创建新配置文件并存放在旁,还是(b)通过
jetson-set-target
切换到现有配置文件。如果选(b),停止操作并告知用户运行
jetson-set-target
active:
指向不存在的文件
告知用户指针已损坏;提供创建新配置文件(并替换指针)或手动修复指针的选项。

Read the platforms catalogue

读取平台目录

Read
../../references/bsp-platforms-catalogue.md
. Parse the "Product / Chip / SKU / Flash Config Mapping" table — that is the source of truth for product names, CVM/CVB SKUs, default flash confs, and variant suffixes. Do not scan
Linux_for_Tegra/*.conf
or parse conf filenames; the catalogue already collapses that.
读取
../../references/bsp-platforms-catalogue.md
。解析**“产品/芯片/SKU/闪存配置映射”**表格——这是产品名称、CVM/CVB SKU、默认闪存配置和变体后缀的权威来源。请勿扫描
Linux_for_Tegra/*.conf
或解析配置文件名;目录已整合相关信息。

Pick the reference product (baseline)

选择参考产品(基准)

Print the full catalogue list before asking. Group rows by chip family and number every entry with stable indexes for this run. Build the list only from
bsp-platforms-catalogue.md
; do not copy platform rows from examples or other docs.
Build explicit shortcut choices from the printed list by taking the first row in each chip-family group. Each shortcut label must include the full-list index and product name, for example
Index 1 — Jetson AGX Orin 64GB
. Do not hard-code product names; derive shortcuts from the parsed catalogue rows. These shortcuts are the only explicit choices for this question. Manual index entry must use the tool's built-in
Type something
input; do not add a third custom choice for manual entry.
Prompt text:
Pick a platform shortcut, or choose Type something and type the numeric index from the full platform list printed above. If your hardware is a custom carrier with one of these Jetson modules, pick the closest matching reference devkit as the baseline. Type cancel to cancel this run.
Do not show chip-family choices such as
T234 / Orin family
or
T264 / Thor family
. Do not show
Type index
,
Manual entry
,
Other platform
, or any custom manual-entry choice. The only manual-entry path is the tool-provided
Type something
row. Do not add
Other
as a choice or paraphrase
Type something
as
Other
in prompt text. Do not accept product-name substring matches in this step; typed input must be a numeric index from the printed full list or
cancel
.
skip
is not allowed because this skill cannot author a target profile without a reference platform.
Resolve the shortcut or typed index to exactly one catalogue row. If the typed index is out of range or invalid, show the valid index range and ask again. If the user types
skip
, explain that
jetson-init-target
requires a reference platform and ask again. If the user types
cancel
, stop without writing a profile.
询问前先打印完整目录列表。按芯片系列分组,并为每个条目分配本次运行的稳定索引。仅从
bsp-platforms-catalogue.md
构建列表;请勿从示例或其他文档复制平台行。
从打印列表中,为每个芯片系列组的第一行创建明确的快捷选项。每个快捷标签必须包含完整列表的索引和产品名称,例如
Index 1 — Jetson AGX Orin 64GB
。请勿硬编码产品名称;从解析的目录行生成快捷选项。这些快捷选项是本问题的唯一明确选择。手动输入索引必须使用工具内置的
Type something
输入框;请勿添加第三个自定义手动输入选项。
提示文本:
选择平台快捷选项,或选择Type something并输入上方打印的完整平台列表中的数字索引。如果您的硬件是搭载Jetson模块的自定义载板,请选择最匹配的参考开发套件作为基准。输入cancel可取消本次操作。
请勿显示芯片系列选项,如
T234 / Orin family
T264 / Thor family
。请勿显示
Type index
Manual entry
Other platform
或任何自定义手动输入选项。唯一的手动输入路径是工具提供的
Type something
行。请勿在提示文本中将
Type something
表述为
Other
。本步骤不接受产品名称子串匹配;输入内容必须是打印完整列表中的数字索引或
cancel
。不允许输入
skip
,因为本技能无法在无参考平台的情况下创建目标配置文件。
将快捷选项或输入的索引解析为唯一目录行。如果输入的索引超出范围或无效,显示有效索引范围并再次询问。如果用户输入
skip
,说明
jetson-init-target
需要参考平台并再次询问。如果用户输入
cancel
,停止操作且不写入配置文件。

Pick the flash config

选择闪存配置

From the catalogue row, the Default flash conf is option
1
; the Variants column lists suffixes — option
2..N
. Reconstruct each variant's full conf filename by appending the suffix to the default conf base. If a row says
(same as <other>)
in the Variants column, reuse the referenced row's variant list verbatim. Build this list only from the selected catalogue row.
Prompt:
Pick a number, or press Enter to accept the default (
1
).
If the chosen row has no variants (
in the catalogue), proceed to the "Optional: add custom carrier details" step with the default conf.
Edge cases:
  • Raw-conf variants (catalogue marks
    (raw)
    ). For Orin Nano,
    -a0-maxn (raw)
    p3768-0000-p3767-0000-a0-maxn.conf
    . Use the raw filename verbatim.
  • (same as <other>)
    placeholders.
    Reuse the referenced row's variants verbatim.
从选中的目录行中,默认闪存配置为选项
1
变体列列出后缀——选项
2..N
。通过将后缀追加到默认配置基名,重构每个变体的完整配置文件名。如果某行在变体列中显示
(same as <other>)
,则直接复用引用行的变体列表。仅从选中的目录行构建此列表。
提示:
选择数字,或按Enter接受默认值(
1
)。
如果选中的行无变体(目录中显示
),则直接使用默认配置进入“可选:添加自定义载板详情”步骤。
边缘情况:
  • 原始配置变体(目录标记
    (raw)
    )。对于Orin Nano,
    -a0-maxn (raw)
    p3768-0000-p3767-0000-a0-maxn.conf
    。直接使用原始文件名。
  • (same as <other>)
    占位符
    。直接复用引用行的变体列表。

Optional: add custom carrier details

可选:添加自定义载板详情

After the baseline + flash config are chosen, resolve whether the profile should record a custom carrier on top. If
quick_start_prefill.target.custom_carrier
is a valid concrete intent, consume it directly:
  • add_custom_carrier
    → record
    custom_carrier:
    and collect the missing carrier metadata below.
  • no_custom_carrier
    → omit
    custom_carrier:
    and proceed to the "Confirm" step.
  • keep_existing_custom_carrier
    is valid only when editing an existing active profile that already has
    custom_carrier:
    . Because this skill authors a new profile, treat it as ambiguous and ask the custom-carrier intent question below.
  • skip
    or a missing prefill value → ask the custom-carrier intent question below.
When intent is not already concrete, ask the user whether they also want to record a custom carrier on top using the
AskUserQuestions
UI. This is a bounded choice; show
add
and
skip
only:
Optionally add custom-carrier details for a customer-designed carrier using this Jetson module? (
add
/
skip
, default
skip
)
If the resolved intent is
skip
, proceed to the "Confirm" step with the
custom_carrier:
block omitted.
If the resolved intent is
add
, collect every still-missing
custom_carrier:
value through the
AskUserQuestions
UI. Do not collect custom-carrier metadata with plain-text prompts, inline chat questions, freeform summary confirmation, inferred defaults, or example values presented as selectable options. Split the collection into multiple
AskUserQuestions
forms if the UI question limit would otherwise be exceeded.
For the first
AskUserQuestions
form, ask
custom_carrier.name
,
custom_carrier.id
,
custom_carrier.sku
, and
custom_carrier.revision
in template document order. For these four fields, the only selectable path shown to the user must be the tool's built-in
Type something
row. Do not add example values, "Other", guessed board IDs, guessed SKUs, common revision strings, or any explicit domain options. These are customer-provided metadata: preserve them exactly as entered and do not require or validate any naming convention, prefix, case, character set, digit count, or SKU format. Validate only that required fields are non-empty unless the user explicitly enters
NA
.
NA
is accepted per the contract for required fields; warn that downstream skills may refuse if a missing field is required for their edit.
After
custom_carrier.name
is known, collect
custom_carrier.flash_config
through a second
AskUserQuestions
form if it is still missing. Show the suggested default as the only explicit choice and allow the built-in
Type something
row for a custom
.conf
filename. Require a non-empty filename ending in
.conf
; do not derive it from board ID, SKU, or any guessed convention.
Field-specific behavior (defaults / suggestions not expressible via markers alone):
  • custom_carrier.flash_config
    — suggest a default of kebab-cased
    custom_carrier.name + ".conf"
    (e.g. "Acme Vision X1" →
    acme-vision-x1.conf
    ).
  • custom_carrier.name
    — prompt: "Type the customer-facing custom carrier or product name exactly as you want it recorded. No format is required." Use
    Type something
    only.
  • custom_carrier.id
    — prompt: "Type the custom carrier board ID or project ID exactly as you want it recorded. No format is required." Use
    Type something
    only.
  • custom_carrier.sku
    — prompt: "Type the custom carrier SKU or variant identifier exactly as you want it recorded. No format is required." Use
    Type something
    only; quote in the written YAML so numeric-looking values and leading zeros survive.
  • custom_carrier.revision
    — prompt: "Type the custom carrier revision or build identifier exactly as you want it recorded, or press Enter to omit it. No format is required." Use
    Type something
    only; omit when skipped.
If the user does not know a value, suggest reading
/proc/device-tree/chosen/ids
on the booted target. If genuinely unavailable, accept
NA
for required fields or omit optional fields.
The template intentionally omits
custom_carrier.module
and
custom_carrier.chip_family
— module identity comes from
reference_devkit.module
(the same physical Jetson module plugs into both carriers). Don't add them back.
选择基准+闪存配置后,确定配置文件是否需要记录自定义载板信息。如果
quick_start_prefill.target.custom_carrier
是有效的具体意图,则直接使用:
  • add_custom_carrier
    → 记录
    custom_carrier:
    并收集以下缺失的载板元数据。
  • no_custom_carrier
    → 省略
    custom_carrier:
    并进入“确认”步骤。
  • keep_existing_custom_carrier
    仅在编辑已包含
    custom_carrier:
    的现有活动配置文件时有效。由于本技能是创建新配置文件,将其视为模糊意图并询问下方的自定义载板意图问题。
  • skip
    或预填充值缺失 → 询问下方的自定义载板意图问题。
当意图不明确时,使用
AskUserQuestions
UI询问用户是否要记录自定义载板信息。这是有限选择;仅显示
add
skip
是否要为搭载该Jetson模块的客户定制载板添加自定义载板详情?(
add
/
skip
,默认
skip
如果解析后的意图是
skip
,则省略
custom_carrier:
模块并进入“确认”步骤。
如果解析后的意图是
add
,则通过
AskUserQuestions
UI收集所有仍缺失的
custom_carrier:
值。请勿使用纯文本提示、内联聊天问题、自由格式摘要确认、推断默认值或示例作为可选选项来收集自定义载板元数据。如果UI问题数量受限,可将收集过程拆分为多个
AskUserQuestions
表单。
第一个
AskUserQuestions
表单按模板文档顺序询问
custom_carrier.name
custom_carrier.id
custom_carrier.sku
custom_carrier.revision
。对于这四个字段,显示给用户的唯一可选路径必须是工具内置的
Type something
行。请勿添加示例值、“Other”、猜测的板ID、猜测的SKU、常见修订字符串或任何明确的领域选项。这些是客户提供的元数据:完全保留用户输入的内容,无需验证任何命名约定、前缀、大小写、字符集、数字位数或SKU格式。仅验证必填字段是否非空,除非用户明确输入
NA
。根据契约,必填字段接受
NA
;但会警告如果下游技能需要该字段,可能会拒绝操作。
在获知
custom_carrier.name
后,如果
custom_carrier.flash_config
仍缺失,则通过第二个
AskUserQuestions
表单收集。将建议的默认值作为唯一明确选项,并允许使用内置的
Type something
行输入自定义
.conf
文件名。要求输入非空且以
.conf
结尾的文件名;请勿从板ID、SKU或任何猜测的约定推导文件名。
字段特定行为(无法仅通过标记表达的默认值/建议):
  • custom_carrier.flash_config
    — 建议默认值为短横线分隔的
    custom_carrier.name + ".conf"
    (例如“Acme Vision X1” →
    acme-vision-x1.conf
    )。
  • custom_carrier.name
    — 提示:“输入要记录的客户自定义载板或产品名称,格式不限。”仅使用
    Type something
  • custom_carrier.id
    — 提示:“输入要记录的自定义载板板ID或项目ID,格式不限。”仅使用
    Type something
  • custom_carrier.sku
    — 提示:“输入要记录的自定义载板SKU或变体标识符,格式不限。”仅使用
    Type something
    ;在写入YAML时添加引号,确保类似数字的值和前导零得以保留。
  • custom_carrier.revision
    — 提示:“输入要记录的自定义载板修订版或构建标识符,或按Enter省略,格式不限。”仅使用
    Type something
    ;跳过则省略该字段。
如果用户不知道某个值,建议在已启动的目标设备上读取
/proc/device-tree/chosen/ids
。如果确实无法获取,必填字段接受
NA
,可选字段可省略。
模板故意省略了
custom_carrier.module
custom_carrier.chip_family
——模块标识来自
reference_devkit.module
(同一物理Jetson模块可插入两种载板)。请勿重新添加这两个字段。

Confirm

确认

Show the proposed YAML. Shape depends on whether the user added custom-carrier details in the "Optional: add custom carrier details" step. Example: see
references/ui-samples.md
for the reference-only and reference + custom-carrier YAML shapes, plus the note on which sibling skill appends which block.
Suggested filename:
  • Reference-only: kebab-cased product name from the selected catalogue row, with
    .yaml
    appended. E.g.
    Jetson AGX Thor T5000
    jetson-agx-thor-t5000.yaml
    ;
    Jetson AGX Orin 32GB
    jetson-agx-orin-32gb.yaml
    . Do not derive the filename from
    flash_config
    ; multiple products can share one default conf.
  • With custom carrier: kebab-cased
    custom_carrier.name
    . E.g. "Acme Vision X1" →
    acme-vision-x1.yaml
    .
Use the suggested filename without asking when it is unique and was generated from the selected platform or custom-carrier name. Print the filename and continue. Ask only on collision, empty generated name, ambiguous input, or explicit custom-filename request. Then handle activation:
  • Bootstrap case (no profile YAMLs existed at the "Survey current state" step): do not prompt. The new profile is the first one, so it is auto-activated in the "Write" step. Tell the user this is happening so the auto-activation is not silent.
  • Profiles already exist: ask whether to activate the new profile (default: yes). Decline only if the user is authoring multiple profiles to choose from later — they can activate any of them with
    jetson-set-target
    .
显示拟创建的YAML内容。内容格式取决于用户是否在“可选:添加自定义载板详情”步骤中添加了自定义载板信息。示例: 参考
references/ui-samples.md
中的仅参考配置和参考+自定义载板的YAML格式,以及关联技能负责添加的模块说明。
建议文件名:
  • 仅参考配置: 选中目录行中产品名称的短横线分隔形式,追加
    .yaml
    。例如
    Jetson AGX Thor T5000
    jetson-agx-thor-t5000.yaml
    Jetson AGX Orin 32GB
    jetson-agx-orin-32gb.yaml
    。请勿从
    flash_config
    推导文件名;多个产品可共享同一默认配置。
  • 包含自定义载板:
    custom_carrier.name
    的短横线分隔形式。例如“Acme Vision X1” →
    acme-vision-x1.yaml
当建议文件名唯一且由选中平台或自定义载板名称生成时,直接使用该文件名而无需询问。打印文件名并继续操作。仅当文件名冲突、生成的文件名为空、输入模糊或用户明确要求自定义文件名时,才询问用户。然后处理激活:
  • 初始化场景(“检查当前状态”步骤中无配置YAML文件):无需提示。新配置文件是第一个,因此会在“写入”步骤自动激活。告知用户此操作,避免自动激活静默执行。
  • 已存在配置文件:询问是否要激活新配置文件(默认:是)。仅当用户要创建多个配置文件以备后续选择时,才拒绝激活——用户可通过
    jetson-set-target
    激活任意配置文件。

Write (and optionally activate)

写入(可选激活)

  1. Write
    target-platform/<filename>.yaml
    . If the file already exists, ask before overwriting; never silently clobber.
  2. Edit
    target-platform/active_target.yml
    to set
    active: <filename>.yaml
    when either of the following holds:
    • This was the bootstrap case from the "Survey current state" step (no profile YAMLs existed before this run) — activation is automatic, regardless of any prior user input.
    • Profiles already existed and the user accepted activation in the "Confirm" step.
    Preserve the header comment block; only modify the
    active:
    line. If profiles already existed and the user declined activation, leave
    active_target.yml
    untouched.
  1. 写入
    target-platform/<filename>.yaml
    。如果文件已存在,询问用户是否覆盖;切勿静默覆盖。
  2. 当满足以下任一条件时,编辑
    target-platform/active_target.yml
    以设置
    active: <filename>.yaml
    • 本次操作为“检查当前状态”步骤中的初始化场景(操作前无配置YAML文件)——无论用户之前的输入如何,自动激活。
    • 已存在配置文件且用户在“确认”步骤中同意激活。
    保留头部注释块;仅修改
    active:
    行。如果已存在配置文件且用户拒绝激活,则保持
    active_target.yml
    不变。

Confirm

最终确认

Print a summary: profile path, active pointer (or "unchanged" if activation was declined), Tegra family (T234 / T264), whether
custom_carrier:
was recorded, and a reminder that downstream skills will resolve to whichever profile is active. If the user authored multiple profiles without activating, point them at
jetson-set-target
to pick one.
Next steps (Setup → Customize chain):
  1. /jetson-init-image
    — extract the BSP and append
    bsp_image:
    .
  2. /jetson-init-source
    — clone the shared repos (and optionally override
    <workspace>/Source
    if the user wants
    source.root_path
    written into the profile).
  3. /jetson-link-docs
    (optional) — register paths to pre-downloaded BSP / schematic / pinmux documents in the profile's
    documents:
    block.
Then, before any
customize-*
skill (Customize):
  1. /jetson-generate-kb
    — KB that customize-* skills consult for target-specific file locations.
  2. /jetson-derive-carrier
    (custom carriers only) — materialize the custom carrier's flash conf + supporting DTSIs from the reference devkit. Required before per-knob customize-* on a custom carrier.
If a downstream skill triggered this run, tell the user to re-issue their original request; do not silently re-trigger it.
打印摘要:配置文件路径、活动指针(如果拒绝激活则显示“未更改”)、Tegra系列(T234 / T264)、是否记录了
custom_carrier:
,以及提醒下游技能会解析当前活动的配置文件。如果用户创建了多个配置文件但未激活,告知用户可使用
jetson-set-target
选择其中一个。
后续步骤(设置→定制流程):
  1. /jetson-init-image
    — 提取BSP并追加
    bsp_image:
    模块。
  2. /jetson-init-source
    — 克隆共享仓库(如果用户希望将
    source.root_path
    写入配置文件,可选择覆盖
    <workspace>/Source
    )。
  3. /jetson-link-docs
    (可选)—— 在配置文件的
    documents:
    模块中注册预下载的BSP/原理图/pinmux文档路径。
然后,在执行任何
customize-*
技能(定制)之前:
  1. /jetson-generate-kb
    — 生成知识库,供
    customize-*
    技能查询目标特定文件位置。
  2. /jetson-derive-carrier
    (仅自定义载板)—— 从参考开发套件生成自定义载板的闪存配置+支持DTSI文件。在自定义载板上执行单旋钮
    customize-*
    操作前必须执行此步骤。
如果本次操作由下游技能触发,告知用户重新发出原始请求;切勿静默重新触发。

Prerequisites

前提条件

  • bsp-platforms-catalogue.md
    and
    platform_template.yaml
    reachable via the relative paths in the References section.
  • Write access to
    target-platform/
    (and
    target-platform/active_target.yml
    if activation is requested).
  • For "what module/carrier is this?" lookups:
    /proc/device-tree/chosen/ids
    on the booted device.
  • bsp-platforms-catalogue.md
    platform_template.yaml
    可通过参考部分的相对路径访问。
  • 拥有
    target-platform/
    目录的写入权限(如果需要激活,还需拥有
    target-platform/active_target.yml
    的写入权限)。
  • 如需查询“这是什么模块/载板?”:已启动设备上的
    /proc/device-tree/chosen/ids

Limitations

限制

  • Owns only
    reference_devkit:
    ,
    custom_carrier:
    , and the
    active_target.yml
    pointer; refuses to write
    bsp_image:
    ,
    source:
    , or
    documents:
    .
  • Will not invent SKUs, module IDs, custom carrier metadata, or flash configs — records
    NA
    or aborts when the user does not know a required value.
  • 仅负责
    reference_devkit:
    custom_carrier:
    active_target.yml
    指针;拒绝写入
    bsp_image:
    source:
    documents:
    模块。
  • 不会生成SKU、模块ID、自定义载板元数据或闪存配置——当用户不知道必填值时,记录
    NA
    或终止操作。

Troubleshooting

故障排除

  • User asks to switch instead of author — refuse and route to
    jetson-set-target
    ; do not re-author an existing profile.
  • Catalogue row not found for the product the user named — add the row to
    bsp-platforms-catalogue.md
    first; do not patch the product list inside this skill.
  • Required field stuck at
    NA
    — downstream
    customize-*
    skills may refuse; capture the missing value (read
    /proc/device-tree/chosen/ids
    ) and rerun.
  • active_target.yml
    lost its comment block after activation
    — a non-round-tripping YAML writer was used; switch to
    ruamel.yaml
    and restore from the template.
See
references/gotchas.md
for the full pitfalls list (catalogue/template separation, NA handling, conf collision rules, etc.).
  • 用户要求切换而非创建 — 拒绝操作并引导至
    jetson-set-target
    ;切勿重新创建现有配置文件。
  • 未找到用户指定产品的目录行 — 先将该行添加到
    bsp-platforms-catalogue.md
    ;切勿在本技能内修改产品列表。
  • 必填字段为
    NA
    — 下游
    customize-*
    技能可能拒绝操作;获取缺失值(读取
    /proc/device-tree/chosen/ids
    )并重新运行。
  • 激活后
    active_target.yml
    丢失注释块
    — 使用了不支持往返的YAML写入器;切换为
    ruamel.yaml
    并从模板恢复注释块。
完整的陷阱列表请参考
references/gotchas.md
(目录/模板分离、NA处理、配置冲突规则等)。

References

参考资料

  • ../../references/bsp-platforms-catalogue.md
    — product / flash conf catalogue (the source of truth for the "Pick the reference product" and "Pick the flash config" steps).
  • ../../context/target-platform-contract.md
    — the contract this skill writes to.
  • ../../references/platform_template.yaml
    — schema starter for a target profile (the source of truth for the "Optional: add custom carrier details" step).
  • ../../references/active_target_template.yaml
    — schema starter for the active-target pointer.
  • ../jetson-set-target/SKILL.md
    — sibling skill: switch the active pointer among already-authored profiles.
  • ../jetson-init-image/SKILL.md
    — sibling skill: extract BSP image and author the
    bsp_image:
    block.
  • ../jetson-init-source/SKILL.md
    — sibling skill: clone shared repos and (optionally) author the
    source:
    block.
  • ../jetson-link-docs/SKILL.md
    — sibling skill: author the
    documents:
    block by registering pre-downloaded files.
  • ../../references/bsp-platforms-catalogue.md
    — 产品/闪存配置目录(“选择参考产品”和“选择闪存配置”步骤的权威来源)。
  • ../../context/target-platform-contract.md
    — 本技能遵循的契约。
  • ../../references/platform_template.yaml
    — 目标配置文件的schema模板(“可选:添加自定义载板详情”步骤的权威来源)。
  • ../../references/active_target_template.yaml
    — 活动目标指针的schema模板。
  • ../jetson-set-target/SKILL.md
    — 关联技能:在已创建的配置文件间切换活动指针。
  • ../jetson-init-image/SKILL.md
    — 关联技能:提取BSP镜像并创建
    bsp_image:
    模块。
  • ../jetson-init-source/SKILL.md
    — 关联技能:克隆共享仓库并(可选)创建
    source:
    模块。
  • ../jetson-link-docs/SKILL.md
    — 关联技能:通过注册预下载文件创建
    documents:
    模块。