jetson-customize-clocks
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCustomize Clocks
定制时钟
Purpose
用途
Customize CPU, GPU, and EMC clock behavior on a Jetson target by editing files under before flashing the image. Two layers are in scope:
Linux_for_Tegra/- The BPMP DTB at — per-clock
Linux_for_Tegra/bootloader/<BPFDTB_FILE>ceilings, plus the EMC DVFS gate (bwmgr + cactmon on all SoCs; osp-controller on T26x only).max-rate-custom - nvpower.sh at — cpufreq / devfreq governors and (optionally) per-device min / max / static rates written to sysfs at boot.
Linux_for_Tegra/rootfs/etc/systemd/nvpower.sh
Common triggers: "lock CPU/GPU/EMC frequency", "pin GPU to Fmax", "pin EMC to MAXN", "disable/enable EMC DVFS", "disable/enable CPU DVFS", "set CPU/GPU max rate", "change cpufreq governor".
Out of scope: runtime clock tuning on a live target (no flash step), nvpmodel power-mode edits (use the sibling skill ), and silicon-ceiling overrides ( is read-only).
/jetson-customize-nvpmodelmax-rate-maxn通过在刷机前编辑下的文件,定制Jetson目标设备上的CPU、GPU和EMC时钟行为。涉及两个层面的配置:
Linux_for_Tegra/- BPMP DTB:位于—— 针对每个时钟的
Linux_for_Tegra/bootloader/<BPFDTB_FILE>上限,以及EMC DVFS控制(所有SoC上的bwmgr + cactmon;仅T26x上的osp-controller)。max-rate-custom - nvpower.sh:位于—— cpufreq / devfreq调控器,以及(可选)在启动时写入sysfs的设备专属最小/最大/固定速率。
Linux_for_Tegra/rootfs/etc/systemd/nvpower.sh
常见使用场景:"锁定CPU/GPU/EMC频率"、"将GPU固定在Fmax"、"将EMC固定在MAXN"、"禁用/启用EMC DVFS"、"禁用/启用CPU DVFS"、"设置CPU/GPU最大速率"、"更改cpufreq调控器"。
不适用场景:对运行中的目标设备进行实时时钟调优(无需刷机步骤)、nvpmodel功耗模式编辑(使用关联技能)、以及硅上限覆盖(为只读)。
/jetson-customize-nvpmodelmax-rate-maxnPrerequisites
前置条件
Resolve the active profile per
.
Refuse and route in these cases:
../../context/target-platform-contract.md| Condition | Refuse with |
|---|---|
No active profile, or | Route to |
Profile lacks | Route to |
| Route to |
| Route to |
Resolve paths:
- from
<bsp_image.root_path>if present, elsebsp_image.root_path:.<workspace>/Image - from
<source.root_path>if present, elsesource.root_path:.<workspace>/Source
<bsp_image.root_path>nvpower.sh<source.root_path>../../context/bsp-customization-workflow.md#workflow-invariants/jetson-promote-image根据确认激活的配置文件。在以下情况下拒绝操作并引导至对应技能:
../../context/target-platform-contract.md| 条件 | 拒绝提示及引导 |
|---|---|
无激活配置文件,或 | 引导至 |
配置文件缺少 | 引导至 |
| 引导至 |
| 引导至 |
解析路径:
- 若存在,则
bsp_image.root_path:取该值,否则为<bsp_image.root_path>。<workspace>/Image - 若存在,则
source.root_path:取该值,否则为<source.root_path>。<workspace>/Source
<bsp_image.root_path>nvpower.sh<source.root_path>../../context/bsp-customization-workflow.md#workflow-invariants/jetson-promote-imageInstructions
操作步骤
- Resolve the prerequisites above (active profile, BSP image extracted, source overlay tracker initialized).
- Pick the operation from the table below.
- Follow the linked procedure section — Operation 1 (BPMP DTB), Operation 2 (), or the MAXN recipe for both.
nvpower.sh - Commit the edit inside the overlay tracker per each Operation's commit convention.
- Deploy with →
/jetson-promote-image. The new BPMP DTB and/jetson-flash-imagetake effect on the next boot.nvpower.sh
- 完成上述前置条件(激活配置文件、提取BSP镜像、初始化源码覆盖跟踪器)。
- 从下表中选择对应的操作。
- 遵循链接的步骤章节——操作1(BPMP DTB)、操作2(),或同时执行两者的MAXN方案。
nvpower.sh - 根据每个操作的提交规范,在覆盖跟踪器中提交编辑内容。
- 通过→
/jetson-promote-image部署。新的BPMP DTB和/jetson-flash-image将在下次启动时生效。nvpower.sh
Supported operations
支持的操作
| Operation | Where the edit lives | Procedure section |
|---|---|---|
| Lock a CPU / GPU clock to a specific rate | BPMP DTB | "Content edit: |
| Lock EMC at its init rate (disable EMC DVFS) | BPMP DTB: | "Content edit: EMC DVFS disable / enable" |
| Re-enable EMC DVFS | BPMP DTB: | "Content edit: EMC DVFS disable / enable" |
| Pin everything to MAXN for stress runs | Combine the above + nvpmodel MAXN as boot default | see Recipe |
| Lower a clock's hard ceiling without locking | BPMP DTB | "Content edit: |
| Bound a device's rate without pinning | | "Pick the edit" |
| 操作 | 编辑位置 | 步骤章节 |
|---|---|---|
| 将CPU/GPU时钟锁定至特定速率 | BPMP DTB中时钟节点的 | "内容编辑: |
| 将EMC锁定在初始速率(禁用EMC DVFS) | BPMP DTB: | "内容编辑:禁用/启用EMC DVFS" |
| 重新启用EMC DVFS | BPMP DTB: | "内容编辑:禁用/启用EMC DVFS" |
| 将所有组件固定在MAXN模式以进行压力测试 | 结合上述操作 + 将nvpmodel MAXN设为启动默认模式 | 查看方案 |
| 降低时钟硬上限但不锁定 | 仅修改BPMP DTB的 | "内容编辑: |
| 限制设备速率但不固定 | 通过sysfs在 | "选择编辑项" |
Operation 1 — BPMP DTB edits
操作1 —— BPMP DTB编辑
Follow the BPMP-DTB customization protocol in
.
The protocol owns the mechanics — pristine import on first touch,
decompile, recompile, sanity-check, commit. This skill
supplies only the clock-specific content (which nodes and
properties to edit during the protocol's "Edit the DTS" step).
../../references/bsp-customization-bpmp-dtb.mddtcThe edited lands in the
overlay tracker. 's channel A walks the
tracker and copies the file into . Do not edit
directly — that's the promote output, not an input.
.dtb<source.root_path>/Linux_for_Tegra//jetson-promote-imagebsp_image<bsp_image.root_path>/Linux_for_Tegra/bootloader/<bpmp-dtb>遵循中的BPMP-DTB定制协议。该协议负责具体操作流程——首次操作时导入原始文件、使用反编译、重新编译、完整性检查、提交。本技能仅提供时钟相关的内容(即在协议的"编辑DTS"步骤中需要修改的节点和属性)。
../../references/bsp-customization-bpmp-dtb.mddtc编辑后的文件存储在覆盖跟踪器中。的通道A会遍历跟踪器并将文件复制到中。请勿直接编辑——这是推送操作的输出,而非输入。
.dtb<source.root_path>/Linux_for_Tegra//jetson-promote-imagebsp_image<bsp_image.root_path>/Linux_for_Tegra/bootloader/<bpmp-dtb>Resolve the SKU-correct BPMP DTB
解析与SKU匹配的BPMP DTB
Per the protocol's "Resolving the active BPMP DTB" section, read
from the active flash conf. For the common Thor /
single-SKU conf shapes this is the static line
in the per-board and the value is authoritative as-is.
BPFDTB_FILEBPFDTB_FILE=....confFor SKU-multiplexed conf shapes (Orin AGX devkit conf chain
that selects a different BPMP DTB per /
via — see
),
walk the dispatch chain with and
from the active profile,
and read from the dispatch output — not from
the static line of the per-board . Static and dispatched
values match for non-multiplexed confs; the dispatch is
mandatory only when the conf chain conditionally overrides
.
board_skuboard_FABupdate_flash_args_common../../context/bsp-customization-software-layers.md#per-board-conf-dispatch--update_flash_args_commonboard_sku=<module.sku>board_FAB=<module.revision or empty>BPFDTB_FILE.confBPFDTB_FILE根据协议的"解析激活的BPMP DTB"章节,从激活的刷机配置文件中读取。对于常见的Thor/单一SKU配置文件,这是单板文件中的静态行,其值即为权威值。
BPFDTB_FILE.confBPFDTB_FILE=...对于SKU多路复用配置文件(Orin AGX开发板配置链,通过根据/选择不同的BPMP DTB——详见),需结合激活配置文件中的和遍历调度链,从调度输出中读取——不要从单板的静态行中读取。对于非多路复用配置文件,静态值和调度值一致;仅当配置链有条件地覆盖时,才必须使用调度方式解析。
update_flash_args_commonboard_skuboard_FAB../../context/bsp-customization-software-layers.md#per-board-conf-dispatch--update_flash_args_commonboard_sku=<module.sku>board_FAB=<module.revision or empty>BPFDTB_FILE.confBPFDTB_FILEList effective max rates (inspection)
查看有效最大速率(检查)
Inspect both layers of the runtime ceiling — see — before deciding on a value.
references/clock-control-model.md#effective-runtime-ceilingmax-rate-customInspection cookbook (BPMP-side decompile + grep; nvpmodel-side awk over the boot default mode) is in .
references/bpmp-dtb-clock-edits.md#inspection-cookbookFor the nvpmodel layer see .
/jetson-customize-nvpmodelThis step does not mutate state — it's a precondition for sizing
the edit in the "Content edit: on a named clock node" step.
max-rate-custom在决定值之前,检查运行时上限的两个层面——详见。
max-rate-customreferences/clock-control-model.md#effective-runtime-ceiling检查方法(BPMP侧反编译+ grep;nvpmodel侧通过awk分析启动默认模式)详见。
references/bpmp-dtb-clock-edits.md#inspection-cookbook关于nvpmodel层面的内容,请查看。
/jetson-customize-nvpmodel此步骤不会改变系统状态——是"内容编辑:指定时钟节点的"步骤中确定编辑内容的前置条件。
max-rate-customContent edit: max-rate-custom
on a named clock node
max-rate-custom内容编辑:指定时钟节点的max-rate-custom
max-rate-customDuring the "Edit the DTS" step of the protocol, modify the property
inside the named clock node — never .
must be strictly below the clock's hard cap ( if
defined, otherwise the live from a running target of
the same chip / SKU).
lateinitmax-rate-custommax-rate-maxnmax_rateDTS edit form, semantics, and the nvpmodel ↔ BPMP clock-node
mapping live in .
references/bpmp-dtb-clock-edits.mdThen hand control back to the protocol — its "Recompile", "Sanity-check
the recompiled blob", "Stage in the overlay tracker", and "Cleanup"
steps cover the rest.
Commit-message convention per the protocol:
.
<BPMP_BASENAME>: jetson-customize-clocks — <clock-node> max-rate-custom = <value>在协议的"编辑DTS"步骤中,修改指定时钟节点内的属性——切勿修改。必须严格低于时钟的硬上限(若定义了则以此为准,否则以同芯片/SKU的运行中设备的实时为准)。
lateinitmax-rate-custommax-rate-maxnmax_rateDTS编辑格式、语义以及nvpmodel ↔ BPMP时钟节点映射详见。
references/bpmp-dtb-clock-edits.md之后将控制权交还给协议——其"重新编译"、"检查重新编译后的二进制文件完整性"、"在覆盖跟踪器中暂存"和"清理"步骤会处理后续操作。提交消息需遵循协议规范:。
<BPMP_BASENAME>: jetson-customize-clocks — <clock-node> max-rate-custom = <value>Content edit: EMC DVFS disable / enable
内容编辑:禁用/启用EMC DVFS
Default behavior (EMC DVFS on) requires no edit. Disabling EMC
DVFS is a multi-node edit applied inside the same "Edit the DTS" step of
the protocol, not a toggle:
bwmgr| # | Edit | Scope |
|---|---|---|
| 1 | | All SoCs, mandatory |
| 2 | | All SoCs, mandatory |
| 3 | | T26x (Thor) mandatory — T23x (Orin) has no such node, skip |
Detection:
— zero hits ⇒ T23x path. Full DTS snippets, the surviving-paths
failure modes, and the re-enable procedure are in
.
dtc -I dtb -O dts <bpmp-dtb> | grep -c osp-controllerreferences/emc-dvfs-disable.mdApply the protocol's "Recompile" through "Cleanup" steps once the multi-node edit is in
place. Commit-message convention:
.
<BPMP_BASENAME>: jetson-customize-clocks — EMC DVFS disable (bwmgr + cactmon[+ osp-controller])Disabling raises idle power; intended for stress / performance
tests, not production rootfs.
默认行为(EMC DVFS启用)无需编辑。禁用EMC DVFS是多节点编辑,需在协议的同一"编辑DTS"步骤中完成,不能仅切换:
bwmgr| 序号 | 编辑内容 | 适用范围 |
|---|---|---|
| 1 | | 所有SoC,必填 |
| 2 | | 所有SoC,必填 |
| 3 | | 仅T26x (Thor) 必填 —— T23x (Orin) 无此节点,跳过 |
检测方法: —— 结果为0 ⇒ 采用T23x流程。完整的DTS代码片段、可能出现的失败场景以及重新启用的步骤详见。
dtc -I dtb -O dts <bpmp-dtb> | grep -c osp-controllerreferences/emc-dvfs-disable.md完成多节点编辑后,执行协议的"重新编译"至"清理"步骤。提交消息规范:。
<BPMP_BASENAME>: jetson-customize-clocks — EMC DVFS disable (bwmgr + cactmon[+ osp-controller])禁用EMC DVFS会增加 idle 功耗;仅适用于压力/性能测试,不适用于生产根文件系统。
Re-run + idempotency
重复执行与幂等性
Per the protocol's "Re-runnability" section, re-running this
skill with the same target value produces a no-op commit. Re-
running with a different value rewrites the same property — shows the per-run history. To return a clock
to its ceiling, edit the DTS to remove the
line and recompile.
git log -- $BPMP_RELmax-rate-maxnmax-rate-custom根据协议的"可重复执行性"章节,使用相同目标值重复执行此技能会生成空提交。使用不同目标值重复执行会重写同一属性——可查看每次执行的历史记录。若要将时钟恢复至上限,需编辑DTS删除行并重新编译。
git log -- $BPMP_RELmax-rate-maxnmax-rate-customOperation 2 — nvpower.sh edits
操作2 —— nvpower.sh编辑
Edits , which runs at boot via to set
cpufreq / devfreq governors and rates.
nvpower.shnvpower.service编辑,该脚本通过在启动时运行,用于设置cpufreq / devfreq调控器和速率。
nvpower.shnvpower.serviceThe per-script file
脚本文件路径
The script this Operation edits has the relative path:
Linux_for_Tegra/rootfs/etc/systemd/nvpower.shIt lives in two roots; the Operation walks both:
| Role | Location | Skill writes? |
|---|---|---|
| Detection + pristine source | | no — read-only |
| Overlay edit target + git commit | | yes |
Subsequent sub-steps refer to the per-script file to mean the overlay
copy under . The copy is read
once during the pristine-import step below, then never touched again.
<source.root_path><bsp_image.root_path>本操作编辑的脚本相对路径为:
Linux_for_Tegra/rootfs/etc/systemd/nvpower.sh该脚本存在于两个路径下;本操作会遍历这两个路径:
| 角色 | 位置 | 技能是否可写入 |
|---|---|---|
| 检测与原始源文件 | | 否 —— 只读 |
| 覆盖编辑目标与git提交 | | 是 |
后续子步骤中提到的脚本文件均指下的覆盖副本。下的副本仅在原始导入步骤中读取一次,之后不再触碰。
<source.root_path><bsp_image.root_path>Overlay edit recipe (apply before editing nvpower.sh)
覆盖编辑方案(编辑nvpower.sh前执行)
Follow the canonical
Off-skill edits recipe
in the workflow doc — pristine import + customization commit pair, both
gated by the preview gate. is a single file with no
propagation set; one pristine commit + one customization commit covers
the entire change.
nvpower.shConcrete substitutions for this skill:
- is
<rel>/<file>.rootfs/etc/systemd/nvpower.sh - Suggested pristine-import message:
, body
import pristine: rootfs/etc/systemd/nvpower.sh.Source: <bsp_image.root_path>/Linux_for_Tegra/ (BSP <bsp_image.version>) - Suggested customization-commit header:
, body lines like
jetson-customize-clocks: nvpower.sh <summary>.set_cpufreq_governor: desired_cpufreq_gov "schedutil" -> "performance"
遵循工作流文档中的标准非技能编辑方案——原始导入+定制提交的组合,均受预览门控。是单个无传播设置的文件;一次原始提交+一次定制提交即可覆盖所有修改。
nvpower.sh针对本技能的具体替换:
- 为
<rel>/<file>。rootfs/etc/systemd/nvpower.sh - 建议的原始导入提交消息:,提交说明为
import pristine: rootfs/etc/systemd/nvpower.sh。Source: <bsp_image.root_path>/Linux_for_Tegra/ (BSP <bsp_image.version>) - 建议的定制提交标题:,提交说明示例:
jetson-customize-clocks: nvpower.sh <summary>。set_cpufreq_governor: desired_cpufreq_gov "schedutil" -> "performance"
Pick the edit
选择编辑项
Function locations (, ), common-edit recipes (pin to Fmax, static rate, min/max bounds), and the package-upgrade caveat live in .
set_cpufreq_governorset_devfreq_governornvidia-l4t-initreferences/nvpower-sh-edits.md函数位置(、)、常见编辑方案(固定在Fmax、固定速率、最小/最大限制)以及包升级注意事项详见。
set_cpufreq_governorset_devfreq_governornvidia-l4t-initreferences/nvpower-sh-edits.mdDeploy
部署
The customization commit in the overlay tracker does not reach the device
on its own. The Deploy chain:
- — copies every tracked file in the overlay into
/jetson-promote-image. Diff-aware (skip byte-identical); uses<bsp_image.root_path>/Linux_for_Tegra/forsudo cp -pdestinations.rootfs/* - — flashes the updated
/jetson-flash-imageto the device.bsp_imageruns the new script on the next boot.nvpower.service - (Alternate, no flash) Copy directly to the running target's
<source.root_path>/Linux_for_Tegra/rootfs/etc/systemd/nvpower.sh, then/etc/systemd/nvpower.sh(or reboot).sudo systemctl restart nvpower.service
Editing without committing — or editing
directly — does nothing for
and is silently lost on the next re-extract.
<source.root_path>/...<bsp_image.root_path>/.../jetson-promote-image/jetson-init-image覆盖跟踪器中的定制提交不会自动同步到设备。部署流程如下:
- —— 将覆盖跟踪器中所有跟踪的文件复制到
/jetson-promote-image。支持差异识别(跳过字节完全相同的文件);对<bsp_image.root_path>/Linux_for_Tegra/目标使用rootfs/*。sudo cp -p - —— 将更新后的
/jetson-flash-image刷入设备。bsp_image会在下次启动时运行新脚本。nvpower.service - (无需刷机的替代方案)将直接复制到运行中设备的
<source.root_path>/Linux_for_Tegra/rootfs/etc/systemd/nvpower.sh,然后执行/etc/systemd/nvpower.sh(或重启设备)。sudo systemctl restart nvpower.service
若编辑但未提交——或直接编辑——则不会识别这些修改,且在下次重新提取时会静默丢失。
<source.root_path>/...<bsp_image.root_path>/.../jetson-promote-image/jetson-init-imageRecipe — pin everything to MAXN for stress / performance runs
方案——将所有组件固定在MAXN模式以进行压力/性能测试
Combines Operations 1 + 2. Operation 1's BPMP edits all flow
through one round of the protocol (a single decompile / multi-node
edit / recompile / commit cycle — don't round-trip the protocol
twice for the same ):
.dtb- BPMP DTB (the "Content edit: on a named clock node" step content): leave
max-rate-customunset on every CPU / GPU / EMC clock; remove existingmax-rate-customlines that lower the ceiling.max-rate-custom - BPMP DTB (the "Content edit: EMC DVFS disable / enable" step content): pin EMC at its init rate — ,
bwmgr.enabled = 0, pluscactmon.enabled = 0on T26x (skip on T23x)./delete-node/ osp-controller - Apply both content edits inside one protocol "Edit the DTS" invocation, then run the remaining protocol steps (recompile, sanity-check, single customization commit covering both content edits).
- nvpower.sh (Operation 2): set and
desired_cpufreq_gov="performance"unconditionally; remove the GPU/nvjpg skip indesired_devfreq_gov="performance". Applies via Operation 2's overlay edit recipe (the "Overlay edit recipe (apply before editing nvpower.sh)" step) — a separate overlay-tracker pristine + customization commit pair on the rootfs script, distinct from the BPMP-DTB protocol's commit.set_devfreq_governor - Set the boot-default nvpmodel mode to MAXN via — the per-clock nvpmodel cap clamps below
/jetson-customize-nvpmodelregardless of BPMP DTB content.max-rate-maxn
Deploy → picks up the new BPMP DTB (via the overlay tracker) and the edited (via the same overlay tracker) on the next flash.
/jetson-promote-image/jetson-flash-imagenvpower.sh结合操作1和操作2。操作1的BPMP编辑需通过一轮协议完成(单次反编译/多节点编辑/重新编译/提交周期——请勿对同一重复执行协议):
.dtb- BPMP DTB("内容编辑:指定时钟节点的"步骤内容):所有CPU/GPU/EMC时钟均不设置
max-rate-custom;删除所有降低上限的现有max-rate-custom行。max-rate-custom - BPMP DTB("内容编辑:禁用/启用EMC DVFS"步骤内容):将EMC固定在初始速率——,
bwmgr.enabled = 0;T26x需添加cactmon.enabled = 0(T23x跳过)。/delete-node/ osp-controller - 在一次协议的"编辑DTS"调用中完成上述两项内容编辑,然后执行协议的剩余步骤(重新编译、完整性检查、涵盖两项内容编辑的单次定制提交)。
- nvpower.sh(操作2):无条件设置和
desired_cpufreq_gov="performance";删除desired_devfreq_gov="performance"中的GPU/nvjpg跳过逻辑。通过操作2的覆盖编辑方案("覆盖编辑方案(编辑nvpower.sh前执行)"步骤)应用——对根文件系统脚本进行单独的覆盖跟踪器原始+定制提交,与BPMP-DTB协议的提交分开。set_devfreq_governor - 通过将启动默认nvpmodel模式设为MAXN——无论BPMP DTB内容如何,每个时钟的nvpmodel上限都会低于
/jetson-customize-nvpmodel。max-rate-maxn
部署时, → 会在下次刷机时读取覆盖跟踪器中的新BPMP DTB和编辑后的。
/jetson-promote-image/jetson-flash-imagenvpower.shLimitations
限制
- Image-build-time only. All edits land under and reach the device only via
<source.root_path>/Linux_for_Tegra/→/jetson-promote-image. Live-target tuning is out of scope./jetson-flash-image - only lowers the ceiling. It must be strictly below
max-rate-custom; raising the silicon cap is not supported.max-rate-maxn - Effective ceiling is two-layer. The runtime ceiling is . The nvpmodel cap is owned by
min(BPMP cap, active-nvpmodel-mode cap); this skill does not edit it./jetson-customize-nvpmodel - SoC-conditional EMC DVFS gate. Disabling EMC DVFS requires editing different node sets on T23x (bwmgr + cactmon) vs T26x (bwmgr + cactmon + delete ). Mis-detection produces undefined behavior.
osp-controller - T23x GPU cap is multi-node. The GPU clock is split across and every
nafll_gpusys; the cap binds only when applied to all of them.nafll_gpcX - is package-managed. It ships in
nvpower.sh; package upgrades clobber in-place edits. Long-lived setups should prefer a systemd drop-in or sibling helper.nvidia-l4t-init - ODMDATA wins. When an ODMDATA token covers a property, the token overrides direct BPMP DTS edits at flash time. Direct BPMP DTS edits are the fallback for properties no NVIDIA token reaches.
- and
max-rate-maxnare off-limits.lateinitis the silicon ceiling (read-only).max-rate-maxnis for boot-time clock init, not ceiling overrides — never touch either.lateinit - BPMP DTB may be SKU-multiplexed. On compound / dispatched flash confs (Orin AGX devkit chain), is selected by
BPFDTB_FILE/board_skuviaboard_FAB. Reading the staticupdate_flash_args_commonline is wrong when the chain conditionally overrides it; resolve via the dispatch instead.BPFDTB_FILE=
- 仅支持镜像构建时操作。所有编辑均存储在下,仅能通过
<source.root_path>/Linux_for_Tegra/→/jetson-promote-image同步到设备。不支持对运行中设备进行调优。/jetson-flash-image - 仅能降低上限。必须严格低于
max-rate-custom;不支持提高硅上限。max-rate-maxn - 有效上限为双层机制。运行时上限为。nvpmodel上限由
min(BPMP上限, 激活的nvpmodel模式上限)负责;本技能不编辑该上限。/jetson-customize-nvpmodel - EMC DVFS控制因SoC而异。禁用EMC DVFS在T23x(bwmgr + cactmon)和T26x(bwmgr + cactmon + 删除)上需要编辑不同的节点集。检测错误会导致未定义行为。
osp-controller - T23x GPU上限为多节点。GPU时钟分为和所有
nafll_gpusys;必须对所有节点应用上限才能生效。nafll_gpcX - 受包管理控制。它属于
nvpower.sh包;包升级会覆盖本地编辑。长期使用的环境应优先使用systemd扩展配置或关联辅助脚本。nvidia-l4t-init - ODMDATA优先级更高。当ODMDATA令牌涵盖某个属性时,该令牌会在刷机时覆盖直接的BPMP DTS编辑。直接的BPMP DTS编辑仅作为NVIDIA令牌未覆盖属性的 fallback 方案。
- 和
max-rate-maxn不可修改。lateinit是硅上限(只读)。max-rate-maxn用于启动时时钟初始化,而非上限覆盖——切勿修改两者。lateinit - BPMP DTB可能为SKU多路复用。在复合/调度刷机配置文件(Orin AGX开发板链)中,通过
BPFDTB_FILE根据update_flash_args_common/board_sku选择。当配置链有条件地覆盖该值时,读取静态board_FAB行是错误的;需通过调度方式解析。BPFDTB_FILE=
Troubleshooting
故障排除
| Error | Cause | Solution |
|---|---|---|
| Only | Apply the same |
| EMC DVFS disable appears to apply but EMC still scales on T26x | Only | Add edits #2 ( |
EMC DVFS disable rejected on T23x with "node not found" for | T23x (Orin) BPMP DTBs do not contain | Detect SoC family with the |
BPMP refuses to load DTB after edit: | | Lower |
| | Replace with |
Edits to | | For long-lived test setups, package edits into a systemd drop-in or a sibling helper file referenced by |
| The edit was applied to | Move the edit to |
| Cap appears to apply on first boot then resets after a power-mode change | The active nvpmodel mode's per-clock cap clamps below | Inspect both layers; if nvpmodel is binding, raise (or remove) the nvpmodel cap via |
| 错误 | 原因 | 解决方案 |
|---|---|---|
设置了 | 仅限制了 | 对 |
| 已禁用EMC DVFS但T26x的EMC仍会缩放 | 仅设置了 | 在同一"编辑DTS"步骤中添加编辑项2( |
在T23x上禁用EMC DVFS时提示"node not found" for | T23x (Orin) BPMP DTB不含 | 通过 |
编辑后BPMP拒绝加载DTB: | | 将 |
设置 | | 替换为 |
| | 对于长期测试环境,将编辑内容打包到systemd扩展配置或 |
编辑BPMP DTB后 | 编辑内容被应用到 | 将编辑内容移至 |
| 首次启动时上限生效,但更改功耗模式后重置 | 激活的nvpmodel模式的时钟上限低于 | 检查两个层面;若nvpmodel起限制作用,通过 |
References
参考资料
- — canonical BPMP-DTB customization protocol (pristine import, decompile, edit, recompile, sanity-check, commit). Operation 1 of this skill is a content-only consumer; the protocol owns the mechanics.
../../references/bsp-customization-bpmp-dtb.md - — layer stack, two-ceilings overview, effective-runtime-ceiling formula.
references/clock-control-model.md - — two-ceilings semantics, DTS edit form, nvpmodel ↔ BPMP clock-node mapping, inspection cookbook.
references/bpmp-dtb-clock-edits.md - — full SoC-conditional EMC DVFS disable procedure with DTS snippets, detection, re-enable.
references/emc-dvfs-disable.md - —
references/nvpower-sh-edits.mdfunction locations + common-edit recipes + package-upgrade caveat.nvpower.sh - — sibling skill: nvpmodel power modes. The active mode's per-clock cap clamps below the BPMP DTB cap.
/jetson-customize-nvpmodel
- —— 标准BPMP-DTB定制协议(原始导入、反编译、编辑、重新编译、完整性检查、提交)。本技能的操作1仅使用该协议的内容部分;协议负责具体流程。
../../references/bsp-customization-bpmp-dtb.md - —— 层级架构、双层上限概述、运行时有效上限公式。
references/clock-control-model.md - —— 双层上限语义、DTS编辑格式、nvpmodel ↔ BPMP时钟节点映射、检查方法。
references/bpmp-dtb-clock-edits.md - —— 完整的因SoC而异的EMC DVFS禁用流程,包含DTS代码片段、检测方法、重新启用步骤。
references/emc-dvfs-disable.md - ——
references/nvpower-sh-edits.md函数位置+常见编辑方案+包升级注意事项。nvpower.sh - —— 关联技能:nvpmodel功耗模式。激活模式的时钟上限会低于BPMP DTB上限。
/jetson-customize-nvpmodel